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

网站开发代理谷歌推广怎么做最有效

网站开发代理,谷歌推广怎么做最有效,seo优化分析,比较好的做网站猫狗分类来源于Kaggle上的一个入门竞赛——Dogs vs Cats。为了加深对CNN的理解#xff0c;基于Pytorch复现了LeNet,AlexNet,ResNet等经典CNN模型#xff0c;源代码放在GitHub上#xff0c;地址传送点击此处。项目大纲如下#xff1a; 文章目录 一、问题描述二、数据集处理…猫狗分类来源于Kaggle上的一个入门竞赛——Dogs vs Cats。为了加深对CNN的理解基于Pytorch复现了LeNet,AlexNet,ResNet等经典CNN模型源代码放在GitHub上地址传送点击此处。项目大纲如下 文章目录 一、问题描述二、数据集处理1 损坏图片清洗2 抽取图片形成数据集 三、图片预处理1init 方法2getitem方法3len方法4测试 四、模型1 LeNet2 AlexNet模型 五、训练1 开始训练2 tensorboard可视化 六、不同模型训练结果分析1 LeNet模型(1) 数据集数量1000无数据增强(2) 数据集数量4000无数据增强(3)数据集数量4000数据增强(4)数据集4000数据增强(5)使用dropout函数抑制过拟合 2 AlexNet模型3 squeezeNet模型4 resNet模型总结 七、预测 一、问题描述 基于训练集数据训练一个模型利用训练好的模型预测未知图片中的动物是狗或者猫的概率。 训练集有25,000张图片测试集12,500 张图片。 数据集下载地址https://www.kaggle.com/datasets/shaunthesheep/microsoft-catsvsdogs-dataset 二、数据集处理 1 损坏图片清洗 在 01_clean.py中用多种方式来清洗损坏图片 判断开头是否有JFIF用imghdr库中的imghdr.what函数判断文件类型用Image.open(filename).verify()验证图片是否损坏 结果如下 2 抽取图片形成数据集 由于一万多张图片比较多并且需要将Cat类和Dog类的图片合在一起并重新命名方便获得每张图片的labels,所以可以从原图片文件夹复制任意给定数量图片到train的文件夹并且重命名如下 程序为02_data_processing.py. 三、图片预处理 图片预处理部分需要完成 对图片的裁剪将大小不一的图片裁剪成神经网络所需的我选择的是裁剪为**(224x224)**转化为张量归一化:三个方向归一化图片数据增强形成加载器返回图片数据和对应的标签利用Pytorch的Dataset包 在 dataset.py中定义Mydata的类继承pytorch的Dataset定义如下三个方法 1init 方法 读取图片路径并拆分为数据集和验证集以下代码仅体现结构具体见源码 class Mydata(data.Dataset):定义自己的数据集def __init__(self, root, TransformsNone, trainTrue):进行数据集的划分if train:self.imgs imgs[:int(0.8*imgs_num)] #80%训练集else:self.imgs imgs[int(0.8*imgs_num):] #20%验证集定义图片处理方式if Transforms is None:normalize transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])self.transforms transforms.Compose([ transforms.CenterCrop(224), transforms.Resize([224,224]),transforms.ToTensor(), normalize])2getitem方法 对图片处理返回数据和标签 def __getitem__(self, index):return data, label3len方法 返回数据集大小 def __len__(self):返回数据集中所有图片的个数 return len(self.imgs)4测试 实例化数据加载器后通过调用getitem方法可以得到经过处理后的 3 × 244 × 244 3\times244\times244 3×244×244的图片数据 if __name__ __main__:root ./data/traintrain Mydata(root, trainTrue) #实例化加载器img,labeltrain.__getitem__(5) #获取index为5的图片print(img.dtype)print(img.size(),label) print(len(train)) #数据集大小 #输出 torch.float32 torch.Size([3, 224, 224]) 0 3200裁剪处理后图片如下所示大小为224X224 四、模型 模型都放在 models.py中主要用了一些经典的CNN模型 LeNetResNetResNetSqueezeNet 下面给出重点关注的LeNet模型和AlexNet模型 1 LeNet LeNet模型是一个早期用来识别手写数字图像的卷积神经网络这个名字来源于LeNet论文的第一作者Yann LeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果LeNet模型结构图示如下所示 由上图知LeNet分为卷积层块和全连接层块两个部分在本项目中我对LeNet模型做了相应的调整 采用三个卷积层三个全连接层ReLu作为激活函数在卷积后正则化 class LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.relu nn.ReLU()self.sigmoid nn.Sigmoid()#三个卷积层self.conv1 nn.Sequential(nn.Conv2d(in_channels3,out_channels16,kernel_size3,stride2,),nn.BatchNorm2d(16),nn.ReLU(),nn.MaxPool2d(kernel_size2),)self.conv2 nn.Sequential(nn.Conv2d(in_channels16,out_channels32,kernel_size3,stride2,),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(kernel_size2),)self.conv3 nn.Sequential(nn.Conv2d(in_channels32,out_channels64,kernel_size3,stride2,),nn.BatchNorm2d(64),nn.ReLU(),nn.MaxPool2d(kernel_size2),)#三个全连接层self.fc1 nn.Linear(3 * 3 * 64, 64)self.fc2 nn.Linear(64, 10)self.out nn.Linear(10, 2) #分类类别为2def forward(self, x):x self.conv1(x)x self.conv2(x)x self.conv3(x)x x.view(x.shape[0], -1)x self.relu(self.fc1(x))x self.relu(self.fc2(x))x self.out(x)return x调用torchsummary库可以观察模型的结构、参数 2 AlexNet模型 2012年AlexNet横空出世这个模型的名字来源于论文第一作者的姓名Alex Krizhevsky。AlexNet使用了8层卷积神经网络由5个卷积层和3个池化Pooling 层 其中还有3个全连接层构成。AlexNet 跟 LeNet 结构类似但使⽤了更多的卷积层和更⼤的参数空间来拟合⼤规模数据集 ImageNet它是浅层神经⽹络和深度神经⽹络的分界线。 特点 在每个卷积后面添加了Relu激活函数解决了Sigmoid的梯度消失问题使收敛更快。使用随机丢弃技术dropout选择性地忽略训练中的单个神经元避免模型的过拟合也使用数据增强防止过拟合添加了归一化LRNLocal Response Normalization局部响应归一化层使准确率更高。重叠最大池化overlapping max pooling即池化范围 z 与步长 s 存在关系 zs 避免平均池化average pooling的平均效应 五、训练 训练在 main.py中主要是对获取数据、训练、评估、模型的保存等功能的整合能够实现以下功能 指定训练模型、epoches等基本参数是否选用预训练模型接着从上次的中断的地方继续训练保存最好的模型和最后一次训练的模型对模型的评估Loss和Accuracy利用TensorBoard可视化 1 开始训练 在 main.py程序中设置参数和模型models.py中可以查看有哪些模型: 在vscode中点击运行或在命令行中输入 python3 main.py即可开始训练开始训练后效果如下 若程序中断设置resume参数为True可以接着上次的模型继续训练可以非常方便的任意训练多少次。 2 tensorboard可视化 在vscode中打开tensorboard或者在命令行中进入当前项目文件夹下输入 tensorboard --logdir runs即可打开训练中的可视化界面可以很方便的观察模型的效果 如上图所示可以非常方便的观察任意一个模型训练过程的效果 六、不同模型训练结果分析 1 LeNet模型 在用LeNet模型训练的过程中通过调整数据集数量、是否用数据增强等不同的方法来训练模型并观察模型的训练效果。 (1) 数据集数量1000无数据增强 通过Tensorboard可视化可以观察到 验证集准确率(Accuracy)在上升训练30epoch左右达到最终**63%**左右的最好效果但验证集误差(Loss)也在上升训练集误差一直下降训练集误差接近于0 说明模型在训练集上效果好验证集上效果不好泛化能力差可以推测出模型过拟合了。而这个原因也是比较好推测的数据集比较少。 (2) 数据集数量4000无数据增强 同样过拟合了但是最后的准确率能达到**68%**左右说明数据集增加有效果 (3)数据集数量4000数据增强 这次数据集数量同上一个一样为4000但采用了如下的数据增强 水平翻转概率为p0.5上下翻转概率为p0.1 我们可以看到这次一开始验证集误差是下降的说明一开始没有过拟合但到15个epoch之后验证集误差开始上升了说明已经开始过拟合了但最后的准确率在**71%**左右说明数据增强对扩大数据集有明显的效果。 (4)数据集4000数据增强 这次数据集数量为4000但采用了如下的数据增强 水平翻转概率为p0.5上下翻转概率为p0.5亮度变化 可以看到 35个epoch之前验证集误差呈下降趋势准确率也一直上升最高能到75%。但在35个epoch之后验证集误差开始上升准确率也开始下降 说明使用了更强的数据增强之后模型效果更好了。 (5)使用dropout函数抑制过拟合 本次数据集和数据增强方式同4但是在模型的第一个全连接层加入dropout函数。 dropout原理 训练过程中随机丢弃掉一些参数。在前向传播的时候让某个神经元的激活值以一定的概率p伯努利分布停止工作这样可以使模型泛化性更强。 不使用dropout示意图 使用dropout示意图 这样相当于每次训练的是一个比较瘦的模型更不容易过拟合 加入dropout函数后训练85个epochs可以观察到效果十分显著 验证集的误差总体呈现下降趋势且最后没有反弹训练集误差下降比较慢了准确率一直上升最后可以达到76% 说明模型最后没有过拟合并且效果还不错。 2 AlexNet模型 将AlexNet模型参数打印出来 可以看到AlexNet相比LeNet参数数目有数量级的上升而在数据量比较小的情况下很容易梯度消失经过反复的调试 要在卷积层加入正则化优化器选择SGD学习率不能过大 才能避免验证集的准确率一直在50% 经过调试较好的一次结果如下所示最终准确率能达到78% 3 squeezeNet模型 在后面两个模型中使用迁移学习的方法。 **迁移学习Transfer Learning**是机器学习中的一个名词是指一种学习对另一种学习 的影响或习得的经验对完成其它活动的影响。迁移广泛存在于各种知识、技能与社会规范 的学习中将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中。 使用squeezeNet预训练模型在迭代16个epoch后准确率可以达到93% 4 resNet模型 使用resnet50的预训练模型训练25个epoch后准确率可以达到98% 总结 模型测试集预测准确率LeNet无数据增强68%LeNet数据增强75%LeNet采用Dropout76%Alexnet78%squeezeNet迁移学习93%resNet98% 七、预测 模型训练好后可以打开 predict.py对新图片进行预测给定用来预测的模型和预测的图片文件夹 model LeNet1() # 模型结构modelpath ./runs/LeNet1_1/LeNet1_best.pth # 训练好的模型路径checkpoint torch.load(modelpath) model.load_state_dict(checkpoint) # 加载模型参数root test_pics运行 predict.py 会将预测的图片储存在 output文件夹中如下图所示 会给出预测的类别和概率。
http://www.dnsts.com.cn/news/38531.html

