структуры слоя нейронной сети, в основном, два способа, один с использованием класса (унаследованный torch.nn.Moudle), один используется для быстрого создания torch.nn.Sequential.
1) Во-первых, мы загружаем данные:
импорт факел
импорта torch.nn.functional , как F
# Регрессионный Х = torch.unsqueeze (torch.linspace (-1,1,100), DIM =. 1 ) Y = x.pow (2) + 0,2 * torch.rand (x.size ())
2) два метода шаблона:
2.1: класс (класс): Это, по существу, фиксированный формат, инициализации определяют количество нейронов в каждом слое нейронного, количество слоев и нейронов, вперед унаследовала nn.Moudle функцию, которая будет реализован до обратной связи (плюс возбуждение функция)
# Method1 класса Net (torch.nn.Module): Защита __init__ (Я): супер (Net, самость). __init__ () передать Защиту вперед (я, х): пропуск
Например:
# Method1 класса Net (torch.nn.Module): DEF __init__ (Self): . Супер (Net, Self) __init__ () self.hidden = torch.nn.Linear (1,10 ) self.prediction = torch.nn. Линейный (10,1 ) DEF вперед (Я, Х): Х = F.relu (self.hidden (Х)) # использование Relu как функция возбуждения X = self.prediction (Х) # последнего скрытого слоя к выходному слою не с помощью функции возбуждения, вы можете также добавить ( как правило , без добавления) возвращение X NET = Net () для печати (NET) «» ' # выходной: Net ( (Скрытый): Линейный (in_features = 1, out_features = 10, смещение = True) #hidden является self.hidden, нет особого смысла, вы не можете назвать другого (прогноз): Линейный (in_features = 10, out_features = 1, смещение Правда =) ) '' '
2,2: быстро построить
Шаблон:
NET2 = torch.nn.Sequential ()
Например: NET2 = torch.nn.Sequential (
net2 = torch.nn.Sequential(
torch.nn.Linear ( 1, 10 ), torch.nn.ReLU (), torch.nn.Linear ( 10, 1 ) )
печати (NET2)
''»
Sequential (
(0): Linear (1 -> 10)
(1): ReLU ()
(2): Linear (10 -> 1)
)
«»»
И по существу равно, небольшая разница в том, что на месте быстро возвела функцию возбуждения (РЕЛ ....) рассматривается как нейронный слой.