我刚刚开始学习张量流,并且正在实施线性回归的神经网络。我正在关注一些可用的在线教程能够编写代码。我没有使用激活功能,我正在使用MSE(var jqxhr1 = $.post( 'example1.php');
var jqxhr2 = $.post( 'example2.php');
$.when(jqxhr1, jqxhr2).then(function( response1, response2 ) {
console.log('both requests succeed, do staff here')
});
)。当我运行代码时,我得到tf.reduce_sum(tf.square(output_layer - y))
作为预测准确性。我使用的代码如下所示
Nan
下面给出了一个示例输出
# Placeholders
X = tf.placeholder("float", shape=[None, x_size])
y = tf.placeholder("float")
w_1 = tf.Variable(tf.random_normal([x_size, 1], seed=seed))
output_layer = tf.matmul(X, w_1)
predict = output_layer
cost = tf.reduce_sum(tf.square(output_layer - y))
optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
for epoch in range(100):
# Train with each example
for i in range(len(train_X)):
sess.run(optimizer, feed_dict={X: train_X[i: i + 1], y: train_y[i: i + 1]})
train_accuracy = np.mean(sess.run(predict, feed_dict={X: train_X, y: train_y}))
test_accuracy = np.mean(sess.run(predict, feed_dict={X: test_X, y: test_y}))
print("Epoch = %d, train accuracy = %.2f%%, test accuracy = %.2f%%"
% (epoch + 1, 100. * train_accuracy, 100. * test_accuracy))
# In[121]:
sess.close()
感谢任何帮助。此外,如果您能提供非常棒的调试技巧。
感谢。
注意: 当我运行单批时,预测值变得太大
Epoch = 1, train accuracy = -2643642714558682640372224491520000.000000%, test accuracy = -2683751730046365038353121175142400.000000%
Epoch = 1, train accuracy = 161895895004931631079134808611225600.000000%, test accuracy = 165095877160981392686228427295948800.000000%
Epoch = 1, train accuracy = -18669546053716288450687958380235980800.000000%, test accuracy = -19281734142647757560839513130087219200.000000%
Epoch = 1, train accuracy = inf%, test accuracy = inf%
Epoch = 1, train accuracy = nan%, test accuracy = nan%
输出
sess.run(optimizer, feed_dict={X: train_X[0:1], y: train_y[0:1]})
sess.run(optimizer, feed_dict={X: train_X[1:2], y: train_y[1:2]})
sess.run(optimizer, feed_dict={X: train_X[2:3], y: train_y[2:3]})
print(sess.run(predict, feed_dict={X: train_X[3:4], y: train_y[3:4]}))
注意: 当我将learing_rate减少到一个小的值(1e-8)时,它有点工作。尽管如此,当我在同一数据集上运行回归时,较高的learing_rate工作正常。 这个问题的高杠杆率也是如此吗?
答案 0 :(得分:1)
cost = tf.reduce_sum(tf.square(output_layer - y))
在此行中,您计算批次中每个张量的总和 ,其中批次是一批平方差异。
如果您的批次具有1号(随机梯度下降),这是可以的,因为您想要进行小批量梯度下降(批量大小> 1),您希望最小化平均值批次错误。
因此,您希望最小化此功能:
cost = tf.reduce_mean(tf.square(output_layer - y))
tf.reduce_mean
计算其输入中元素的平均值。
如果批量大小为1,则公式的行为与您之前使用的公式完全相同,但是当批量大小大于1时,它会计算批次的均方误差,这就是您想要的。