分批训练不会收敛,而单独训练样本会

时间:2018-12-15 02:34:58

标签: python tensorflow

我正在学习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})

以这种方式进行训练不会收敛。 trXtrY的形状均为(101, 1)。那么我的期望值没有到位吗,或者我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明,问题出在成本函数定义中。最初,成本函数是这样定义的:

cost = tf.pow(Y - y_model, 2)

我意识到它缺少平均成分(上一个成分返回的是矩阵而不是单个值)。

cost = tf.reduce_mean(tf.pow(Y - y_model, 2))
相关问题