3 PyTorch 官网教材之 搭建一个最简单的神经网络 LeNet NEURAL NETWORKS


官网教材 搭建一个最简单的神经网络

时间:2019年6月21日16:59:08

官网链接:

https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html

1. 结构顺序通常是 卷积>激活>池化,或全连接>激活。BN好像在卷积或者激活之后都是可以的,影响不大。

2. 卷积、全连接有参数,需要现在__init__()中定义,再在forward() 中使用。

3. python 中函数可以先使用后定义。

4. self.fc1 = nn.Linear(16 * 6 * 6, 120) 第一个全连接输入中 6 是如何计算出来的。

  • 6 * 6 from image dimension 将前面卷积产生的所有数据(16 * 6 * 6 中的16 是16个通道,6 * 6 是每个图片的尺寸(这个尺寸是图片多次卷积池化之后的尺寸,是需要通过一步一步的计算的)))。view 之后输入全连接层,所以全连接的输入大小应须和最后一个卷积之后的所有通道的点的数目之和相同。 120 是人为设定的,可以更改。

5. LeNet-5,的卷积层和全连接一共有5层,权重就应该有10层,因为每一层之后有偏置。

ReLU激活层 和 池化层 是没有参数的。

后续还要学习的BN不需要设置偏置。

1. 定义网路结构

import torch
import torch.nn as nn
import torch.nn.functional as F


class Net(nn.Module):

    def __init__(self):
        super(Net, self).__init__()
        # 1 input image channel, 6 output channels, 3x3 square convolution
        # kernel
        self.conv1 = nn.Conv2d(1, 6, 3)  #  输入一张图片,产生6个通道(图片),是通过3 * 3的卷积得到的6个通道。6 和 3 都是人为设定的参数,可以改变。(参数3,指的是filter的大小是(3*3))
        self.conv2 = nn.Conv2d(6, 16, 3)  # 第二词卷积核输入大小须和第一次卷积大小的输出相同。16 和 3 是人为设定的,可更改。
        # an affine operation: y = Wx + b
        self.fc1 = nn.Linear(16 * 6 * 6, 120)  # 6*6 from image dimension  将前面卷积产生的所有数据(16 * 6 * 6 中的16 是16个通道,6 * 6 是每个图片的尺寸(这个尺寸是图片多次卷积池化之后的尺寸,是需要通过一步一步的计算的)))。view 之后输入全连接层,所以全连接的输入大小应须和最后一个卷积之后的所有通道的点的数目之和相同。 120 是人为设定的,可以更改。
        self.fc2 = nn.Linear(120, 84)  #  120 是由前一个全连接的输出决定的,84是人为设定的,可以更改。
        self.fc3 = nn.Linear(84, 10)  # 84 是由前一个全连接的输出决定的,10是人为设定的,可以更改。因为这个网络最终的目的是进行一个10分类的图像分类任务所以,最后作者定义全连接层的输出是10个点。

    def forward(self, x):
        # Max pooling over a (2, 2) window
        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))  #  卷积、激活、池化,一行写。
        # If the size is a square you can only specify a single number
        x = F.max_pool2d(F.relu(self.conv2(x)), 2)  # 这里池化的 2 和(2, 2)等价, 4合1,改变图片的分辨率,缩小图片。
        x = x.view(-1, self
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值