自学神经网络总结6

本文作者通过实际代码实现,总结了LeNet简化版的卷积神经网络模型,从计算图设计到应用,包括输入输出设定、模型结构、数据准备和训练过程,旨在巩固理论知识并实践深度学习基础。
摘要由CSDN通过智能技术生成

写作动机

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

尽量做到每日一次总结。

行文思路

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

使用框架

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

参考书籍

《动手学深度学习2.0》

2024/2/29——LeNet简化版

今天开始总结卷积神经网络。

先是最简单,最古老的卷积神经网络。

确定模型

  • 输入数字:多维
  • 输出数字:多维
  • 数字映射:先卷积,后全连接

计算图

在这里插入图片描述

代码实现

import torch
from torch import nn
simple_LeNet = nn.Sequential(
	nn.Conv2d(input_numbers, output_numbers, kernel_size, padding, stride),
	nn.Sigmoid(),
	nn.AvgPool2d(kernel_size, stride),
	nn.Flatten(),
	nn.Linear(output_numbers, output_numbers2)
	)

应用

首先确定输入和输出:

  • 输入:单通道,黑白数字图片,28*28
  • 输出:0-9这10个标签,依旧用独热向量表示
from d2l import torch as d2l
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=batch_size)

接着确定模型:

simple_LeNet = nn.Sequential(
    nn.Conv2d(1, 6, kernel_size=5, padding=2), 
    nn.Sigmoid(),
    nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Conv2d(6, 16, kernel_size=5), 
    nn.Sigmoid(),
    nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Flatten(),
    nn.Linear(16 * 5 * 5, 120), 
    nn.Sigmoid(),
    nn.Linear(120, 84), 
    nn.Sigmoid(),
    nn.Linear(84, 10))

万事俱备,只欠数据:

lr, num_epochs = 0.9, 10
train(simple_LeNet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值