2017-07-13 3 views
1

私は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)]] 

次のように私はlogitstargetsテンソルの形状を確認します

targetslogitsの最初のディメンションは同じですこのエラー?

興味深いことに、エラーuが(128 * 10, 150000)[product of first two dimension, vocab_size]ある、logitsの寸法が(1280, 150000)として言及されていることを観察することができ、そしてすなわち(1536)ターゲットの同じ、再び、最初の二つの次元の積(128*12)ありますか?

注:あなたが実際には同じであることを第一および第二の寸法を必要とするようTensorflow 1.0 CPUバージョン

答えて

0

エラーメッセージが、ビットmissleadingのようです。 logitsは確率ベクトルであるとしてtargetsが本当の出力を表して

logits: A Tensor of shape [batch_size, sequence_length, num_decoder_symbols] and dtype float. The logits correspond to the prediction across all classes at each timestep.

targets: A Tensor of shape [batch_size, sequence_length] and dtype int. The target represents the true class at each timestep.

また、これは、理にかなっているので、彼らは同じ長さでする必要があります。これはhereに書かれています。

+0

私のロジットとターゲットは同じ形状ですが、損失機能からエラーが発生します。私のロジットは形状(128,10,150000)ですが、エラーmsgは形状を(1280,150000)と記述します。つまり、第1次元と第2次元を平坦化し、エラーが発生します。 –

+0

ターゲットが形状(128,12)であると書いていませんか? –

+0

ええターゲットは、パディングも持っているので、形状(128,12)です。 コードにリンクする:https://github.com/adakum/seq2seq/blob/philly_compatible/seq2seq_model.py –

関連する問題