Python y pytorch, funciones de pérdida para segmentación sin clases OOP.
Comencé a estudiar el aprendizaje automático. Necesito escribir 3 funciones de pérdida para la NeuroNet de segmentación de PyTorch. BCEloss, DiceLoss y FocalLoss, sin utilizar nn.Modules
.
Escribí 2 funciones, pero dudo si están correctas o no. Y no sé cómo escribir una función para FocalLoss en absoluto.
def dice_loss(y_pred, y_real):
eps = 1e-8
y_pred = torch.sigmoid(y_pred)
num = 2.*torch.sum((y_real*y_pred), (1,2,3)) + eps
den = torch.sum( y_pred, (1,2,3)) + torch.sum(y_real, (1,2,3)) + eps
res = 1 - torch.mean(num/den)
return res
def bce_loss(y_pred, y_real):
y_pred = F.sigmoid(y_pred)
y_pred = y_pred.clamp(min=0)
loss = (y_pred - y_pred * y_real + torch.log(1+torch.exp(-torch.abs(y_pred)))).mean()
return loss
davy.ai
Funciones de Pérdida Propuestas para Redes Neuronales de Segmentación utilizando PyTorch
Introducción
Como experto en tecnología de la información, especializado en Python, PyTorch, Segmentación de Imágenes y Funciones de Pérdida, puedo proporcionar sugerencias para funciones de pérdida para Redes Neuronales de Segmentación en PyTorch. En este contexto, me gustaría proponer las siguientes 3 funciones de pérdida:
DiceLoss: Esta función de pérdida se calcula utilizando el coeficiente de Sorenson-Dice, que proporciona la similitud de los píxeles superpuestos entre la segmentación predicha y la segmentación real. Para esta función de pérdida, un valor más alto indica un mejor ajuste, donde el valor de la función de pérdida puede variar de 0 a 1.
Focal Loss: Esta función de pérdida se utiliza para abordar el problema del desequilibrio de clases. Le da más énfasis a los ejemplos clasificados incorrectamente durante el entrenamiento. En esta función de pérdida, el enfoque está en los píxeles clasificados incorrectamente asignando más peso a los ejemplos más difíciles.
Funciones de Pérdida
A continuación se presentan las funciones sugeridas para el problema planteado:
Espero que esto ayude a lograr la salida deseada.