在pytoch中,通过继承nn.Module模块,我开门可以更加便捷的搭建属于自己的神经网络。在学习过程中遇到两种不同的神经网络搭建的方式。于是在这里做一个笔记记录一下。
第一种方法代码如下:
class Net(nn.Module):
def __init__(self, n_input, n_hidden, n_output):
super(Net,self).__init__()
self.hidden1 = nn.Linear(n_input,n_hidden)
self.hidden2 = nn.Linear(n_hidden,n_hidden)
self.predict = nn.Linear(n_hidden,n_output)
def forward(self,input):
out = self.hidden1(input)
out = F.relu(out)
out = self.hidden2(out)
out = F.sigmoid(out)
out =self.predict(out)
return out
第二种方法代码如下:该方法中通过nn.调用激活函数,这里的激活函数我们也是把他看作是一个网络层的,与第一种方法不同,这里并不只是单纯的代表一个激活函数。
class Net(nn.Module):
def __init__(self, n_input, n_hidden, n_output):
super(Net, self).__init__()
self.model = nn.Sequential(
nn.Linear(n_input,n_hidden),
nn.ReLU(),
nn.Linear(n_hidden,n_hidden),
nn.Sigmoid(),
nn.Linear(n_hidden,n_output),
)
# self._initialize_weights()
def forward(self, x):
x = self.model(x)
return x