深度学习作业——第四周

一.代码练习

网络部分代码:

class_num = 16

class HybridSN(nn.Module):

  def __init__(self,num_classes=16):
    super(HybridSN,self).__init__()
    self.conv1 = nn.Conv3d(1,8,(7,3,3))
    self.bn1=nn.BatchNorm3d(8)

    self.conv2 = nn.Conv3d(8,16,(5,3,3))
    self.bn2=nn.BatchNorm3d(16)

    self.conv3 = nn.Conv3d(16,32,(3,3,3))
    self.bn3=nn.BatchNorm3d(32)

    self.conv4 = nn.Conv2d(576,64,(3,3))
    self.bn4=nn.BatchNorm2d(64)

    self.drop = nn.Dropout(p=0.4)

    self.fc1 = nn.Linear(18496,256)
    self.fc2 = nn.Linear(256,128)
    self.fc3 = nn.Linear(128,num_classes)

    self.relu = nn.ReLU()

    # 论文里有加softmax,但本次实验下loss下降特别慢,因此没有使用
    self.softmax = nn.Softmax(dim=1)

  def forward(self,x):
    out = self.relu(self.bn1(self.conv1(x)))
    out = self.relu(self.bn2(self.conv2(out)))
    out = self.relu(self.bn3(self.conv3(out)))

    out = out.view(-1,out.shape[1]*out.shape[2],out.shape[3],out.shape[4])
    out = self.relu(self.bn4(self.conv4(out)))

    out = out.view(out.size(0),-1)
    out = self.fc1(out)
    out = self.drop(out)
    out = self.relu(out)
    out = self.fc2(out)
    out = self.drop(out)
    out = self.relu(out)
    out = self.fc3(out)
    # out = self.softmax(out)
    return out


# 随机输入,测试网络结构是否通
x = torch.randn(1,1,30,25,25)
net = HybridSN()
y = net(x)
print(y.shape)

下载相关资源时出现无法访问链接的问题,如下图:

搜寻相关资料后发现应该是防火墙的问题,因此我选择手动下载,然后将文件手动上传导入colab当中

数据处理:

训练:

测试:

可以看到准确率达到了98.14%,效果已经很不错了。

利用高老师提供的代码将分类结果写入文件结果如下:

结果可视化:

二.问题总结

1.训练HybridSN,然后多测试几次,会发现每次分类的结果都不一样,请思考为什么?

之后我又进行了一次测试,发现两次结果确实不同,因为神经网络中采用了dropout机制,导致每次都会随机失活部分神经元,以避免过拟合现象。

2.如果想要进一步提升高光谱图像的分类性能,可以如何改进?

要想进一步提升高光谱图像的分类性能,可以考虑加入SE注意力机制模块。

3.depth-wise conv 和 分组卷积有什么区别与联系?

分组卷积的输出特征图的每个通道,只和输入特征图的一部分通道有关,而这部分通道,就是一个分组(Group);深度可分离卷积就是逐个深度分开卷积,也就是逐个通道分开卷积,以分组卷积为基础,深度可分离卷积是分组为Cin(输入的通道数)的分组卷积。

4.SENet 的注意力是不是可以加在空间位置上?

我认为SENet不可以加在空间上,但CBAM可以。

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

ShuffleNetV2中提出了Shuffle Channel的方法,通过对通道分组,在重新组合通道,到达混合信息的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值