减少代码冗余:将某些重复调用的代码封装成类或函数。
GoogleNet
网络结构
有很多相同的Inception模块组成,就将此模块写成一个类,方便重复调用。
Inception模块的结构
关于为什么采用1×1的卷积核:通过采用1×1的卷积核计算量减少了10倍。
示例代码:
import torch.nn as nn
import torch.nn.functional as F
import torch
from torch.utils.data import DataLoader
from torchvision import transforms
from torchvision import datasets
import matplotlib.pyplot as plt
#构造数据集
batch_size = 64
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307, ),(0.3081, ))])
train_sets = datasets.MNIST(root='E:\MyCode\pytorchLearning', transform=transform, train=True, download=False)
test_sets = datasets.MNIST(root='E:\MyCode\pytorchLearning', transform=transform,train=False,download=False)
train_dataloader = DataLoader(dataset=train_sets, batch_size=batch_size, shuffle =True)
test_dataloader = DataLoader(dataset=test_sets, batch_size=batch_size, shuffle=False)
class InceptionA(nn.Module):
def __init__(self,in_channels):