当前位置: 首页 > news >正文

互联网公司黑话排名优化公司好不好

互联网公司黑话,排名优化公司好不好,做英语阅读的网站或是app,建设局施工许可证网站卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码… 卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码 参考与更多阅读材料 前言 全连接神经网络也称多层感知机 M L P MLP MLP是深度学习最基本的神经网络之一。它包含输入层多个隐藏层和输出层每一层都与前一层的每个神经元相连接。尽管全连接神经网络具有一定的表达能力其并不是解决所有问题的最佳工具。 e . g . e.g. e.g. 假设我们有一张 1000 ∗ 1000 1000 * 1000 1000∗1000 像素的彩色照片假设全连接层输出个数为 256 256 256那么该层权重参数的形状是 3000000 ∗ 256 3 000 000 * 256 3000000∗256即会占用 3 G B 3GB 3GB 的内存或显存。会导致复杂的模型与过高的存储开销。 卷积层试图解决这个问题。卷积层通过滑动窗口将同一卷积核与不同位置的输入重复计算从而避免参数尺寸过大。而卷积神经网络就是包含卷积层的网络。 LeNet 作为早期用来识别手写数字图像的卷积神经网络名称来源于 Yann LeCun。其展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果。 LeNet 模型 LeNet 模型分为卷积层块和全连接层块两个部分 卷积层块里的基本单位是卷积层后接最大池化层卷积层用来识别图像里的空间模式如线条和物体局部之后的最大池化层则是用来降低卷积层对位置的敏感性。卷积层由这两个基本单位重复堆叠构成。 具体来说在每个卷积层块中每个卷积层都使用 5 ∗ 5 5*5 5∗5 的窗口并在输出上使用 s i g m o i d sigmoid sigmoid 激活函数第一个卷积层输出通道数为 6 6 6第二个卷积层输出通道数增加到 16 16 16。卷积层块的两个最大池化层的窗口形状均为 2 ∗ 2 2*2 2∗2且步幅为 2 2 2。 代码实现 MINST 代码分块解析 1 构建 LeNet 网络结构 class LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 nn.Conv2d(1, 6, 5) # 1个输入通道6个输出通道卷积核大小为5x5self.pool nn.MaxPool2d(2, 2) # 最大池化层2x2窗口self.conv2 nn.Conv2d(6, 16, 5) # 6个输入通道16个输出通道卷积核大小为5x5self.fc1 nn.Linear(16*4*4, 120) # 全连接层1self.fc2 nn.Linear(120, 84) # 全连接层2self.fc3 nn.Linear(84, 10) # 输出层10个类别def forward(self, x):x self.pool(torch.relu(self.conv1(x)))x self.pool(torch.relu(self.conv2(x)))x x.view(-1, 16*4*4)x torch.relu(self.fc1(x))x torch.relu(self.fc2(x))x self.fc3(x)x torch.softmax(x, dim1)return x- 代码解释 super(LeNet, self).__init__() 是 python 中用于调用父类或超类的构造函数的一种方式。在上述定义中用于在子类 LeNet 的构造函数中调用父类 nn.model 的构造函数。 具体来说 super(LeNet, self) 使用了 super() 函数创建了一个与子类 LeNet 相关联的 super 对象。这个 super 对象可以用来访问父类的方法和属性。.__init__() 调用 super 对象的构造函数即调用父类 nn.model 的构造函数。确保子类 super 继承父类 nn.model 的所有属性和方法。 总之super(LeNet, self).__init__() 目的是在子类 LeNet 的构造函数中初始化父类 nn.model。这是面向对象编程中用于构建继承层次结构中的子类。 - 代码解释 forward(self, x) 是神经网络中定义前向传播的方法。这个方法定义了一个张量 x按照 LeNet 网络的结构将其传递给不同层最终计算出网络的输出。 具体来说 x self.pool(torch.relu(self.conv1(x))) 首先输入 x 经过第一个卷积层 self.conv1(x)然后使用 ReLU 激活函数进行激活接着使用 self.pool 进行最大池化操作x self.pool(torch.relu(self.conv2(x))) 然后将前一步的输出再次经过第二个卷积层 self.conv2然后使用 ReLU 激活函数进行激活接着使用 self.pool 进行最大池化操作x x.view(-1, 16*5*5) 在进入到全连接层前需要将池化层的输出展平为一维向量通过 view 函数实现方法 e . g . e.g. e.g. 如果 x 的形状是 [ 64 , 16 , 5 , 5 ] [64, 16, 5, 5] [64,16,5,5]其中 batch_size 是 64num_channels 是16height 和 width 都是 5 那么 x.view(-1, 16 * 5 * 5) 将会将 x 的形状调整为 [ 64 , 16 ∗ 5 ∗ 5 ] [64, 16 * 5 * 5] [64,16∗5∗5]也就是 [ 64 , 400 ] [64, 400] [64,400]作为全连接层的输入。x torch.relu(self.fc1(x)) 将展平后的数据传递给第一个全连接层 self.fc1然后使用 ReLU 函数进行激活x torch.relu(self.fc2(x)) 将第一个全连接层的输出传递给第二个全连接层 self.fc2然后使用 ReLU 函数进行激活x self.fc3(x) x torch.softmax(x, dim1) 最后将第二个全连接层的输出传递给输出层 self.fc3使用 softmax 获得概率分布Softmax 将网络的原始输出值转化为 0 到 1 之间的概率值以表示每个类别的预测概率。 2 加载数据集 # 数据标准化处理 transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) # 加载数据集 trainset torchvision.datasets.MNIST(root./data, trainTrue, downloadTrue, transformtransform) # 创建数据加载器 Loader trainloader torch.utils.data.DataLoader(trainset, batch_size64, shuffleTrue)- 代码解释 transforms.ToTensor() 将图像从 PIL 图像对象转换为 PyTorch 张量深度学习模型使用张量作为输入 - 代码解释 transforms.Normalize((0.5,), (0.5,)) 对图像进行归一化操作。 参数 (0.5,) 与 (0.5,) 表示均值和标准差将图像像素值从 0 到 255 缩放到 -1 到 1 之间以加速模型的训练过程。对于 MINST 数据集来说因为只有一个通道灰度图像因此只有一个均值和一个标准差。 3 初始化模型和优化器 # 实例化网络对象 net LeNet() # 损失函数使用交叉熵损失函数 criterion nn.CrossEntropyLoss() # 优化器使用随机梯度下降 optimizer optim.SGD(net.parameters(), lr0.001, momentum0.9)- 代码解释 CrossEntropyLoss() 交叉熵损失函数通常用于多类别分类任务例如图像分类。 - 代码解释 optim.SGD 即使用随机梯度下降作为优化器SGDStochastic Gradient Descend net.parameters() 代表优化器会将神经网络中所有可学习参数不断更新权重 lr 即 learning rate 学习率控制优化器每次权重更新的步长 momentum0.9 动量关于动量的概念将在后期单独出一期博文解析读者在这里可以得知的是动量是一种加速优化过程的技巧有助于跳出局部最小值。 4 训练模型 for epoch in range(10): # 遍历数据集 10 次running_loss 0.0 # 损失值for i, data in enumerate(trainloader, 0):# 每个批次中数据data包含了输入inputs和相应的标签labelsinputs, labels data# zero_grad 方法将优化器中的梯度清零计算新的梯度optimizer.zero_grad()# 将输入数据传递给神经网络 net 进行前向传播计算模型的输出 outputsoutputs net(inputs)# 计算模型的输出与真实标签之间的损失loss criterion(outputs, labels)# 根据损失值计算梯度使用反向传播算法loss.backward()# 使用优化器 optimizer 更新网络的参数减小损失值optimizer.step()# 将损失值累积到 running_loss 中running_loss loss.item()if i % 200 199: # 每 200 批次打印一次损失# {i 1:5d} 是一种字符串格式化的语法用于将整数 i 1 格式化为宽度为5的右对齐整数。print(f[{epoch 1}, {i 1:5d}] loss: {running_loss / 200:.3f})running_loss 0.05 训练完成 print(Finished Training)完整代码 import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms# 定义LeNet模型 class LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 nn.Conv2d(1, 6, 5) # 1个输入通道6个输出通道卷积核大小为5x5self.pool nn.MaxPool2d(2, 2) # 最大池化层2x2窗口self.conv2 nn.Conv2d(6, 16, 5) # 6个输入通道16个输出通道卷积核大小为5x5self.fc1 nn.Linear(16*4*4, 120) # 全连接层1self.fc2 nn.Linear(120, 84) # 全连接层2self.fc3 nn.Linear(84, 10) # 输出层10个类别def forward(self, x):x self.pool(torch.relu(self.conv1(x)))x self.pool(torch.relu(self.conv2(x)))x x.view(-1, 16*4*4)x torch.relu(self.fc1(x))x torch.relu(self.fc2(x))x self.fc3(x)x torch.softmax(x, dim1)return x# 加载数据集 transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) trainset torchvision.datasets.MNIST(root./data, trainTrue, downloadTrue, transformtransform) trainloader torch.utils.data.DataLoader(trainset, batch_size64, shuffleTrue)# 初始化模型和优化器 net LeNet() criterion nn.CrossEntropyLoss() optimizer optim.SGD(net.parameters(), lr0.001, momentum0.9)# 训练模型 for epoch in range(10): # 遍历数据集10次running_loss 0.0for i, data in enumerate(trainloader, 0):inputs, labels dataoptimizer.zero_grad()outputs net(inputs)loss criterion(outputs, labels)loss.backward()optimizer.step()running_loss loss.item()if i % 200 199: # 每200批次打印一次损失print(f[{epoch 1}, {i 1:5d}] loss: {running_loss / 200:.3f})running_loss 0.0print(Finished Training)Fashion-MINST 代码分块解析 1 构建 LeNet 网络结构 net nn.Sequential() net.add(nn.Conv2D(channels6, kernel_size5, activationsigmoid),nn.MaxPool2D(pool_size2, strides2),nn.Conv2D(channels16, kernel_size5, activationsigmoid),nn.MaxPool2D(pool_size2, strides2),nn.Dense(120, activationsigmoid),nn.Dense(84, activationsigmoid),nn.Dense(10) )使用 nn.Sequential() 创建 LeNet 模型包括卷积层、池化层和全连接层其中激活函数为 sigmoid。 2 初始化模型参数 ctx d2l.try_gpu() # force_reinit在初始化之前强制重新初始化模型参数 # init.Xavier有助于避免梯度消失和梯度爆炸提高模型的收敛速度 net.initialize(force_reinitTrue, ctxctx, initinit.Xavier())3 加载数据集 # 加载Fashion-MNIST数据集 batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_sizebatch_size, resize96)4 定义损失函数和优化器 # 定义损失函数和优化器 loss gloss.SoftmaxCrossEntropyLoss() trainer gluon.Trainer(net.collect_params(), sgd, {learning_rate: 0.9})使用交叉熵损失函数来计算损失使用梯度随机下降优化器 sgd 进行模型参数的优化。 5 训练模型 # 训练模型 num_epochs 10 d2l.train_ch5(net, train_iter, test_iter, batch_size, trainer, ctx, num_epochs)完整代码 import d2lzh as d2l from mxnet import autograd, gluon, init, nd from mxnet.gluon import loss as gloss, nn# 定义LeNet模型 net nn.Sequential() net.add(nn.Conv2D(channels6, kernel_size5, activationsigmoid),nn.MaxPool2D(pool_size2, strides2),nn.Conv2D(channels16, kernel_size5, activationsigmoid),nn.MaxPool2D(pool_size2, strides2),nn.Dense(120, activationsigmoid),nn.Dense(84, activationsigmoid),nn.Dense(10) )# 初始化模型参数 ctx d2l.try_gpu() net.initialize(force_reinitTrue, ctxctx, initinit.Xavier())# 加载Fashion-MNIST数据集 batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_sizebatch_size, resize96)# 定义损失函数和优化器 loss gloss.SoftmaxCrossEntropyLoss() trainer gluon.Trainer(net.collect_params(), sgd, {learning_rate: 0.9})# 训练模型 num_epochs 10 d2l.train_ch5(net, train_iter, test_iter, batch_size, trainer, ctx, num_epochs)参考与更多阅读材料 https://www.analyticsvidhya.com/blog/2021/03/the-architecture-of-lenet-5/ https://zhuanlan.zhihu.com/p/459616884
http://www.zqtcl.cn/news/191585/

