VGG使用块的网络

VGG使用块的网络

一.手写VGG架构

import torch
from torch import nn
import d2l
#1.VGG块
def VGG_block(nums_conv,in_chanels,out_chanels):#卷积层数,输入通道数,输出通道数layers=[]#一个VGG里面的层for i in range(nums_conv):layers.append(nn.Conv2d(in_chanels,out_chanels,3,padding=1))layers.append(nn.ReLU())in_chanels=out_chanels#下一层输入等于本层输出layers.append(nn.MaxPool2d(kernel_size=2,stride=2))return nn.Sequential(*layers)
#VGG网络由多个VGG块组成
def VGG_net(conv_info):#传入有关每一个块的卷积情况conv_blocks=[]in_chanels=1#默认输入通道初始是1for (nums_conv,out_chanels) in conv_info:conv_blocks.append(VGG_block(nums_conv,in_chanels,out_chanels))in_chanels=out_chanels#下一层输入等于本层输出return nn.Sequential(*conv_blocks,nn.Flatten(),nn.Linear(7*7*out_chanels,4096),nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096,4096),nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096,10))
conv_info=((1,64),(1,128),(2,256),(2,512),(2,512))
net=VGG_net(conv_info)
X=torch.randn((1,1,224,224))
for layer in net:X=layer(X)print(layer.__class__.__name__,X.shape)

分析代码:

VGG网络架构,由多个VGG块以及3个全连接层组成

每个VGG块可以不同,VGG块由多个3*3padding=1的卷积层和一个2*2stride=2的最大池化层组成

(1)VGG块

def VGG_block(nums_conv,in_chanels,out_chanels):#卷积层数,输入通道数,输出通道数layers=[]#一个VGG里面的层for i in range(nums_conv):layers.append(nn.Conv2d(in_chanels,out_chanels,3,padding=1))layers.append(nn.ReLU())in_chanels=out_chanels#下一层输入等于本层输出layers.append(nn.MaxPool2d(kernel_size=2,stride=2))return nn.Sequential(*layers)

 (2)VGG网络

def VGG_net(conv_info):#传入有关每一个块的卷积情况conv_blocks=[]in_chanels=1#默认输入通道初始是1for (nums_conv,out_chanels) in conv_info:conv_blocks.append(VGG_block(nums_conv,in_chanels,out_chanels))in_chanels=out_chanels#下一层输入等于本层输出return nn.Sequential(#这一部分和AlexNet一样,三层全连接层*conv_blocks,nn.Flatten(),nn.Linear(7*7*out_chanels,4096),nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096,4096),nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096,10))

二.训练VGG网络 

