关于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 25 Python
python中常用的各种数据库操作模块和连接实例
May 29 Python
python修改操作系统时间的方法
May 18 Python
Python实现图片转字符画的示例
Aug 22 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
给我一面国旗 python帮你实现
Sep 30 Python
Python各种扩展名区别点整理
Feb 27 Python
如何在mac版pycharm选择python版本
Jul 21 Python
Python3+Flask安装使用教程详解
Feb 16 Python
用Python爬虫破解滑动验证码的案例解析
May 06 Python
python munch库的使用解析
May 25 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
Python 错误和异常代码详解
2018/01/29 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
体育专业个人求职信范文
2013/12/27 职场文书
综治维稳工作汇报
2014/10/27 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
上下班时间调整通知
2015/04/23 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
东京审判观后感
2015/06/01 职场文书
爱的教育读书笔记
2015/06/26 职场文书
趣味运动会加油词
2015/07/18 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB