关于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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
python迭代器实例简析
Sep 25 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python 12306抢火车票脚本
Feb 07 Python
使用Python写一个小游戏
Apr 02 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
10款最好的Python开发编辑器
Jul 03 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
Django单元测试工具test client使用详解
Aug 02 Python
tensorboard显示空白的解决
Feb 15 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 MemCached 高级缓存应用代码
2010/08/05 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
JavaScript WeakMap使用详解
2021/02/05 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
Python中的pprint折腾记
2015/01/21 Python
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
Django与JS交互的示例代码
2017/08/23 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
python字典快速保存于读取的方法
2018/03/23 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
用python制作个视频下载器
2021/02/01 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
简单的辞职信模板
2015/05/12 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技