第二讲--线性模型(作业)
教程视频: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')