私はlogitsとラベルの最初の薄暗いが、同じ寸法を有しているにもかかわらずseq2seq.sequence_loss
でこのエラーを取得しています、すなわちBATCHSIZEInvalidArgumentError:logitsとラベルと同じ一次元seq2seqを持っている必要がありますTensorflow
私はTF 1.0でseq2seqモデルを作成しましたバージョン。次のように私の損失関数は次のとおりです。
logits = self.decoder_logits_train
targets = self.decoder_train_targets
self.loss = seq2seq.sequence_loss(logits=logits, targets=targets, weights=self.loss_weights)
self.train_op = tf.train.AdamOptimizer().minimize(self.loss)
私はトレーニングしながら、自分のネットワークを実行している上で、次のエラーを取得しています:
a,b = sess.run([model.decoder_logits_train, model.decoder_train_targets], feed_dict)
print(np.shape(a)) # (128, 10, 150000) which is (BatchSize, MaxSeqSize, Vocabsize)
print(np.shape(b)) # (128, 12) which is (BatchSize, Max length of seq including padding)
を:
InvalidArgumentError (see above for traceback): logits and labels must have the same first dimension, got logits shape [1280,150000] and labels shape [1536]
[[Node: sequence_loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits = SparseSoftmaxCrossEntropyWithLogits[T=DT_FLOAT, Tlabels=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](sequence_loss/Reshape, sequence_loss/Reshape_1)]]
次のように私はlogits
とtargets
テンソルの形状を確認します
targets
とlogits
の最初のディメンションは同じですこのエラー?
興味深いことに、エラーuが(128 * 10, 150000)
[product of first two dimension, vocab_size]
ある、logitsの寸法が(1280, 150000)
として言及されていることを観察することができ、そしてすなわち(1536)
ターゲットの同じ、再び、最初の二つの次元の積(128*12)
ありますか?
注:あなたが実際には同じであることを第一および第二の寸法を必要とするようTensorflow 1.0 CPUバージョン
私のロジットとターゲットは同じ形状ですが、損失機能からエラーが発生します。私のロジットは形状(128,10,150000)ですが、エラーmsgは形状を(1280,150000)と記述します。つまり、第1次元と第2次元を平坦化し、エラーが発生します。 –
ターゲットが形状(128,12)であると書いていませんか? –
ええターゲットは、パディングも持っているので、形状(128,12)です。 コードにリンクする:https://github.com/adakum/seq2seq/blob/philly_compatible/seq2seq_model.py –