原视频链接:《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili
import matplotlib.pyplot as plt
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]
w = 1.0
def forward(x):
return x * w
def cost(xs, ys):
cost = 0
for x, y in zip(xs, ys):
cost += (forward(x) - y) ** 2
return cost / len(xs)
def gradient(xs, ys):
grad = 0
for x, y in zip(xs, ys):
grad += 2 * x * (x * w - y)
return grad / len(xs)
print('Predict (Before training)', 4, forward(4))
cost_list = []
for epoch in range(50):
cost_val = cost(x_data, y_data)
grad_val = gradient(x_data, y_data)
w -= round(0.01 * grad_val, 5)
cost_list.append(cost_val)
print('Epoch:', epoch, 'w=', w, 'loss', cost_val)
print('Predict (after training)', 4, forward(4))
# 将训练过程产生的数据保存到文件中,若不想保存可省略这部分
outfile = open('dataofGradient.txt', "w")
for i in range(len(cost_list)):
outfile.write(str(round(cost_list[i], 5)) + " ")
outfile.close()
# 绘制训练过程的图像
plt.plot([x for x in range(50)],cost_list)
plt.ylabel('cost')
plt.xlabel('epoch')
plt.show()
生成的图像如下: