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

网站建设费用大概多少钱wordpress模板框架

网站建设费用大概多少钱,wordpress模板框架,现在都有什么网站工作室,一般通过什么判断鱼的年龄作者有话说#xff1a; 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试#xff0c;虽然接触深度学习有一年了#xff0c;但是对于模型的优化仅仅是局限于理论上。通过这一次的实验#xff0c;我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问… 作者有话说 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试虽然接触深度学习有一年了但是对于模型的优化仅仅是局限于理论上。通过这一次的实验我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问题我只希望能通过这篇文章告诉你学习一定要结合实践 一、前言 上篇文章《卷积神经网络实验二CNN实现猫狗分类任务-CSDN博客》通过在原有的多层感知机上增加卷积层在相同的数据上表现明显好于多层感知机模型。但是在损失变化曲线上可以发现训练损失在逐渐的减少但是测试损失不降反增出现了过拟合现象。因此我在设想既然训练集上模型的性能能逐渐的提升是不是只要让模型不再过拟合在测试集上的效果也能提升 实验过程中只提供更改的代码完整代码请参考《卷积神经网络实验一多层感知机进行猫狗分类》 二、实验环境 本次实验环境依然使用FunHPC | 算力简单易用 AI乐趣丛生这个平台提供的免费P4显卡进行实验具体实验环境如图 感谢这个平台对于学生用户的支持 FunHPC | 算力简单易用 AI乐趣丛生这个算力平台显卡在全网中性价比最高并且学生用户认证可以使用这个平台免费提供的P4显卡单次最长使用时间为24小时没有总时间限制可以无限次使用。  新用户注册有15元的体验金可以完全不充值白嫖使用非常值得推荐 三、过拟合解决策略 首先我们得明白什么叫做过拟合为什么过拟合过拟合解决的方案有哪些  什么叫做过拟合 过拟合Overfitting是指在机器学习模型中模型在训练数据上表现良好但在未见过的新数据测试数据上表现较差的现象。简单来说过拟合发生在模型学习到了训练数据中的噪声和细节而不仅仅是学习到了数据的基本规律。 过拟合的原因 模型复杂度过高当模型的参数过多时它可能会过度拟合训练数据。复杂模型能够捕捉到训练数据中的所有细节但这些细节往往并不具有普遍性。训练数据不足当训练数据量不足时模型容易记住每个样本的特征而不是学习到数据的通用模式。数据噪声如果训练数据中包含噪声或异常值模型可能会试图将这些噪声作为有效信号进行学习导致过拟合。特征选择不当包含过多无关特征或不相关的变量也会导致模型在训练数据上表现很好但在新数据上表现不佳。 解决过拟合的方案 简化模型 使用更简单的模型如减少层数、神经元数等。降低模型的复杂度以降低过拟合风险。 正则化 L1 正则化Lasso通过增加权重绝对值的和来惩罚模型使某些权重趋向于零达到特征选择的效果。L2 正则化Ridge通过增加权重平方和的惩罚项来减少模型的复杂度。 数据增强 通过对训练数据进行变换如旋转、缩放、翻转等增加训练数据的多样性从而减少过拟合的可能性。 四、实验设计 在不考虑数据的情况下引起模型过拟合的原因主要在于模型的结构和训练过程。为此我们对于模型过拟合的解决分三步进行分别是模型层数验证、卷积层的调整、正则化和残差连接。 模型层数验证主要是指增加或减少模型的层次结构例如增加卷积层或减少全连接层等等。卷积层的调整在确定整体的模型结构后不同神经网络层的设置依然会影响模型的效果例如卷积核的大小等等。正则化和残差连接这一步主要进行的是增加正则化操作、残差连接等等。 五、第一步 基础知识: 在进行第一步优化前我们先来了解以下全连接层和卷积层的基础知识。 特性全连接层 (FC Layer)卷积层 (Convolutional Layer)作用特征组合全连接层将上层提取的特征重新组合将局部信息整合为全局信息。非线性变换通过学习权重和偏置增加非线性表达能力。分类和回归用于输出层进行类别或数值预测。局部特征提取通过卷积核扫描局部区域提取边缘、角点等空间结构特征。参数减少只连接局部区域降低参数数量。多层次特征提取通过堆叠卷积层逐层提取复杂特征。层数多和少的影响多层增加表达能力能学习复杂特征组合但可能过拟合。少层简单结构减少计算适合基本任务。多层学习丰富、复杂的特征适合处理复杂结构数据。少层适合简单任务减少计算特征学习能力有限。单层中神经元/卷积核数量多和少的影响神经元多提高拟合能力适合复杂数据但易过拟合。神经元少降低参数量有助泛化但可能无法捕捉复杂模式。卷积核多捕获更多样的特征增强模型特征表达能力。卷积核少计算资源减少但特征丰富度降低。卷积核大小不适用小卷积核如 3x3捕捉细节堆叠后可扩大感受野参数效率高。大卷积核如 5x5 或 7x7覆盖更大区域计算复杂度高适合少层情况。输入/输出通道数不适用输入通道数输入通道越多卷积核可接收更多特征。输出通道数增加输出通道数可增强特征捕获能力通常层数增加后通道逐步增加。滑窗步长 (Stride)不适用小步长如 1获取更高分辨率特征但计算量大。大步长如 2 或 3减小特征图尺寸、降低计算量但过大会导致信息丢失。Padding填充不适用无填充 (padding0)特征图尺寸减小适合内部特征。零填充 (padding0)保留尺寸适合深层结构保留空间分辨率。 原来的模型 # 定义CNN模型 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()# 第一个卷积层: 输入3个通道(RGB)输出20个通道卷积核大小为5x5步长为1self.conv1 nn.Conv2d(3, 20, kernel_size5, stride1, padding0)# 第二个卷积层: 输入20个通道输出50个通道卷积核大小为4x4步长为1self.conv2 nn.Conv2d(20, 50, kernel_size4, stride1, padding0)# 计算经过卷积层和池化后的特征图大小# 输入图像的假设尺寸为 (3, 150, 150)self.fc1_input_size 50 * 35 * 35 # 根据卷积后的特征图大小来设置# 全连接层self.fc1 nn.Linear(self.fc1_input_size, 128)self.fc2 nn.Linear(128, 64)self.fc3 nn.Linear(64, 2)def forward(self, x):# 第一个卷积层 ReLU 最大池化x F.relu(self.conv1(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)降低特征图尺寸# 第二个卷积层 ReLU 最大池化x F.relu(self.conv2(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 展平特征图x x.view(-1, self.fc1_input_size)# 全连接层 ReLUx F.relu(self.fc1(x))x F.relu(self.fc2(x))# 输出层 (无激活函数因为最后要用交叉熵损失)x self.fc3(x)return x 损失曲线 模型实验 实验1减少全连接层 在这一步中通过将全连接层fc2剔除来降低模型的复杂程度 # 定义CNN模型 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()# 第一个卷积层: 输入3个通道(RGB)输出20个通道卷积核大小为5x5步长为1self.conv1 nn.Conv2d(3, 20, kernel_size5, stride1, padding0)# 第二个卷积层: 输入20个通道输出50个通道卷积核大小为4x4步长为1self.conv2 nn.Conv2d(20, 50, kernel_size4, stride1, padding0)# 计算经过卷积层和池化后的特征图大小# 输入图像的假设尺寸为 (3, 150, 150)self.fc1_input_size 50 * 35 * 35 # 根据卷积后的特征图大小来设置# 全连接层self.fc1 nn.Linear(self.fc1_input_size, 128)#self.fc2 nn.Linear(128, 64)self.fc3 nn.Linear(128, 2)def forward(self, x):# 第一个卷积层 ReLU 最大池化x F.relu(self.conv1(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)降低特征图尺寸# 第二个卷积层 ReLU 最大池化x F.relu(self.conv2(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 展平特征图x x.view(-1, self.fc1_input_size)# 全连接层 ReLUx F.relu(self.fc1(x))#x F.relu(self.fc2(x))# 输出层 (无激活函数因为最后要用交叉熵损失)x self.fc3(x)return x 去掉一个全连接层后发现模型损失的减少变得缓慢并且最低测试损失大于原来的模型。通过实验可以发现减少一层全连接层就降低了模型的表达能力和综合能力并且最终也出现了过拟合。 实验2降低全连接层的神经元数量 在实验1的基础上降低全连接层fc1的神经元数量降低模型的拟合能力。 # 定义CNN模型 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()# 第一个卷积层: 输入3个通道(RGB)输出20个通道卷积核大小为5x5步长为1self.conv1 nn.Conv2d(3, 20, kernel_size5, stride1, padding0)# 第二个卷积层: 输入20个通道输出50个通道卷积核大小为4x4步长为1self.conv2 nn.Conv2d(20, 50, kernel_size4, stride1, padding0)# 计算经过卷积层和池化后的特征图大小# 输入图像的假设尺寸为 (3, 150, 150)self.fc1_input_size 50 * 35 * 35 # 根据卷积后的特征图大小来设置# 全连接层self.fc1 nn.Linear(self.fc1_input_size, 64)#self.fc2 nn.Linear(128, 64)self.fc3 nn.Linear(64, 2)def forward(self, x):# 第一个卷积层 ReLU 最大池化x F.relu(self.conv1(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)降低特征图尺寸# 第二个卷积层 ReLU 最大池化x F.relu(self.conv2(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 展平特征图x x.view(-1, self.fc1_input_size)# 全连接层 ReLUx F.relu(self.fc1(x))#x F.relu(self.fc2(x))# 输出层 (无激活函数因为最后要用交叉熵损失)x self.fc3(x)return x 通过实验发现模型损失降低的速度增加并且最低损失小于原有的模型和实验1。 通过降低全连接层的神经元的数量可以明显降低模型的过拟合但是模型还是出现了过拟合现象。为什么模型的能力还是不行  实验3增加卷积层 考虑到模型的性能提升并不高这是不是因为特征的问题因此在实验2的基础上增加了一层卷积层。 # 定义CNN模型 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()# 第一个卷积层: 输入3个通道(RGB)输出20个通道卷积核大小为5x5步长为1self.conv1 nn.Conv2d(3, 20, kernel_size5, stride1, padding0)# 第二个卷积层: 输入20个通道输出50个通道卷积核大小为4x4步长为1self.conv2 nn.Conv2d(20, 50, kernel_size4, stride1, padding0)# 第三个卷积层: 输入50个通道输出70个通道卷积核大小为4x4步长为1self.conv3 nn.Conv2d(50, 70, kernel_size4, stride1, padding0)# 计算经过卷积层和池化后的特征图大小# 输入图像的假设尺寸为 (3, 150, 150)self.fc1_input_size self._get_fc1_input_size((3, 150, 150))# 全连接层self.fc1 nn.Linear(self.fc1_input_size, 64)self.fc3 nn.Linear(64, 2)def _get_fc1_input_size(self, input_shape):with torch.no_grad():x torch.zeros(1, *input_shape) # 创建一个符合输入图像尺寸的假数据x F.max_pool2d(F.relu(self.conv1(x)), 2, 2)x F.max_pool2d(F.relu(self.conv2(x)), 2, 2)x F.max_pool2d(F.relu(self.conv3(x)), 2, 2)return x.numel() # 计算展平后的特征大小def forward(self, x):# 第一个卷积层 ReLU 最大池化x F.relu(self.conv1(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)降低特征图尺寸# 第二个卷积层 ReLU 最大池化x F.relu(self.conv2(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 第三个卷积层 ReLU 最大池化x F.relu(self.conv3(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 展平特征图x x.view(-1, self.fc1_input_size)# 全连接层 ReLUx F.relu(self.fc1(x))# 输出层 (无激活函数因为最后要用交叉熵损失)x self.fc3(x)return x 通过实验发现果然如猜测一样模型虽然通过全连接层的结构简化可以降低过拟合 但是在特征提取上不够也不行。增加了卷积层之后模型的性能提升较高最低损失比以往的都低。但也可以发现增加卷积层后模型损失降低的速度也变慢了。 实验4 再增加一层卷积层 通过上面的实验可以发现增加卷积层非常有用既然有用是不是说明继续增加卷积层提取增加综合的特征是不是模型的能力会在此提升。 # 定义CNN模型 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()# 第一个卷积层: 输入3个通道(RGB)输出20个通道卷积核大小为5x5步长为1self.conv1 nn.Conv2d(3, 20, kernel_size5, stride1, padding0)# 第二个卷积层: 输入20个通道输出50个通道卷积核大小为4x4步长为1self.conv2 nn.Conv2d(20, 50, kernel_size4, stride1, padding0)# 第三个卷积层: 输入50个通道输出70个通道卷积核大小为4x4步长为1self.conv3 nn.Conv2d(50, 70, kernel_size4, stride1, padding0)# 新增的第四个卷积层: 输入70个通道输出100个通道卷积核大小为3x3步长为1self.conv4 nn.Conv2d(70, 100, kernel_size3, stride1, padding0)# 计算经过卷积层和池化后的特征图大小# 输入图像的假设尺寸为 (3, 150, 150)self.fc1_input_size self._get_fc1_input_size((3, 150, 150))# 全连接层self.fc1 nn.Linear(self.fc1_input_size, 64)self.fc3 nn.Linear(64, 2)def _get_fc1_input_size(self, input_shape):with torch.no_grad():x torch.zeros(1, *input_shape) # 创建一个符合输入图像尺寸的假数据x F.max_pool2d(F.relu(self.conv1(x)), 2, 2)x F.max_pool2d(F.relu(self.conv2(x)), 2, 2)x F.max_pool2d(F.relu(self.conv3(x)), 2, 2)x F.max_pool2d(F.relu(self.conv4(x)), 2, 2)return x.numel() # 计算展平后的特征大小def forward(self, x):# 第一个卷积层 ReLU 最大池化x F.relu(self.conv1(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)降低特征图尺寸# 第二个卷积层 ReLU 最大池化x F.relu(self.conv2(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 第三个卷积层 ReLU 最大池化x F.relu(self.conv3(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 新增的第四个卷积层 ReLU 最大池化x F.relu(self.conv4(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 展平特征图x x.view(-1, self.fc1_input_size)# 全连接层 ReLUx F.relu(self.fc1(x))# 输出层 (无激活函数因为最后要用交叉熵损失)x self.fc3(x)return x 实验结果如猜想一样最低损失进一步降低但模型的损失减低速度也变得更慢了。  实验5继续增加卷积层 为了进一步验证增加卷积层是否能无线提高模型的性能我们继续添加卷积层。  # 定义CNN模型 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()# 第一个卷积层: 输入3个通道(RGB)输出20个通道卷积核大小为5x5步长为1self.conv1 nn.Conv2d(3, 20, kernel_size5, stride1, padding0)# 第二个卷积层: 输入20个通道输出50个通道卷积核大小为4x4步长为1self.conv2 nn.Conv2d(20, 50, kernel_size4, stride1, padding0)# 第三个卷积层: 输入50个通道输出70个通道卷积核大小为4x4步长为1self.conv3 nn.Conv2d(50, 70, kernel_size4, stride1, padding0)# 第四个卷积层: 输入70个通道输出100个通道卷积核大小为3x3步长为1self.conv4 nn.Conv2d(70, 100, kernel_size3, stride1, padding0)# 新增的第五个卷积层: 输入100个通道输出150个通道卷积核大小为3x3步长为1self.conv5 nn.Conv2d(100, 150, kernel_size3, stride1, padding0)# 计算经过卷积层和池化后的特征图大小# 输入图像的假设尺寸为 (3, 150, 150)self.fc1_input_size self._get_fc1_input_size((3, 150, 150))# 全连接层self.fc1 nn.Linear(self.fc1_input_size, 64)self.fc3 nn.Linear(64, 2)def _get_fc1_input_size(self, input_shape):with torch.no_grad():x torch.zeros(1, *input_shape) # 创建一个符合输入图像尺寸的假数据x F.max_pool2d(F.relu(self.conv1(x)), 2, 2)x F.max_pool2d(F.relu(self.conv2(x)), 2, 2)x F.max_pool2d(F.relu(self.conv3(x)), 2, 2)x F.max_pool2d(F.relu(self.conv4(x)), 2, 2)x F.max_pool2d(F.relu(self.conv5(x)), 2, 2)return x.numel() # 计算展平后的特征大小def forward(self, x):# 第一个卷积层 ReLU 最大池化x F.relu(self.conv1(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)降低特征图尺寸# 第二个卷积层 ReLU 最大池化x F.relu(self.conv2(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 第三个卷积层 ReLU 最大池化x F.relu(self.conv3(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 第四个卷积层 ReLU 最大池化x F.relu(self.conv4(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 新增的第五个卷积层 ReLU 最大池化x F.relu(self.conv5(x))x F.max_pool2d(x, 2, 2) # 池化层 (2x2)# 展平特征图x x.view(-1, self.fc1_input_size)# 全连接层 ReLUx F.relu(self.fc1(x))# 输出层 (无激活函数因为最后要用交叉熵损失)x self.fc3(x)return x 这次实验的结果发现模型的最低损失比上次降低一点但不多。这说明模型再增加卷积层上已经无法再进一步的前进了。  总结 通过一系列模型修改实验我们其实可以得出结论。那就是卷积层的增加的确会提高模型提取特征的能力但是有限度。并且增加卷积层也会降低模型的收敛速度。全连接层的简化可以防止模型的过拟合。模型性能的好坏其实是需要我们不断进行尝试修改的这真的就是一个炼丹的过程没人可以直接写出一个性能最优的模型。 预告 接下来我会继续完成模型的第二步和第三步优化敬请期待
http://www.w-s-a.com/news/868440/

