pytorch线性回归(笔记一)
2021/5/2 18:25:42
本文主要是介绍pytorch线性回归(笔记一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
代码部分:
import numpy as np import torch import matplotlib.pyplot as plt from torch import nn,optim from torch.autograd import Variable x_data=np.random.rand(100)#数组中加入在[0,1]之间均匀分布的随机样本。构建x的值 noise=np.random.normal(0,0.01,x_data.shape)#生成高斯分布的概率密度随机数 y_data=x_data*0.01+0.2+noise #构建y的值 plt.scatter(x_data,y_data)#装载数据,看看坐标系下的数据分布 plt.show() #看图 #把数据变成俩维度的 x_data=np.reshape(x_data,(-1,1)) y_data=np.reshape(y_data,(-1,1)) #把俩维度的变成一个tensor x_data=torch.FloatTensor(x_data) y_data=torch.FloatTensor(y_data) #tensor变成变量 input=Variable(x_data)#表示输入 target=Variable(y_data)#表示输出 #构建神经网络的模型 class LinearRegression(nn.Module): def __init__(self):#定义网络结构 super(LinearRegression, self).__init__()#父类的初始化 self.fc=nn.Linear(1,1)#线性回归,表示输入一个神经元,输出一个神经元,全连接层 def forward(self,x):#定义网络计算,表示前向传递,pytorch默认做了后向传递 out=self.fc(x) #表示把x值传给全连接层,返回一个y值,然后return return out #定义模型(实例化模型) model=LinearRegression() #定义代价函数(均方差二次函数) mes_loss =nn.MSELoss() #定义优化器(随即梯度下降法) optimizer=optim.SGD(model.parameters(),lr=0.1)#lr表示学习率,model.parameters()表示把参数传递进优化器 #如何查看参数 for name,parameters in model.named_parameters(): print("name:{},param:{}".format(name,parameters)) for i in range(1001):#训练1001次 out=model(input) #把输入传递进去 #计算loss损失函数 loss=mes_loss(out,target) #根据输入和输出计算损失 #梯度清零 optimizer.zero_grad() #先把梯度清零,防止缓存 #计算梯度 loss.backward() #计算梯度 #修改权值 optimizer.step() #根据梯度,修改w和b的值 if i%200 == 0: #每训练200次就打印一次损失函数 print(i,loss.item())
F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/bys/pychartools.py name:fc.weight,param:Parameter containing: tensor([[0.9746]], requires_grad=True) name:fc.bias,param:Parameter containing: tensor([0.2897], requires_grad=True) Process finished with exit code 0
fc.bias表示截取和偏置,fc.weight表示斜率
结果:
0 0.8948118686676025 200 0.0001185736691695638 400 0.00010005112562794238 600 0.00010000772454077378 800 0.00010000762267736718 1000 0.00010000763722928241
初始值是0.8948118686676025,经过一次次的训练,斜率约来越小,最后变成0.00010000763722928241
这篇关于pytorch线性回归(笔记一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享