【动手学习深度学习--逐行代码解析合集】18网络中的网络(NiN)

news2024/11/24 17:18:11

【动手学习深度学习】逐行代码解析合集

18网络中的网络(NiN)

视频链接:动手学习深度学习–网络中的网络(NiN)
课程主页:https://courses.d2l.ai/zh-v2/
教材:https://zh-v2.d2l.ai/

1、NiN网络

NiN架构

  • 无全连接层
  • 交替使用NiN块和步幅为2的最大池化层(逐步减小高宽和增大通道数)
  • 最后使用全局平均池化层得到输出(其输入通道数是类别数)
    在这里插入图片描述

总结:

  • NiN块使用卷积层加两个1×1卷积层,后者对每个像素增加了非线性性
  • NiN使用全局平均池化层来替代VGG和AlexNet中的全连接层
  • 不容易过拟合,更少的参数个数
import torch
from torch import nn
from d2l import torch as d2l
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

"====================1、NiN块结构===================="
def nin_block(in_channels, out_channels, kernel_size, strides, padding):
    return nn.Sequential(
        nn.Conv2d(in_channels, out_channels, kernel_size, strides, padding),
        nn.ReLU(),
        # 两个1×1卷积层代替全连接层,不会改变通道数
        nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU(),
        nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU())

2、NiN模型

"====================2、NiN模型===================="
net = nn.Sequential(
    # 输入通道数96,卷积核11×11,步长为4,边缘填充为0
    nin_block(1, 96, kernel_size=11, strides=4, padding=0),
    # 最大池化层卷积核3×3,步长为2
    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, strides=1, padding=1),
    nn.MaxPool2d(3, stride=2),
    nn.Dropout(0.5),
    # 标签类别数是10,所以输出通道数为10
    nin_block(384, 10, kernel_size=3, strides=1, padding=1),
    # 全局平均池化层
    nn.AdaptiveAvgPool2d((1, 1)),
    # 将四维的输出转成二维的输出,其形状为(批量大小,10)
    nn.Flatten())
    
# 查看每个块的输出形状
X = torch.rand(size=(1, 1, 224, 224))
for layer in net:
    X = layer(X)
    print(layer.__class__.__name__,'output shape:\t', X.shape)
'''
输出:
Sequential output shape:	 torch.Size([1, 96, 54, 54])
MaxPool2d output shape:	 torch.Size([1, 96, 26, 26])
Sequential output shape:	 torch.Size([1, 256, 26, 26])
MaxPool2d output shape:	 torch.Size([1, 256, 12, 12])
Sequential output shape:	 torch.Size([1, 384, 12, 12])
MaxPool2d output shape:	 torch.Size([1, 384, 5, 5])
Dropout output shape:	 torch.Size([1, 384, 5, 5])
Sequential output shape:	 torch.Size([1, 10, 5, 5])
AdaptiveAvgPool2d output shape:	 torch.Size([1, 10, 1, 1])
Flatten output shape:	 torch.Size([1, 10])
'''

3、训练模型

"====================3、训练模型===================="
# 使用Fashion-MNIST来训练模型。训练NiN与训练AlexNet、VGG时相似。
lr, num_epochs, batch_size = 0.1, 10, 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

运行结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/754328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDE/VS项目属性中的 <字符集> 配置项,它到底是干什么用的?

文章目录 概述对配置项的基础测试VS默认的字符集配置Unicode字符集和多字节字符集是否影响文本编辑器 使VS像记事本那样显示文件编码VS下编译UTF-8无BOM的代码文件VS可以搞定ANSI和带BOM的源代码文件VS搞不定UTF-8无BOM的源代码文件乱码字符是怎么翻译出来的?猜猜看再起航 使V…

解决windows上端口占用问题

在开发中总会碰到端口占用问题,最后导致我们项目或服务无法正常启动。 解决方案如下: # 1.根据端口号查进程 例如8082端口 netstat -aon | findstr :8082 # 2.根据进程id查应用名 tasklist|findstr "11376" # 3.根据pid删除进程 taskkill …

检测到错误页面web应用服务器版本信息泄露

详细描述 Web服务器未能正确处理异常请求导致Web服务器版本信息泄露,攻击者收集到服务器信息后可进行进一步针对性攻击。 解决办法 临时修复建议如下: 1、关闭web服务器错误提示。 2、关闭运行平台的错误提示。 3、建立错误机制,不要把真实…

python numpy axis=0,1,2, 分清楚

