【背景】
某3D回归任务,原问题是非常复杂的物理学加材料学的综合问题。数据集类似于点云,但是由于各个三维空间上的点的数据相互影响,所以单个数据的体积越大最后的预测效果就越好。
【网络结构】
3D-Unet+residual block.
【数据集描述】
数据集大小分别有25, 100, 200, 375四种,单个数据的结构为(1,3,96,96,96)。数据集制作不难,因此数量可随时增加。
在GPU为3070Ti,网络深度为6的情况下,batch size为2就提醒内存溢出。因此只能用CPU来训练模型
【预训练模型】
问题描述:网络上没有找到相对应的可用的预训练模型
(这或许只是因为自己没有找到)
初衷:用自己的模型来做预训练模型,考虑到即便是小的数据集,网络浅层参数也能充分学习到。因此先用小数据集将损失值下降到一定程度后,再用大数据集进一步训练网络模型。
【结果】
- 若预训练模型的数据集大于之后的新数据集,假设预训练的损失值截止在5左右(训练损失和验证损失相差不大)。那么用新数据集(内容无重合)继续训练时也会用5开始逐渐下降。
- 若预训练模型的数据集小于或近似于新数据集,那么无论之前已下降到了多少,用新数据集继续训练时损失值会从很大的值开始。
【结论于待验证】
- 是否预训练模型的数据集一定要大于新数据集才会有意义
- 是否预训练模型的结构一定要于自己的模型一致,使用预训练模型才有意义?
- 如果不同的预训练网络结构也可以用的话,要怎么使用呢?