Я пытаюсь написать простую нейронную сеть, используя pytorch. Я новичок в этой библиотеке. Я столкнулся с двумя способами реализации одной и той же идеи: слой с некоторой фиксированной функцией активации (например, tanh).
Первый способ реализовать это:
l1 = nn.Tanh(n_in, n_out)
Второй способ:
l2 = nn.Linear(n_in, n_out) # linear layer, that do nothing with its input except summation
но при использовании прямого распространения:
import torch.nn.functional as F
x = F.tanh(l2(x)) # x - value that propagates from layer to layer
В чем различия между этими механизмами? Какой из них лучше для каких целей?