课程传送门:刘二大人《pytorch深度学习实践》——第二讲线性模型

课程代码:绘制线性模型 (\hat{y}=x*w)在不同w取值下,loss函数变化的图线

课后作业:

个人实现: 

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm


x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

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

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

w_list = np.arange(0.0, 4.1, 0.1)
b_list = np.arange(-2.0, 2.1, 0.1)
mse_list = []

for w in w_list:
    print("w=", w)
    for b in b_list:
        print("b=", b)
        l_sum = 0
        for x_val, y_val in zip(x_data, y_data):
            y_val_pred = forward(x_val, w, b)
            loss_val = loss(x_val, y_val, w, b)
            l_sum += loss_val
            print('  ', x_val, y_val, y_val_pred, loss_val)
        mse_list.append(l_sum/3)
        print("mse=", l_sum/3)


W, B = np.meshgrid(w_list, b_list)
mse_array = np.array(mse_list)
MSE = mse_array.reshape(len(b_list), len(w_list))

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
# 绘制曲面图
surf = ax.plot_surface(W, B, MSE, cmap=cm.coolwarm, linewidth=0, antialiased=False)
plt.style.use('_mpl-gallery')

plt.show()

运行结果:

注:此帖仅为学习记录之用,文中涉及到的PPT均为刘二大人原创,如有侵权,烦请告知,以便删除。本人为初学者入门,代码编写如果有可以改善提高之处,欢迎在评论区留下您宝贵的意见。 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