Связывание тензорной доски встраивание метаданных в контрольную точку
Я использую оболочку tflearn над tensorflow для построения модели и хотел бы добавить метаданные (метки) в результирующую визуализацию встраивания. Есть ли способ связать метаданные?tsv-файл в сохраненную контрольную точку после ее запуска?
Я создал projector_config.pbtxt файл в каталога журнала резюме контрольно-пропускного пункта, с метаданными.tsv находится в той же папке. Конфигурация выглядит следующим образом:
embeddings {
tensor_name: "Embedding/W"
metadata_path: "C:/tmp/tflearn_logs/shallow_lstm/"
}
И был создан с использованием кода из документов - https://www.tensorflow.org/how_tos/embedding_viz/
Я прокомментировал ТФ.Часть сеанса в надежде создать ссылку метаданных без необходимости делать это непосредственно в объекте сеанса, но я не уверен, что это возможно.
from tensorflow.contrib.tensorboard.plugins import projector
#with tf.Session() as sess:
config = projector.ProjectorConfig()
# One can add multiple embeddings.
embedding = config.embeddings.add()
embedding.tensor_name = 'Embedding/W'
# Link this tensor to its metadata file (e.g. labels).
embedding.metadata_path = 'C:/tmp/tflearn_logs/shallow_lstm/'
# Saves a config file that TensorBoard will read during startup.
projector.visualize_embeddings(tf.summary.FileWriter('/tmp/tflearn_logs/shallow_lstm/'), config)
Ниже приведена привязка текущей визуализации встраивания. Обратите внимание на пустые метаданные. Есть ли способ напрямую присоединить нужный метафайл к этому встраиванию?
3 ответа:
У меня была такая же проблема, и теперь она решена :)
По существу, все, что вам нужно сделать, это выполнить следующие 3 шага:
- сохранить контрольную точку модели, предположив, что каталог ckeckpoint равен
ckp_dir
;- место projector_config.метаданные pbtxt и .tsv в
ckp_dir
;- запустите
tensorboard --logdir=ckp_dir
и перейдите на вкладку вложениеСодержание projector_config.pbtxt это:
embeddings { tensor_name: "embedding_name" metadata_path: "metatdata.tsv" }
Это ключ для связи встраивания с метаданными.цв. В tf.Session (), мы часто получаем значение вложения, как
sess.run('embedding_name:0')
. Но в projector_config.pbtxt , мы просто набираемtensor_name: "embedding_name"
.Как правило, мы можем указать путь к контрольной точке и metadata_path в projector_config.pbtxt , чтобы мы могли разместить контрольную точку , projector_config.метаданные pbtxt и .tsv в разных каталогах. Но я думаю, что это слишком сложно. Я просто решил ее, как описано выше.
Попробуйте это с вашим
projector_config.pbtxt
:embeddings { tensor_name: "Embedding/W" metadata_path: "$LOGDIR/metadata.tsv" }
Убедитесь, что ваш
Дайте мне знать, если это сработает и для вас.$LOGDIR
является тем же путем, который вы используете для вызоваtensorboard --logdir=$LOGDIR
на вашем терминале; то есть он должен быть относительно вашего текущего каталога (поэтому он, вероятно, не должен включатьC:/..
). Также включите имя файла вmetadata_path
.
Я столкнулся с той же проблемой, пытаясь отобразить слова вместо индексов для учебника word2vec. Чтобы добиться этого, ваш
projector_config.pbtxt
должен выглядеть так: это:embeddings { tensor_name: "w_in" metadata_path: "$LOGDIR/vocab.txt" }
Вы также можете изменить функцию
save_vocab
в коде, связанном выше, так как она преобразует unicode в hex.
У меня та же проблема. [EDIT:] я могу заставить его работать, создав поддир и поместив туда все файлы контрольных точек, используя полный путь к файлу метаданных. "Хитрость" заключается в том, что если вы даете tensorboard-logdir этот конкретный dir, он каким-то образом анализирует метаданные и отображает слова в графике, а не только индексы. Недостатком является то, что тогда вложения больше не будут найдены, когда вы просто используете базовый log dir как --logdir, поэтому вам всегда нужно начинать отдельный экземпляр tensorboard для просмотра вложений.
Это действительно очень раздражает, и я не могу представить, что это единственный способ заставить его работать, но я потратил часы, прежде чем это наконец сработало...