import torch
from torch import nn
from d2l import torch as d2l
#1.VGG块
def VGG_block(nums_conv,in_chanels,out_chanels):#卷积层数,输入通道数,输出通道数layers=[]#一个VGG里面的层for i in range(nums_conv):layers.append(nn.Conv2d(in_chanels,out_chanels,3,padding=1))layers.append(nn.ReLU())in_chanels=out_chanels#下一层输入等于本层输出layers.append(nn.MaxPool2d(kernel_size=2,stride=2))return nn.Sequential(*layers)#VGG网络由多个VGG块组成
def VGG_net(conv_info):#传入有关每一个块的卷积情况conv_blocks=[]in_chanels=1#默认输入通道初始是1for (nums_conv,out_chanels) in conv_info:conv_blocks.append(VGG_block(nums_conv,in_chanels,out_chanels))in_chanels=out_chanels#下一层输入等于本层输出nn.Flatten()return nn.Sequential(*conv_blocks,nn.Flatten(),nn.Linear(7*7*out_chanels,4096),nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096,4096),nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096,10))
conv_info=((1,64),(1,128),(2,256),(2,512),(2,512))
#因为这个VGG网络层数太多运行太慢,所以把输出通道除4
ratio=4
smallconv_info=[(pair[0],pair[1]//ratio) for pair in conv_info]
net=VGG_net(smallconv_info)
batch_size=128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=batch_size,resize=224)#数据集
lr=0.05
nums_epochs=10
d2l.train_ch6(net,train_iter,test_iter,nums_epochs,lr,d2l.try_gpu())

 

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

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

相关文章

使用SpringBoot + Thymeleaf + MyBatisPlus实现一个简单的书籍管理系统

一 系统功能设计 采用SpringBoot + Thymeleaf + MyBatisPlus技术栈实现一个简单的书籍管理系统,包含以下功能:书籍列表展示 书籍添加 书籍编辑 书籍删除 书籍查询(按条件筛选)二 数据库设计 SET NAMES utf8mb4; SE…

创业思路

创业思路ai p图, 人工后期校验, 人工p, 然后把图片给手机壳制作厂, 卖给提供照片的人. diy手机壳. 比如他本人的照片加风景, 比如巴黎铁塔

详细介绍:Java-Spring入门指南(十九)thymeleaf基本概念

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P2605 [ZJOI2010] 基站选址

题目概述 题目链接:https://www.luogu.com.cn/problem/P2605。 有 \(n\) 个村庄,你需要建立不超过 \(k\) 个基站,每一户人家都有参数 \(d_i,s_i,w_i,c_i\) 分别表示距离第一户人家的距离、在不超过 \(s_i\) 的地方有…

NVIDIA Jetson AGX Xavier刷机教程

NVIDIA Jetson AGX Xavier刷机教程 @目录NVIDIA Jetson AGX Xavier刷机教程1.下载SdkManager2.安装SdkManager3.刷机 1.下载SdkManager 进入SdkManager官网下载SdkManager的deb版本 注意,ubuntu的24.04版本暂时不支持…

洛谷p1462-通往奥格瑞码道路

题目:https://www.luogu.com.cn/problem/P1462 思考过程: 刚拿到这个题,我把消耗的血量和路费当成了负权边去考虑,考虑到我们只需要考虑扣钱的最优,并且在血量扣尽之前达到就好,那我觉得可以用一个数组hp来代表实…

详细介绍:VR 太阳光参数与快速渲染

详细介绍:VR 太阳光参数与快速渲染pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

位运算中没用的小技巧

位运算那些没用的小技巧消去最后一位的1 x & (x - 1)交换两个数 a ^= b; b ^= a; a ^= b;检查一个数的奇偶 x & 1求x的绝对值 ~(x >> 31) ? a : ~a + 1取两个数的最大值 x ^ ((x ^ y) & -(x < y…

超越基础:SightAI 智能路由与多模型选择实战 - sight

在第一周的入门指南中,我们已经学会了如何使用 SightAI 的基础 API 调用,实现了一个简单的对话交互。不少开发者会面临新的需求:想降低推理成本时,如何找到性价比更高的模型?追求交互速度时,怎样获取更快的响应?…

kafka连接认证

kafka连接认证明白,我帮你整理一份 Kafka 客户端三阶段检查完整文档,涵盖原理、检查目的、可能异常、排查方法以及你之前脚本逻辑对应的解释。文档形式清晰,方便阅读和运维参考。Kafka 客户端三阶段连接检查完整文档…

[Vulhub靶机]JARBAS靶机渗透

[Vulhub靶机]JARBAS靶机渗透 靶机搭建 下载地址: https://download.vulnhub.com/jarbas/Jarbas.zip 下载后设置nat模式即可与攻击机同一网段 kali:192.168.88.1331.信息收集 主机发现 首先对C段进行扫描,发现131这台主…

CF622D 题解

很好的一道思维题。 容易发现答案下界是 \(0\),手模几组发现好像都能取到,考虑能不能找到构造答案为 \(0\) 的通解。 那么除了 \(i=n\) 以外的所有 \(i\) 都应该有 \(d_i=n-i\),考虑构造这个东西,然后最后 \(n\) 随…

vue学习的总结

vue学习如何判断vue框架: (1)使用插件(最无脑的) (2)判断是否有id为app的div (3)判断站点是否只有一个index.html (4)可以用findVueRoot函数 (5)使用油猴的脚本进行清除路由若能清除也可以判断为vue(油猴…

最小二乘问题详解5:非线性最小二乘求解实例

通过拟合非线性函数的实例,详细讲解了非线性最小二乘问题中Gauss-Newton方法的实现过程,并给出了基于Eigen库的C++代码示例及收敛分析。1. 引言 在上一篇文章《最小二乘问题详解4:非线性最小二乘》中,介绍了非线性…

【28】C# WinForm入门到精通 ——多文档窗体MDI【属性、强大的方法、实例、源码】【多窗口重叠、水平平铺、垂直平铺、窗体传值】

【28】C# WinForm入门到精通 ——多文档窗体MDI【属性、强大的方法、实例、源码】【多窗口重叠、水平平铺、垂直平铺、窗体传值】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

第五周预习

20231313 张景云《密码系统设计》第五周预习AI对内容的总结 Windows.C.C++.加密解密实战.sm.ys 一、数字签名技术基础背景与意义:互联网信息安全问题突出,如网站篡改、仿冒页面等,数字签名技术作为基于密码学的安全…

2025 非标门/铸铝门/别墅大门厂家推荐榜:聚焦品质与服务的实力之选

在建筑建材领域,门作为空间防护与装饰的核心载体,其品质直接关系到居住安全与生活体验。市面上门业厂商众多,产品性能与服务质量参差不齐。基于技术实力、产品适配性、市场口碑等多维度考量,本文筛选出五家各具优势…

工业数字化未来:IT与OT融合实践

本文探讨数字技术在工业与运营环境中的实际应用,包括远程诊断系统、统一登录平台和跨设备协作解决方案,分析如何通过优化数字员工体验提升生产力与安全性,并介绍多家机构在IT与OT融合过程中的实践经验。工业运营工作…

AI安全新威胁:提示注入与模型中毒攻击深度解析

本文深入探讨AI安全领域两大新兴威胁:提示注入与模型中毒攻击。详细分析直接注入、间接注入、多模态注入等攻击技术,以及数据投毒、后门植入等模型威胁,为企业安全团队提供全面的防御策略和实战案例。提示注入与模型…

神经网络入门研读报告

神经网络入门研读报告:基于数据驱动的机器认知模型 神经网络是一种模拟生物神经系统信息处理机制的机器学习模型,核心功能是通过多层非线性变换,从结构化或非结构化数据中自动学习特征与规律,实现分类、预测等认知…