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

【深度学习Week4】MobileNet_ShuffleNet

报错:unsafe legacy renegotiation disabled

在这里插入图片描述
解决方案:

尝试了更换cryptography==36.0.2版本,以及更换下载链接的方法,都不行,最后采用了手动下载mat文件并上传到colab的方法

高光谱图像分类数据集简介Indian Pines&mat

在这里插入图片描述

定义网络:
HybridSN

class HybridSN(nn.Module):def __init__(self):super(HybridSN, self).__init__()self.conv3d_1 = nn.Sequential(nn.Conv3d(1, 8, kernel_size=(7, 3, 3), stride=1, padding=0),nn.BatchNorm3d(8),nn.ReLU(inplace = True),)self.conv3d_2 = nn.Sequential(nn.Conv3d(8, 16, kernel_size=(5, 3, 3), stride=1, padding=0),nn.BatchNorm3d(16),nn.ReLU(inplace = True),) self.conv3d_3 = nn.Sequential(nn.Conv3d(16, 32, kernel_size=(3, 3, 3), stride=1, padding=0),nn.BatchNorm3d(32),nn.ReLU(inplace = True))self.conv2d_4 = nn.Sequential(nn.Conv2d(576, 64, kernel_size=(3, 3), stride=1, padding=0),nn.BatchNorm2d(64),nn.ReLU(inplace = True),)self.fc1 = nn.Linear(18496,256)self.fc2 = nn.Linear(256,128)self.fc3 = nn.Linear(128,16)self.dropout = nn.Dropout(p = 0.4)def forward(self,x):out = self.conv3d_1(x)out = self.conv3d_2(out)out = self.conv3d_3(out)out = self.conv2d_4(out.reshape(out.shape[0],-1,19,19))out = out.reshape(out.shape[0],-1)out = F.relu(self.dropout(self.fc1(out)))out = F.relu(self.dropout(self.fc2(out)))out = self.fc3(out)return out

实验结果:
在这里插入图片描述
本次准确率为97.89%

思考题

● 训练HybridSN,然后多测试几次,会发现每次分类的结果都不一样,请思考为什么?
每次训练的时候,神经网络的参数和权重都是随机的,所以每次的结果都不一样。

● 如果想要进一步提升高光谱图像的分类性能,可以如何改进?
增加注意力机制,把Attention加在第三个三维卷积后,以保留更多的光谱信息,从而进一步提升高光谱图像的分类性能。

● depth-wise conv 和 分组卷积有什么区别与联系?
Depth-wise conv(深度可分离卷积)和分组卷积是两种用于减少卷积计算量的优化技术。区别在于:

  • Depth-wise conv是在每个输入通道上独立地进行卷积操作,然后再将结果在通道维度上进行组合。这样可以减少参数数量和计算量,但每个通道之间没有交互信息。
  • 分组卷积是将输入通道分为若干组,然后在每组内进行卷积操作。这样可以在一定程度上减少计算量,并且每组内的通道可以相互交互信息。但相比普通卷积,分组卷积可能引入一定的信息损失。

● SENet 的注意力是不是可以加在空间位置上?
SENet的注意力机制主要是通过学习通道之间的关系来提升特征的重要性,但也可以通过适当的调整将注意力扩展到空间位置上,从而使网络能够关注不同空间位置上的特征,进一步提升性能。

● 在 ShuffleNet 中,通道的 shuffle 如何用代码实现?

import torchdef channel_shuffle(x, groups):batch_size, height, width, channels = x.size()channels_per_group = channels // groups# Reshape the tensor to (batch_size, height, width, groups, channels_per_group)x = x.view(batch_size, height, width, groups, channels_per_group)# Transpose the tensor along the last two dimensions (swap channels_per_group and groups)x = x.permute(0, 1, 2, 4, 3)# Reshape the tensor back to its original shapex = x.view(batch_size, height, width, channels)return x
http://www.lryc.cn/news/109707.html

相关文章:

  • 649. Dota2 参议院
  • 无人机管控平台,推动电力巡检管理水平提升
  • 阿里云平台WoSignSSL证书应用案例
  • 服务器时钟同步
  • AMEYA360:瑞萨电子MCU和MPU产品线将支持Microsoft Visual Studio Code
  • JSP--Java的服务器页面
  • 07 Ubuntu中使用poetry工具管理python环境——巨详细!!!
  • 射影平面 与 射影变换
  • (202307)wonderful-sql:决胜秋招(task6)
  • Scratch 教程:如何实现文本分割
  • 安全基础 --- 编码(02)+ form表单实现交互
  • 华为OD机考真题--五子棋--带答案
  • 把网站改为HTTPS访问方法
  • 【BASH】回顾与知识点梳理(四)
  • 阿里云安全组设置
  • QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇
  • 代码随想录算法训练营第六十天|单调栈part03|● 84.柱状图中最大的矩形
  • TCP的三次握手四次挥手
  • xml的学习笔记
  • 大数据之Hadoop(一)
  • Ubuntu安装git
  • [迁移学习]领域泛化
  • 240. 搜索二维矩阵 II
  • 【Linux:线程池】
  • 跨境多商户中日韩英多语言商城搭建(PC+小程序+H5),搭建方案
  • 使用标准库版本编写LED闪烁
  • 【CDC】跨时钟域处理方法总结一
  • 【Linux】创建分区后没有识别到分区盘?
  • W6100-EVB-PICO做DNS Client进行域名解析(四)
  • {Fixed} Android TV国内开机不会自动连接WIFI / 连接国内网络不会更新时间