pytouchのnn.Moduleで簡単な全リンク層の例を作ります。
pythonバージョン3.7は、仮想環境にインストールされたpytochを使って、このようにむやみに振り回し、他のpythonフレームに影響を与えないようにします。
1、まず一つの種類のLinearを定義し、nn.Moduleを継承する。
tenssor([-2.934,2.590,4.0233],[1.1098,-3.8182,0.848]]fn=
Linearを利用して多層ネットワークを構築します。
1、まず一つの種類のLinearを定義し、nn.Moduleを継承する。
import torch as t
from torch import nn
from torch.autograd import Variable as V
class Linear(nn.Module):
''' Variable , backward()'''
def __init__(self, in_features, out_features):
super().__init__()
self.w = nn.Parameter( t.randn( in_features, out_features ) ) # w Parameter Variable
self.b = nn.Parameter( t.randn( out_features ) ) # b
def forward( self, x ): # x Variable
x = x.mm( self.w )
return x + self.b.expand_as( x ) # b x
2、検証してみます
layer = Linear( 4,3 )
input = V ( t.randn( 2 ,4 ) )# Variable
out = layer( input )
out
xiの運行が成功した結果、次のようになりました。tenssor([-2.934,2.590,4.0233],[1.1098,-3.8182,0.848]]fn=
Linearを利用して多層ネットワークを構築します。
class Perceptron( nn.Module ):
def __init__( self,in_features, hidden_features, out_features ):
super().__init__()
self.layer1 = Linear( in_features , hidden_features )
self.layer2 = Linear( hidden_features, out_features )
def forward ( self ,x ):
x = self.layer1( x )
x = t.sigmoid( x ) # sigmoid()
return self.layer2( x )
テストします
perceptron = Perceptron ( 5,3 ,1 )
for name,param in perceptron.named_parameters():
print( name, param.size() )
出力は予想通りです
layer1.w torch.Size([5, 3])
layer1.b torch.Size([3])
layer2.w torch.Size([3, 1])
layer2.b torch.Size([1])
以上のpytouchのnn.Module構造で簡単な全リンク層の例は、小編集が皆さんに共有しているすべての内容です。参考にしていただきたいです。どうぞよろしくお願いします。