Tensorboard投影仪可视化-PCA持续加载

时间:2018-11-06 06:13:40

标签: python-3.x tensorflow keras tensorboard

张量板投影仪可视化-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)

enter image description here

我通过Google搜索了解自己在做什么错,但无法解决。尽管我的模型很小,但我无法可视化。解决该问题的任何帮助将非常可贵。

1 个答案:

答案 0 :(得分:1)

我在回答自己的问题。

如@ Tay2510在评论中所建议。

tensorboard 版本从1.11.0升级到 1.12.0 后,相同的代码即可工作。

但是我的 tensorflow 版本与 1.11.0 相同。