自学神经网络总结7

写作动机

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

尽量做到每日一次总结。

行文思路

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

使用框架

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

参考书籍

《动手学深度学习2.0》

2024/3/1——简化AlexNet

先前处理的时单通道图像,接下来处理三通道。

与LeNet相比,AlexNet要深得多,且激活函数选择ReLU。

LeNet在处理全连接层时使用了权重衰退,而AlexNet在处理全连接层时使用了暂退法。

确定模型

  • 输入数字:三通道图片
  • 输出数字:标签
  • 数字映射:卷积+全连接

计算图

在这里插入图片描述

代码实现

import torch
from torch import nn
from d2l import torch as d2l
simple_AlexNet = nn.Sequential(
	nn.Conv2d(3, 96, kernel_size=11, stride=4, padding=1),
	nn.ReLU(),
	nn.MaxPool2d(kernel_size=3, stride=2),
	nn.Conv2d(96, 256, kernel_size=5, padding=2),
	nn.ReLU(),
	nn.MaxPool2d(kernel_size=3, stride=2),
	nn.Conv2d(256, 384, kernel_size=3, padding=1),
	nn.ReLU(),
	nn.Conv2d(384, 384, kernel_size=3, padding=1),
	nn.ReLU(),
	nn.Conv2d(384, 256, kernel_size=3, padding=1),
	nn.ReLU(),
	nn.MaxPool2d(kernel_size=3, stride=2),
	nn.Flatten(),
	nn.Linear(3*6400, 4096),
	nn.ReLU(),
	nn.Dropout(p=0.5),
	nn.Linear(4096, 4096),
	nn.ReLU(),
	nn.Dropout(p=0.5),
	nn.Linear(4096,10))

应用

为了快,依旧选择Fashion-MNIST。

所以还是单通道。

但因为AlexNet处理的图片像素是224224,远大于Fashion-MNIST的2828,所以先把2828扩展为224224。

先确定数据:

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

再搭建模型:

simple_AlexNet = nn.Sequential(
	nn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1),
	nn.ReLU(),
	nn.MaxPool2d(kernel_size=3, stride=2),
	nn.Conv2d(96, 256, kernel_size=5, padding=2),
	nn.ReLU(),
	nn.MaxPool2d(kernel_size=3, stride=2),
	nn.Conv2d(256, 384, kernel_size=3, padding=1),
	nn.ReLU(),
	nn.Conv2d(384, 384, kernel_size=3, padding=1),
	nn.ReLU(),
	nn.Conv2d(384, 256, kernel_size=3, padding=1),
	nn.ReLU(),
	nn.MaxPool2d(kernel_size=3, stride=2),
	nn.Flatten(),
	nn.Linear(6400, 4096),
	nn.ReLU(),
	nn.Dropout(p=0.5),
	nn.Linear(4096, 4096),
	nn.ReLU(),
	nn.Dropout(p=0.5),
	nn.Linear(4096,10))

万事俱备,只欠数据:

lr, num_epochs = 0.01, 10
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值