2024 3.23~3.29周报

上周工作

SVInvNet论文研读

本周计划

加入DenseNet,修改网络架构,跑代码

总结

DenseNet

  • 密集块:DenseNet将网络分成多个密集块(Dense Block)。在每个密集块内,每一层都连接到前面所有的层。这种跳跃连接有助于解决梯度消失问题,因为每一层都可以直接访问之前层的梯度信息,使得训练更加稳定。
  • 特征重用性:由于每一层都与前面所有层连接,网络可以自动地学习到更加丰富和复杂的特征表示。有助于提高网络的性能,同时减少了需要训练的参数数量。
  • 过渡层:在密集块之间,通常会使用过渡层来控制特征图的大小,从而减少计算量。

优点:

  • 网络可以更好地利用浅层特征信息,从而提高网络的性能。
  • 网络具有更强的特征重用能力,可以减少参数数量,降低过拟合风险。
  • 网络训练更加稳定,可以缓解梯度消失和梯度爆炸等问题。

实验1——引入密集连接在编码器部分

前期太混乱,没有把densenet代码理解透彻,密集快和过渡块他们的通道数和尺寸具体每一层是如何变化的

后面自己先计算了尺寸以及通道变化,因为密集块部分根据Bottleneck层数来改变通道数,过渡层(BN+ReLU+1×1Conv+2×2AvgPooling)是通道数减半并且尺寸减半。

  • 先采用(kernel_size=(7, 1), stride=(2, 1), padding=(3, 0)的卷积)将(,5,1000,70)变化到(,32,500,70),
  • 再使用三个(kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)卷积)变化到(,64,63,70),使尺寸近似方形
  • 接着使用三个(密集块+过渡层),密集块层数是(6,12,8),变化到(,256,7,8)
  • 再使用卷积变化到(,512,1,1)
    self.convblock5 = ConvBlock(256, 512, kernel_size=(7, ceil(50 * sample_spatial/ 7)), padding=0)
  • 解码部分跟InversionNet一致,未做改变

数据集:curvevel-a

Epochs = 120
Trainsize = 5000 

ValSize = 500
Testsize = 500

TestBatchsize = 50
Batchsize = 64

但目前感觉网络架构有问题后续需要修改,比InversionNet一个epoch慢了1min。——因为DenseNet缺点有:

  • 要进行多次Concatenate操作,数据需要被复制多次,显存容易增加得很快,需要一定的显存优化技术。
  • 网络结构较为复杂,需要更多的计算资源和时间来训练。
  • 在一些应用场景下,由于特征传递的过多,会导致内存占用较大。

使用以下预训练模型进行测试:

PreModelname = 'InversionNet_DenseNet_TrainSize5000_Epoch120_BatchSize64_LR0.001_epoch200.pkl'

测试结果如下:第三行

 实验结果如下:

 

实验2——使用aba跑InversionNet

数据集:curvevel-a

Epochs = 120
Trainsize = 5000 

ValSize = 500
Testsize = 500

TestBatchsize = 50
Batchsize = 64

Trained model saved: 100 percent completed
Training complete in 41m  43s 

 测试结果如下:

 

后续跑24000再看看结果 

遇到的问题及解决

1.使用torchsummary时报错AttributeError: ‘list‘ object has no attribute ‘size‘:

查看torchsummary的源码,发现处理input的方法都是粗暴使用如下语句:

summary[m_key]["input_shape"] = list(input[0].size())

 修改后:

            # summary[m_key]["input_shape"] = list(input[0].size())if isinstance(input[0], torch.Tensor):summary[m_key]["input_shape"] = list(input[0].size())elif isinstance(input[0], list):summary[m_key]["input_shape"] = list(item.size() for item in input[0])

2.RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

原因:待转换类型的PyTorch Tensor变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以在变量转换之前添加detach()调用。

解决办法:

y.numpy() ---> y.detach().numpy()

3.RuntimeError: Given groups=1, weight of size [64, 3, 7, 7], expected input[10, 5, 1000, 70] to have 3 channels, but got 5 channels instead

原因:通道数不匹配 

4.TypeError: 'module' object is not callable

原因:Python导入模块的方法有两种——import module 和 from module import,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不要。

5.UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.解决办法 - 欣杰科技 - 博客园 (cnblogs.com)

6.TypeError: empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType), but expected one of: 

