2016-11-24 83 views
2

我正在準備用於手寫識別目的的TensorFlow應用程序。我使用了一個簡單的RNN模型,最後堆疊LSTM單元和CTC損耗。我對準備輸入數據的標籤有一些疑惑。在TensorFlow(python)中爲CTC丟失準備目標標籤

假設我有三個字符串作爲目標標籤,如​​,"ab""baccc"(在我的情況下,目標標籤是單詞而不是句子)。所以我有三個字符類別索引a:0, b:1, c:2, blank:3。據我瞭解目標標籤的密集表示應該

0 3 1 3 2 0 0 0 
0 3 1 0 0 0 0 0 
1 3 0 2 3 2 3 2 

但作爲TensorFlow需要這個標籤的稀疏表示我需要準備的稀疏表示作爲

indices[(0,0),(0,1),(0,2),(0,3),(0,4),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7)] 
values[0,3,1,3,2,0,3,1,1,3,0,2,3,2,3,2] 
shape[3,8] 

我是正確的關於這個數據準備?任何幫助,高度讚賞。

回答

0

如果我正確地理解了這一點,那麼您使用的批量大小爲3,並將不同長度的目標放在一起。 對於四氯化碳的損失,我建議使用一批1號,因爲四氯化碳似乎難以收斂在長序列上。

在密集表示中,您似乎用0填充較短的目標。那些應該是3代替(空格)。

最後,你構建的稀疏張量對我來說似乎是正確的。你有維度問題嗎?你有錯誤日誌顯示嗎?

+0

謝謝你的回答。這有很大的幫助。我肯定會使用批量大小1.但關於目標標籤,我實際上並沒有準備好密集矩陣。由於張量流需要我準備直接稀疏。現在如果TF用0填充它們(作爲內部操作),我什麼也做不了。我可以嗎 ?但是,您的反饋很有用。 –