for step, (b_x, b_y, b_l) in enumerate(train_loader): # gives batch data, normalize x when iterate train_loader
# img, label, lesion
b_x = b_x.cuda()
b_l = b_l.numpy()
# generating ld
b_l = b_l - 1
ld = genLD(b_l, sigma, 'klloss', 65) # genLD函数生成标签分布ld,这里使用了sigma和其他参数。ld可能是一个连续的概率分布,用于后续的KL散度损失计算。
# generate label distribution
def genLD(label, sigma, loss, class_num):
label_set = np.array(range(class_num))
if loss == 'klloss':
ld_num = len(label_set)
dif_age = np.tile(label_set.reshape(ld_num, 1), (1, len(label))) - np.tile(label, (ld_num, 1))
ld = 1.0 / np.tile(np.sqrt(2.0 * np.pi) * sigma, (ld_num, 1)) * np.exp(-1.0 * np.power(dif_age, 2) / np.tile(2.0 * np.power(sigma, 2), (ld_num, 1)))
ld = ld / np.sum(ld, 0)
return ld.transpose()