テンソルフローとlstmを使用してkaggleでレシピジェネレータを作成しようとしています。しかし、私は完全にdimesionsに関連する何かにこだわっています。誰かが私を正しい方向に向けることができますか?ロジットとラベルの最初の次元が同じでなければなりません
本当にありがとうございました!
テンソルフローとlstmを使用してkaggleでレシピジェネレータを作成しようとしています。しかし、私は完全にdimesionsに関連する何かにこだわっています。誰かが私を正しい方向に向けることができますか?ロジットとラベルの最初の次元が同じでなければなりません
本当にありがとうございました!
私はここでseq2seq.sequence_loss(logits, targets, weights)
の実装からの抜粋は、あなたが、これだ
...問題は
training_batches[0][1]
がリストではなくnumpy.arrayあり、それに応じcreate_datasetsを修正しなければならないことだと思いますあなたのコードで使用してください:
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]
Ie. logits_flat
とtargets
の最初の次元のサイズは同じでなければなりません。これは直接seq2seq.sequence_loss
への入力に変換されます:targets
とlogits
変数の最初の2つの次元は等しくなければなりません。したがって、2つの変数に同じ数のバッチを使用していないか、何らかの形でシーケンスの長さが変わっています(これは変です)。
コードの関連する部分を直接ポストに投稿することを検討してください(将来の読者には役に立たないリンクが壊れたり更新されたりします)。 – kaufmanu