代码学习

发布时间 2023-04-07 21:13:09作者: 浪矢\n
看到一部分这样的代码
# build models
    model = build_model(args)
    ema_model = build_model(args, ema=True)

  通过百度发现,似乎是一种叫mean teacher的半监督处理方法:(参考自

第一个model被称为student model

第二个ema_model被称为teacher model(EMA即Exponential Moving Average,指数移动平均)
  在半监督中,每个输入Batch包含一半已标注的图像与一般未标注的图像。首先,整个Batch会被送入Student Model中,得到一个预测结果。对于Batch中的已标注部分,利用结果与真值计算loss,进行梯度反向传播,从而更新Student Model的参数。而对于Batch中的未标注部分,其输入Student Model也会得到一个结果(记为A),未标注的图像在加入随机噪声后,也会被送入Teacher Model中,得到一个预测结果(记为B):

  我们希望A==B,这样的话说明模型的参数比较鲁棒泛化。