Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Itens dentro da definição da classe da estrutura da rede neural

class WineClassifier(nn.Module):

  def __init__(self, input_size, hidden_size, out_size):
    super(WineClassifier, self).__init__()

    self.hidden  = nn.Linear(input_size, hidden_size)
    self.relu    = nn.ReLU()
    self.out     = nn.Linear(hidden_size, out_size)
    self.softmax = nn.Softmax()

def forward(self, X):

    feature = self.relu(self.hidden(X))
    output  = self.softmax(self.out(feature))

Não entendi como essas linhas self.hidden, self.relu, self.out e self.softmax funcionam, sei que self.hidden é pra criar os neuronios, softmax pra deixar os outcomes somando 1 e talz, mas n entendi como eles funcionam debaixo dos panos

1 resposta
solução!

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!