Assistindo ao curso de Treinamento de redes neurais com pytorch, fiquei curioso em saber: Quais adaptações seriam necessárias na implementação da MLP (Multilayer Perceptron) via nn.Module para que ela se torne uma ELM (Extreme Learning Machine)?
Assistindo ao curso de Treinamento de redes neurais com pytorch, fiquei curioso em saber: Quais adaptações seriam necessárias na implementação da MLP (Multilayer Perceptron) via nn.Module para que ela se torne uma ELM (Extreme Learning Machine)?
Oii! Tudo bem? :)
Sua pergunta é muito boa.
Para transformar uma rede MLP em uma ELM (Extreme Learning Machine), você precisa fazer algumas adaptações na implementação do modelo. A principal diferença entre as duas é que na ELM, as camadas ocultas são inicializadas aleatoriamente e fixadas, enquanto na MLP, as camadas ocultas são treinadas.
Vou deixar abaixo um exemplo de como você pode transformar uma MLP em uma ELM:
import torch
import torch.nn as nn
class ELM(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(ELM, self).__init__()
self.features = nn.Sequential(
nn.Linear(input_size, hidden_size),
nn.ReLU(),
nn.Linear(hidden_size, output_size),
nn.Softmax(dim=1)
)
def forward(self, x):
x = x.view(x.size(0), -1) # linearize the input
output = self.features(x)
return output
No código acima, a rede ELM possui uma camada oculta com ativação ReLU e uma camada de saída com ativação Softmax. A entrada é linearizada antes de passar pela rede, assim como na MLP. E também é relevante observar: as camadas ocultas são inicializadas aleatoriamente e não são treinadas durante o processo de treinamento.
Se outra dúvida surgir, estamos aqui.
Abraços e bons estudos!