为什么在Tensorflow中将None用作批次维度?

Hos*_*ein 5 python tensorflow

在以下代码中,None用来声明占位符的大小。

x_data = tf.placeholder(tf.int32, [None, max_sequence_length]) 
y_output = tf.placeholder(tf.int32, [None])
Run Code Online (Sandbox Code Playgroud)

据我所知,这None用于指定可变批次尺寸。但是,在每个代码中,我们都有一个显示批处理大小的变量,例如:

batch_size = 250
Run Code Online (Sandbox Code Playgroud)

那么,None在这种情况下,有什么理由要使用,而不是简单地将占位符声明为吗?

x_data = tf.placeholder(tf.int32, [batch_size, max_sequence_length]) 
y_output = tf.placeholder(tf.int32, [batch_size])
Run Code Online (Sandbox Code Playgroud)

Ima*_*ngo 5

这样网络的输入就不会局限于固定大小的批次,并且您可以稍后重用学习到的网络来预测单个实例或任意长的批次(例如一次预测所有测试样本)。

换句话说,它在训练期间作用不大,因为无论如何,批次在训练期间通常具有固定大小,但它使网络在测试时更有用。