相关文章:

  • 网站建设一个多少钱php网站服务器怎么来
  • 引流用的电影网站怎么做2012服务器如何做网站
  • 什么网站可以做推广广州安全信息教育平台
  • 网站开发具备的相关知识wordpress简约文字主题
  • asp网站伪静态文件下载seo外包公司哪家好
  • 淘宝客网站根目录怎么建个废品网站
  • 网站备案更改需要多久百度免费网站空间
  • 外发加工是否有专门的网站wordpress主页 摘要
  • 企业网站优化系统浙江建设信息港证书查询
  • 很多年前的51网站如何做跨境电商需要哪些条件
  • 网站建设中 请稍后访问互联网营销设计
  • 软文网站名称用户浏览网站的方式
  • 大兴模版网站搭建哪家好网站建设与管理管理课程
  • 四川成都网站制作微信广告平台推广
  • 网站价格网页制作网站开发实训步骤
  • cms 导航网站鹤壁做网站价格
  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力
  • 建设网站是主营成本吗wordpress 后台
  • 猎头可以做单的网站企业网站建设
  • 建小程序需要网站吗在putty上怎样安装wordpress
  • 天津智能网站建设找哪家WordPress相册插件pro
  • 电脑网站页面怎么调大小济宁网站建设软件开发
  • 亿玛酷网站建设广州增城区最新消息
  • 企业网站视频栏目建设方案中企动力网站模板
  • 网站页面策划国外注册域名的网站
  • 百中搜如何做网站排名网站维护一年一般多少钱
  • 镇江地区做网站的公司wordpress说说加分类
  • 深圳高端网站设计免费的关键词优化软件
  • 视频网站公司沈阳网站建设服务