2024 7.8~7.14 周报

一、上周工作

2024 7.1~7.7 周报-CSDN博客

二、本周计划

跑实验、机器学习、数学表达式

三、完成情况

1. 跑实验

1)编码器加入DenseNet,并在解码器的第一层加入cbam

损失函数——smooth、lpips,跑的CurveVelA,学习率0.001,数据量24000。

改了损失函数后效果并没有之前好,指标上lpips体现较为明显,跟InversionNet差不多。效果上层与层的轮廓也没有之前清晰。

分析原因:损失函数设计的问题

跑完大数据量并没有很大提升,过于耗时,后面开始从小数据量进行训练,及时止损。

2)测试网络部分——5000数据量

损失函数:l1+l2

跑的CurveFaultA

学习率0.0001

基于Inv,编码器加入了DenseNet,并在解码器的每一层加入cbam:密集连接已经学习到较多的特征了,解码器每一层都加入cbam,效果并没有很大提升,还会增加计算量。

基于Inv,编码器加入了DenseNet,并在解码器的第一层加入cbam:测试网络的三个实验中,指标和效果最好,所有指标均优于Inv。

基于Inv,编码器加入了DenseNet:loss有点奇怪,可能是数据集不同,在第100 epoch左右,loss出现垂直下降。

3)测试损失函数部分——5000数据量

损失函数:mae、logcosh

跑的CurveFaultA

学习率0.0001

指标和效果目前最好。

2.机器学习

机器学习常识、激活函数、softmax、多个输出的分类(Optional)

3.数学表达式

累加累乘、积分、min、argmin

4.如何知道模型中不同层的名称呢?

一种方法是直接print打印模型,效果如下:

