关于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内置的模块与函数进行不同进制的数的转换
Mar 12 Python
Python 含参构造函数实例详解
May 25 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
python多进程控制学习小结
Oct 31 Python
Python中print和return的作用及区别解析
May 05 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python中输入和输出(打印)数据实例方法
Oct 13 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Python龙贝格法求积分实例
Feb 29 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
详细总结Python常见的安全问题
May 21 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
在IIS上安装PHP4.0正式版
2006/10/09 PHP
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript函数详解
2014/11/17 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
如何使用python操作vmware
2019/07/27 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
谈谈python垃圾回收机制
2020/09/27 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
python绘制高斯曲线
2021/02/19 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
一套Delphi的笔试题二
2013/05/11 面试题
乡镇干部先进事迹材料
2014/02/03 职场文书
2014年信访工作总结
2014/11/17 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
python游戏开发之pygame实现接球小游戏
2022/04/22 Python
分享python函数常见关键字
2022/04/26 Python
MySQL常用慢查询分析工具详解
2022/08/14 MySQL