第二讲线性模型

文章介绍了使用PyTorch进行线性模型的训练过程,包括数据集、模型选择、训练步骤和推理工作。通过源码展示了如何计算损失并逐步优化权重w,同时给出了二维线性模型y=kx+b的3D损失表面图,探讨了不同权重和偏置b对损失的影响。
摘要由CSDN通过智能技术生成

第二讲pytorch深度学习实践的学习以及源码


B站刘二大人传送门:第二讲pytorch 线性模型

正常的训练工作步骤

步骤1,DataSet  数据集

步骤2,Model  选择模型

步骤3,Training  训练

步骤4,inferring 推理工作


第二讲源码


import numpy as  np
import matplotlib.pyplot as plt

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

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

w_list=[]
mse_list=[]
#步长为0.1从0.0到4.0
for w in np.arange(0.0,4.1,0.1):
    print('w=',w)
    l_sum=0
    #zip拿出来拼接
    for x_val,y_val in zip(x_data,y_data):
        y_pred_val=forward(x_val)
        loss_val=loss(x_val,y_val)
        l_sum=loss_val
        print('\t',x_val,y_val,y_pred_val,loss_val)
    print('MSE=',l_sum/3)
    w_list.append(w)
    mse_list.append(l_sum /3)


plt.plot(w_list,mse_list)
plt.ylabel('loss')
plt.xlabel('w')
plt.show()

代码画出的结果 权重和损失类太长,不展示,只展示图


第二讲课后作业 

题目:线性模型 y=kx+b

作业代码:


import numpy as  np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

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

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

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

w_list=[]
b_list=[]
mse_list=[]
w=np.arange(0,4.1,0.5)
b=np.arange(-2,2.1,0.5)
[w,b]=np.meshgrid(w,b)
l_sum=0
for x_val,y_val in zip(x_data,y_data):
    y_pred_val=forward(x_val)
#     print(y_pred_val)
    loss_val=loss(x_val,y_val)
    l_sum+=loss_val
fig = plt.figure()
ax=Axes3D(fig)
surf=ax.plot_surface(w,b,l_sum/3,cmap=cm.coolwarm)
ax.set_xlabel('w')
ax.set_ylabel('b')
ax.set_zlabel('loss')
plt.title("liner model y=w*x+b")
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()



效果图



 实在是实现不了那个颜色,感觉有点丑,还是回归原始


 代码:

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

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

w_list=[]
b_list=[]
mse_list=[]
w=np.arange(0,4.1,0.5)
b=np.arange(-2,2.1,0.5)
[w,b]=np.meshgrid(w,b)
l_sum=0
for x_val,y_val in zip(x_data,y_data):
    y_pred_val=forward(x_val)
#     print(y_pred_val)
    loss_val=loss(x_val,y_val)
    l_sum+=loss_val
fig = plt.figure()
ax=Axes3D(fig)
ax.plot_surface(w,b,l_sum/3)
ax.set_xlabel('w')
ax.set_ylabel('b')
ax.set_zlabel('loss')
plt.title("liner model y=w*x+b")
plt.show()




效果图:


第二讲完结 撒花!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值