python-3.x - Tensorboard 投影仪可视化 - PCA 不断加载
问题描述
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)
我用谷歌搜索了解我做错了什么,但我无法修复它。尽管我的模型很小,但我无法想象。解决这个问题的任何帮助都将是非常可观的。
解决方案
我正在回答我自己的问题。
正如@ Tay2510 在评论中所建议的那样。
将tensorboard版本从 1.11.0 升级到1.12.0后,相同的代码可以工作。
但是,我的tensorflow版本与1.11.0相同。
推荐阅读
- android - 当视频从手机投射到智能电视时,Seek bar 不工作
- c# - 使用 roslyn,如何获得一种“var”?
- python - def 中的语法无效
- gitlab - Gitlab 测试突然出现 Symfony 项目错误
- javascript - 如何验证搜索结果是否仅包含直达航班的结果
- c# - 如何在 ISession.QueryOver 中添加“或”语句?
- android - 是否有示例代码或插件可以帮助了解如何播放音频文件 listview builder?
- html - 如何创建这样的 CSS 网格布局?
- javascript - 如何从 DOM 和数组中删除项目
- php - 更新 MYSQL 中的特定行