2016-04-01 3 views
1

tensorflow.models.rnn.rnn_cellのMultiRNNCellを使用しています。オンMultiRNNCellを使用しているときのスライスエラー

ouputs, mem_states = seq2seq.embedding_rnn_decoder(decoder_inputs, enc_state, e_cell, vocab_size, output_projection=(W, b), feed_previous=False)#

を次のように私はseq2seq.embedding_rnn_decoder内側からそれを使用する上でその後

e_cell = rnn_cell.GRUCell(self.rnn_size)

e_cell = rnn_cell.MultiRNNCell([e_cell] * 2)

:これは私のMultiRNNCell

コードを宣言する方法です私は次のようなエラーに

エラーを取得、これを行う:

tensorflow.python.framework.errors.InvalidArgumentError: Expected size[1] in [0, 0], but got 1024 [[Node: en/embedding_rnn_decoder_1/rnn_decoder/MultiRNNCell/Cell1/Slice = Slice[Index=DT_INT32, T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](Sigmoid_2, en/embedding_rnn_decoder_1/rnn_decoder/MultiRNNCell/Cell1/Slice/begin, en/embedding_rnn_decoder_1/rnn_decoder/MultiRNNCell/Cell1/Slice/size)]] [[Node: en/embedding_rnn_decoder/rnn_decoder/loop_function_17/StopGradient/_1230 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_11541_en/embedding_rnn_decoder/rnn_decoder/loop_function_17/StopGradient", tensor_type=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

することは誰もが同様のエラーを見ていますか?すべてのポインタ?

+0

ここをクリックしてください: http://stackoverflow.com/questions/38183276/tensorflow-rnn-slice-error – Eli

答えて

0

embedding_rnn_decoderに無効な引数があります。 たぶんenc_state変更しよう:私はあなたに似た問題を持っている

ouputs, mem_states = seq2seq.embedding_rnn_decoder(decoder_inputs, enc_state[-1], e_cell, vocab_size, output_projection=(W, b), feed_previous=False)

0

{tensorflow.python.framework.errors.InvalidArgumentError: Expected size[1] in [0, 0], but got 40}
私も使用しますrnn_cell.GRUCell(self.rnn_size) 私の経験を共有したいと思うかもしれません。 ここに私はそれを修正した方法です。 私はgruセルと基本的なrnnセルを使いたいので、私はlstmセルのためにコード化されている他のものからプログラムを適応させます。 lstmとGRU/BasicRnnの違いは、state_sizeです。 はここでここでLSTMセルdef state_size(self):return 2 * self._num_units であるGRU/BasicRnnセルdef state_size(self):return self._num_units したがって、マトリックスの形状が異なっている、そして、あなたのコードをチェックするためにop.Iのアドバイスを合わせていないテンソルは、私は同様のを持っていた

+1

回答のフォーマットを改善していただけますか?読むのがとても難しい – Francesco

0

tf.slice含まれていembedding_rnn_seq2seq(Tensorflow v0.9.0)で問題が発生しました。 embedding_rnn_decoderで実行するように入力を切り替え、これらの入力でセッションを実行することができました。

enc_inp = [tf.placeholder(tf.int32, shape=(batch_size,), 
      name="inp%i" % t) for t in range(seq_length)] 

labels = [tf.placeholder(tf.int32, shape=(batch_size,), 
      name="labels%i" % t) for t in range(seq_length)] 

weights = [tf.ones_like(labels_t, dtype=tf.float32) for labels_t in labels] 

dec_inp = ([tf.zeros_like(enc_inp[0], dtype=np.int32, name="GO")] + enc_inp[:-1]) 

prev_mem = tf.zeros((batch_size, memory_dim)) 

cell = rnn_cell.GRUCell(memory_dim) 
cell = rnn_cell.MultiRNNCell([cell]*2) 

dec_outputs, mem_states = seq2seq.embedding_rnn_decoder(dec_inp, prev_mem, 
cell, n_x, n_y,feed_previous=True) 

0

この問題は、GRUセルが2倍になっていますが、初期ベクトルが2倍にならないために発生しています。 initial_vectorのサイズが[batch_size、50]の場合

そしてinitial_vector = tf.concat(1、[initial_vector、initial_vector])

さて、これは初期ベクトルとしてデコーダに入力されます。

関連する問題