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 的 ...
随机推荐
- win10下配置python环境变量(Python配置环境变量)
从官网下载Windows下的python版本,一路按照默认进行安装. 安装之后配置环境变量的步骤如下: 1,点“我的电脑”,右键选“属性”. 2,选择“高级系统设置”--->选“环境变量”--- ...
- 一文读懂AOE到底是什么!
一.背景 1.1 AoE是什么 AoE (AI on Edge) 是一个滴滴开源的终端侧AI集成运行时环境(IRE).以 “稳定性.易用性.安全性” 为设计原则,帮助开发者将不同框架的深度学习算法轻松 ...
- 关于for循环中使用setTimeout的四种解决方案
我们先来简单了解一下setTimeout延时器的运行机制.setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数.本质上是作用域的问题. 因此 ...
- stdc++.6.0.9动态库缺失
问题 ld: library not found for -lstdc++.6.0.9 clang: error: linker command failed with exit code 1 (us ...
- Python读字节某一位的值,设置某一位的值,二进制位操作
Python读字节某一位的值,设置某一位的值,二进制位操作 在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1.True和Fa ...
- QT--动态人流量监测系统
QT--动态人流量监测系统 简介: 本项目使用了百度AI的动态人流量监测api,以人体头肩为主要识别目标,适用于低空俯拍,出入口场景,可用于统计当前图像的锁定人数和经过的人数 项目功能 本项目分为相机 ...
- C++ --内存四区概述
内存四区 代码区:存放函数体第二进制代码,由操作戏台进行管理 数据区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不是放 ...
- windows系统下压缩文件成tar.gz格式的方法
tar.gz 是linux和unix下面比较常用的格式,几个命令就可以把文件压缩打包成tar.gz格式,然而这种格式在windows并不多见,WinRAR.WinZip等主流压缩工具可以释放解开,却不 ...
- YourSQLDba的共享路径备份遭遇重启问题
如果YourSQLDba设置过共享路径备份(具体参考博客YourSQLDba设置共享路径备份),有时候服务器重启后,备份就会出错,具体错误信息类似如下所示: Date 2019/9/25 ...
- VS 2017 中取消自动补全花括号
输入 "{", VS 会很智能的给你补全,得到 “{}”, 如果不想享受这个服务,可以按以下设置取消: Tools -> Options -> Text Editor ...