我正在使用tensorflow机器学习食谱(https://github.com/nfmcclure/tensorflow_cookbook)学习张量流。我目前正在阅读NLP章节(07)。关于如何决定张量流变量的维数,我感到非常困惑。例如,在他们使用的单词包中:
# Create variables for logistic regression
A = tf.Variable(tf.random_normal(shape=[embedding_size,1]))
b = tf.Variable(tf.random_normal(shape=[1,1]))
# Initialize placeholders
x_data = tf.placeholder(shape=[sentence_size], dtype=tf.int32)
y_target = tf.placeholder(shape=[1, 1], dtype=tf.float32)
并在tf-idf示例中使用:
# Create variables for logistic regression
A = tf.Variable(tf.random_normal(shape=[max_features,1]))
b = tf.Variable(tf.random_normal(shape=[1,1]))
x_data = tf.placeholder(shape=[None, max_features], dtype=tf.float32)
y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)
如何确定何时在占位符形状中使用None与1?谢谢!
答案 0 :(得分:4)
使用None
作为形状的一部分,意味着将在您运行session时确定。
这对于所谓的batch训练进行训练非常有用,在训练中,您可以为训练过程的每次迭代提供固定大小的数据子集。
因此,如果您将其保留在None
,则可以毫无问题地在批量大小之间切换。 (虽然你不会在同一个会话中这样做,但每个会话都可以尝试不同的批量大小)
当你陈述一个特定的形状时,它会是什么形状,这是在会话期间可以提供给它的唯一形状(使用feed_dict
参数)
在您的具体示例中,代码的第一部分,y_target
的形状始终为[1, 1]
,在代码的第二部分,y_target
可以是[10, 1]
/ [200, 1]
/ [<whatever>, 1]
答案 1 :(得分:1)
&#39;无&#39;当占位符中的元素数量提前未知时,应该使用。但是,例如在x_data占位符中,如果数据元素的数量为1,即事先已知,则可以替换“无”。用1.