我正在学习Tensorflow,并尝试一些测试模型以了解Tensorflow的工作原理。该模型非常简单(线性模型),并且具有以下输入和输出:
X = tf.placeholder(tf.float32, shape=(None, 1), name="Input")
Y = tf.placeholder(tf.float32, shape=(None, 1), name="Output")
因此,基本上,输入和输出只有一个维度。至于训练阶段:
for epoch in range(training_epochs):
for (x, y) in zip(trX, trY):
sess.run(train_op, feed_dict={X: [x], Y: [y]})
上面的代码是当我一次训练模型一个样本并且它起作用时。至于下一步,我想看看如何在每个纪元训练整个模型:
for epoch in range(training_epochs):
sess.run(train_op, feed_dict={X: trX, Y: trY})
以这种方式进行训练不会收敛。 trX
和trY
的形状均为(101, 1)
。那么我的期望值没有到位吗,或者我在这里做错了什么?
答案 0 :(得分:0)
事实证明,问题出在成本函数定义中。最初,成本函数是这样定义的:
cost = tf.pow(Y - y_model, 2)
我意识到它缺少平均成分(上一个成分返回的是矩阵而不是单个值)。
cost = tf.reduce_mean(tf.pow(Y - y_model, 2))