原因:在python3中两个整型相除得到的是浮点型,例如:4/2=2.0,而在构建卷积时的参数要求时整型。

解决:传参时加上int转换:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/577012.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

T-Mobile紫卡激活(Ultra)

https://my.ultramobile.com/paygo/activation 人工智能学习网站: https://chat.xutongbao.top

canvas画图,拖动画好的椭圆边框

提示&#xff1a;canvas画图&#xff0c;拖动画好的椭圆边框 文章目录 前言一、拖动画好的椭圆边框总结 前言 一、拖动画好的椭圆边框 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&q…

【慧天HTWATER】可以兼容主流GIS(shape、geodatabase、raster等)数据格式吗

​慧天[HTWATER]软件简介 针对城市排水系统基础设施数据管理的需求&#xff0c;以及水文、水力及水质模拟对数据的需求&#xff0c;实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。可以对城市低影响开…

新能源充电桩站场AI视频智能分析烟火检测方案及技术特点分析

新能源汽车充电起火的原因多种多样&#xff0c;涉及技术、设备、操作等多个方面。从技术层面来看&#xff0c;新能源汽车的电池管理系统可能存在缺陷&#xff0c;导致电池在充电过程中出现过热、短路等问题&#xff0c;从而引发火灾。在设备方面&#xff0c;充电桩的设计和生产…

网络七层模型之网络层:理解网络通信的架构(三)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

基于龙芯2k1000 mips架构ddr调试心得(二)

1、内存控制器概述 龙芯处理器内部集成的内存控制器的设计遵守 DDR2/3 SDRAM 的行业标准&#xff08;JESD79-2 和 JESD79-3&#xff09;。在龙芯处理器中&#xff0c;所实现的所有内存读/写操作都遵守 JESD79-2B 及 JESD79-3 的规定。龙芯处理器支持最大 4 个 CS&#xff08;由…

Linux命令--rm命令总结

1.rm命令简介 rm命令是 Linux 和其他类 Unix 系统中用于删除文件或目录的命令。对于链接文件&#xff0c;只是删除了链接&#xff0c;原有文件均保持不变。 使用 rm 命令时必须小心&#xff0c;因为它会永久性地删除文件或目录&#xff0c;并且不会将其移动到回收站或提供撤销…

Elasticsearch 向量搜索

目标记录 ["你好&#xff0c;我的爱人","你好&#xff0c;我的爱妻","你好&#xff0c;我的病人","世界真美丽"] 搜索词 爱人 预期返回 ["你好&#xff0c;我的爱人","你好&#xff0c;我的爱妻"] 示例代码…

RFID智慧书柜:全民阅读新趋势,24小时借书不打烊。

近年来&#xff0c;促进全民阅读已经是一种趋势。“书香校园”“书香社区”“文化企业建设”等口号不断被提出&#xff0c;国家也在不断鼓励并提倡营造全民阅读的氛围。在这一趋势下&#xff0c;RFID智慧书柜的出现无疑为众多社区、校园、企业的首选对象。 RFID智慧书柜将纸质书…

pygame用chatgpt绘制3d沿x轴旋转的

import pygame from pygame.locals import * import sys import mathpygame.init()width, height 800, 600 screen pygame.display.set_mode((width, height))vertices [(0, 100, 0), (100, 200, 0), (300, 100, 0)]angle 0 rotation_speed 2 # 可根据需要调整旋转速度 c…

HarmonyOS 应用开发之ExtensionAbility组件

ExtensionAbility组件是基于特定场景&#xff08;例如服务卡片、输入法等&#xff09;提供的应用组件&#xff0c;以便满足更多的使用场景。 每一个具体场景对应一个 ExtensionAbilityType&#xff0c;开发者只能使用&#xff08;包括实现和访问&#xff09;系统已定义的类型。…

如何缩短职场人与人之间的差距?答案或许就隐藏在一纸社科院与杜兰大学能源管理硕士学位之中

你是否曾惊叹于同事某某的飞速进步&#xff0c;短短两年内连升三级&#xff0c;如同职场上的彗星划破夜空&#xff1f;每当看到他们晋升的喜讯在群里传播&#xff0c;你的内心是否也曾涌起一股难以名状的涟漪&#xff1f;与你一同踏入公司的伙伴&#xff0c;如今已是经理级别&a…