相关文章:

  • 致设计网站官网建设购物网站需要多少费用
  • 网站后台程序河南政务网站建设排名
  • 重庆建站网站建设平台wordpress插件使用数量
  • 规范网站建设情况的报告政务服务网站建设性建议
  • 麻涌做网站个人证书查询网全国联网
  • 做毕业设计网站的步骤那家做网站比较好
  • 网站开发学习网wordpress 数据库 插件
  • 企业公司官网网站做网站怎样做
  • 网站建设 今网科技电商网站建设布局
  • 最优惠的网站优化管理培训机构
  • p2p网站建设广州深圳网站设计公司哪家好
  • 福州网站设计哪里好泰安网站建设入门推荐
  • 北京网站软件制作外卖网站开发
  • 个人网站建设与实现建立个公司网站
  • 南昌招商网站建设临沂兰山建设局网站
  • 母婴网站建设怎么样可以做网站
  • 二手车 网站开发wordpress 定时 检查
  • 淮南官网济南seo优化外包
  • 沈阳网站建设莫道网络网站建设常用六大布局
  • 网站建设外文版要求网站关键字优化销售
  • 马来西亚做公路投标网站设计网页多少钱
  • 织梦网站多少钱广告多的网站
  • 济南网站建站模板深圳南园网站建设
  • 国家免费技能培训官网白杨seo博客
  • 福州seo网站建设微服务网站
  • 网站宽度 像素长沙电商运营培训
  • 备案上个人网站和企业网站的区别app开发多少钱一个
  • 有限公司网站建设 中企动力佛山培训机构招生方案
  • 扫黄打非网站建设专业的高端网站制作公司
  • 做自媒体发视频用哪些网站江西网站建设哪家好