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

有没有一种app类似网站建设装饰工程施工组织设计

有没有一种app类似网站建设,装饰工程施工组织设计,在线企业建站模板,杭州营销文章目录 1. LeNet历史背景1.1 早期神经网络的挑战1.2 LeNet的诞生背景 2. LeNet详细结构2.1 总览2.2 卷积层与其特点2.3 子采样层#xff08;池化层#xff09;2.4 全连接层2.5 输出层及激活函数 3. LeNet实战复现3.1 模型搭建model.py3.2 训练模型train.py3.3 测试模型test… 文章目录 1. LeNet历史背景1.1 早期神经网络的挑战1.2 LeNet的诞生背景 2. LeNet详细结构2.1 总览2.2 卷积层与其特点2.3 子采样层池化层2.4 全连接层2.5 输出层及激活函数 3. LeNet实战复现3.1 模型搭建model.py3.2 训练模型train.py3.3 测试模型test.py 4. LeNet的变种与实际应用4.1 LeNet-5及其优化4.2 从LeNet到现代卷积神经网络 1. LeNet历史背景 1.1 早期神经网络的挑战 早期神经网络面临了许多挑战。首先它们经常遇到训练难题例如梯度消失和梯度爆炸特别是在使用传统激活函数如sigmoid或tanh时。另外当时缺乏大规模、公开的数据集导致模型容易过拟合并且泛化性能差。再者受限于当时的计算资源模型的大小和训练速度受到了很大的限制。最后由于深度学习领域还处于萌芽阶段缺少许多现代技术来优化和提升模型的表现。 1.2 LeNet的诞生背景 LeNet的诞生背景是为了满足20世纪90年代对手写数字识别的实际需求特别是在邮政和银行系统中。Yann LeCun及其团队意识到对于图像这种有结构的数据传统的全连接网络并不是最佳选择。因此他们引入了卷积的概念设计出了更适合图像处理任务的网络结构即LeNet。 2. LeNet详细结构 2.1 总览 2.2 卷积层与其特点 卷积层是卷积神经网络CNN的核心。这一层的主要目的是通过卷积操作检测图像中的局部特征。 特点 局部连接性 卷积层的每个神经元不再与前一层的所有神经元相连接而只与其局部区域相连接。这使得网络能够专注于图像的小部分并检测其中的特征。权值共享 在卷积层中一组权值在整个输入图像上共享。这不仅减少了模型的参数而且使得模型具有平移不变性。多个滤波器 通常会使用多个卷积核滤波器以便在不同的位置检测不同的特征。 2.3 子采样层池化层 池化层是卷积神经网络中的另一个关键组件用于缩减数据的空间尺寸从而减少计算量和参数数量。 主要类型 最大池化Max pooling 选择覆盖区域中的最大值作为输出。平均池化Average pooling 计算覆盖区域的平均值作为输出。 2.4 全连接层 在卷积神经网络的最后经过若干卷积和池化操作后全连接层用于将提取的特征进行“拼接”并输出到最终的分类器。 特点 完全连接 全连接层中的每个神经元都与前一层的所有神经元相连接。参数量大 由于全连接性此层通常包含网络中的大部分参数。连接多个卷积或池化层的特征 它的主要目的是整合先前层中提取的所有特征。 2.5 输出层及激活函数 输出层 输出层是神经网络的最后一层用于输出预测结果。输出的数量和类型取决于特定任务例如对于10类分类任务输出层可能有10个神经元。 激活函数 激活函数为神经网络提供了非线性使其能够学习并进行复杂的预测。 Sigmoid 取值范围为(0, 1)。Tanh 取值范围为(-1, 1)。ReLU (Rectified Linear Unit) 最常用的激活函数将所有负值置为0。Softmax 常用于多类分类的输出层它返回每个类的概率。 3. LeNet实战复现 3.1 模型搭建model.py import torch from torch import nn# 自定义网络模型 class LeNet(nn.Module):# 1. 初始化网络(定义初始化函数)def __init__(self):super(LeNet, self).__init__()# 定义网络层self.Sigmoid nn.Sigmoid()self.c1 nn.Conv2d(in_channels1, out_channels6, kernel_size5, padding2)self.s2 nn.AvgPool2d(kernel_size2, stride2)self.c3 nn.Conv2d(in_channels6, out_channels16, kernel_size5)self.s4 nn.AvgPool2d(kernel_size2, stride2)self.c5 nn.Conv2d(in_channels16, out_channels120, kernel_size5)# 展开self.flatten nn.Flatten()self.f6 nn.Linear(120, 84)self.output nn.Linear(84, 10)# 2. 前向传播网络def forward(self, x):x self.Sigmoid(self.c1(x))x self.s2(x)x self.Sigmoid(self.c3(x))x self.s4(x)x self.c5(x)x self.flatten(x)x self.f6(x)x self.output(x)return xif __name__ __main__:x torch.rand([1, 1, 28, 28])model LeNet()y model(x)3.2 训练模型train.py import torch from torch import nn from model import LeNet from torch.optim import lr_scheduler from torchvision import datasets, transforms import os# 数据转换为tensor格式 data_transformer transforms.Compose([transforms.ToTensor() ])# 加载训练的数据集 train_dataset datasets.MNIST(root./data, trainTrue, transformdata_transformer, downloadTrue) train_dataloader torch.utils.data.DataLoader(datasettrain_dataset, batch_size16, shuffleTrue)# 加载测试的数据集 test_dataset datasets.MNIST(root./data, trainFalse, transformdata_transformer, downloadTrue) test_dataloader torch.utils.data.DataLoader(datasettest_dataset, batch_size16, shuffleTrue)# 使用GPU进行训练 device cuda if torch.cuda.is_available() else cpu# 调用搭好的模型将模型数据转到GPU上 model LeNet().to(device)# 定义一个损失函数(交叉熵损失) loss_fn nn.CrossEntropyLoss()# 定义一个优化器 optimizer torch.optim.SGD(model.parameters(), lr0.01, momentum0.9)# 学习率每隔10轮, 变换原来的0.1 lr_scheduler lr_scheduler.StepLR(optimizer, step_size10, gamma0.1)# 定义训练函数 def train(dataloader, model, loss_fn, optimizer):loss, current, n 0.0, 0.0, 0for batch, (x, y) in enumerate(dataloader):# 前向传播x, y x.to(device), y.to(device)output model(x)cur_loss loss_fn(output, y)_, pred torch.max(output, axis1)cur_acc torch.sum(y pred)/output.shape[0]optimizer.zero_grad()cur_loss.backward()optimizer.step()loss cur_loss.item()current cur_acc.item()n n 1print(train_loss str(loss/n))print(train_acc str(current/n))# 定义测试函数 def val(dataloader, model, loss_fn):model.eval()loss, current, n 0.0, 0.0, 0with torch.no_grad():for batch, (x, y) in enumerate(dataloader):# 前向传播x, y x.to(device), y.to(device)output model(x)cur_loss loss_fn(output, y)_, pred torch.max(output, axis1)cur_acc torch.sum(y pred) / output.shape[0]loss cur_loss.item()current cur_acc.item()n n 1print(val_loss str(loss / n))print(val_acc str(current / n))return current/n# 开始训练 epoch 50 min_acc 0for t in range(epoch):print(fepoch{t1}\n-----------------------------------------------------------)train(train_dataloader, model, loss_fn, optimizer)a val(test_dataloader, model, loss_fn)# 保存最好的模型权重if a min_acc:folder sava_modelif not os.path.exists(folder):os.mkdir(sava_model)min_acc aprint(sava best model)torch.save(model.state_dict(), sava_model/best_model.pth) print(Done!) 3.3 测试模型test.py import torch from model import LeNet from torchvision import datasets, transforms from torchvision.transforms import ToPILImage# 数据转换为tensor格式 data_transformer transforms.Compose([transforms.ToTensor() ])# 加载训练的数据集 train_dataset datasets.MNIST(root./data, trainTrue, transformdata_transformer, downloadTrue) train_dataloader torch.utils.data.DataLoader(datasettrain_dataset, batch_size16, shuffleTrue)# 加载测试的数据集 test_dataset datasets.MNIST(root./data, trainFalse, transformdata_transformer, downloadTrue) test_dataloader torch.utils.data.DataLoader(datasettest_dataset, batch_size16, shuffleTrue)# 使用GPU进行训练 device cuda if torch.cuda.is_available() else cpu# 调用搭好的模型将模型数据转到GPU上 model LeNet().to(device)# 加载模型权重并设置为评估模式 model.load_state_dict(torch.load(./sava_model/best_model.pth)) model.eval()# 获取结果 classes [0,1,2,3,4,5,6,7,8,9, ]# 把tensor转换为图片, 方便可视化 show ToPILImage()# 进入验证 for i in range(5):x, y test_dataset[i]show(x).show()x torch.unsqueeze(x, dim0).float().to(device)with torch.no_grad():pred model(x)predicted, actual classes[torch.argmax(pred[0])], classes[y]print(fPredicted: {predicted}, Actual: {actual}) 4. LeNet的变种与实际应用 4.1 LeNet-5及其优化 LeNet-5是由Yann LeCun于1998年设计的并被广泛应用于手写数字识别任务。它是卷积神经网络的早期设计之一主要包含卷积层、池化层和全连接层。 结构 输入层接收32×32的图像。卷积层C1使用5×5的滤波器输出6个特征图。池化层S22x2的平均池化。卷积层C3使用5×5的滤波器输出16个特征图。池化层S42x2的平均池化。卷积层C5使用5×5的滤波器输出120个特征图。全连接层F6。输出层10个单元对应于0-9的手写数字。 激活函数Sigmoid或Tanh。 优化 ReLU激活函数 原始的LeNet-5使用Sigmoid或Tanh作为激活函数但现代网络更喜欢使用ReLU因为它的训练更快且更少受梯度消失的影响。更高效的优化算法 如Adam或RMSProp它们通常比传统的SGD更快、更稳定。批量归一化 加速训练并提高模型的泛化能力。Dropout 在全连接层中引入Dropout可以增强模型的正则化效果。 4.2 从LeNet到现代卷积神经网络 从LeNet-5开始卷积神经网络已经经历了巨大的发展。以下是一些重要的里程碑 AlexNet (2012) 在ImageNet竞赛中取得突破性的成功。它具有更深的层次使用ReLU激活函数以及Dropout来防止过拟合。VGG (2014) 由于其统一的结构仅使用3×3的卷积和2x2的池化而闻名拥有多达19层的版本。GoogLeNet/Inception (2014) 引入了Inception模块可以并行执行多种大小的卷积。ResNet (2015) 引入了残差块使得训练非常深的网络变得可能。通过这种方式网络可以达到上百甚至上千的层数。DenseNet (2017) 每层都与之前的所有层连接导致具有非常稠密的特征图。
http://www.zqtcl.cn/news/856394/

