tf.strided_slice的默认步幅是1吗?

时间:2017-11-02 12:51:34

标签: python tensorflow lstm

我正在尝试复制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?

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]