基于Pytorch的网络设计语法1
第一种语法:
层层堆叠
import torch.nn as nn import torch.functional as F import torch.optim as optim from collections import OrderedDict class Net1(nn.Module):# 从nn.Module 继承 def __init__(self):# 在类的初始化函数里完成曾的构建 super(Net1,self).__init__() self.conv1=nn.Conv2d(3,32,3,1,1) self.dense1=nn.Linear(32*3*3,128)#全连接层 self.dense2 = nn.Linear(128,10)#全连接层 def forward(self,x):# 构建前向传播的流程 x=F.max_pool2d(F.relu(self.conv(x)),2)# 先卷积, 然后激活, 然后最大池化 x=x.view(x.size(0),-1)#拉伸 为1维 x=F.relu(self.dense1(x))# 全链接 ,然后激活 x=self.dense2(x)# 再次全链接 return x gsznet = Net1() print(gsznet) if __name__ == '__main__': print("XXXXXXXXXXXXXX")
×××××××××××
import torch.nn as nn import torch.functional as F import torch.optim as optim from collections import OrderedDict class Net1(nn.Module):# 从nn.Module 继承 def __init__(self):# 在类的初始化函数里完成曾的构建 super(Net1,self).__init__() self.conv1=nn.Conv2d(3,32,3,1,1)# 卷积 self.relu=nn.ReLU()#激活 self.pool=nn.MaxPool2d(2)#最大值池化 self.dense1=nn.Linear(32*3*3,128)#全连接层 self.dense2 = nn.Linear(128,10)#全连接层 def forward(self,input_x):# 构建前向传播的流程 x=self.conv1(input_x) x=self.relu(x) x=self.pool(x) #x=F.max_pool2d(F.relu(self.conv(x)),2)# 先卷积, 然后激活, 然后最大池化 x=x.view(x.size(0),-1)#拉伸 为1维 x = self.dense1(x) # 全链接 x = self.relu(x) #x=F.relu(self.dense1(x))# 全链接 ,然后激活 x=self.dense2(x)# 再次全链接 return x gsznet = Net1() print(gsznet) if __name__ == '__main__': print("XXXXXXXXXXXXXX")