DenseNet(
  (convblock1): ConvBlock(
    (layers): Sequential(
      (0): Conv2d(5, 32, kernel_size=(7, 1), stride=(2, 1), padding=(3, 0))
      (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (2): LeakyReLU(negative_slope=0.2, inplace=True)
    )
  )
  (layer1): DenseBlock(
    (layers): Sequential(
      (0): _DenseLayer(
        (dense_layer): Sequential(
          (0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (1): ReLU(inplace=True)
          (2): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (4): ReLU(inplace=True)
          (5): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (dropout): Dropout(p=0, inplace=False)
      )
      (1): _DenseLayer(
        (dense_layer): Sequential(
          (0): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (1): ReLU(inplace=True)
          (2): Conv2d(96, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (4): ReLU(inplace=True)
          (5): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (dropout): Dropout(p=0, inplace=False)
      )
      (2): _DenseLayer(
        (dense_layer): Sequential(
          (0): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (1): ReLU(inplace=True)
          (2): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (4): ReLU(inplace=True)
          (5): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (dropout): Dropout(p=0, inplace=False)
      )
      (3): _DenseLayer(
        (dense_layer): Sequential(
          (0): BatchNorm2d(160, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (1): ReLU(inplace=True)
          (2): Conv2d(160, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (4): ReLU(inplace=True)
          (5): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (dropout): Dropout(p=0, inplace=False)
      )
      (4): _DenseLayer(
        (dense_layer): Sequential(
          (0): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (1): ReLU(inplace=True)
          (2): Conv2d(192, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (4): ReLU(inplace=True)
          (5): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (dropout): Dropout(p=0, inplace=False)
      )
      (5): _DenseLayer(
        (dense_layer): Sequential(
          (0): BatchNorm2d(224, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (1): ReLU(inplace=True)
          (2): Conv2d(224, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (4): ReLU(inplace=True)
          (5): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (dropout): Dropout(p=0, inplace=False)
      )
    )
  )
  (transition1): _TransitionLayer(
    (transition_layer): Sequential(
      (0): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (1): ReLU(inplace=True)
      (2): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
      (3): AvgPool2d(kernel_size=2, stride=2, padding=0)
    )
  )
)

另一种方法是使用get_graph_node_names函数,效果如下:第一个x是输入

['x', 'convblock1.layers.0', 'convblock1.layers.1', 'convblock1.layers.2',  'layer1.layers.0.dense_layer.0', 'layer1.layers.0.dense_layer.1', 'layer1.layers.0.dense_layer.2', 'layer1.layers.0.dense_layer.3', 'layer1.layers.0.dense_layer.4', 'layer1.layers.0.dense_layer.5', 'layer1.layers.0.cat', 'layer1.layers.1.dense_layer.0', 'layer1.layers.1.dense_layer.1', 'layer1.layers.1.dense_layer.2', 'layer1.layers.1.dense_layer.3', 'layer1.layers.1.dense_layer.4', 'layer1.layers.1.dense_layer.5', 'layer1.layers.1.cat', 'layer1.layers.2.dense_layer.0', 'layer1.layers.2.dense_layer.1', 'layer1.layers.2.dense_layer.2', 'layer1.layers.2.dense_layer.3', 'layer1.layers.2.dense_layer.4', 'layer1.layers.2.dense_layer.5', 'layer1.layers.2.cat', 'layer1.layers.3.dense_layer.0', 'layer1.layers.3.dense_layer.1', 'layer1.layers.3.dense_layer.2', 'layer1.layers.3.dense_layer.3', 'layer1.layers.3.dense_layer.4', 'layer1.layers.3.dense_layer.5', 'layer1.layers.3.cat', 'layer1.layers.4.dense_layer.0', 'layer1.layers.4.dense_layer.1', 'layer1.layers.4.dense_layer.2', 'layer1.layers.4.dense_layer.3', 'layer1.layers.4.dense_layer.4', 'layer1.layers.4.dense_layer.5', 'layer1.layers.4.cat', 'layer1.layers.5.dense_layer.0', 'layer1.layers.5.dense_layer.1', 'layer1.layers.5.dense_layer.2', 'layer1.layers.5.dense_layer.3', 'layer1.layers.5.dense_layer.4', 'layer1.layers.5.dense_layer.5', 'layer1.layers.5.cat', 'transition1.transition_layer.0', 'transition1.transition_layer.1', 'transition1.transition_layer.2', 'transition1.transition_layer.3']

四、存在的主要问题

1. 训练时,loss在下降,但是时间在震荡,考虑是设计的损失函数出现的问题吗?

之前正常情况下,每个epoch的时间是不会有太大变化。跑实验时由最初的4min20s,到4min52s。

2. 测试:在生成图片时突然停止,发生报错:Fail to allocate bitmap。

原因:内存不足。问题的原因应该是plt.show()虽然没显示,但还是会占用内存。

解决办法:在引用的地方加上:

import matplotlib
matplotlib.use("Agg")

重新运行,没有再终止了 

3. 训练结束无法展示png图片。UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.   plt.show()

——出现的问题是上面一个问题导致的,show.py文件中终端被修改成了Agg(非交互式)。全部修改成TkAgg(交互式)。

4. 如何设计出一个较好的损失函数?

五、下一步计划

原计划7.17交论文初稿,因为实验的原因,需要延后。

还需要测学习率、CurveVelA数据集,测完后准备在工作站跑大实验。

思考动机:网络、损失函数为什么要这样设计。

相关推荐

  1. 周报2023.12.09】

    2024-07-15 20:58:02       63 阅读
  2. 【2023-12-23周报

    2024-07-15 20:58:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 20:58:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 20:58:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 20:58:02       57 阅读
  4. Python语言-面向对象

    2024-07-15 20:58:02       68 阅读

热门阅读

  1. [C/C++入门][循环]14、计算2的幂(2的n次方)

    2024-07-15 20:58:02       20 阅读
  2. 云原生周刊:Score 成为 CNCF 沙箱项目|2024.7.15

    2024-07-15 20:58:02       29 阅读
  3. 数据分析——Python网络爬虫(四){爬虫库的使用}

    2024-07-15 20:58:02       20 阅读
  4. 数据分析_计划

    2024-07-15 20:58:02       23 阅读
  5. FPGA之术语

    2024-07-15 20:58:02       18 阅读
  6. [C++ 基础入门 - inline和 nullptr]

    2024-07-15 20:58:02       17 阅读
  7. STL常用容器及使用总结

    2024-07-15 20:58:02       21 阅读
  8. MiniCPM-V

    MiniCPM-V

    2024-07-15 20:58:02      20 阅读
  9. Mybatis

    Mybatis

    2024-07-15 20:58:02      18 阅读
  10. ORA-12518: TNS: 监听程序无法分发客户机连接

    2024-07-15 20:58:02       14 阅读
  11. 解决PyCharm配置错误:深入剖析与实战指南

    2024-07-15 20:58:02       22 阅读
  12. 关于VUE2在页面离开时,丢弃所有未完成的请求

    2024-07-15 20:58:02       19 阅读