keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)

ae25c64ca64167833d29acb15f809a86.png
版权声明:小博主水平有限,希望大家多多指导。

目录:

【使用传统DNN】

BG大龍:【DL项目实战02】图像分类——Keras框架+使用传统神经网络DNN​zhuanlan.zhihu.com
df8187f39f3f60287ae3d02ebf65b71e.png

【使用卷积神经网络CNN】

BG大龍:【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)​zhuanlan.zhihu.com
df8187f39f3f60287ae3d02ebf65b71e.png

1、数据集情况

2、任务目标

3、流程中的注意点

(1)读取数据

(2)建立CNN(选用VGGNet)

——【第1部分】Conv2D层中,确定data_format类型

——【第2部分】特征提取:(卷积+池化)

——【第3部分】分类识别:(全连接)

(3)设定超参

(4)定义损失函数

(5)训练模型

(6)结果

4、对比实验

(1)第1个对比:添加Batch Normalization(BN,批量标准化层)

(2)第2个对比:添加Truncated Normal(TN,截断分布)

(3)第3个对比:添加Dropout

5、加载模型,进行测试


1、数据集情况

9d4d0074a149496a8acda54139d3b69b.png

2、任务目标

当输入“image”时候,能否正确识别,识别的acc是多少

10590262f412e42a23d3da86706e93e5.png

3、流程中的注意点

(1)读取数据

DNN结构:

d2c67d45a1e500e8f9d1a27f4f43ead1.png

CNN结构:

正常CNN输入是224
244
3,这里进行缩小成64
64
3,为了提高计算速度

cbaf411edbe9be296df874a92242415b.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(2)建立CNN(选用VGGNet)

把网络模型单独写成一个模块,然后直接去调用simpleVGGNet

65ba3bf716cb8497089a7f8dbd6a6bdb.png

在simpleVGGNet模块里面,三部分工作

【第1部分】Conv2D层中,确定data_format类型

(data_format='channels_last')—input_shape = (128,128,3)代表128*128的RGB图像

(data_format='channels_first')—input_shape = (3,128,128)代表128*128的RGB图像

