自学神经网络总结9

写作动机

第一篇主要从数学建模的角度总结了近期自学神经网络的成果,但纸上得来终觉浅,不通过代码实现一遍很多东西终究只是空中楼阁。所以本篇总结主要从代码角度回顾总结自学成果。

尽量做到每日一次总结。

行文思路

仿照鱼书的风格,先给出计算图,再一步一步根据计算图搭建代码。

使用框架

因为笔者是一名医学生,所以选择现有的框架——pytorch进行代码的实现。

参考书籍

《动手学深度学习2.0》

2024/3/3——NiN

在每个像素的通道上都分别使用多层感知机。

确定模型

和之前一样,还是Fashion-MNIST。

计算图

在这里插入图片描述

代码实现

import torch
from torch import nn
from d2l import torch as d2l
def NiN_BLOCK(input_nums, output_nums, kernel_size, strides, padding):
	return nn.Sequential(
		nn.Conv2d(input_nums, output_nums, kernel_size, strides, padding),
		nn.ReLU(),
		nn.Conv2d(ouput_nums, output_nums, kernel_size=1),
		nn.ReLU(),
		nn.Conv2d(output_nums, output_nums, kernel_size=1),
		nn.ReLU()
		)

应用

先确定输入和输出:

batch_size = 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)

然后搭建网络:

NiN_net = nn.Sequential(
	NiN_BLOCK(1, 96, kernel_size=11, strides=4, padding=0),
	nn.MaxPool2d(3, stride=2),
	NiN_BLOCK(96, 256, kernel_size=5, strides=1, padding=2),
	nn.MaxPool2d(3, stride=2),
	NiN_BLOCK(256, 384, kernel_size=3, stride=1, padding=1),
	nn.MaxPool2d(3, stride=2),
	nn.Dropout(0.5),
	NiN_BLOCK(384, 10, kernel_size=3, stride=1, padding=1),
	nn.AdaptiveAvgPool2d((1,1)),
	nn.Flatten()
	)

万事俱备,只欠数据:

lr = 0.1
num_epochs = 10
d2l.train_ch6(NiN_net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

结果是:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值