我正在尝试复制Tensorflow tutorial for LSTM,而在reader.py中有一个名为ptb_producer
的函数可以生成批次。
就是这样:
i = tf.train.range_input_producer(epoch_size, shuffle=False).dequeue()
x = tf.strided_slice(data, [0, i * num_steps],
[batch_size, (i + 1) * num_steps])
x.set_shape([batch_size, num_steps])
y = tf.strided_slice(data, [0, i * num_steps + 1],
[batch_size, (i + 1) * num_steps + 1])
y.set_shape([batch_size, num_steps])
现在,在tf.strided_slice
函数strides
上,它表示参数None
的默认值为{{1}}。但是,正如您所看到的,此处传递的步幅没有参数。这意味着将使用默认值。这是否意味着默认情况下需要大步为1?
答案 0 :(得分:2)
是的,默认步幅为1.但是对于较新的TF版本,最好以这种方式编写:
x = data[0:batch_size, i * num_steps:(i + 1) * num_steps]
y = data[0:batch_size, i * num_steps + 1:(i + 1) * num_steps + 1]