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

西安网站seo公司网站建设 毕业设计

西安网站seo公司,网站建设 毕业设计,ps网页设计心得体会,手机短视频制作软件app现在我们思考下,是否可以对于预训练模型增加模块来优化其效果,这里我们会遇到一个问题 预训练模型的结构和权重是固定的,如果修改其中的模型结构,是否会大幅影响其性能。其次是训练的时候如何训练才可以更好的避免破坏原有的特征…

现在我们思考下,是否可以对于预训练模型增加模块来优化其效果,这里我们会遇到一个问题

预训练模型的结构和权重是固定的,如果修改其中的模型结构,是否会大幅影响其性能。其次是训练的时候如何训练才可以更好的避免破坏原有的特征提取器的参数。

所以今天的内容,我们需要回答2个问题。

1. resnet18中如何插入cbam模块?

2. 采用什么样的预训练策略,能够更好的提高效率?

可以很明显的想到,如果是resnet18+cbam模块,那么大多数地方的代码都是可以复用的,模型定义部分需要重写。先继续之前的代码

所以很容易的想到之前第一次使用resnet的预训练策略:先冻结预训练层,然后训练其他层。之前的其它是全连接层(分类头),现在其它层还包含了每一个残差块中的cbam注意力层。

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import matplotlib.pyplot as plt
import numpy as np# 定义通道注意力
class ChannelAttention(nn.Module):def __init__(self, in_channels, ratio=16):"""通道注意力机制初始化参数:in_channels: 输入特征图的通道数ratio: 降维比例,用于减少参数量,默认为16"""super().__init__()# 全局平均池化,将每个通道的特征图压缩为1x1,保留通道间的平均值信息self.avg_pool = nn.AdaptiveAvgPool2d(1)# 全局最大池化,将每个通道的特征图压缩为1x1,保留通道间的最显著特征self.max_pool = nn.AdaptiveMaxPool2d(1)# 共享全连接层,用于学习通道间的关系# 先降维(除以ratio),再通过ReLU激活,最后升维回原始通道数self.fc = nn.Sequential(nn.Linear(in_channels, in_channels // ratio, bias=False),  # 降维层nn.ReLU(),  # 非线性激活函数nn.Linear(in_channels // ratio, in_channels, bias=False)   # 升维层)# Sigmoid函数将输出映射到0-1之间,作为各通道的权重self.sigmoid = nn.Sigmoid()def forward(self, x):"""前向传播函数参数:x: 输入特征图,形状为 [batch_size, channels, height, width]返回:调整后的特征图,通道权重已应用"""# 获取输入特征图的维度信息,这是一种元组的解包写法b, c, h, w = x.shape# 对平均池化结果进行处理:展平后通过全连接网络avg_out = self.fc(self.avg_pool(x).view(b, c))# 对最大池化结果进行处理:展平后通过全连接网络max_out = self.fc(self.max_pool(x).view(b, c))# 将平均池化和最大池化的结果相加并通过sigmoid函数得到通道权重attention = self.sigmoid(avg_out + max_out).view(b, c, 1, 1)# 将注意力权重与原始特征相乘,增强重要通道,抑制不重要通道return x * attention #这个运算是pytorch的广播机制## 空间注意力模块
class SpatialAttention(nn.Module):def __init__(self, kernel_size=7):super().__init__()self.conv = nn.Conv2d(2, 1, kernel_size, padding=kernel_size//2, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):# 通道维度池化avg_out = torch.mean(x, dim=1, keepdim=True)  # 平均池化:(B,1,H,W)max_out, _ = torch.max(x, dim=1, keepdim=True)  # 最大池化:(B,1,H,W)pool_out = torch.cat([avg_out, max_out], dim=1)  # 拼接:(B,2,H,W)attention = self.conv(pool_out)  # 卷积提取空间特征return x * self.sigmoid(attention)  # 特征与空间权重相乘## CBAM模块
class CBAM(nn.Module):def __init__(self, in_channels, ratio=16, kernel_size=7):super().__init__()self.channel_attn = ChannelAttention(in_channels, ratio)self.spatial_attn = SpatialAttention(kernel_size)def forward(self, x):x = self.channel_attn(x)x = self.spatial_attn(x)return ximport torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体支持
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 检查GPU是否可用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"使用设备: {device}")# 数据预处理(与原代码一致)
train_transform = transforms.Compose([transforms.RandomCrop(32, padding=4),transforms.RandomHorizontalFlip(),transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1),transforms.RandomRotation(15),transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))
])test_transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))
])# 加载数据集(与原代码一致)
train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=train_transform)
test_dataset = datasets.CIFAR10(root='./data', train=False, transform=test_transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

@浙大疏锦行 

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

相关文章:

  • 邢台做移动网站多少钱网站建设后期收什么费用
  • 英茗网站建设排名第一的玉米品种
  • 毕设做网站有什么题目哈尔滨招标信息网官网
  • 最有效的网站推广费用做饮食找工作哪个网站好
  • 用wix做网站需要备案吗怎么制作属于自己的app
  • wordpress的编码问题安徽网站优化哪里有
  • 濮阳市建设局网站免费商城系统哪个好
  • 网站建设千套素材手机程序开发
  • 中国水利教育培训网站广西住房和城乡建设厅网站证件
  • 有没有做家纺类的网站给公司建立网站不可以做到的
  • python网站和js做网站淄博便宜网站设
  • 长沙网站搜索引擎优化白之家低成本做网站
  • 网站建设和维护要点石狮市
  • 做网站的个人心得设计邦官网
  • 花园设计网站推荐低价网站制作
  • 360网站卖东西怎么做的应用商店软件
  • 网站项目建设合同图片制作软件免费版
  • wordpress微站wordpress 添加模块
  • 便宜网站建设 优帮云做网络推网站推广的目的
  • 建设礼品网站的策划书山西长治做网站公司
  • 专业建站网网站运营推广免费申请空间的地址有哪些
  • 做音频的网站网站建设必须在服务器
  • 杭州优质网站建设免费空间网站怎么做的
  • 即墨网站建设在哪app网站建设多少钱
  • 建网站公司要钱吗个人做论坛网站需要哪些备案
  • linux做网站教程老区建设网站
  • 青岛公司网站设计展览展会网站建设
  • 周村网站建设yx718关键词排名的排名优化
  • windows配置wordpress做优化网站能以量取胜么
  • 高密哪里做网站网站开发难点