一、进度概述
1、inversionnet_train 试运行——成功
二、详情
1、inversionnet_train 试运行
在经历了昨天的事故后,今天最终成功运行了 inversionnet_train,运行结果如下:
经观察,最开始 loss 值大概为 0.5 左右
随着训练量的增多,loss 值逐渐减小
在 700 组左右,减少到 e-2 的数量级
在 5600 组(30个epoch)左右,减少到 e-3 的数量级
最终,loss 趋于 e-4 的数量级
论文中用30epoch跑到e-3左右
指标如下:
补充几点:
(1)关于这个,之前有提及过,但是在这次配置环境时忘了,记录一下。
报错原因:以前的 torch.nn.functional 叫 F,之前用的库有这个东西,现在没有了,所以在报错文件中加上以下代码即可
import torch.nn.functional as F
(2)关于 TrainSize
代码里默认用48000的 数据进行训练,但不是每个数据集都有这么多数据,需要根据数据集的具体情况做更改。
在 FlatVal_A 中,共有60个文件,每个文件中有500组数据,故一共有30000组。按照 8:2 分为数据集与测试集。
(3)关于 Training Loss
loss 应该达到 e-4 的数量级,具体含义需要等到学习深度学习。这里的图是用 inversionnet_train_light 跑出来的,只用了 500 组数据(即一个 .npy 文件),对比 inversionnet_train,可以明显发现 loss 上的差距(这里只达到了 e-1 数量级),这表明训练集本身对模型还是有较大的影响的,在应用过程中应该注意训练集的量。
(4)关于批量更改文件
在使用一个程序前,一定仔细阅读 readme 相关文件,里面会说明相关路径配置以及注意事项,这个问题问出来就显得很不专业。
选用数据集时,要更改对应选择。
在批量命名文件时,写了一个脚本,免去了大量体力劳动,这点还是可以的。详细可以参考以下文章:
批量修改文件名方法合集-CSDN博客
最后吐槽一下:
数据集是真的大,网也是真的烂,下了好久,早知如此,当初就应该配个更大宽带的网。还有就是,跑这么个模型真不容易,负荷挺高的。
后记
关于 inversionnet_train 和 DL_FWI 的一些理解:(可能存在差错)
inversionnet_train 理论上是用前48个文件进行训练,相当于期末考试前的测试卷,答了一遍有成绩能对答案,用后12个文件来衡量网络模型的性能,相当于期末考试的考试卷,只有成绩没有答案。
InversionNet 的极限只能使 mse 到 e-4 次方,这个网络只能做到这么好,制造更好的网络就是要研究的内容了。
对于结果的评估是分别比较,比如分别对比网络在flat上的成绩和在cruve上的,一般不会直接把不同数据集的相对比。打个比方:如果你只让他练习数学题,他的语文成绩不会太好,但你要是让他练习语文,那他的语文其实能整的不错的。这就是训练集本身的影响
搞DL-FWI就是看谁设计的网络更真实,比较谁更真实就是用诸如mse这些函数的值来进行。
研究点在于:
(1)新的模型,然后用不同数据集来比较网络的性能。
(2)当然这个新也不一定是完全全新的,比如看到有一个网络本来是用来处理医学的,拿来改改发现它搞FWI也不错,这也算是新的创新点。
(3)如果真的能加入别人都没有的设计,并且表现还比别人的好,这就是顶刊水平了。