PyTorch深度学习实践(二)课后作业

线性模型基础,引自视频:刘二大人——《PyTorch深度学习实践》完结合集(p2)

要求

  • 借助np.meshgrid绘制三维曲面图
  • 总体来说,算是一个较为简单的作业

代码如下:

点击查看代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 原始数据
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]


# 前向传播
def forward(x):
    return x * w + b  # w、b为列表,所以是多次运算,并非只计算了一次w、b


# 损失函数
def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) ** 2


w_list = np.arange(0.0, 4.1, 0.1)
b_list = np.arange(-2.0, 2.0, 0.1)
w, b = np.meshgrid(w_list, b_list)  # 将w_list,b_list转化为二维坐标

loss_sum = 0
for x_val, y_val in zip(x_data, y_data):
    loss_val = loss(x_val, y_val)
    loss_sum += loss_val

fig = plt.figure()
ax = Axes3D(fig)
ax.text(0.25, 2, 42, "Cost Value")  # 本来以为Cost Value是Z轴标题,结果不是,位置是试出来的
# ax.set_zlabel('Cost Value') 添加Z轴标题
# x、y轴标题
ax.set_xlabel('w')
ax.set_ylabel('b')
z = np.arange(5, 36, 5)  # z轴标注范围,为了美观
ax.set_zticks(z)
surf = ax.plot_surface(w, b, loss_sum / 3, cmap='coolwarm')
fig.colorbar(surf,  shrink=0.5, aspect=6)  # 设置colorbar,shrink为长度,aspect为宽带
plt.show()

运行结果如下:

posted @ 2021-08-03 10:24  abszse  阅读(149)  评论(0)    收藏  举报