我正在训练RNN将一系列输入(每个时间步13个值)分类为特定类。
这是我的代码的相关部分(行号前缀)
50 data = tf.placeholder(tf.float32, [None, 40,13]) #Number of examples, number of input, dimension of each input
51 target = tf.placeholder(tf.float32, [None, 3])
52 num_hidden = 24
53 cell = tf.nn.rnn_cell.LSTMCell(num_hidden,state_is_tuple=True)
54 val, _ = tf.nn.dynamic_rnn(cell, data, dtype=tf.float32)
这里我已经为批处理的每个输入序列填充(前缀和值零)以使其为40x13。(填充操作未在上面的代码中显示)
因此,RNN将考虑每个示例的过去40个步骤,然后一个目标的热矢量将告诉它该示例属于哪个类。
另外,我确保每个例子的输出类是1或2(从不为零)。
我看到https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn提到了sequence_length参数。
Que 1)是否可以用于批处理或批处理中的每个示例?
Que 2)另外,你能建议我改变每个批次或批次之间的值(取决于哪个),假设我有一个整数数组seq_len,它存储每个批次或每个例子的期望值(以相关者为准)?
[quote] sequence_length :(可选)大小为[batch_size]的int32 / int64向量。超过批处理元素的序列长度时用于复制状态和零输出输出。所以它的正确性要高于性能。[/ quote]
Que 3)假设我将它设置为14 - 这是否意味着RNN将在第14步之后考虑前14个时间步并进行输出状态(称为O 14 )并忽略第15步的输入第40步(将其视为全零)然后将O 14 与目标向量相关联。那么我不必为前缀零填充?
谢谢。
您需要更多代码才能了解这种情况吗?
PS:我的设置
$ python
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.8.0'
答案 0 :(得分:0)