关于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和MD5实现网站挂马检测程序
Mar 13 Python
Python写的Socks5协议代理服务器
Aug 06 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
Django之路由层的实现
Sep 09 Python
Python操作qml对象过程详解
Sep 26 Python
简单了解python数组的基本操作
Nov 26 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python 遗传算法求函数极值的实现代码
Feb 11 Python
python爬虫使用requests发送post请求示例详解
Aug 05 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
Content-type 的说明
2006/10/09 PHP
一个简易需要注册的留言版程序
2006/10/09 PHP
PHP文本操作类
2006/11/25 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
php中static和const关键字用法分析
2016/12/07 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Python的净值数据接口调用示例分享
2016/03/15 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python模块搜索路径代码详解
2018/01/29 Python
python字符串string的内置方法实例详解
2018/05/14 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
简单的Python人脸识别系统
2020/07/14 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
毕业证明模板
2015/06/19 职场文书
python 中的@运算符使用
2021/05/26 Python