Просмотр исходного кода

changed logic how label smoothing is initialized

Dimitri Korsch 4 лет назад
Родитель
Сommit
2dd05e5b63
1 измененных файлов с 7 добавлено и 8 удалено
  1. 7 8
      cvfinetune/finetuner/mixins/model.py

+ 7 - 8
cvfinetune/finetuner/mixins/model.py

@@ -90,14 +90,13 @@ class _ModelMixin(abc.ABC):
 		if getattr(opts, "l1_loss", False):
 			return F.hinge
 
-		elif getattr(opts, "label_smoothing", 0) >= 0:
-			assert getattr(opts, "label_smoothing", 0) < 1, \
-				"Label smoothing factor must be less than 1!"
-			return partial(smoothed_cross_entropy,
-				N=self.n_classes,
-				eps=getattr(opts, "label_smoothing", 0))
-		else:
-			return F.softmax_cross_entropy
+		label_smoothing = getattr(opts, "label_smoothing", 0)
+		if label_smoothing > 0:
+			assert label_smoothing < 1, "Label smoothing factor must be less than 1!"
+
+			return partial(smoothed_cross_entropy, N=self.n_classes, eps=label_smoothing)
+
+		return F.softmax_cross_entropy
 
 	def init_optimizer(self, opts):
 		"""Creates an optimizer for the classifier """