浅谈pytorch池化maxpool2D注意事项
注意: 在搭建网络的时候用carpool2D的时候,让高度和宽度方向不同池化时,
用如下:
nn.MaxPool2d(kernel_size=2, stride=(2, 1), padding=(0, 1))
千万不要用:
nn.MaxPool2d(kernel_size=2, stride=(2, 1), padding=(0, 0)), 这样在用交叉熵做损失函数的时候,有时候会出现loss为nan的情况,检查的时候发现,某些样本的提取出来的feature全为nan。
以上这篇浅谈pytorch池化maxpool2D注意事项就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
pytorch模型存储的2种实现方法
1.保存整个网络结构信息和模型参数信息: torch.save(model_object, './model.pth') 直接加载即可使用: model = torch.load('./model.pth') 2.只保存网络的模型参数-推荐使用 torch.save(model_object.state_dict(), './params.pth') 加载则要先从本地网络模块导入网络,然后再加载参数: from models import AgeModel model = AgeModel()
-
pytorch中图像的数据格式实例
计算机视觉方面朋友都需要跟图像打交道,在pytorch中图像与我们平时在matlab中见到的图像数据格式有所不同.matlab中我们通常使用函数imread()来轻松地读入一张图像,我们在变量空间中可看到数据的存储方式是H x W x C的顺序(其中H.W.C分别表示图像的高.宽和通道数,通道数一般为RGB三通道),另外,其中的每一个数据都是[0,255]的整数. 在使用pytorch的时候,我们通常要使用pytorch中torchvision包下面的datasets模块和transforms模
-
基于pytorch padding=SAME的解决方式
tensorflow中的conv2有padding='SAME'这个参数.吴恩达讲课中说到当padding=(f-1)/2(f为卷积核大小)时则是SAME策略.但是这个没有考虑到空洞卷积的情况,也没有考虑到strides的情况. 查阅资料后发现网上方法比较麻烦. 手算,实验了一个早上,终于初步解决了问题. 分为两步: 填充多少 中文文档中有计算公式: 输入: 输出: 因为卷积后图片大小同卷积前,所以这里W_out=W_in, H_out=H_in.解一元一次方程即可.结果取ceil. 怎么填充
-
详解PyTorch批训练及优化器比较
一.PyTorch批训练 1. 概述 PyTorch提供了一种将数据包装起来进行批训练的工具--DataLoader.使用的时候,只需要将我们的数据首先转换为torch的tensor形式,再转换成torch可以识别的Dataset格式,然后将Dataset放入DataLoader中就可以啦. import torch import torch.utils.data as Data torch.manual_seed(1) # 设定随机数种子 BATCH_SIZE = 5 x = torch.li
-
浅谈pytorch池化maxpool2D注意事项
注意: 在搭建网络的时候用carpool2D的时候,让高度和宽度方向不同池化时, 用如下: nn.MaxPool2d(kernel_size=2, stride=(2, 1), padding=(0, 1)) 千万不要用: nn.MaxPool2d(kernel_size=2, stride=(2, 1), padding=(0, 0)), 这样在用交叉熵做损失函数的时候,有时候会出现loss为nan的情况,检查的时候发现,某些样本的提取出来的feature全为nan. 以上这篇浅谈pytorc
-
浅谈pytorch中的BN层的注意事项
最近修改一个代码的时候,当使用网络进行推理的时候,发现每次更改测试集的batch size大小竟然会导致推理结果不同,甚至产生错误结果,后来发现在网络中定义了BN层,BN层在训练过程中,会将一个Batch的中的数据转变成正太分布,在推理过程中使用训练过程中的参数对数据进行处理,然而网络并不知道你是在训练还是测试阶段,因此,需要手动的加上,需要在测试和训练阶段使用如下函数. model.train() or model.eval() BN类的定义见pytorch中文参考文档 补充知识:关于pyto
-
浅谈Pytorch torch.optim优化器个性化的使用
一.简化前馈网络LeNet import torch as t class LeNet(t.nn.Module): def __init__(self): super(LeNet, self).__init__() self.features = t.nn.Sequential( t.nn.Conv2d(3, 6, 5), t.nn.ReLU(), t.nn.MaxPool2d(2, 2), t.nn.Conv2d(6, 16, 5), t.nn.ReLU(), t.nn.MaxPool2d(2
-
浅谈jquery上下滑动的注意事项
div: <div id="pay_box" class="vip_bottom"> fffff </div> style: .vip_bottom{position: fixed; display: none;//注意,先不显示,点击某个div后从上向下滑动,默认时none,这样才会有滑动效果 bottom:0px;//按照正常显示的时候写 width: 100%; box-sizing: border-box; height:80px;
-
浅谈pytorch和Numpy的区别以及相互转换方法
如下所示: # -*- coding: utf-8 -*- # @Time : 2018/1/17 16:37 # @Author : Zhiwei Zhong # @Site : # @File : Numpy_Pytorch.py # @Software: PyCharm import torch import numpy as np np_data = np.arange(6).reshape((2, 3)) # numpy 转为 pytorch格式 torch_data = torch.
-
浅谈Pytorch中的torch.gather函数的含义
pytorch中的gather函数 pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验. 立个flag开始学习pytorch,新开一个分类整理学习pytorch中的一些踩到的泥坑. 今天刚开始接触,读了一下documentation,写一个一开始每太搞懂的函数gather b = torch.Tensor([[1,2,3],[4,5,6]]) print b index_1 = torch.LongTensor([[0,1],[2,0]]) ind
-
浅谈pytorch grad_fn以及权重梯度不更新的问题
前提:我训练的是二分类网络,使用语言为pytorch Varibale包含三个属性: data:存储了Tensor,是本体的数据 grad:保存了data的梯度,本事是个Variable而非Tensor,与data形状一致 grad_fn:指向Function对象,用于反向传播的梯度计算之用 在构建网络时,刚开始的错误为:没有可以grad_fn属性的变量. 百度后得知要对需要进行迭代更新的变量设置requires_grad=True ,操作如下: train_pred = Variable(tr
-
浅谈pytorch卷积核大小的设置对全连接神经元的影响
3*3卷积核与2*5卷积核对神经元大小的设置 #这里kerner_size = 2*5 class CONV_NET(torch.nn.Module): #CONV_NET类继承nn.Module类 def __init__(self): super(CONV_NET, self).__init__() #使CONV_NET类包含父类nn.Module的所有属性 # super()需要两个实参,子类名和对象self self.conv1 = nn.Conv2d(1, 32, (2, 5), 1,
-
浅谈pytorch、cuda、python的版本对齐问题
在使用深度学习模型训练的过程中,工具的准备也算是一个良好的开端吧.熟话说完事开头难,磨刀不误砍柴工,先把前期的问题搞通了,能为后期节省不少精力. 以pytorch工具为例: pytorch版本为1.0.1,自带python版本为3.6.2 服务器上GPU的CUDA_VERSION=9000 注意:由于GPU上的CUDA_VERSION为9000,所以至少要安装cuda版本>=9.0,虽然cuda=7.0~8.0也能跑,但是一开始可能会遇到各种各样的问题,本人cuda版本为10.0,安装cuda的
-
浅谈pytorch torch.backends.cudnn设置作用
cuDNN使用非确定性算法,并且可以使用torch.backends.cudnn.enabled = False来进行禁用 如果设置为torch.backends.cudnn.enabled =True,说明设置为使用使用非确定性算法 然后再设置: torch.backends.cudnn.benchmark = true 那么cuDNN使用的非确定性算法就会自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题 一般来讲,应该遵循以下准则: 如果网络的输入数据维度或类型上变化不大,设置
随机推荐
- Prototype源码浅析 String部分(四)之补充
- JSP页面中文参数的传递(get和post方法分析)
- MongoDB入门教程之细说MongoDB数据库的增删查改操作
- Flex httpservice返回值类型和处理
- 飘叶千夫指源代码,又称qq刷屏器
- javascript 节点遍历函数
- PHP通过微信跳转的Code参数获取用户的openid(关键代码)
- Python随机生成信用卡卡号的实现方法
- Python格式化css文件的方法
- CentOS 6.5 制作可以ssh登录的Docker镜像
- JavaScript中清空数组的方法总结
- Android开发中Activity属性设置小结
- 基于jQuery实现滚动切换效果
- Linux发邮件之mail命令详解
- linux配置ISCSI服务器的方法
- PHP实现登陆表单提交CSRF及验证码
- 个人家园为您提供免费FTP空间服务
- 浅析hosts 文件的作用及修改 hosts 文件的方法
- JS实现读取xml内容并输出到div中的方法示例
- 详解VUE里子组件如何获取父组件动态变化的值