处理dynamic_rnn输出以使用tf.contrib.legacy_seq2seq.sequence_loss计算损失

时间:2018-07-28 05:54:57

标签: tensorflow machine-learning rnn tfrecord

我正在尝试通过tf.train.batch将输入数据提供给dynamic_rnn单元,并将padding设置为true(从包含TFRecords的输入管道读取)。尽管我的训练集中的最大步数是600,但是对于每个小批量,填充的步数有时会少于600。因此,我的步长不是静态的,并且在批量检索过程中可能会有所不同(即,批量进行中)我的步长都相等但不等于max_steps)

我能够将输入提供给dynamic_rnn,但是将动态rnn的输出(作为批处理x步骤x功能的形状)提供给tf.contrib.legacy_seq2seq.sequence_loss。由于要求输入必须是二维张量列表(形状为Batchsize x特征),因此我尝试执行tf.unstack(input,axis = 1),但这是错误的,因为尺寸不是静态的。

  

tensorflow \ python \ ops \ array_ops.py”,行1091,在堆栈中      引发ValueError(“无法从形状%s推断数字”%value_shape)   ValueError:无法从形状(?,?,?)推断数字

当尺寸为动态时,将3-D张量转换为2-D张量列表的正确方法是什么?我正在尝试从dynamic_rnn角度了解可变长度序列,并加上tf.contrib.legacy_seq2seq.sequence_loss的损失计算

0 个答案:

没有答案