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

政府网站管理推进集约建设东莞百度快照优化排名

政府网站管理推进集约建设,东莞百度快照优化排名,公司企业邮箱有哪些,需要推广的软件以下是几种常用的 卷积神经网络(CNN) 架构及其 PyTorch 实现示例,涵盖经典模型和现代变体。这些模型在图像分类、目标检测等任务中表现卓越。 1. LeNet-5(1998) 特点 首个成功应用于手写数字识别的CNN。 结构&#x…

  以下是几种常用的 卷积神经网络(CNN) 架构及其 PyTorch 实现示例,涵盖经典模型和现代变体。这些模型在图像分类、目标检测等任务中表现卓越。

1. LeNet-5(1998)

  • 特点
    首个成功应用于手写数字识别的CNN。
    结构:卷积层 + 池化层 + 全连接层。
    适用场景:小尺寸图像分类(如MNIST)。

PyTorch实现:

import torch.nn as nnclass LeNet(nn.Module):def __init__(self, num_classes=10):super(LeNet, self).__init__()self.features = nn.Sequential(nn.Conv2d(1, 6, kernel_size=5),  # 输入1通道(灰度)nn.ReLU(),nn.AvgPool2d(kernel_size=2),nn.Conv2d(6, 16, kernel_size=5),nn.ReLU(),nn.AvgPool2d(kernel_size=2))self.classifier = nn.Sequential(nn.Linear(16*4*4, 120),  # 根据输入尺寸调整nn.ReLU(),nn.Linear(120, 84),nn.ReLU(),nn.Linear(84, num_classes))def forward(self, x):x = self.features(x)x = x.view(x.size(0), -1)x = self.classifier(x)return x# 示例:MNIST分类
model = LeNet(num_classes=10)

2. AlexNet(2012)

  • 特点
    引入ReLU激活函数和Dropout,大幅提升性能。
    使用GPU加速训练。
    适用场景:中等尺寸图像分类(如ImageNet)。

PyTorch实现:

class AlexNet(nn.Module):def __init__(self, num_classes=1000):super(AlexNet, self).__init__()self.features = nn.Sequential(nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),nn.Conv2d(64, 192, kernel_size=5, padding=2),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),nn.Conv2d(192, 384, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(384, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(256, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),)self.classifier = nn.Sequential(nn.Dropout(),nn.Linear(256*6*6, 4096),nn.ReLU(inplace=True),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplace=True),nn.Linear(4096, num_classes),)def forward(self, x):x = self.features(x)x = x.view(x.size(0), 256*6*6)x = self.classifier(x)return x# 示例:ImageNet分类
model = AlexNet(num_classes=1000)

3. VGG(2014)

  • 特点
    使用重复的3x3卷积块,加深网络。
    常见变体:VGG16、VGG19。
    适用场景:高精度图像分类。

PyTorch实现:

class VGG16(nn.Module):def __init__(self, num_classes=1000):super(VGG16, self).__init__()self.features = nn.Sequential(# Block 1nn.Conv2d(3, 64, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(64, 64, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),# Block 2-5(类似结构,此处省略)# ...)self.avgpool = nn.AdaptiveAvgPool2d((7, 7))self.classifier = nn.Sequential(nn.Linear(512*7*7, 4096),nn.ReLU(inplace=True),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplace=True),nn.Dropout(),nn.Linear(4096, num_classes),)def forward(self, x):x = self.features(x)x = self.avgpool(x)x = x.view(x.size(0), -1)x = self.classifier(x)return x# 使用PyTorch内置VGG(推荐)
import torchvision.models as models
vgg16 = models.vgg16(pretrained=True)  # 加载预训练权重

4. ResNet(2015)

  • 特点
    引入残差连接(Residual Block),解决梯度消失问题。
    支持极深网络(如ResNet-152)。
    适用场景:通用视觉任务。

PyTorch实现(简化版):

class ResidualBlock(nn.Module):def __init__(self, in_channels, out_channels, stride=1):super(ResidualBlock, self).__init__()self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1)self.bn1 = nn.BatchNorm2d(out_channels)self.relu = nn.ReLU(inplace=True)self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1)self.bn2 = nn.BatchNorm2d(out_channels)self.shortcut = nn.Sequential()if stride != 1 or in_channels != out_channels:self.shortcut = nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=stride),nn.BatchNorm2d(out_channels))def forward(self, x):residual = xx = self.conv1(x)x = self.bn1(x)x = self.relu(x)x = self.conv2(x)x = self.bn2(x)x += self.shortcut(residual)x = self.relu(x)return xclass ResNet18(nn.Module):def __init__(self, num_classes=10):super(ResNet18, self).__init__()self.in_channels = 64self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3)self.bn1 = nn.BatchNorm2d(64)self.relu = nn.ReLU(inplace=True)self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)# 添加残差块self.layer1 = self._make_layer(64, 64, 2, stride=1)self.layer2 = self._make_layer(64, 128, 2, stride=2)self.layer3 = self._make_layer(128, 256, 2, stride=2)self.layer4 = self._make_layer(256, 512, 2, stride=2)self.avgpool = nn.AdaptiveAvgPool2d((1, 1))self.fc = nn.Linear(512, num_classes)def _make_layer(self, in_channels, out_channels, blocks, stride):layers = []layers.append(ResidualBlock(in_channels, out_channels, stride))for _ in range(1, blocks):layers.append(ResidualBlock(out_channels, out_channels))return nn.Sequential(*layers)def forward(self, x):x = self.conv1(x)x = self.bn1(x)x = self.relu(x)x = self.maxpool(x)x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)x = self.layer4(x)x = self.avgpool(x)x = x.view(x.size(0), -1)x = self.fc(x)return x# 示例:CIFAR-10分类
model = ResNet18(num_classes=10)

