在张量流中使用渐变API

时间:2019-05-18 07:43:01

标签: python tensorflow machine-learning

我正在阅读张量流的线性回归。下面是示例代码。

n_epochs = 1000
learning_rate = 0.01

X = tf.constant(scaled_housing_data_plus_bias, dtype=tf.float32, name="X")
y = tf.constant(housing.target.reshape(-1, 1), dtype=tf.float32, name="y")
theta = tf.Variable(tf.random_uniform([n + 1, 1], -1.0, 1.0, seed=42), name="theta")
y_pred = tf.matmul(X, theta, name="predictions")
error = y_pred - y
mse = tf.reduce_mean(tf.square(error), name="mse")

gradients = tf.gradients(mse, [theta])[0]

training_op = tf.assign(theta, theta - learning_rate * gradients)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)

    for epoch in range(n_epochs):
        if epoch % 100 == 0:
            print("Epoch", epoch, "MSE =", mse.eval())
        sess.run(training_op)

    best_theta = theta.eval()

print("Best theta:")
print(best_theta)

据我了解

dc_w, dc_b = tf.gradients(cost, [w,b])

[w,b]上方是一个列表,但在theta之下是尺寸矩阵,例如具有偏斜度的形状为(9, 1),假设第一个是偏斜度项,后来是w1 --- w8。

但是作者将theta作为[theta]传递,但没有获得计算出的输出以及输出的外观。

我的问题是为什么作者在下面的行中使用[0]

gradients = tf.gradients(mse, [theta])[0]

我不明白上面这行要做什么。我查看了张量流的API描述,但无法遵循。

请解释

0 个答案:

没有答案