关于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生成指定尺寸缩略图的示例
May 07 Python
详解Django中的过滤器
Jul 16 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Python实现二维数组输出为图片
Apr 03 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 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
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
学习Node.js模块机制
2016/10/17 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
babel基本使用详解
2017/02/17 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
js实现简单的秒表
2020/01/16 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
python 安装impala包步骤
2020/03/28 Python
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
学习十八大的心得体会
2014/09/01 职场文书
项目转让协议书
2014/10/27 职场文书
催款函范文
2015/06/24 职场文书
新闻稿怎么写
2015/07/18 职场文书
网吧员工管理制度
2015/08/05 职场文书
贷款担保书范本
2015/09/22 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
一文解答什么是MySQL的回表
2022/08/05 MySQL