我正在学习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都属于shape (101, 1)。那么是我的期望不到位,还是我在这里做错了什么?
发布于 2018-12-15 11:03:34
事实证明,问题出在成本函数定义中。最初,成本函数的定义如下:
cost = tf.pow(Y - y_model, 2)我意识到它缺少平均成分(前一个是返回一个矩阵而不是单个值)。
cost = tf.reduce_mean(tf.pow(Y - y_model, 2))https://stackoverflow.com/questions/53789076
复制相似问题