关于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 24 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python输出带颜色的字符串实例
Oct 10 Python
django中的setting最佳配置小结
Nov 21 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 Python
浅述python中深浅拷贝原理
Sep 18 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
python计算导数并绘图的实例
Feb 29 Python
python实现扫雷小游戏
Apr 24 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php中的curl_multi系列函数使用例子
2014/07/29 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
js function定义函数使用心得
2010/04/15 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
几个MySql的面试题
2013/04/22 面试题
同学聚会欢迎辞
2014/01/14 职场文书
财务管理专业求职信
2014/06/11 职场文书
世博会口号
2014/06/20 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
英语演讲开场白
2015/05/29 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL