【发布时间】:2019-04-09 12:49:04
【问题描述】:
Tensorboard 投影仪可视化 - PCA 一直挂起。
我写了一个简单的 NN 来预测 iris 数据集的类类型。 NN 模型工作正常。
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
import tensorflow as tf
import tensorflow as tf
from tensorflow import keras
iris_data = load_iris()
x = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)
y = pd.DataFrame(iris_data.target, columns=['class'])
encoder = preprocessing.OneHotEncoder(categories='auto')
encoder.fit(y)
#Transform
y_enc = encoder.transform(y).toarray()
x_train, x_test, y_train, y_test = train_test_split(x, y_enc)
model = keras.Sequential()
model.add(keras.layers.Dense(8, name='input_layer', activation=tf.nn.relu, input_shape=(x_train.shape[1],)))
model.add(keras.layers.Dense(4, name='hidden_layer', activation=tf.nn.relu))
model.add(keras.layers.Dense(3, name='out_layer', activation=tf.nn.softmax))
model.compile(optimizer=tf.keras.optimizers.Adam(0.005),
loss=keras.losses.binary_crossentropy,
metrics=[keras.metrics.categorical_accuracy])
model.fit(x_train, y_train, epochs=50, verbose=0)
result = model.predict(x_test)
现在我正在尝试可视化测试集的输出。 以下是 Tensorboard 投影仪的代码。 我不知道我错过了什么,但即使在几分钟前启动 Tensorboard 后,PCA 也会继续加载。
import tensorflow as tf
from tensorflow.contrib.tensorboard.plugins import projector
import numpy as np
import os
LOG_DIR = 'logs' # FULL PATH HERE!!!
metadata_file = os.path.join(LOG_DIR, 'metadata.tsv')
with open(metadata_file, 'w') as f:
f.write('{}\t{}\n'.format('class_name','class_id'))
with open(metadata_file, 'a') as f:
for i in range(len(y_test)):
c = np.nonzero(y_test[i])[0][0]
f.write('{}\t{}\n'.format(iris_data.target_names[c],c))
embedding_var = tf.Variable(result, name='final_layer_embedding')
sess = tf.Session()
sess.run(embedding_var.initializer)
summary_writer = tf.summary.FileWriter(LOG_DIR)
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
embedding.tensor_name = embedding_var.name
embedding.metadata_path = 'metadata.tsv'
projector.visualize_embeddings(summary_writer, config)
saver = tf.train.Saver([embedding_var])
saver.save(sess, os.path.join(LOG_DIR, 'model.ckpt'), 1)
我用谷歌搜索了解我做错了什么,但我无法修复它。尽管我的模型很小,但我无法想象。解决这个问题的任何帮助都将是非常可观的。
【问题讨论】:
-
你说你用谷歌搜索来尝试解决它,你尝试了什么?
-
就像初始化嵌入层的值一样。但不知道如何处理我的代码。这就是我在这里发帖的原因。
-
你等了几分钟?它可能只是计算,根据您的 CPU,可能需要一些时间。
-
它在 15 分钟后挂起并冻结。我不喜欢这么小的网络需要那么多时间。
-
@shakthydoss 这很有趣。我运行您的代码没有问题:imgur.com/a/rVPUEyC。我使用 tensorflow 1.12.0(CPU 模式),在我的 Macbook 上运行。
标签: python-3.x tensorflow keras tensorboard