keras使用tensorflow作为Backend时,格式是(data_format='channels_first'

7dfd9b3fc98c064eacd5c429fdfe3f20.png
或者我们定义一个判断语句:

fd61ec12100d1e9c42a26fb0b344252f.png

【第2部分】特征提取:(卷积+池化)

(1)32—64—128:为了降低pooling压缩带来的损失影响,filter个数逐步翻倍
(2)padding:补0策略,为“valid”, “same”
“valid”代表只进行有效的卷积,即对边界数据不处理。
“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
API文档: 卷积层 - Keras中文文档
(3)凡是计算层后面,都要加上激活函数

b76428c270496b1e29c3004e6c281fde.png

bc7781c9f93cad2db4faeb523c9674a3.png

8ecbbc6ee38517beb23b67e9f38ab691.png

【第3部分】分类识别:(全连接)

FC层:

f96665acfef2067c8bfdb944b961e287.png
激活函数softmax:

c4cf3aadb7d14fc68068091865e3c68e.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(3)设定超参

30a116bf0c95936f7c0b0d129474dbfd.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(4)定义损失函数

9f2cb56937871dde29c25c4a9d9e9de3.png
这里,有一个学习率的衰减,decay=INIT_LR / EPOCHS
看下API文档,

2411f2b4ddd6bd5460fe91d9f05f11a3.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(5)训练模型

steps_per_epoch=len(trainX) // BS

它表示是将一个epoch分成多少个batch_size,
如果训练样本数N=1000,steps_per_epoch = 10,那么相当于一个batch_size=100

08cca550c4a0ff23f33030d7b4adba5b.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(6)结果

观察val_loss,

a99b05ea12d15f91a726c6cfd551423b.png

4、对比实验

(1)第1个对比:添加Batch Normalization(BN,批量标准化层)

API文档:(批)规范化BatchNormalization - Keras中文文档

8fc581f48728eee2f0158023b629a6cc.png

axis:整数,指定当mode=0时规范化的轴。例如输入是形如(samples,channels,rows,cols)的4D图像张量,则应设置规范化的轴为1,意味着对每个特征图进行规范化

NN结构:
在每一个“relu”后,添加BN

7c2cb22fb32d3f2c56455abbdbc03e18.png

0508db6b4d08ee76de56b7c2f0a60f08.png

例如:

e92b561b581737d5503baab639bfb807.png
结果:
但是Loss为什么这么大?

38a0a3e5b533326377f04616b4a76110.png

猜测是“随机初始化”的原因,我又重新运行了一次

ba2a565a4e1f31c10a3bda64fc02ea09.png
BN添加前后对比:
更加稳定,提高了val_acc,

570c0d3c3a5bc50a65f8c3ca0ccb77c3.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(2)第2个对比:添加Truncated Normal(TN,截断分布)

API文档: 初始化方法 - Keras中文文档

cb8d626e199651ad15e28ac2ec968a49.png
NN结构:
在每个卷积层里面,添加kernel_initializer=TruncatedNormal(),stddev=0.01

91b052561680e063aa635ec3b9dd7be5.png

例如:

4e701feecd1fd8ff978528dd7a7b2b12.png
结果:

caa651b4427bcd4890d03376ee5870e2.png
TN添加前后对比:
有的参数添加后,不一定好

70d9c1167676232612583ca4b099c738.png

f04f4f3972d7aa3741fa3798fbf1963b.png

(3)第3个对比:添加Dropout

API文档: 常用层 - Keras中文文档

8844cb331f22dae97e58b13f6b9eaa64.png
NN结构:
有个疑问:在卷积层中,已经是“权重参数共享”,连接的参数本来就不多,再进行Dropout,岂不是更少?(所以一般在Dense层在dropout?)

fcba46cf6dd11569efcfcc5623cb0f37.png
结果:

f0ba6d4bd0ebc47783328b6b5bfa2be5.png
Dropout添加前后对比:
更加平稳,但是loss老是跑的比较高……

9907f387aa7e263d156e781bcd2f265e.png

5、加载模型,进行测试

用“image”文件夹,去做预测

007426e5f4838a2f9a6d6b9596dd2d6b.png

bdf1e8e128f957eeacb8f785f1f981b1.png
CNN结果:

f79acb389905349a51347e39919f0100.png

对比DNN结果:

d9fa597ad0f92296fdc4c5d703dd1a72.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Html转pdf实战

Java Html转pdf实战 - 简书年尾手头没啥事,干起了打杂工作,最近帮忙解决后端项目里一个html批量转pdf速度慢的问题,项目里用到的转换工具是 wkhtmltopdf ,这货转单个html还好,批量转速...https://www.jianshu.com/p/d0…

Hadoop生态圈-Ambari控制台功能简介

Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简单是他优势之一&…

剪映专业版PC端清理缓存与日志

清理缓存 这个简单,在全局设置里,点击删除键,就可以 清理日志 软件每次剪辑都会生成日志,日志路径在 C:\Users\zengm\AppData\Local\JianyingPro\User Data\Log C:\Users\zengm\AppData\Local\JianyingPro\User Data\VELog

nodejs源码_nodejs之setTimeout源码解析

setTimeout是在系统启动的时候挂载的全局函数。代码在timer.js。function setupGlobalTimeouts() {const timers NativeModule.require(timers);global.clearImmediate timers.clearImmediate;global.clearInterval timers.clearInterval;global.clearTimeout timers.clear…

百度网盘PC端缓存文件夹

在C:\Users\zengm\AppData\Roaming\baidu\BaiduNetdisk\users\下面 BaiduYunCacheFileV0.db 文件为百度网盘目录数据,结构为: 百度网盘BaiduYunCacheFileV0.db数据库研究_wqq1027的博客-CSDN博客_百度网盘数据库最近研究了一下百度网盘的本地数据库文件…

实现三元组表示的两个稀疏矩阵的加法_K-BERT | 基于知识图谱的语言表示模型

1.研究背景BERT曾被应用在多项NLP任务中,并且取得了很好的结果。它通过在大规模开放语料库上进行预训练以获得通用的语言表示,然后在特定的下游任务中进行微调,吸收特定领域的知识。但这些模型在不同的领域执行知识驱动任务时,效果…

Excel单元格“删除线”的添加与删除

软件:windows,WPS 点击字体设计的小角标,进入更多设置,勾选“删除线”

excel 表格复制到word后,宽超出word如何调整?

网上很多方法是用“选择性粘贴----excel表格对象”,这个适用表格行数少的,不超过一页word的。 步骤 复制到word里后,选中表格,右键---自动调整--选择具体的调整方式。 调整后效果

sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询

知识点一、表的加法Union:删除表中的重复值union al:包含表中所有内容,包括重复值二、表的联结联结:join联结分为以下五种:交叉联结(cross join)又称为笛卡尔积:将表中的每一行与另外…

jenkins部署三种构建方式的详细步骤

部署背景:jenkins: CentOS 7.4C IP:172.16.3.74gitlab-11.5.3: CentOS 7.4D IP:172.16.4.74此上部署都是根据我之前的博客配置完成的;jenkins有三种构建方…

从业回忆,一次大胆的冒险,程序员转岗项目经理

有些事不必知道得太早 程序员这个行业,被“中年危机”言论导向后,就和洗脚城女技师差不多,年轻,漂亮,技术好,体力好的技师收入高,一边拿着高薪,赚着外快,一边吐槽是青春饭,经常熬夜,干不长久。 2010年之前,网上宣传程序员是青春饭,程序员中年危机的文章很少。近几…

word转freemarker和修改的步骤

第一步 编写好word,用freemarker语法替换内容 第二步 word另存为 word xml 第三步 修改后缀名为:.ftl 第四步 notepad XML插件美化显示,插件安装教程:Notepad 7.6以上版本安装XML Tools插件_lingquan0809的博客-CSDN博客Note…

逐行粒度的vuex源码分析

vuex源码分析 了解vuex 什么是vuex vuex是一个为vue进行统一状态管理的状态管理器,主要分为state, getters, mutations, actions几个部分,vue组件基于state进行渲染,当state发生变化时触发组件的重新渲染,并利用了vue的响应式原理…

Redis设计与实现之事件

目录 一、事件 1、文件事件 读事件 写事件 2、 时间事件 3、时间事件应用实例:服务器常规操作 4、事件的执行与调度 5、事件是否有重要性级别或优先级?需要立即处理还是可以延迟处理? 6、事件的类型是什么?是针对键的操作&#xff0…

项目验收材料整合流程

目标:多份word整合成一份项目验收材料 第一步:编写好word;准备好一份验收材料的封面与目录word 第二步:用WPS的word转PDF,批量转成PDF; 第三步:用Adobe Acrobat DC 合并转成的多个PDF成为一个…

[译]Kube Router Documentation

体系结构 Kube路由器是围绕观察者和控制器的概念而建立的。 观察者使用Kubernetes监视API来获取与创建,更新和删除Kubernetes对象有关的事件的通知。 每个观察者获取与特定API对象相关的通知。 在从API服务器接收事件时,观察者广播事件。 控制器注册以获…

windows11 22H2资源管理器开启多标签页

效果 步骤 windows11 22H2后续可能会推送该功能,现在是隐藏的,需要借助工具把这个隐藏功能开启 工具:vivetool 下载:Releases thebookisclosed/ViVe GitHub 步骤1:右键开始菜单,选择“终端(…

遇到“我觉得行才算行”的业主怎么办?

目录 案例 分析 案例 项目初期UI设计需求不确定,我们设计了几稿,业主还是不满意,没有确定最终稿。后来呢,业主安排了一位内部的美工A过来。美工A给出了很多修改意见,我们根据美工A的意见进行了修改,又反反复复改了好几版,最后业主不算满意地确定了。 后来项目要收尾…

ceph安装配置

简介 ceph是一个开源分布式存储系统,支持PB级别的存储,支持对 象存储,块存储和文件存储,高性能,高可用,可扩展。 部署网络建议架构图 部署 部署架构图,本次实验部署jewel版本 实验环境的Vagrant…