DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ (官网60min闪电战第三部分注释)

本文介绍了如何使用PyTorch构建一个基础的神经网络模型,包括定义网络结构(1输入通道,6输出通道的卷积层,全连接层),激活函数的应用,以及池化操作。重点讲解了`nn.Module`的继承和`forward`方法的实现。
摘要由CSDN通过智能技术生成

DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ (官网60min闪电战第三部分注释)

NEURAL NETWORKS

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

class Net(nn.Module):  #继承nn.Moudle

    def __init__(self):  #类的初始化方法,个人觉得相当于C++中的构造函数,在实例化类的时候会自动调用此方法
        super(Net, self).__init__()   #调用nn.Moudle的构造函数
        # 1 input image channel, 6 output channels, 3x3 square convolution
        # kernel
        self.conv1 = nn.Conv2d(1, 6, 3)   #建立一个卷积层,输入为1通道灰度图,输出为6通道特征图,卷积核的大小为3x3
        self.conv2 = nn.Conv2d(6, 16, 3)  #建立一个卷积层,输入6通道特征图,输出为16通道特征图,16个6通道的卷积层,每个卷积层卷积核的大小为3x3
        # an affine operation: y = Wx + b
        self.fc1 = nn.Linear(16 * 6 * 6, 120)  #6*6 from image dimension #输入为16*6*6的维度,输出为120的全连接层
        self.fc2 = nn.Linear(120, 84)       #输入为120的维度,输出为84的全连接层
        self.fc3 = nn.Linear(84, 10)        #输入为84的维度,输出为10的全连接层

    def forward(self, x):
        # Max pooling over a (2, 2) window
        x=self.conv1(x)                     #调用卷积层
        x=F.relu(x)                         #应用激活函数

        x = F.max_pool2d(x, (2, 2))         #池化层下采样,具体为在2*2的方格中取一个最大值(非重叠池化)

        # If the size is a square you can only specify a single number

        x=self.conv2(x)                      #调用卷积层
        x=F.relu(x)                          #应用激活函数

        x = F.max_pool2d(x, 2)               #池化层下采样,具体为在2*2的方格中取一个最大值,由于为2*2的正方形。所以可以只写一个边长//另外要注意的是,此处为非重叠池化

        x = x.view(-1, self.num_flat_features(x))       #前面得到的特征图全部展开,-1代表第一个参数不用动(因为第一个参数代表输入样本的个数,也就是输入几张照片)

        #print(x.size())


        x = F.relu(self.fc1(x))                 #进行第一层全连接并使用激活函数映射

        x = F.relu(self.fc2(x))                  #进行第一层全连接并使用激活函数映射

        x = self.fc3(x)                         #第三层直接进行输出
        return x

    def num_flat_features(self, x):         #计算一张图片上所有量的个数,展开为全连接所用
        size = x.size()[1:]  # all dimensions except the batch dimension
        #print(size)
        num_features = 1
        for s in size:
            num_features *= s
        return num_features

#x=torch.randn(8,1,32,32)   #可以理解为:随机生成8张大小为32x32的1通道灰度图片(如果是彩色图第二个参数是3)

net = Net()

#result=net(x)
print(net)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌风lpc

打赏将使小编打满鸡血

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值