
2019 第 43 篇,总第 67 篇文章
本文大约 4600 字,阅读大约需要 10 分钟
快速入门 PyTorch 教程第二篇,这篇介绍如何构建一个神经网络。上一篇文章:
本文的目录:
3. 神经网络
在 PyTorch 中 torch.nn 专门用于实现神经网络。其中 nn.Module 包含了网络层的搭建,以及一个方法-- forward(input) ,并返回网络的输出 outptu .
下面是一个经典的 LeNet 网络,用于对字符进行分类。
对于神经网络来说,一个标准的训练流程是这样的:
定义一个多层的神经网络
对数据集的预处理并准备作为网络的输入
将数据输入到网络
计算网络的损失
反向传播,计算梯度
更新网络的梯度,一个简单的更新规则是
weight = weight - learning_rate * gradient
3.1 定义网络
首先定义一个神经网络,下面是一个 5 层的卷积神经网络,包含两层卷积层和三层全连接层:
import torch
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# 输入图像是单通道,conv1 kenrnel size=5*5,输出通道 6
self.conv1 = nn.Conv2d(1, 6, 5)
# conv2 kernel size=5*5, 输出通道 16
self.conv2 = nn.Conv2d(6, 16, 5)
# 全连接层
self.fc1 = nn.Linear(16*5*5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
# max-pooling 采用一个 (2,2) 的滑动窗口
x = F.max_p

最低0.47元/天 解锁文章
364

被折叠的 条评论
为什么被折叠?



