PyTorch深度学习实践

线性模型课后作业

模型 y=wx+b(y=2x+4)

数据集:

xy
1.06.0
2.08.0
3.010.0
4.0?

实现代码部分

# Author:gt
# CreatTime:2021/10/29
# FileName:homework1.py
#线性模型y=w*x+b
import numpy as np
import matplotlib.pyplot as plt
#用python画二元函数的3D图像
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt



#准备数据集
x_train=[1.0,2.0,3.0]
y_train=[6.0,8.0,10.0]

#模型
def forward(x):#一次接收一个数值
    return w*x+b

#定义损失函数(是单个样本的)
#每一次前向传播后才能得到预测值
def loss(x,y):
    y_pre=forward(x)
    return (y_pre-y)**2

#保存每次的损失值mse
mse_list=[]
#手动给出w,b的值
w_list=np.arange(-5.0,5.0,0.1)
b_list=np.arange(-5.0,5.0,0.1)
#创建w和b的网格
w,b=np.meshgrid(w_list,b_list)

l_sum=0
#这里相当于用一个循环来表达整个MSE表达式,l_sum=[(wx1+b-y1)**2+(wx2+b-y2)**2+(wx3+b-y3)**2]  MSE=1/m((wx1+b-y1)**2+(wx2+b-y2)**2+(wx3+b-y3)**2)
for x_val,y_val in zip(x_train,y_train):#计算所有样本在同一个w取值下的损失
    y_pre=forward(x_val)
    loss_val=loss(x_val,y_val)
    l_sum+=loss_val#损失值进行累加

#绘制l_sum/3与w和b之间的函数关系图
fig=plt.figure()
ax=Axes3D(fig)
ax.plot_surface(w,b,l_sum/3)
ax.set_xlabel("w’s value")
ax.set_ylabel("b's value")
ax.set_zlabel("MSE‘ value")
plt.show()

运行结果:
不太完美的地方,图片不能鼠标拖曳旋转,不好观察MSE=0时,w和b的取值

在这里插入图片描述
绘制3d图像这块参考了这篇文章,关于python绘制二元函数的图像:
https://blog.csdn.net/your_answer/article/details/79135076
完结,撒花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值