用tensorflow2.0实现梯度下降
时间: 2024-01-08 13:43:36 浏览: 31
以下是使用TensorFlow 2.0实现梯度下降的示例代码:
```
import tensorflow as tf
# 定义训练数据
x_train = [1.0, 2.0, 3.0, 4.0]
y_train = [2.0, 4.0, 6.0, 8.0]
# 定义模型参数
W = tf.Variable(1.0)
b = tf.Variable(1.0)
# 定义模型
def model(x):
return W * x + b
# 定义损失函数
def loss(predicted_y, desired_y):
return tf.reduce_mean(tf.square(predicted_y - desired_y))
# 定义训练函数
def train(x, y, learning_rate):
with tf.GradientTape() as t:
current_loss = loss(model(x), y)
dW, db = t.gradient(current_loss, [W, b])
W.assign_sub(learning_rate * dW)
b.assign_sub(learning_rate * db)
# 训练模型
for epoch in range(100):
for x, y in zip(x_train, y_train):
train(x, y, learning_rate=0.01)
current_loss = loss(model(x_train), y_train)
print(f"Epoch {epoch}: Loss: {current_loss.numpy()}")
# 测试模型
x_test = [5.0, 6.0, 7.0, 8.0]
y_test = [10.0, 12.0, 14.0, 16.0]
predicted_y = model(x_test)
print(f"Predicted Y: {predicted_y.numpy()}")
print(f"Desired Y: {y_test}")
```
在这个例子中,我们使用TensorFlow 2.0实现了一个简单的线性回归模型,并使用梯度下降算法对其进行了训练。我们首先定义了训练数据,然后定义了模型参数W和b。接下来,我们定义了模型函数,它将输入x映射到输出y。然后,我们定义了损失函数,它将模型的预测输出y与真实输出y进行比较,并计算它们之间的平方差。最后,我们定义了一个训练函数,它使用梯度带自动计算模型参数W和b的梯度,并使用学习率更新它们。在训练过程中,我们迭代地将训练数据馈送给训练函数,直到达到指定的训练轮数。最后,我们使用训练好的模型对测试数据进行预测,并将预测结果与真实结果进行比较。