Olá Inectar! Como vai?
Esse erro, AttributeError: 'float' object has no attribute 'size', indica que a variável score dentro da função_compute
da métrica F1 está retornando um valor do tipo float, e não um array ou tensor como esperado. Isso significa que algo no seu processo de cálculo da métrica F1 está errado, provavelmente na forma como as previsões (predictions) e referências (references) estão sendo passadas para a função compute
.
O erro ocorre na etapa de avaliação, após o treinamento. A função funcao_treinamento
contém a lógica de avaliação, e é aqui que precisamos focar. Observe a parte do código que calcula as métricas:
metrica_avaliacao_acuracia = acuracia.compute(predictions=lista_previsoes, references=lista_labels)
metricas_avaliacao_agregadas = metricas_agregadas.compute(predictions=lista_previsoes, references=lista_labels, average = 'macro')
Aqui, lista_previsoes
e lista_labels
são as listas que contêm as previsões do modelo e os rótulos reais, respectivamente. O problema está provavelmente em como essas listas são construídas ou no formato dos dados dentro delas.
Recomendo que siga os passos abaixo para encontrar o problema:
Verifique os tipos de dados: Antes de chamar acuracia.compute
e metricas_agregadas.compute
, imprima os tipos de lista_previsoes
e lista_labels
usando print(type(lista_previsoes)) e print(type(lista_labels)). Eles devem ser tensores do PyTorch ( torch.Tensor). Se não forem, investigue como lista_previsoes
e lista_labels
estão sendo construídos no loop de avaliação. Garanta que accelerator.gather
está retornando o tipo de dado esperado.
Inspecione os dados: Imprima alguns elementos de lista_previsoes
e lista_labels
para verificar se eles estão no formato correto. Por exemplo: print(lista_previsoes[:5]) e print(lista_labels[:5]). Procure por valores inesperados ou formatos inconsistentes.
Simplifique a avaliação: Para isolar o problema, tente avaliar apenas uma pequena parte dos dados. Modifique o loop de avaliação para processar apenas os primeiros 10 ou 100 exemplos. Isso pode ajudar a identificar o ponto exato onde o erro ocorre.
Revise a definição das métricas: Certifique-se de que as métricas acuracia
e metricas_agregadas
estão corretamente definidas e configuradas. Verifique se você está importando-as corretamente e se elas são compatíveis com o formato dos seus dados.
Verifique a versão do evaluate: Certifique-se de que você está usando uma versão compatível do evaluate
. Conflitos de versão podem causar problemas inesperados.
O erro está acontecendo após o treinamento ter progredido até 50%, indicando que o problema está na fase de avaliação, não no treinamento. Imprima informações em cada etapa para identificar a causa raíz e se precisar de mais ajuda, compartilhe o trecho da função funcao_treinamento
, especialmente a avaliação, para analisarmos com mais assertividade.
Espero ter ajudado. Conte com o apoio do fórum em sua jornada :)
Um abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!