深度学习 一元线性回归网络 Pytorch
2020-01-15 06:15
375 查看
深度学习 用Pytorch写一元线性回归网络
一元线性回归的求解方法有很多种,博主之所以用深度学习的方法实现主要是为了在提高自己的理解的同时给要学习的同学提供一些帮助,本人小白,请大佬路过留情,不要嘲笑。网络虽简单,但对理解数学原理,也是能起到比较好的帮助。
直接上代码,必要注释都已添加:
#从头搭建一个线性回归网络 import torch import numpy as np import torch.nn as nn from torch.nn import MSELoss import matplotlib.pyplot as plt #定义训练数据 x = np.random.randn(256) noise = np.random.randn(256)/4 y = 5*x+7+noise #可以作图查看生长的离散点 plt.scatter(x,y) plt.show() #将训练数据转化为float32格式 x_train = x.reshape(-1,1).astype('float32') y_train = y.reshape(-1,1).astype('float32') #定义网络 class Net(nn.Module): def __init__(self): super(Net,self).__init__() self.linear = nn.Linear(1,1)#只需一个一元线性网络层 def forward(self,x): y = self.linear(x) return y #实例化网络,定义代价函数 net = Net() #实例化代价函数(损失函数) criterion = MSELoss() #定义学习率 learning_rate = 0.01 #定义训练轮数 epochs = 100 for i in range(100): #转化为Tensor inputs = torch.from_numpy(x_train) labels = torch.from_numpy(y_train) outputs = net(inputs) #计算代价 loss_mse = criterion(outputs,labels) #反向传播之前将梯度清零,否则pytorch会使用上次和这次计算所得梯度之和作为新的梯度 net.zero_grad() #反向传播,计算梯度 loss_mse.backward() #这里使用梯度下降法更新权重 for f in net.parameters(): f.data.sub_(learning_rate*f.grad.data) #更新梯度也可以使用优化器,更加方便一些: #from torch.optim import SGD #optimizer = SGD(net.parameters(),lr=0.01) #optimizer.zero_grad() #optimizer.step() if (i+1)%10 == 0: print('epochs {0} of {1},loss:{2}'.format(i+1,epochs,loss_mse))
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 基于PyTorch的深度学习入门教程(五)——训练神经网络分类器
- PyTorch的深度学习入门教程之构建神经网络
- 深度学习入门(二) 线性回归、逻辑回归、正则化过程、神经网络简介
- [Github项目]基于PyTorch的深度学习网络模型实现
- [pytorch] 深度学习分割网络U-net的pytorch模型实现 原创 2017年03月08日 21:48:21 标签: python / 深度学习 / 生物图
- [pytorch] 深度学习分割网络U-net的pytorch模型实现
- 深度学习与神经网络-吴恩达-第二周优化算法
- 深度学习: 网络超参数设定
- 深度学习-深度信念(置信)网络(DBN)-从原理到实现(DeepLearnToolBox)
- 深度学习框架排名:TensorFlow第一,PyTorch第二
- 深度学习网络调试技巧_01
- 如此多的深度学习框架,为什么我选择PyTorch?
- 深度学习: 如何训练网络
- TensorFlow 深度学习框架 (1)-- 神经网络与前向传播
- 神经网络浅讲:从神经元到深度学习
- 深度学习与TensorFlow实战(七)全连接网络基础—真实图片输出手写数字识别准确率
- 深度学习之卷积神经网络总结
- 深度学习笔记九:生成对抗网络GAN(基本理论)
- 手机上就能学!Pytorch深度学习教程在此,手把手教你从DQN到Rainbow
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络