网站建设工具最简洁的,人工智能建筑设计软件,免费建站网站自助建站的网站建站,漳平网络建站公司目录
1、卷积运算
2、经典卷积神经网络
2.1 Lenet
网络构架
代码实现
2.2 Alexnet
网络构架
代码实现
2.3 VGG
VGG16网络构架
代码实现
2.4 ResNet
ResNet50网络构架
代码实现 1、卷积运算 在二维卷积运算中#xff0c;卷积窗口从输入张量的左上角开始#xff…目录
1、卷积运算
2、经典卷积神经网络
2.1 Lenet
网络构架
代码实现
2.2 Alexnet
网络构架
代码实现
2.3 VGG
VGG16网络构架
代码实现
2.4 ResNet
ResNet50网络构架
代码实现 1、卷积运算 在二维卷积运算中卷积窗口从输入张量的左上角开始从左到右、从上到下滑动。 当卷积窗口滑动到新一个位置时包含在该窗口中的部分张量与卷积核张量进行按元素相乘得到的张量再求和得到一个单一的标量值由此我们得出了这一位置的输出张量值。 在如上例子中输出张量的四个元素由二维互相关运算得到这个输出高度为2、宽度为2如下所示 import torch
from torch import nndef Conv2d(X, K): 计算二维卷积运算h, w K.shapeY torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i, j] (X[i:i h, j:j w] * K).sum()return Y
2、经典卷积神经网络
2.1 Lenet
网络构架 代码实现
import torch
import torch.nn as nnclass LeNet(nn.Module):def __init__(self, num_classes10):super(LeNet, self).__init__()self.conv1 nn.Conv2d(in_channels1, out_channels6, kernel_size5)self.pool1 nn.MaxPool2d(kernel_size2)self.conv2 nn.Conv2d(in_channels6, out_channels16, kernel_size5)self.pool2 nn.MaxPool2d(kernel_size2)self.fc1 nn.Linear(in_features16*5*5, out_features120)self.fc2 nn.Linear(in_features120, out_features84)self.fc3 nn.Linear(in_features84, out_featuresnum_classes)def forward(self, x):x self.pool1(torch.relu(self.conv1(x)))x self.pool2(torch.relu(self.conv2(x)))x x.view(-1, 16*5*5)x torch.relu(self.fc1(x))x torch.relu(self.fc2(x))x self.fc3(x)return x# 创建LeNet模型
model LeNet(num_classes10)
print(model)LeNet实现适用于MNIST数据集其中输入图像大小为28x28输出类别数为100-9的手写数字。
2.2 Alexnet
网络构架 代码实现
import torch
import torch.nn as nnclass AlexNet(nn.Module):def __init__(self, num_classes1000):super(AlexNet, self).__init__()self.features nn.Sequential(nn.Conv2d(3, 64, kernel_size11, stride4, padding2),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(64, 192, kernel_size5, padding2),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(192, 384, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(384, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(256, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size3, stride2),)self.avgpool nn.AdaptiveAvgPool2d((6, 6))self.classifier nn.Sequential(nn.Dropout(),nn.Linear(256 * 6 * 6, 4096),nn.ReLU(inplaceTrue),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplaceTrue),nn.Linear(4096, num_classes),)def forward(self, x):x self.features(x)x self.avgpool(x)x torch.flatten(x, 1)x self.classifier(x)return x# 创建AlexNet模型
model AlexNet(num_classes1000)
print(model)代码中的AlexNet实现适用于ImageNet数据集其中输入图像大小为224x224输出类别数为1000。
2.3 VGG
VGG16网络构架 代码实现
import torch
import torch.nn as nnclass VGG16(nn.Module):def __init__(self, num_classes1000):super(VGG16, self).__init__()self.features nn.Sequential(nn.Conv2d(3, 64, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(64, 64, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size2, stride2),nn.Conv2d(64, 128, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(128, 128, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size2, stride2),nn.Conv2d(128, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(256, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(256, 256, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size2, stride2),nn.Conv2d(256, 512, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(512, 512, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(512, 512, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size2, stride2),nn.Conv2d(512, 512, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(512, 512, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.Conv2d(512, 512, kernel_size3, padding1),nn.ReLU(inplaceTrue),nn.MaxPool2d(kernel_size2, stride2),)self.classifier nn.Sequential(nn.Linear(512 * 7 * 7, 4096),nn.ReLU(inplaceTrue),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplaceTrue),nn.Dropout(),nn.Linear(4096, num_classes),)def forward(self, x):x self.features(x)x x.view(x.size(0), -1)x self.classifier(x)return x# 创建VGG16模型
model VGG16(num_classes1000)
print(model)代码中的VGG16实现适用于ImageNet数据集其中输入图像大小为224x224输出类别数为1000。
2.4 ResNet
ResNet50网络构架
代码实现 import torch
import torch.nn as nn# 定义残差块
class ResidualBlock(nn.Module):def __init__(self, in_channels, out_channels, stride1):super(ResidualBlock, self).__init__()self.conv1 nn.Conv2d(in_channels, out_channels, kernel_size3, stridestride, padding1, biasFalse)self.bn1 nn.BatchNorm2d(out_channels)self.relu nn.ReLU(inplaceTrue)self.conv2 nn.Conv2d(out_channels, out_channels, kernel_size3, stride1, padding1, biasFalse)self.bn2 nn.BatchNorm2d(out_channels)if stride ! 1 or in_channels ! out_channels:self.downsample nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size1, stridestride, biasFalse),nn.BatchNorm2d(out_channels))else:self.downsample Nonedef forward(self, x):identity xx self.conv1(x)x self.bn1(x)x self.relu(x)x self.conv2(x)x self.bn2(x)if self.downsample is not None:identity self.downsample(identity)x identityx self.relu(x)return x# 定义ResNet-50
class ResNet50(nn.Module):def __init__(self, num_classes1000):super(ResNet50, self).__init__()self.in_channels 64self.conv1 nn.Conv2d(3, 64, kernel_size7, stride2, padding3, biasFalse)self.bn1 nn.BatchNorm2d(64)self.relu nn.ReLU(inplaceTrue)self.maxpool nn.MaxPool2d(kernel_size3, stride2, padding1)self.layer1 self._make_layer(64, 3, stride1)self.layer2 self._make_layer(128, 4, stride2)self.layer3 self._make_layer(256, 6, stride2)self.layer4 self._make_layer(512, 3, stride2)self.avgpool nn.AdaptiveAvgPool2d((1, 1))self.fc nn.Linear(512 * 4, num_classes)def _make_layer(self, out_channels, num_blocks, stride):layers []layers.append(ResidualBlock(self.in_channels, out_channels, stride))self.in_channels out_channelsfor _ in range(1, num_blocks):layers.append(ResidualBlock(out_channels, out_channels))return nn.Sequential(*layers)def forward(self, x):x self.conv1(x)x self.bn1(x)x self.relu(x)x self.maxpool(x)x self.layer1(x)x self.layer2(x)x self.layer3(x)x self.layer4(x)x self.avgpool(x)x x.view(x.size(0), -1)x self.fc(x)return x# 创建ResNet-50模型
model ResNet50(num_classes1000)
print(model)代码中的ResNet50实现适用于ImageNet数据集其中输入图像大小为224x224输出类别数为1000。
【图像分类】 理论篇1 图像分类的测评指标_TechMasterPlus的博客-CSDN博客
【图像分类】理论篇3交叉熵损失函数的理解与代码实现_TechMasterPlus的博客-CSDN博客
【图像分类】理论篇4图像增强opencv实现_TechMasterPlus的博客-CSDN博客