2017-04-07 95 views
0

我正嘗試使用tensorflow和lstm在kaggle中創建配方生成器。但是我完全陷入了與尺寸有關的事情。有人能指出我朝着正確的方向嗎?邏輯和標籤必須具有相同的第一維

https://www.kaggle.com/pablocastilla/d/kaggle/recipe-ingredients-dataset/ingredients-recomender-using-lstm-with-tensorflow/run/1066831

非常感謝!

+0

您是否能直接在帖子發佈您的代碼的相關部分(鏈接破碎/更新隨着時間的推移這是不是有用的未來的讀者),並添加你想解決什麼問題? – kaufmanu

回答

1

我認爲這個問題是

training_batches[0][1] 

是一個列表,而不是一個numpy.array,就應該相應地修改create_datasets ...

1

下面是從seq2seq.sequence_loss(logits, targets, weights)實施的摘錄,你在你的代碼中使用:

with ops.name_scope(name, "sequence_loss", [logits, targets, weights]): 
    num_classes = array_ops.shape(logits)[2] 
    logits_flat = array_ops.reshape(logits, [-1, num_classes]) 
    targets = array_ops.reshape(targets, [-1]) 
    if softmax_loss_function is None: 
     crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
labels=targets, logits=logits_flat) 

我相信你看到的錯誤是源於該代碼的最後一行。該錯誤消息是不言自明:

InvalidArgumentError: logits and labels must have the same first dimension, got logits shape [8,6714] and labels shape [2]

即第一維logits_flattargets的大小必須相同。這直接轉換爲您對seq2seq.sequence_loss的輸入:您的targetslogits變量的前兩個維度必須相等。因此,要麼你沒有對兩個變量使用相同數量的批次,或者你的序列長度發生了變化(儘管這很奇怪)。

相關問題