模型训练(超参数batch_size/epoch/batch、损失函数DiceLoss/CrossEntropy/FocalLoss、优化器SGD/Adam/Adamw、衰减策略step/cos)

模型中的超参数(batch_size、epoch、batch)

深度学习中Epoch、Batch以及Batch size的设定

epoch:

1个epoch指用训练集中的全部样本训练一次,此时相当于batch_size 等于训练集的样本数。
如果epoch=50,总样本数=10000,batch_size=20,则需要迭代500次。

iteration:

1次iteration即迭代1次,也就是用batch_size个样本训练一次。每一次迭代得到的结果都会被作为下一次迭代的初始值.

batch_size:

每批数据量的大小.用SGD的优化算法进行训练,也就是1 次iteration一起训练batch_size个样本,计算它们的平均损失函数值,来更新一次参数。

举例:

一个excel中包括200个样本(数据行)的数据,选择batch_size=5, epoch=1000,
则batch=40个,每个batch有5个样本,一次epoch将进行40个batch或40次模型参数更新,1000个epoch,模型将传递整个数据集1000次,在整个训练过程中,总共有40000次batch.

引用例子:

mnist 数据集有 60000 张训练数据,10000 张测试数据。现在选择 Batch_Size = 100 对模型进行训练。 每个
epoch 要训练的图片数量:60000(训练集上的所有图像) 训练集具有的 batch 个数: 60000/100=600 每个
epoch 需要完成的 batch 个数: 600 每个 epoch 具有的 Iteration 个数:
600(完成一个batch,相当于参数迭代一次) 每个 epoch 中发生模型权重更新的次数:600 训练 10
个epoch后,模型权重更新的次数: 600*10=6000
不同epoch的训练,其实用的是同一个训练集的数据。第1个epoch和第10个epoch虽然用的都是训练集的60000图片,但是对模型的权重更新值却是完全不同的。因为不同epoch的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
总共完成30000次迭代,相当于完成了 30000/600=50 个epoch

batch_size的选择原则:batch_size越大,batch越少,需要迭代的次数越少,训练时间越短。
batch_size越小,batch数量越多,耗时久,计算机占用内存大。

损失函数

Dice Loss
常用损失函数(二):Dice Loss

交叉熵CrossEntropy、Focal Loss
从交叉熵(CE)到Focal Loss(FL)完整解析

优化器

SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam -> AdamW

学习率衰减策略

学习率衰减策略StepLR、ExponentialLR、MultiStepLR和CosineAnnealingLR

猜你喜欢

转载自blog.csdn.net/smile66688/article/details/129816322