Я пытаюсь создать нейронную сеть прямой связи с N слоями.
Идея такова: если мне нужно 2 входа, 3 скрытых и 2 выхода, я просто передам [2,3,2] классу нейронной сети, и модель нейронной сети будет создана, поэтому, если я захочу [100,1000,1000,2]
где в данном случае 100 является входами, два скрытых слоя содержат 1000 нейронов каждый и 2 выхода, поэтому я хочу полностью подключенную нейронную сеть, где я просто хотел передать список, который содержит количество нейронов в каждом слое.
Для этого я написал следующий код
class FeedforwardNeuralNetModel(nn.Module):
def __init__(self, layers):
super(FeedforwardNeuralNetModel, self).__init__()
self.fc=[]
self.sigmoid=[]
self.activationValue = []
self.layers = layers
for i in range(len(layers)-1):
self.fc.append(nn.Linear(layers[i],layers[i+1]))
self.sigmoid.append(nn.Sigmoid())
def forward(self, x):
out=x
for i in range(len(self.fc)):
out=self.fc[i](out)
out = self.sigmoid[i](out)
return out
когда я пытался использовать его, я обнаружил, что это пустая модель
model=FeedforwardNeuralNetModel([3,5,10,2])
print(model)
>>FeedforwardNeuralNetModel()
и когда я использовал следующий код
class FeedforwardNeuralNetModel(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim):
super(FeedforwardNeuralNetModel, self).__init__()
# Linear function
self.fc1 = nn.Linear(input_dim, hidden_dim)
# Non-linearity
self.tanh = nn.Tanh()
# Linear function (readout)
self.fc2 = nn.Linear(hidden_dim, output_dim)
def forward(self, x):
# Linear function
out = self.fc1(x)
# Non-linearity
out = self.tanh(out)
# Linear function (readout)
out = self.fc2(out)
return out
и когда я попытался напечатать эту модель, я нашел следующий результат
print(model)
>>FeedforwardNeuralNetModel(
(fc1): Linear(in_features=3, out_features=5, bias=True)
(sigmoid): Sigmoid()
(fc2): Linear(in_features=5, out_features=10, bias=True)
)
в моем коде я просто создаю списки, вот какая разница
Я просто хотел понять, почему в перечне компонентов модели факела ничего не получается?