B站 刘二大人 传送门 卷积神经网络(高级篇)
课件链接:https://pan.baidu.com/s/1vZ27gKp8Pl-qICn_p2PaSw
提取码:cxe4
本节把从简单的卷及网络变成了稍微复杂一些的Inception卷积网络和残差网络,这里分两节,本节给出Inception网络代码。网络结构如下图,具体请参考传送门课程和网盘课件。
用GPU运行2分半就完事了,用CPU整个过程也在10分钟内完成。只有4行GPU代码,文中有注释,不能用GPU的话把那四句代码注释掉就可以了。GPU代码分别在76、77、89、116行。
下面是运行输出和绘制的曲线图。
import torch
from torch.utils.data import DataLoader
from torchvision import transforms
from torchvision import datasets
import torch.nn.functional as F
import matplotlib.pyplot as plt
import torch.nn as nn
import time
import datetime
batch_size =64
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, ))])
#将原始像素数据归一到(0,1)中 并基于均值0.1307和标准差0.3081来对数据进行标准化处理
train_dataset = datasets.MNIST(root='D:\Code\Pytorch exercise/dataset/mnist', train=True, download=True,transform=transform)
train_loader = DataLoader(train_dataset, shuffle=True,batch_size=batch_size)
#(下载)加载训练集,之后进行batch分组
test_dataset = datasets.MNIST(root='D:\Code\Pytorch exercise/dataset/mnist', train=False,download=True,transform=transform)
test_loader = DataLoader(test_dataset,shuffle=False ,batch_size=batch_size)
#测试集
class InceptionA(nn.Module):
def __init__(self, in_channels):
super(InceptionA, self).__init__()
self.branch1x1 = nn.Conv2d(in_channels, 16, kernel_size=1)
#1x1
self.branch5x5_1 = nn