ニューラルネットワークの層構造、主に二つの方法、(torch.nn.Moudleを継承)クラスを用いたものであり、一方は迅速torch.nn.Sequentialを構築するために使用されます。
1)まず、データをロードします。
輸入トーチ
Fとしてインポートtorch.nn.functional
#回帰 X = torch.unsqueeze(torch.linspace(-1,1,100)、薄暗い= 1 ) Y = x.pow(2)+ 0.2 * torch.rand(x.size())
2)テンプレートの二つの方法:
2.1:クラス(クラス):これは実質的に固定されているフォーマットは、initはフィードバックの前に実施される層ニューロンの数、前方に継承された、各ニューラル層にnn.Moudle機能をニューロンの数を定義する(プラス励起機能)
#法1の クラスネット(torch.nn.Module): デフ __init__ (自己): スーパー(ネット、自己)。__init__ () 通過 DEF フォワード(自己、X): 合格
例えば:
#法1の クラスネット(torch.nn.Module): DEF __init__ (自己): スーパー(ネット、セルフ)__init__ () self.hidden = torch.nn.Linear(1,10 ) self.prediction = torch.nn。線形(10,1 ) DEF フォワード(セルフ、X): X = F.relu(self.hidden(X)) #を使用relu励起の関数として X = self.prediction(X) #出力層への最後の隠れ層ではありません励起関数を使用して、あなたはまた、(通常は追加なし)を追加することができ 、戻りXの 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)
)
「「」
両方とも実質的に等しく、その場所にほとんど差が迅速に立設された励起関数(RELUは....)ニューラル層として見られます。