pytorch-examples-mnist笔记01

调用的库

import argparse
import torch
import torch.nn as nn # 专门为神经网络设置的模块化接口
import torch.nn.functional as F # 对于激活函数和池化层
import torch.optim as optim  # 用于优化参数
from torchvision import datasets, transforms  # 定义了datasets的数据格式及常用的数据转换方式

用类实现网络的定义

class Net(nn.Module): 

nn.Module是troch.nn中十分重要的类,定义自己的网络时通常要继承该类,类中包含了网络各层的定义及forward方法

super(Net, self).init()

执行父类的构造函数,使得能够调用父类的属性。(nn.Module的子类函数必须在构造函数中执行父类的构造函数)

nn.Conv2d

对由多个输入平面组成的输入信号进行二维卷积。(定义一个卷积层)
参数:

  • in_channels:输入图像中的通道数
  • out_channels:卷积产生的通道数
  • kernel_size:卷积核的大小
  • stride:卷积的步幅(默认1)
  • padding:输入的两边都加0填充(默认0)
  • padding_mode: ‘zeros’, ‘reflect’, ‘replicate’ or ‘circular’. Default: ‘zeros’
  • dilation:核元素之间的间隔(默认1)
  • groups:从输入通道到输出通道的阻塞连接数(默认1)
  • bias:如果为真,则在输出中添加一个可学习的偏差。

nn.Dropout2d

随机使整个通道归零
参数:

  • p:一个元素被零的概率
  • inplace:如果设置为True,将就地执行此操作

nn.Linear

对传入数据应用线性转换(定义一个全连接层)
参数:

  • in_features:每个输入样本的大小
  • out_features:每个输出样本的大小
  • bias

F.relu

在元素上应用直线单位函数(激活函数)

F.max_pool2d

在由多个输入平面组成的输入信号上应用一个二维最大池。(池化)

torch.flatten

展平张量中连续的暗淡范围。

F.log_softmax

应用softmax后接对数。(softmax分类)
在这里插入图片描述
它应用于沿dim的所有切片,并将对其进行重新缩放,以使元素位于[0,1]范围内且总和为1。
参数:

  • input
  • dim:将沿着其计算softmax的尺寸。
  • dtype

训练函数

其中,model指建立好的网络模型;device指模型在哪个设备上运行,CPU还是GPU;train_loader是指数据集;
optimizer用于优化;epoch指整个数据集训练的次数

model.train()

model.train() 让model变成训练模式,此时dropout和batch normalization的操作在训练q起到防止网络过拟合的问题(将模型设置为训练状态,对应的有model.eval()只有前传)

enumerate()

同时列出数据和数据下标

zero_grad()

每次迭代把梯度的初值设为0(一种梯度下降法)

F.nll_loss

负对数似然损失(可选参数较多)

backward()

反向传播,用来计算梯度(只有标量才能直接使用)

step()

更新参数,它使用的是当前参数空间对应的梯度,在backward()之后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值