Olá, Jayme! Tudo bem com você?
Para entendermos o que é exatamente o que é self.hidden
, self.relu
, self.out
e self.softmax
temos que recorrer a um conceito de orientação a objetos. Uma classe é representada por atributos e métodos. Os atributos de uma classe definem as características que esta classe possui e são definidos no construtor __init__
, já os métodos são o comportamento que essa classe terá, criada com funções, por exemplo a função def forward(self, X):
é um método da classe class WineClassifier(nn.Module):
.
O self.hidden
está recebendo o método nn.Linear(input_size, hidden_size)
, esse método aplica uma transformação linear nos dados de entrada e entregam para a camada escondida aplicando uma função de ativação nesses dados, como explicado na aula "Ativações no PyTorch" do curso "Redes Neurais: Deep Learning com PyTorch". A função de ativação aplicada nos dados dessa primeira camada será a ReLu, como está no método def forward(self, X):
:
feature = self.relu(self.hidden(X))
Da camada escondida para a camada de saída self.out
é semelhante. A única diferença é a função de ativação aplicada aos dados que será a Softmax, como demonstra o trecho de código:
output = self.softmax(self.out(feature
Então resumindo todo o processo criada na classe class WineClassifier(nn.Module):
Os dados de entrada passam por uma transformação linear aplicada a função de ativação ReLU até os neurônios da camada escondida, o processo é repetido com os dados que estão na camada escondida até a camada de saída, novamente realizando uma transformação linear aplicada a função de ativação Softmax.
Deixo como leitura complementar as documentações dos métodos utilizados:
Caso ainda não tenha realizado o curso "Redes Neurais: Deep Learning com PyTorch" é recomendável fazê-lo antes.
Qualquer dúvida estou à disposição.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!