张量板投影仪可视化-PCA一直挂着。
我写了一个简单的NN来预测虹膜数据集的类类型。 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)
我通过Google搜索了解自己在做什么错,但无法解决。尽管我的模型很小,但我无法可视化。解决该问题的任何帮助将非常可贵。
答案 0 :(得分:1)
我在回答自己的问题。
如@ Tay2510在评论中所建议。
将 tensorboard 版本从1.11.0升级到 1.12.0 后,相同的代码即可工作。
但是我的 tensorflow 版本与 1.11.0 相同。