Bom dia @Ivan_Cunha.
Um objeto learner
é criado pela função cnn_learner() que associa uma função de erro predefinida. Pode acessar essa função de erro por seu atributo learn.loss_func
(aqui, FlattenedLoss of CrossEntropyLoss()).
Para obter mais informações sobre essa função de erro, roda doc(learn.loss_func)
como na imagem seguinte:
(além disso, pode ler o doc fastai sobre as funções de erro)
Pode mudar a função de erro da forma seguinte:
learn.loss_func = new_loss_func
Pode definir new_loss_func
seja simplesmente como uma função usando tensores (previsões e targets) como argumentos, seja uma instancia de uma classe de função de erro. Em 2 cases, pode usar funções/classes do fastai, do pytorch até pode criá-las.
Com dados despropocionais, pode usar por exemplo F.CrossEntropyLoss(weight=tensor_of_weight_for_each_class))
Tópicos sobre esse assunto:
- How to use class weights in loss function for imbalanced dataset
- How do you change validation loss_function?
- Loss function + data imbalance
- How to make a custom loss function (PyTorch)
- [Solved] What is the correct way to implement custom loss function?
- Custom loss functions
Se precisar mais informações, publica seu notebook e seu dataset para entendermos melhor como ajudá-lo.