相关文章:

  • 网站的总体方案制作网站公司 英语网站首页
  • 大型网站只做要多少钱园林景观设计公司官网
  • 织梦如何做几种语言的网站购物网站有哪些功能
  • 深圳做网站最好网站在什么地方设关键词
  • 网站流量分析怎么做wordpress插件手动升级
  • 设计色彩的门户网站模板芜湖网站网站建设
  • 大型企业网站建设网站建设 微信公众号运营
  • 南京那些公司做网站充实网站 廉政建设 板块
  • 免费html网站模板下载怎样做卖活网站
  • php网站的后台地址wordpress windows
  • 招聘网站内容建设深圳网络运营公司
  • 余姚网站制作wordpress+dux使用
  • 宁波江北区城市建设档案馆网站wordpress好看的评论
  • flash网站方案做电商需要什么条件
  • 河北邯郸手机网站建设app定制开发公司上班怎么样
  • 关于做网站开发者是什么意思
  • 网站推广 软件公司注册的注意事项
  • 做音乐下载网站华贸中心网站谁做的
  • 从化专业做网站哈尔滨关键词优化排名
  • 有网络网站打不开网站代备案系统
  • 无锡做网站排名南昌专业网站制作公司
  • 舆情报告写作成都网站优化实战
  • 云南手机网站制作专业的销售网站
  • 域名注册网站便宜铜仁市网站建设
  • 淄博住房和城乡建设厅网站中山网站排名
  • 山东广饶县建设局网站wordpress仿站教程百度云
  • 注册个网站怎么注册中国建筑业协会
  • 奎屯网站建设网站响应样式
  • 建站工具 风铃吴博 wordpress
  • 做基金哪个网站好微网站背景图片