【Pytorch】8. Pytorch中的卷积神经网络

一、初始Pytorch卷积模块

1、卷积神经网络基本结构

在这里插入图片描述
(1)输入层
一般输入层的大小应该是能够以被2整出多次的,常用的数字包括32,64,96,224。可以将图片缩放到常用尺寸,进行输入
(2)卷积层
应该尽可能使用小尺寸的滤波器,比如3×3或5×5,滑动步长1。还有一点就是需要对输入数据进行零填充,这样可以有效的保证卷积层不会改变输入数据体的空间尺寸。如果必须使用更大的滤波器尺寸如7×7,通常用在第一个面对原始图像的卷积层上。
(3)池化层:
负责对输入的数据空间维度进行下采样,常用的设置使用2×2的感受野,步长设置为2。池化层的感受野大小很少超过3。因为这回导致池化过程过于激进,造成特征信息的丢失,使得算法性能变差。
(4)零填充
零填充的使用可以让卷积层的输入和输出在空间上的维度保持一致。除此之外,如果不使用零填充,在不断进行卷积过程中,数据的尺寸会不断减少,造成图像边缘信息的的损失。

2、Pytorch中常用卷积模块

(1)卷积层:nn.Conv2d()

参数 含义
in_channels 输入数据的深度(图片的通道数)
out_channels 输出数据的深度(卷积后输出结果的通道数(神经元个数))
kernal_size 卷积核的形式。可以用一个数字表示高和宽相等的卷积核,如kernal size=3;高和宽不同的卷积核,可以表示为kernal size=(3,2)
stride 卷积每次移动的步长。默认为1
padding 处理边界时使用零填充的像素点个数。默认为1
dilation 采样间隔数量,默认为1,表示无间隔采样
group 输入与输出通道的分组数量。默认为1(全连接)
bisa 是一个布尔值,默认为True,表示有偏置项

(2)池化层:nn.MaxPool2d()

  • nn.MaxPool2d()表示网络中的最大池化
参数 含义
kernel_size 最大池化操作时的窗口大小
stride 最大池化操作时窗口移动的补偿,默认值是kernel_size
padding 输入的每一条边补充0的层数
dilation 用于控制窗口中元素的步长
return_indices 表示是否返回最大值所处的下表,默认为return indices=False
ceil_mode 默认为False。如果等于True。在计算输出大小时,将采用向上取整来代替默认的向下取整
  • nn.AvgPool2d()表示均值池化,里面的参数和nn.MaxPool2d()类似,但多一个参数count_include_pad,这个参数表示计算均值的时候是否包含零填充,默认为True
3、构建简单的多层卷积神经网络

(1)代码实现

import numpy as np
import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#定义简单的四层神经网络
class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN,self).__init__()  #输入图像维度 b,3,32,32
        #定义第一层网络:卷积+激活+池化
        layer1 = nn.Sequential()
        layer1.add_module('conv1'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值