相关文章:

  • 网站策划ps苏州建站公司速找苏州聚尚网络
  • 网站备案 关闭客户制作网站时的问题
  • 项目网站分析推荐做ppt照片的网站
  • wordpress注明网站网站建设需要什么手续
  • 厦门过路费网站福建省建设执业资格注册中心网站
  • c 网站开发案例详解手机网站返回顶部代码
  • 济南微网站建设图书馆评估定级关于网站建设标准
  • flash型网站宝塔面板做网站绑定域名
  • 建设网站的策划书门户网站 流量
  • 佛山高端网站建设便宜自适应网站建设
  • 网络营销创意案例桂林seo公司推荐23火星
  • 网站开发知识产权归属问题wordpress会计模板下载
  • 昆明网站的优化自媒体是干什么的
  • 大成建设株式会社网站删掉wordpress主题
  • 个人网站备案类型网络维护培训班
  • 做网站的可以注册个工作室吗一个网站两个域名吗
  • 网站建设要准备什么资料网站建设 锐颖科技
  • 如何建设网站山东济南兴田德润官网电子商城官网
  • 网站如何做支付宝接口免费ppt自动生成器
  • 泰安市建设职工培训中心网站官网seo经理招聘
  • 湛江做网站seo网站建设 0551
  • 建站公司 深圳苏州建站公司
  • 网站怎么做引流呢济南网站微信
  • 一个域名可以做几个网站吗wordpress左右翻转页面
  • 天津人工智能建站系统软件wordpress主题没有小工具
  • 网站的备案流程图视频制作素材
  • 劳务公司网站建设方案建设促销网站前的市场分析
  • 网络营销优化培训网站seo置顶 乐云践新专家
  • 小说网站搭建教程wordpress后台图片
  • 付网站开发费计入什么科目网站开发的历史