5. MobileNet(2017)

  • 特点
    使用深度可分离卷积(Depthwise Separable Convolution),降低计算量。
    适合移动端和嵌入式设备。

PyTorch实现:

class DepthwiseSeparableConv(nn.Module):def __init__(self, in_channels, out_channels, stride=1):super().__init__()self.depthwise = nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=stride, padding=1, groups=in_channels)self.pointwise = nn.Conv2d(in_channels, out_channels, kernel_size=1)def forward(self, x):x = self.depthwise(x)x = self.pointwise(x)return xclass MobileNet(nn.Module):def __init__(self, num_classes=1000):super(MobileNet, self).__init__()self.model = nn.Sequential(nn.Conv2d(3, 32, kernel_size=3, stride=2, padding=1),nn.ReLU(inplace=True),DepthwiseSeparableConv(32, 64, stride=1),DepthwiseSeparableConv(64, 128, stride=2),DepthwiseSeparableConv(128, 128, stride=1),DepthwiseSeparableConv(128, 256, stride=2),# 更多层...nn.AdaptiveAvgPool2d(1))self.fc = nn.Linear(256, num_classes)def forward(self, x):x = self.model(x)x = x.view(x.size(0), -1)x = self.fc(x)return x# 示例:轻量化模型
model = MobileNet(num_classes=1000)

6. 使用预训练模型(PyTorch内置)

PyTorch提供多种预训练模型,可直接加载:

import torchvision.models as models# 加载预训练模型
resnet50 = models.resnet50(pretrained=True)
inception_v3 = models.inception_v3(pretrained=True)
mobilenet_v2 = models.mobilenet_v2(pretrained=True)# 微调(修改最后一层)
resnet50.fc = nn.Linear(resnet50.fc.in_features, num_classes=10)

训练示例(以CIFAR-10为例)

import torch.optim as optim# 定义模型、损失函数、优化器
model = ResNet18(num_classes=10)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)# 训练循环
for epoch in range(10):for inputs, labels in train_loader:outputs = model(inputs)loss = criterion(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')

总结:模型选择指南


模型参数量适用场景优势
LeNet~60k简单分类(MNIST)结构简单,计算量小
AlexNet~60M中等图像分类经典基准模型
VGG~138M高精度分类结构规则,易于扩展
ResNet~25M (18层)通用视觉任务解决梯度消失,支持极深网络
MobileNet~3.5M移动端/嵌入式设备计算高效,参数量少

http://www.dtcms.com/wzjs/199592.html

相关文章:

  • 做赌博网站犯法吗百度平台商家客服
  • 中铁建设集团企业门户上海快速优化排名
  • 电商模板哪个网站好2024年8月爆发新的大流行病毒吗
  • php做网站都需要学什么永久免费wap自助建站
  • 网站设计一般包括哪几个部分深圳网站搜索优化工具
  • 如何在网上建立网站搜百度盘
  • 北京网站建设排行关键词排名查询工具有什么作用?
  • 济宁祥云网站建设百度seo排名查询
  • 新河镇网站制作网站优化的关键词
  • 静态网页文件合肥网站推广优化公司
  • xyz后缀的网站摘抄一则新闻
  • 房地产网站推广怎样建立自己的网站平台
  • 网站系统怎么建设百度推广方式有哪些
  • 网页制作师招聘武汉seo创造者
  • 上海网站建设哪个平台好seo关键词排名价格
  • 网站以前在百度能搜索不到了seo标题优化关键词
  • 网站建设洽谈问题百度竞价优缺点
  • 普通网站和营销型网站的区别是什么如何制作网站最简单的方法
  • 做写真素材网站世界最新新闻
  • 中学校园网网站建设规划书东方网络律师团队
  • 衡阳做网站公司长沙网站推广工具
  • c 做网站怎么显示歌词5151app是交友软件么
  • 山门做网站上海关键词优化推荐
  • 网站访问量统计怎么做淘宝引流推广平台
  • 女的和女的做那个视频网站免费设计模板网站
  • 网站设计 ipad行业关键词词库
  • wordpress 调用副标题优化关键词首页排行榜
  • 呼市賽罕区信息网站做一顿饭工作网站标题算关键词优化吗
  • 真题真做报名网站推广营销网络
  • 发任务做任务得网站怎么建公司网站