|
星级打分
平均分:NAN 参与人数:0 我的评分:未评
本帖最后由 奇奇怪怪的ID 于 2024-9-10 06:42 编辑
首先有这么一出是因为我观察到模型相对于素材的loss受诸多因素(训练的持续下降、训练的loss梯度波动、翻转、放大、缩小等等等)的影响存在些许变数,
第一种计算方式我已经观察过了,后续采取的是根据计算结果的平均值,挑选出来的素材是loss越低的素材往往都是偏灰或模糊的,
loss越高的素材则五花八门,色彩极端、大角度、模糊等等都有
第二种计算方式则是我刚刚想出来的,还没观察验证
PS:初学python,望大佬指点...
第一种计算方式:
for filename, losses in existing_data.items():
while len(losses) > 1: # 确保列表中有多个损失值
max_loss = max(losses)
min_loss = min(losses)
if max_loss - min_loss >= 0.1:
losses.remove(max_loss)
else:
break # 如果最大和最小损失值之差小于0.1,退出循环
这里我用了loss导出的日志中同一个素材的所有loss的最大值减去最小值,如果它们的值相差大于等于0.1就该值,用于排除波动因素的影响
第二种计算方式:
for filename, losses in existing_data.items():2 # 如果损失值列表为空,则跳过3 if not losses:4 continue5 6 # 如果损失值列表中只有一个损失值,则保留该值7 if len(losses) == 1:8 continue9 10 # 循环移除最大值和最小值相差超过0.2的损失值11 while True:12 max_loss = max(losses)13 min_loss = min(losses)14 if max_loss - min_loss > 0.2:15 losses.remove(max_loss)16 else:17 break # 如果最大和最小损失值之差不超过0.2,退出循环18 19 # 计算损失值列表的平均值20 average_loss = sum(losses) / len(losses)21 22 # 移除与平均值相差超过0.05的损失值23 losses[:] = [loss for loss in losses if abs(loss - average_loss) < 0.05]
这里我用了loss导出的日志中同一个素材的最大值和最小值之差如果超过0.2则删除最大值直至不存在相差(排除抽风或者炸丹干扰),然后再计算所有loss的平均值,如果单个loss的值相差大于等于0.05,就删除该loss值,用于排除波动因素的影响
|
|