1

我嘗試構建Char-RNN的Word-RNN等價物,網絡應該在句子中生成下一個單詞。如何使用word2vec嵌入來設計word-RNN模型的輸出層

作爲輸入我使用預先訓練過的word2vec 100-dim向量,隱藏層大小爲200.我的主要問題是輸出層,它應該如何設計?

在char-rnn中,輸出它是具有字符概率分佈(softmax)的詞彙大小(唯一字符數)向量。所以產生下一個字符就是這個分佈的簡單抽樣。 但是當我的單詞詞彙量超過300k時使用word2vec這種方法是不可行的。

使我的輸出產生100暗淡矢量,然後我應該找到使用gensim similar_by_vector function

最近類似的話,你能提供一些很好的和易於理解的Python和tensorflow實施,一些鏈接的github或發佈。

我已經找到了similar question,但它並沒有回答我的問題:

回答

1

您可以輸出一個字(每例)的索引,從而避免了一個熱詞表示(這的確是非常大) 。使用tf.contrib.legacy_seq2seq.sequence_loss_by_example

對於一系列logits(每個示例)的加權交叉熵損失。

  • logits:形狀的2D張量列表[batch_size x num_decoder_symbols]。
  • targets:與logits長度相同的1D批處理大小的int32張量的列表。
  • 重量:1D批量大小的列表 與logits長度相同的浮動張量。

注意,它不會降低你的模型的大小,但它通過計算從稀疏編碼標籤上的損失節省了大量的內存。一個word-rnn實現的完整示例可以在here中找到,它們完全使用這種方法。

相關問題