在文本处理中,embedding显示(如果我理解正确)数据库单词为向量(在降维后)。 现在,我想知道,有没有这样的方法通过CNN显示提取的功能?
例如:考虑我们有CNN,火车和测试集。我们想用火车组训练CNN,同时在张量板的嵌入部分通过CNN看到提取的特征(来自密集层)相应的类标签。
这项工作的目的是查看每批中输入数据的特征,并了解它们的相近或远近。最后,在训练模型中,我们可以找出分类器的准确性(如softmax等)。
提前感谢您的帮助。
答案 0 :(得分:1)
我已经获得了Tensorflow文档的帮助。
有关如何运行TensorBoard并确保记录所有必要信息的深入信息,请参阅TensorBoard: Visualizing Learning.
要想象您的嵌入,您需要做三件事:
1)设置一个包含嵌入的2D张量。
embedding_var = tf.get_variable(....)
2)定期将模型变量保存在LOG_DIR的检查点中。
saver = tf.train.Saver()
saver.save(session, os.path.join(LOG_DIR, "model.ckpt"), step)
3)(可选)将元数据与嵌入相关联。
如果您有与嵌入相关联的任何元数据(标签,图像),您可以通过直接在LOG_DIR中存储projector_config.pbtxt或使用我们的python API来告诉TensorBoard。
例如,以下projector_config.ptxt将word_embedding张量与存储在$ LOG_DIR / metadata.tsv中的元数据相关联:
embeddings {
tensor_name: 'word_embedding'
metadata_path: '$LOG_DIR/metadata.tsv'
}
可以使用以下代码段以编程方式生成相同的配置:
from tensorflow.contrib.tensorboard.plugins import projector
# Create randomly initialized embedding weights which will be trained.
vocabulary_size = 10000
embedding_size = 200
embedding_var = tf.get_variable('word_embedding', [vocabulary_size,
embedding_size])
# Format: tensorflow/tensorboard/plugins/projector/projector_config.proto
config = projector.ProjectorConfig()
# You can add multiple embeddings. Here we add only one.
embedding = config.embeddings.add()
embedding.tensor_name = embedding_var.name
# Link this tensor to its metadata file (e.g. labels).
embedding.metadata_path = os.path.join(LOG_DIR, 'metadata.tsv')
#Use the same LOG_DIR where you stored your checkpoint.
summary_writer = tf.summary.FileWriter(LOG_DIR)
# The next line writes a projector_config.pbtxt in the LOG_DIR. TensorBoard will
# read this file during startup.
projector.visualize_embeddings(summary_writer, config)