关于pytorch中全连接神经网络搭建两种模式详解


Posted in Python onJanuary 14, 2020

pytorch搭建神经网络是很简单明了的,这里介绍两种自己常用的搭建模式:

import torch
import torch.nn as nn

first:

class NN(nn.Module):
 def __init__(self):
  super(NN,self).__init__()
  self.model=nn.Sequential(
   nn.Linear(30,40),
   nn.ReLU(),
   nn.Linear(40,60),
   nn.Tanh(),
   nn.Linear(60,10),
   nn.Softmax()
  )
  self.model[0].weight.data.uniform_(-3e-3, 3e-3)
  self.model[0].bias.data.uniform(-1,1)
 def forward(self,states):
  return self.model(states)

这一种是将整个网络写在一个Sequential中,网络参数设置可以在网络搭建好后单独设置:self.model[0].weight.data.uniform_(-3e-3,3e-3),这是设置第一个linear的权重是(-3e-3,3e-3)之间的均匀分布,bias是-1至1之间的均匀分布。

second:

class NN1(nn.Module):
 def __init__(self):
  super(NN1,self).__init__()
  self.Linear1=nn.Linear(30,40)
  self.Linear1.weight.data.fill_(-0.1)
  #self.Linear1.weight.data.uniform_(-3e-3,3e-3)
  self.Linear1.bias.data.fill_(-0.1)
  self.layer1=nn.Sequential(self.Linear1,nn.ReLU())

  self.Linear2=nn.Linear(40,60)
  self.layer2=nn.Sequential(self.Linear2,nn.Tanh())

  self.Linear3=nn.Linear(60,10)
  self.layer3=nn.Sequential(self.Linear3,nn.Softmax())


 def forward(self,states):
  return self.model(states)

网络参数的设置可以在定义完线性层之后直接设置如这里对于第一个线性层是这样设置:self.Linear1.weight.data.fill_(-0.1),self.Linear1.bias.data.fill_(-0.1)。

你可以看一下这样定义完的参数的效果:

Net=NN()
print("0:",Net.model[0])
print("weight:",type(Net.model[0].weight))
print("weight:",type(Net.model[0].weight.data))
print("bias",Net.model[0].bias.data)
print('1:',Net.model[1])
#print("weight:",Net.model[1].weight.data)
print('2:',Net.model[2])
print('3:',Net.model[3])
#print(Net.model[-1])

Net1=NN1()
print(Net1.Linear1.weight.data)

输出:

0: Linear (30 -> 40)
weight: <class 'torch.nn.parameter.Parameter'>
weight: <class 'torch.FloatTensor'>
bias 
-0.6287
-0.6573
-0.0452
 0.9594
-0.7477
 0.1363
-0.1594
-0.1586
 0.0360
 0.7375
 0.2501
-0.1371
 0.8359
-0.9684
-0.3886
 0.7200
-0.3906
 0.4911
 0.8081
-0.5449
 0.9872
 0.2004
 0.0969
-0.9712
 0.0873
 0.4562
-0.4857
-0.6013
 0.1651
 0.3315
-0.7033
-0.7440
 0.6487
 0.9802
-0.5977
 0.3245
 0.7563
 0.5596
 0.2303
-0.3836
[torch.FloatTensor of size 40]

1: ReLU ()
2: Linear (40 -> 60)
3: Tanh ()

-0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000
-0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000
-0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000
   ...    ⋱    ...   
-0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000
-0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000
-0.1000 -0.1000 -0.1000 ... -0.1000 -0.1000 -0.1000
[torch.FloatTensor of size 40x30]


Process finished with exit code 0

这里要注意self.Linear1.weight的类型是网络的parameter。而self.Linear1.weight.data是FloatTensor。

以上这篇关于pytorch中全连接神经网络搭建两种模式详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python装饰器使用方法实例
Nov 21 Python
Python3.2中Print函数用法实例详解
May 19 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
机器学习10大经典算法详解
Dec 07 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
python实现桌面气泡提示功能
Jul 29 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Python requests上传文件实现步骤
Sep 15 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
使用Pytorch来拟合函数方式
Jan 14 #Python
pytorch 模拟关系拟合——回归实例
Jan 14 #Python
PyTorch实现AlexNet示例
Jan 14 #Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 #Python
Python实现钉钉订阅消息功能
Jan 14 #Python
Python Tensor FLow简单使用方法实例详解
Jan 14 #Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 #Python
You might like
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
帝国cms目录结构分享
2015/07/06 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python 模板引擎的注入问题分析
2017/01/01 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
python图像处理入门(一)
2019/04/04 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
事业单位接收函
2014/01/10 职场文书
市场营销专业求职信
2014/06/17 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
计划生育工作总结2015
2015/04/03 职场文书
刑事附带民事代理词
2015/05/25 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
创业计划书之书店
2019/09/10 职场文书