2017-01-17 13 views
4

Я использую обертку tflearn поверх тензорного потока для построения модели и хотел бы добавить метаданные (метки) к визуализации визуализации. Есть ли способ связать файл metadata.tsv с сохраненной контрольной точкой после факта ее запуска?Связывание вставки тензорной платы Метаданные на контрольную точку

Я создал файл projector_config.pbtxt в logdir сводок контрольной точки, где metadata.tsv находится в той же папке. Конфигурации выглядят следующим образом:

embeddings { 
    tensor_name: "Embedding/W" 
    metadata_path: "C:/tmp/tflearn_logs/shallow_lstm/" 
} 

и была создана с использованием коды из документации - https://www.tensorflow.org/how_tos/embedding_viz/

Я закомментировал tf.Session часть в надежде создать ссылку метаданных без необходимости делая это непосредственно внутри объекта Session, но я не уверен, что это возможно.

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) 

Ниже представлена ​​привязка к текущей визуализации внедрения. Обратите внимание на пустые метаданные. Есть ли способ напрямую привязать желаемый метафайл к этому встраиванию?

Embedding Visualization

ответ

1

У меня была такая же проблема, и она soloved сейчас :)

По сути, все, что вам нужно сделать, это следующие 3 шага:

  1. Сохранить модель контрольно-пропускной пункт, предположив каталог ckeckpoint является ckp_dir;
  2. Место projector_config.pbtxt и metadata.tsv in ckp_dir;
  3. запустить tensorboard --logdir=ckp_dir и нажмите Встраивание Tab

содержание projector_config.pbtxt является:

embeddings { 
     tensor_name: "embedding_name" 
     metadata_path: "metatdata.tsv" 
    } 

Это ключ, чтобы связать вложение в metadata.tsv. В tf.Session() мы часто получаем значение вложения, например sess.run('embedding_name:0'). Но в projector_config.pbtxt, мы просто набираем tensor_name: "embedding_name".

В целом, мы можем указать путь контрольной точки и metadata_path в projector_config.pbtxt так, что мы можем разместить блокпост, projector_config.pbtxt и metadata.tsv в разных каталогах. Но я считаю, что это слишком сложно. Я просто решил это, как указано выше.

the result shown here

-1

У меня та же проблема. [EDIT:] Как я могу заставить его работать, это создать субдир и поместить туда все файлы контрольных точек, используя полный путь к файлу метаданных. «Трюк» заключается в том, что тогда, если вы дадите тензорную карточку --logdir, этот конкретный каталог, он каким-то образом анализирует метаданные и отображает слова на графике, а не только индексы. Недостатком является то, что тогда вложения больше не обнаруживаются, когда вы просто используете базовый журнал dir как -logdir, поэтому вам всегда нужно начинать отдельный экземпляр тензора для просмотра вложений.

Это действительно очень раздражает, и я не могу себе представить, что это единственный способ заставить его работать, но я потратил несколько часов до этого один наконец работал ...

+1

Не могли бы вы уточнить, что вы имеете в виду, поставив «все файлы контрольных точек»? Я столкнулся с той же проблемой - вкладка embeddings показывает только 0 тензоров ... – Insectatorious

1

Попробуйте это с вашим projector_config.pbtxt:

embeddings { 
    tensor_name: "Embedding/W" 
    metadata_path: "$LOGDIR/metadata.tsv" 
} 

Убедитесь, что ваш $LOGDIR - это тот же путь, который вы используете для звонка tensorboard --logdir=$LOGDIR на свой терминал; то есть он должен относиться к вашему текущему каталогу (поэтому он, вероятно, не должен включать C:/..). Также укажите имя файла в metadata_path.

Дайте мне знать, если это сработает и для вас.


я наткнулся на такую ​​же проблему, пытаясь отобразить слова вместо индексов для word2vec tutorial. Для того, чтобы добиться того, что ваш projector_config.pbtxt должен выглядеть следующим образом:

embeddings { 
    tensor_name: "w_in" 
    metadata_path: "$LOGDIR/vocab.txt" 
} 

Вы также можете изменить save_vocab функцию в коде связанного выше, так, как есть, он преобразует Юникода в шестнадцатеричном.

 Смежные вопросы

  • Нет связанных вопросов^_^