深度学习5---经典神经网络结构
一、LeNet
1、LeNet网络结构
卷积核大小:55 步长是0 池化核大小:22 步长是2
输入层:33232 卷积运算--------6355 C1:62828 池化运算--------22,s=2 S2:61414 卷积运算--------16655 C3:161010 池化运算--------22,s=2 S4:1655 全连接 1)展平 400 2)400120矩阵 C5:120 全连接 12084 矩阵 F6:84 全连接 84*10矩阵 output:10
根据10个数字大小,来确定预测结果 eg:第0个数字是最大的,预测结果是数字0的概率最大
2、LeNet自实现
import torch.nn as nn import torch import pdb #调试 import numpy as np #自定义的网络结构,都必须继承nn.Module class Lenet(nn.Module): def __init__(self,num_classes=10): super(Lenet, self).__init__() #初始化的信息 #定义各个卷积运算、池化运算、激活、全连接 self.conv1=nn.Conv2d(in_channels=3, out_channels=6, kernel_size=(5,5), stride=1, padding=0 ) self.pool=nn.MaxPool2d(kernel_size=(2,2),stride=2) self.conv2=nn.Conv2d(in_channels=6, out_channels=16, kernel_size=(5,5), stride=1, padding=0 ) self.fc1=nn.Linear(in_features=400, out_features=120 ) self.fc2 = nn.Linear(in_features=120, out_features=84 ) self.fc3 = nn.Linear(in_features=84, out_features=num_classes ) self.relu=nn.ReLU(inplace=True) pass def forward(self,X): #前向传播的执行顺序 #X是输入数据N*C*H*W(样本数*通道数*H*W) out=self.conv1(X) out=self.relu(out) out = self.pool(out) out=self.conv2(out) out = self.relu(out) out = self.pool(out) out=out.reshape(out.shape[0],-1) #展平操作 out=self.fc1(out) out = self.fc2(out) out = self.fc3(out) return out pass #实例化 网络结构 model=Lenet(num_classes=2) input_data=torch.rand((1,3,32,32)) output=model(input_data) y_pred=np.argmax(output.detach().numpy(),axis=1) print("输出结果",output,"预测结果是类",y_pred)
二、其他网络结构
1、AlexNet
2、VGG
3、GoogLenet
上一篇:
通过多线程提高代码的执行效率例子