1
resposta

Erro NotImplementedError

No artigo "Primeiros Passos com Pytorch" no link abaixo:

https://www.alura.com.br/artigos/primeiros-passos-com-pytorch

Ao executar o trecho de código:

for i in range(epocas):
  y_predito = modelo_classificacao.forward(X_treino)
  custo = funcao_objetivo(y_predito, y_treino)
  custos.append(custo)


  otimizador.zero_grad()
  custo.backward()
  otimizador.step()

Retorna o erro:

NotImplementedError                       Traceback (most recent call last)

<ipython-input-29-3704faac9f5e> in <module>()
      1 for i in range(epocas):
----> 2   y_predito = modelo_classificacao.forward(X_treino)
      3   custo = funcao_objetivo(y_predito, y_treino)
      4   custos.append(custo)
      5 

/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in _forward_unimplemented(self, *input)
    199         registered hooks while the latter silently ignores them.
    200     """
--> 201     raise NotImplementedError
    202 
    203 

NotImplementedError: 

Este erro acontece mesmo rodando o código versionado no github do artigo.

1 resposta

Oi, Abel! Tudo bem com você?

Esse erro pode surgir devido a um problema na construção da classe Modelo. Você pode confirmar para mim se o seu código da classe Modelo tem a seguinte estrutura:

class Modelo(nn.Module):
    def __init__ (self,entrada=7,camada_escondida1=14,camada_escondida2=49,saida=3):
        super().__init__()
        self.fc1 = nn.Linear(entrada,camada_escondida1)
        self.fc2 = nn.Linear(camada_escondida1, camada_escondida2)
        self.out = nn.Linear(camada_escondida2, saida)
    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.out(x)
        return x

Pela forma separada de apresentar as funções da classe Modelo, pode ocorrer uma confusão na implementação do código, deixando alguma das funções em um local incorreto. Se algumas das funções do seu código não manterem a estrutura colocada acima, você pode, por gentileza, substituir no seu código e verificar se assim funciona?

Fico no aguardo do seu retorno!