软件工程项目总结

项目选题

在这里插入图片描述

模型训练

HybridSN (Hybrid Spectral-Spatial Network) 是一种用于高光谱图像分类的深度学习方法。它将光谱和空间信息结合在一起,以便更好地分类图像。

使用 HybridSN 进行高光谱图像分类的基本流程如下:

  1. 预处理高光谱图像数据,包括数据标准化和集成。
  2. 建立 HybridSN 模型。这通常包括在模型中添加卷积层和全连接层,并使用激活函数进行非线性转换。
  3. 训练 HybridSN 模型。这通常使用带有标签的高光谱图像数据进行,并使用反向传播算法和优化器来最小化损失函数。
  4. 在训练后使用 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

完整代码地址:https://github.com/boom-10/deep_study_se/blob/main/HybridSN.ipynb

前端部分

前端使用Vue+ElementPlus+AOS开发
Vue3 ElementPlus AOS是前端开发框架,使用它可以帮助开发人员更快地构建 web 应用程序。使用Vue3 ElementPlus AOS开发的好处包括:

  • 快速开发:ElementPlus提供了许多内置组件,可以快速构建常用的用户界面元素,比如导航栏、按钮、表单等。

  • 可维护性强:Vue3 使用了组件化的开发方式,可以将应用分成若干个独立的组件,方便维护和升级。

  • 可扩展性强:Vue3 提供了丰富的扩展能力,可以根据需要引入第三方库或自定义组件来扩展应用的功能。

  • 轻量级:AOS是一个轻量级的框架,可以轻松地与其他框架或库集成,不会对应用的性能造成太大的影响。

详细内容参考之前博文:软件工程——Beta冲刺(1/3)

前后端对接

这一部分出现的问题比较多,首先保存下来的模型最好是使用字典的方式保存

torch.save(net.state_dict(), 'HybridSN.pth')

其次在使用模型的时候需要先在代码中创建模型,否则在后续调用中会出现问题
在这里插入图片描述
项目完整代码:https://gitee.com/jiang-ye-CJD/hybird-sn

感悟

软件工程开发是一个非常挑战的过程,因为它需要把握项目的各个方面,包括需求分析、设计、实现、测试、部署和维护。这是一个涉及许多不同技术的领域。在软件工程开发过程中,团队协作和沟通是非常重要的,因为项目通常由许多不同角色的人员共同完成。同时,还需要不断学习新技术和方法来满足需求。
也学习到了模型训练中的可能出现问题比如,模型的过拟合问题。如果模型在训练数据上表现很好但在测试数据上表现不佳,则很可能是过拟合造成的。我们可以通过采用正则化技术或使用更多的训练数据来应对过拟合问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值