当前位置: 首页 > news >正文

卷积神经网络零基础-Alexnet网络

导包

import torch import pandas as pd import torch.nn as nn

class Mymodel

init

def __init__(self, num_cls): super(myModel, self).__init__() self.conv1 = nn.Conv2d(3, 64, 11, 4, 2) self.pool1 = nn.MaxPool2d(3, 2) self.conv2 = nn.Conv2d(64, 192, 5, 1, 2) self.pool2 = nn.MaxPool2d(3, 2) self.conv3 = nn.Conv2d(192, 384, 3, 1, 1) self.conv4 = nn.Conv2d(384, 256, 3, 1, 1) self.conv5 = nn.Conv2d(256, 256, 3, 1, 1) self.pool3 = nn.MaxPool2d(3, 2) self.pool4 = nn.AdaptiveAvgPool2d(6) self.fc1 = nn.Linear(9216, 4096) self.fc2 = nn.Linear(4096, 4096) self.fc3 = nn.Linear(4096, num_cls)

forward

def forward(self, x): x = self.conv1(x) x = self.pool1(x) x = self.conv2(x) x = self.pool2(x) x = self.conv3(x) x = self.conv4(x) x = self.conv5(x) x = self.pool3(x) x = self.pool4(x) x = x.view(x.size()[0], -1) x = self.fc1(x) x = self.fc2(x) x = self.fc3(x) return x

x = x.view(x.size()[0], -1)这是什么语法这是PyTorch 中改变张量形状的语法,用来展平(flatten)多维张量

x.size() # 返回张量形状的元组,如:torch.Size([4, 256, 6, 6])
x.size()[0] # 取第一个维度,即 batch_size(这里是4)

view()方法
用于重新组织张量的形状(类似NumPy的reshape)
不改变数据内容,只改变"视图"
参数是新形状的各个维度

1的特殊含义
表示自动计算这个维度的大小
PyTorch会根据总元素数和指定的其他维度自动推算

x = x.view(x.size()[0], -1)的作用:
保持批次维度不变(x.size()[0])
展平其他所有维度(-1)
从4D卷积特征变成2D全连接输入
这是连接卷积层和全连接层的标准转换步骤,是深度学习中的常见操作!

原始形状:[4, 256, 6, 6]

  • 总数据量 = 4 × 256 × 6 × 6 =36,864​ 个数字

展平后:[4, 9216]

  • 总数据量 = 4 × 9216 =36,864​ 个数字

主函数

model = myModel(1000) data = torch.ones(4, 3, 224, 224) pred = model(data)

# 第1行:创建模型实例

myModel(1000)中的 1000表示模型最后一层全连接层(fc3)的输出维度,即模型预测的类别数量。
model = myModel(1000) # 1000表示有1000个输出类别

# 第2行:创建模拟输入数据
data = torch.ones(4, 3, 224, 224) # 创建一个形状为[4,3,224,224]的张量

# 第3行:前向传播(推理)
pred = model(data) # 将数据输入模型,得到预测结果

原始特征图:
┌─────────────────────────────┐
│ 批次1: 256×6×6 │
│ 批次2: 256×6×6 │ → 形状:[4, 256, 6, 6]
│ 批次3: 256×6×6 │
│ 批次4: 256×6×6 │
└─────────────────────────────┘

展平后:
┌─────────────────────────────┐
│ 批次1: 9216个特征 │
│ 批次2: 9216个特征 │ → 形状:[4, 9216]
│ 批次3: 9216个特征 │
│ 批次4: 9216个特征 │
└─────────────────────────────┘

model = myModel(1000) # 创建模型,告诉它“你要输出1000个分数”
data = torch.ones(4, 3, 224, 224) # 4张图片
pred = model(data) # 让模型看看这4张图是什么

这三行是神经网络的标准测试流程创建模型 → 准备输入 → 获取输出

http://www.jsqmd.com/news/487055/

相关文章:

  • D3DCompiler_47.dll怎么解决?当运行某程序出现提示找不到此文件问题
  • 如何通过485通信控制汇川电机
  • 锂离子电池的充电状态和健康状态估计 石墨-磷酸铁锂电池的循环寿命模型 该项目的目标是设计一个强...
  • 光储直流微电网Simulink仿真模型——独立光伏系统能量管理及最大功率点跟踪
  • 2026最新!AI大模型系统学习路线图曝光,从入门到商业落地_AI大模型的详细完整学习路线,从入门到精通
  • 打开软件时弹出提示D3DCompiler_47.dll文件找不到无法启动应用解决方法
  • 文档检索软件self searcher绿色版下载
  • BEV 融合
  • JavaScript同时触发多个函数的5种高效方法
  • 都什么时候了, 你还在担心不会英语不能做外贸?
  • 成都GEO优化公司选择指南?本地标杆和全国企业的对比评测 - 速递信息
  • 解决openclaw下载OMM问题
  • 机房漏水监测系统白皮书:技术革新×应用实践·未来蓝图
  • MOVA“亮剑”AWE2026:让机器人长出“轮足”,用芯片重新定义智慧生活
  • vue+Python云听在线听读音乐小程序的设计与实现
  • 无锡π乐思镜片优质企业
  • 技能提升路线程序,输入目标岗位,倒推所需技能,规划学习顺,少走弯路,快速进阶。
  • 专业提供角膜塑形镜的企业
  • 1/2L7812CV稳压芯片解析
  • 2026年亲测!合肥系统门窗工厂实录
  • 温升测试基础
  • c语言指针解析
  • 【面试真题】能讲讲MySQL的锁机制吗
  • C++ 实战进阶:从编译避坑到打造“转码 - 合并 - 压缩 - 加密”全能视频工厂
  • 使用Maven创建一个web项目
  • 分享一个【连续下跌企稳反弹】指标——在暴跌后的混沌期,精准识别那些即将走牛的黄金坑
  • 基于扩展卡尔曼滤波的车辆质量与道路坡度估计模型(Matlab Simulink 2019+)
  • VMware Workstation 安装 CentOS 7 64位 完整教程
  • 8-Kotlin高阶语法-高阶函数与Lambda
  • Escrcpy - 免费开源!电脑控制安卓手机的投屏工具 (屏幕镜像 / 无线 / AI 自动化 / 录屏)