理解维度问题,记忆右边图片坐标的0,1,2, 就记住了计算方向问题,每个矩阵想象一张图片,多个图片叠加, 哪个维度做,哪个维度就被降维度1,默认无 所以 (4,3,2&am…

linux系统管理:常用命令和技巧

目录 0 前言 1 sudo and su 1.1 su: 切换用户 1.2 sudo: 切换用户 2 权限设置:chmod, chown 2.1 chmod:访问权限设置 2.2 chown:设置文件或目录的主人 2.3 chgrp:设计文件或者目录属于哪个组 2.4 查询组成员 2.5 查询某…

搭建微服务工程 【详细步骤】

一、准备阶段 🍉 本篇文章用到的技术栈 mysqlmybatis[mp]springbootspringcloud alibaba 需要用到的数据库 订单数据库: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for shop_order -- --------------…

Nacos服务注册和配置中心(Config,Eureka,Bus)1

SCA(Spring Cloud Alibaba)核心组件 Spring Cloud是若干个框架的集合,包括spring-cloud-config、spring-cloud-bus等近20个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案,Spring C…

Kafka 深度剖析

1、应用场景 1.1 kafka场景 Kafka最初是由LinkedIn公司采用Scala语言开发,基于ZooKeeper,现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以 高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用…

Docker安装SonarQube

1.查看稳定版本的SonarQube,注意7.9之后的版本不在支持Mysql。使用PostgreSQL Download | SonarQube | Sonar 2.拉取PostgreSQL和SonarQube docker pull postgres docker pull sonarqube:9.9-community community代表社区版 3.在下面的目录下创建docker-compose…

云计算运维工程师简历怎么写?带简历案例

求职岗位:云计算运维工程师 职位要求: 1)熟悉Linux操作系统的和管理与维护,有Linux操作系统性能监控和优化工作经验; 2)熟悉日常服务器的数据备份、迁移、扩容等技术工作,能够解决相应运维工作…

H3C-Cloud Lab实验-NAT实验

实验拓扑图: IP地址规划: 实验需求: 1. 按照图示配置 IP 地址 2. 私网 A 通过 R1 接入到互联网,私网 B 通过 R3 接入到互联网 3. 私网 A 内部存在 Vlan10 和 Vlan20,通过 R1 上单臂路由访问外部网络 4. 私网 A 通过…

(数学)+(二分)

cf826-C. Place for a Selfie 给n条直线和m条开口向上的抛物线&#xff0c;问对于每条抛物线来说&#xff0c;存不存在和它不相交的直线&#xff0c;存在的话&#xff0c;输出直线的斜率。 直线与抛物线联立&#xff0c;(b-k)^2-4ac<0则不相交&#xff0c;|b-k|越小越好&…

操作系统16:文件共享和文件保护

目录 1、文件共享 &#xff08;1&#xff09;基于有向无循环图实现文件共享 1.1 - 有向无循环图 DAG(Directed Acyclic Graph) 1.2 - 利用索引结点 &#xff08;2&#xff09;利用符号链接实现文件共享 2、文件保护 &#xff08;1&#xff09;保护域(Protection Domain)…

自动化测试需要学什么【附学习路线和学习教程】

目录 一、接口自动化测试 1、HTTP和HTTPS协议 2、接口文档 3、接口测试工具Jmeter和Postman 5、总结 二、UI自动化测试 1 、Web自动化测试 1.1 Selenium 1.3 总结 2 App自动化测试 2.1 应该选择哪款工具&#xff1f; 三、持续集成 四、总结 随着自动化测试行业的薪…

关于nginx学习记录(二)

系列文章目录 第一章 Nginx 学习入门——Nginx的概述及安装 第二章 Nginx学习入门——Nginx常用命令及nginx.conf配置了解 目录 系列文章目录 一、Nginx 操作常用的命令 二、Nginx 配置文件 1. nginx配置文件位置:/usr/local/nginx/conf 2.nginx.conf配置文件组成: ⑴ 全…

ASL/CS系列音视频转换方案芯片,Typec拓展坞方案芯片

音视频单转方案芯片&#xff1a; CS5565 Typec转HDMI 8K 60HZ转换方案 可替代RTD2173 PS196 CS5801 HDMI转eDP/DP方案 可替代LT6711 CS5212 DP转VGA转换方案 可PIN TO PIN 替代RTD2166 CS5211 E…

Python+Appium自动化测试之元素等待方法与重新封装元素定位方法

目录 一&#xff0c;元素等待方法 1&#xff0c;强制等待 2&#xff0c;隐式等待 3&#xff0c;显式等待 二&#xff0c;重新封装元素定位方法 在appium自动化测试脚本运行的过程中&#xff0c;因为网络不稳定、测试机或模拟器卡顿等原因&#xff0c;有时候会出现页面元素加…

python_day8_综合案例

综合案例&#xff0c;全球GDP排行榜 1、知识点补充&#xff1a;sort()方法 sort()方法&#xff1a; 列表.sort(key选择排序依据的函数,reverseTrue|False) my_list [[a, 33], [b, 55], [c, 11]]def choose_sort_key(element):return element[1] # 列表中每个元素传进来&am…

动态规划01背包之494 目标和(第10道)

题目&#xff1a; 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 &#xff0c;在 1 之前添加 -…

C语言知识扫盲

文章目录 1,各种类型所占字节数2,main函数是可以传入参数的3,C语言中extern的用法4,gettop()函数5&#xff0c;C/C中枚举类型enum使用 1,各种类型所占字节数 类型16位32位64位char111short int222int244unsigned int244float444double888long448long long888unsigned long448 …