Я использую hub.Module("https://tfhub.dev/google/universal-sentence-encoder/2")
для восстановления модели.Я хочу получить вложение слова и справочную таблицу обученной модели.
При использовании полной модели встраивания вы можете просто сделать:
embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/2")
embeddings = embed([
"The quick brown fox jumps over the lazy dog.",
"I am a sentence for which I would like to get its embedding"])
with tf.Session() as sess:
sess.run([tf.global_variables_initializer(), tf.tables_initializer()])
print(sess.run(embeddings))
Это затем дает проход через полную модель.Я просто хочу передать предложение, пока слова не будут закодированы в их word_embedding в самом начале.Мне удалось получить веса для вложений, используя:
E = sess.run(slim.get_variables('Embeddings_en:0'))
, что дает матрицу (N_words x N_embedding_size)
.Проблема в том, что теперь я не могу восстановить словарный запас.Я нашел узлы операций в графе module/string_to_index_Lookup/hash_table_Lookup
, которые, вероятно, делают то, что я хочу, но они не являются переменными (поэтому, к моему ограниченному пониманию низкоуровневого тензорного потока), я не смог повторно использовать эти операции напрямую.
Как это можно решить?
Очевидно, это не тривиально (https://github.com/tensorflow/hub/issues/67) - но, возможно, кто-то здесь может помочь;)