PyTorch学习(一)--线性模型

210 阅读1分钟

第二讲--线性模型(作业)

教程视频:www.bilibili.com/video/av928…

作业题目:实现线性模型(y=wx+b)并输出loss的3D图像。

实现代码:

# 知足上进 不负野心
# 3307952992@qq.com
# 开发时间: 2023/2/6 17:19


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 = [5.0, 8.0, 11.0]


def forward(x):
    return x * w + b


def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) * (y_pred - y)


mse_list = []
W = np.arange(0.0, 4.1, 0.1)
B = np.arange(0.0, 4.1, 0.1)
[w, b] = np.meshgrid(W, B)
loss_sum = 0
cnt = 0
for x_val, y_val in zip(x_data, y_data):
    # print('x_val', x_val)
    y_pred_val = forward(x_val)
    # 注意y_pred的类型是一个数组
    print(y_pred_val)
    cnt += 1
    loss_val = (y_pred_val - y_val) * (y_pred_val - y_val)
    # print('loss_val', loss_val)
    loss_sum += loss_val


fig = plt.figure()
plt.title('3DImage')
ax = fig.add_subplot(projection='3d')
surf = ax.plot_surface(w, b, loss_sum/3)
fig.colorbar(surf, shrink=0.5, aspect=5) #当时正好搜了一下plot 为了好玩弄上的   与题目无关
plt.show()
print('end')