在传递形状为(16,3)的张量列表的输入时,列表的每个元素都是时间步长,我遇到了typeerror:输入必须是使用张量流0.12.1的序列。
嵌入具有100个维度和16个批处理大小以及800个时间步的单词,其具有与形状(16,100)相同的800张张量列表的结构。但是,我的新数据没有嵌入。因此,我有一个形状为(16,3)的210张(时间步长)列表。
self.enc_batch = tf.placeholder(tf.int32,[hps.batch_size, hps.enc_timesteps,3], name='enc_batch')
encoder_inputs = tf.unpack(tf.transpose(self.enc_batch,perm=[1,0,2]))
for layer_i in xrange(hps.enc_layers):
cell_fw = tf.nn.rnn_cell.LSTMCell(3,initializer=tf.contrib.layers.xavier_initializer(uniform=True,seed=123),state_is_tuple=False)
cell_bw = tf.nn.rnn_cell.LSTMCell(3,initializer=tf.contrib.layers.xavier_initializer(uniform=True,seed=123),state_is_tuple=False)
(emb_encoder_inputs, fw_state, bw_state) = tf.nn.bidirectional_rnn(cell_fw, cell_bw, tf.to_float(encoder_inputs), dtype=tf.float32, sequence_length=enc_lens)
输出错误日志为:
回溯(最近一次通话最近):
文件“ seq2seq_attention.py”, 第231行,在
tf.app.run()
文件中 “ /home/suparna/evolutionary_network/swap_net_install/local/lib/python2.7/site-packages/tensorflow/python/platform/app.py”, 43行 sys.exit(main(sys.argv [:1] + flags_passthrough))
主文件“ seq2seq_attention.py”,第216行 setup_training(模型,批处理程序,re_vocab)
setup_training中的文件“ seq2seq_attention.py”,第100行 model.build_graph()
在build_graph中的文件“ ../model/seq2seq_attention_model.py”,第382行 self.add_seq2seq()
在add_seq2seq中,文件“ ../model/seq2seq_attention_model.py”,行217 sequence_length = enc_lens)
文件“ /home/suparna/evolutionary_network/swap_net_install/local/lib/python2.7/site-packages/tensorflow/python/ops/rnn.py”, 第530行,在bidirectional_rnn中引发TypeError(“输入必须为 sequence“)
TypeError:输入必须为序列
请帮助我为什么会发生此错误。
encoder_inputs是tf的210个元素的列表.tensor'seq2seq / unpack:0'shape =(16,3)dtype = int32。