pytorch 建立模型的几种方法
利用pytorch来构建网络模型,常用的有如下三种方式
前向传播网络具有如下结构:
卷积层--》Relu层--》池化层--》全连接层--》Relu层
对各Conv2d和Linear的解释如下
Conv2d的解释如下
"""
Conv2d(in_channels, out_channels, kernel_size, stride=1,
padding=0, dilation=1, groups=1, bias=True) in_channels(int) – 输入信号的通道数
out_channels(int) – 卷积产生的通道数
kerner_size(int or tuple) - 卷积核的大小
stride(int or tuple,optional) - 卷积步长,即要将输入扩大的倍数。
padding(int or tuple, optional) - 输入的每一条边补充0的层数,高宽都增加2*padding
"""
Linear函数的解释如下
"""
Linear(in_features, out_features, bias=True)
in_features: size of each input sample,一般输入是[B,*,in_features]
out_features: size of each output sample,经过Linear输出的tensor是[B,*,out_features]
"""
1.建立模型方法
from torch.nn import *
class Network(Module):
def __init__(self):
super(Network, self).__init__()
self.conv = Conv2d(3, 16, 3, 1, 1)
self.dense =Linear(16 * 3, 2)
self.pool=MaxPool2d(kernel_size=2)
self.relu=ReLU(inplace=True)#inplace为True,将会改变输入的数据 ,否则不会改变原输入,只会产生新的输出 #前向传播方法
def forward(self, x):
x=self.conv(x)
x= self.relu(x)
x = MaxPool2d(x, 2)
x = x.view(x.size(0), -1)#设置成为[B,-1]格式
x= self.dense(x)
x = self.relu(x)
return x
model = Network()
print(model)
模型各参数如下
Network(
(conv): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(dense): Linear(in_features=48, out_features=2, bias=True)
(pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(relu): ReLU(inplace)
)
2.建立模型方法,通过torch.nn.Sequential建立模型
import torch
class Network(torch.nn.Module):
def __init__(self):
super(Network, self).__init__()
self.conv = torch.nn.Sequential(
torch.nn.Conv2d(3, 16, 3, 1, 1),
torch.nn.ReLU(),
torch.nn.MaxPool2d(2)
)
self.dense = torch.nn.Sequential(
torch.nn.Linear(16 * 3, 2),
torch.nn.ReLU()
) def forward(self, x):
x = self.conv(x)
x = x.view(x.size(0), -1)
x = self.dense(x)
return x
model = Network()
print(model)
模型各参数如下
Network(
(conv): Sequential(
(0): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU()
(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(dense): Sequential(
(0): Linear(in_features=48, out_features=2, bias=True)
(1): ReLU()
)
)
3.建立模型方法,通过torch.nn.Sequential的方法add_module添加操作
import torch
class Network(torch.nn.Module):
def __init__(self):
super(Network, self).__init__()
self.network=torch.nn.Sequential()
self.network.add_module("conv_{}".format(1),torch.nn.Conv2d(3, 16, 3, 1, 1))
self.network.add_module("relu_{}".format(1),torch.nn.ReLU())
self.network.add_module("pool_{}".format(1),torch.nn.MaxPool2d(2))
self.network.add_module("dense_{}".format(1),torch.nn.Linear(16 * 3, 2))
self.network.add_module("relu_{}".format(2),torch.nn.ReLU()) def forward(self, x):
x = self.network(x)
return x
model = Network()
print(model)
模型各参数如下
Network(
(network): Sequential(
(conv_1): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(relu_1): ReLU()
(pool_1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(dense_1): Linear(in_features=48, out_features=2, bias=True)
(relu_2): ReLU()
)
)
pytorch 建立模型的几种方法的更多相关文章
- ThinkPHP学习笔记 实例化模型的四种方法
创建Action类 [php] <?php class NewObjectAction extends Action{ public function index(){ ...
- pytorch 创建tensor的几种方法
tensor默认是不求梯度的,对应的requires_grad是False. 1.指定数值初始化 import torch #创建一个tensor,其中shape为[2] tensor=torch.T ...
- 莫烦python教程学习笔记——保存模型、加载模型的两种方法
# View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...
- pytorch学习: 构建网络模型的几种方法
利用pytorch来构建网络模型有很多种方法,以下简单列出其中的四种. 假设构建一个网络模型如下: 卷积层-->Relu层-->池化层-->全连接层-->Relu层--> ...
- EF Core中避免贫血模型的三种行之有效的方法(翻译)
Paul Hiles: 3 ways to avoid an anemic domain model in EF Core 1.引言 在使用ORM中(比如Entity Framework)贫血领域模型 ...
- 自然语言处理的CNN模型中几种常见的池化方法
自然语言处理的CNN模型中几种常见的池化方法 本文是在[1]的基础上进行的二次归纳. 0x00 池化(pooling)的作用 首先,回顾一下NLP中基本的CNN模型的卷积和池化的大致原理[2].f ...
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 标签: hashmaphashmap冲突解决冲突的方法冲突 2016-0 ...
- PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型后的数据项初始化的两种方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QStandardItemModel通过构造方法 QStandardItemModel(int ro ...
- Pytorch的模型加速方法:Dataparallel (DP) 和 DataparallelDistributedparallel (DDP)
Dataparallel 和 DataparallelDistributed 的区别 一.Dataparallel(DP) 1.1 Dartaparallel 的使用方式 Dataparallel 的 ...
随机推荐
- 系统 (一) Windows10安装Ubuntu子系统
前言 本文将基于 Windows10专业版 安装 Ubuntu子系统 1.控制面板 -> 程序 -> 选择启用或关闭Windows功能 -> 勾上 适用Linux的Windwos子系 ...
- mysql-5.7.27安装
1,下载5.7.27安装包 百度网盘 (注:5.7.27要安装net faframework4.5.2) 2,创建my.ini及data文件 下载5.7.27后解压,在创建my.ini文件及d ...
- [document.cookie]为什么cookie不在window下的呢.奇怪了[未完待续]
什么是cookie,怎么就叫cookis,它能干嘛 我猜吧,就是登录页面的时候传值,二次登录的时候可以给你说句'hello xxx'; 下面这堆比较啰嗦,随意看吧 //cookie 用户储存在用户本地 ...
- WCF、WebAPI、WCFREST、WebService的区别
目录导航: 1. WCF 2. WebAPI 3. WebService 4. WCFREST 5. 如何选择WCF.WebAPI.WCFREST.WebService 1.WCF 这个是基于SOAP ...
- C# Distinct去重泛型List
List<int>去重 List<string>去重 List<T>去重 1. List<int>去重 List<int> ilist = ...
- Keepalived集群软件高级使用(工作原理和状态通知)
1.介绍 Keeaplived主要有两种应用场景,一个是通过配置keepalived结合ipvs做到负载均衡(LVS+Keepalived),有此需求者可参考以往博文:http://lizhenlia ...
- Linux下的find命令2
:续linux下的find命令 Linux/Unix下非常有用的find命令的用法 功能简述:find(查找)主要沿着文件层次(目录)结构依次向下遍历,匹配符合条件的文件,可以附带执行相应的操作选项, ...
- [C]#include和链接
概述 对于刚接触C语言的同学来说,通常对“在文件中用#include预处理操作符引入文件”和“编译时链接多个文件”这两个操作会有所混淆,这个文章主要为了解析一下它们的区别. #include预处理操作 ...
- IT兄弟连 HTML5教程 HTML5表单 新增的表单属性3
9 novalidate novalidate是属性规定在提交表单时不应该验证form和input域.novalidate属性适用于的<input>类型有:text.search.url ...
- Css 设置固定表格头部,内容可滚动
效果图: