作者 | 杨照璐(微信号lwyzl0821)
编辑 | 言有三
这一次我们讲讲keras这个简单、流行的深度学习框架,一个图像分类任务从训练到测试出结果的全流程。
相关的代码、数据都在我们 Git 上,希望大家 Follow 一下这个 Git 项目,后面会持续更新不同框架下的任务。
Keras是一个非常流行、简单的深度学习框架,它的设计参考了torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。能够在TensorFlow,CNTK或Theano之上运行。 Keras的特点是能够快速实现模型的搭建, 简单方便地让你实现从想法到实验验证的转化,这都是高效地进行科学研究的关键。
Keras的安装非常简单,但是需要先安装一个后端框架作为支撑,TensorFlow, CNTK,Theano都可以,但是官网上强烈建议使用TensorFlow作为Keras的后端进行使用。本例以TensorFlow 140 版本作为Keras的后端进行测试。
通过上面两条命令就可以完成TensorFlow和Keras的安装,此处需要注意的一点是Keras的版本和TensorFlow的版本要对应,否则会出现意外的错误。具体版本对应关系可在网上进行查询。
31 MNIST实例
MNIST手写字符分类被认为是深度学习框架里的“Hello Word!”,下面简单介绍一下MNIST数据集案例的测试。Keras的官方github的example目录下提供了几个MNIST案例的代码,下载mnist_mlppy,mnist_cnnpy文件,本地运行即可,其他文件读者也可以自行测试。
32 数据定义
前面我们介绍了MNIST数据集实例,很多读者在学习深度学习框架的时候都卡在了这一步,运行完MNIST实例之后无从下手,很大原因可能是因为不知道怎么处理自己的数据集,这一节我们通过一个简单的图像二分类案例,介绍如何实现一个自定义的数据集。
数据处理有几种方式,一种是像MNIST、CIFAR数据集,这些数据集的特点是已经为用户打包封装好了数据。用户只要load_data即可实现数据导入。其实就是事先把数据进行解析,然后保存到pkl 或者h5等文件中,然后在训练模型的时候直接导入,输入到网络中;另一种是直接从本地读取文件,解析成网络需要的格式,输入网络进行训练。但是实际情况是,为了某一个项目我们不可能总是找到相应的打包好的数据集供使用,这时候自己建立一个dataset就十分重要。
Keras提供了一个图像数据的数据增强文件,调用这个文件我们可以实现网络数据加载的功能。
此处采用keras的processing模块里的ImageDataGenerator类定义一个图像分类任务的dataset生成器:
下面简单地介绍一下上面的代码,完整代码请移步Git工程。
Keras的processing模块中提供了一个能够实时进行数据增强的图像生成类ImagGenerator,该类下面有一个函数flow_from_directory,顾名思义该函数就是从文件夹中获取图像数据。关于ImageGenerator更多的使用可以参考官方源码。数据集结构组织如下:
此处还需要注意的一点是,我们现在进行的是简单的图像分类任务训练,假如要完成语义分割,目标检测等任务,则需要自定义一个类(继承ImageDataGenerator),具体实现可以查询相关代码进行参考。
Keras网络模型搭建有两种形式,Sequential 顺序模型和使用函数式API的 Model 类模型。本教程的例子采用一个简单的三层卷积,以及两层全连接和一个分类层组成的网络模型。由于函数式API更灵活方便,因此下面采用函数式方法搭建模型,模型定义如下:
41 函数式API
即输出是12通道,卷积核大小33,步长为2,padding='same'表示边缘补零
axis表示需要归一化的坐标轴,bn_axis=3,由于采用TensorFlow作为后端,因此这句代码表示在通道数坐标轴进行归一化。
x = Flatten()(x) 表示将卷积特征图进行拉伸,以便和全连接层Dense()进行连接。
Dense()实现全连接层的功能,1200是输出维度,‘relu'表示激活函数,使用其他函数可以自行修改。
最后一层采用‘softmax’激活函数实现分类功能。
最终返回Model,包含网络的输入和输出。
42 模型编译
网络搭建完成,在网络训练前需要进行编译,包括学习方法、损失函数、评估标准等,这些参数分别可以从optimizer、loss、metric模块中导入。具体代码如下:
其中callbacks模块包含了TensorBoard, ModelCheckpoint,LearningRateScheduler等功能,分别可以用来可视化模型,设置模型检查点,以及设置学习率策略。
51 模型训练
Keras模型训练过程非常简单,只需一行代码,设置几个参数即可,具体代码如下:
首先指定数据生成器,train_generator, 前面介绍过;steps_per_epoch是每次epoch循环的次数,通过训练样本数除以batch_size得到;epochs是整个数据集重复多少次训练。
Keras是高度封装的,在模型训练过程中,看不到网络的预测结果和网络的反向传播过程,只需定义好损失函数,事实上,网络定义中的模型输出会包含网络的输入和输出。
52 训练过程可视化
keras可以采用tensorboard实现训练过程的可视化。执行完下面的命令就可以在浏览器访问>
看方向
如果选择嵌入式硬件开发,就不懂了
软件开发的话,分底层和应用层
我是从事wince驱动开发的(快满一年),
以wince为例,底层就是boot、bsp修改、驱动开发这几部分
学习路线:
1、买个开发板
2、按照开发板上的例子玩玩,ARM汇编稍微能看懂,写点简单的程序跑跑,对汇编有个大概的了解,bootloader等等会多少涉及点汇编的东西
然后就是开发板上的一些驱动玩玩。如果可以拿相似的BSP移植到开发板上就更好了,对BSP就有更多的认识了,学完以上可能可以找到工作,在工作中进一步加深理解
如果是应用的话,wince,我们写应用用的是VS2005,VC++,和PC的开发基本差不多
学完一个 *** 作系统,切换到另一个平台相对而言还是蛮快的,基本都是相通的
我之前的经验是,我买了开发板玩了ADS程序写了小型的程序,就是把LED啊、液晶屏啊、等等驱起来,然后,在linux下玩驱动,写了几个简单的流驱动,去应聘,鬼使神差被招进去玩wince驱动了,感觉差得不是很多,玩了2周就开始上手,2个月之后,底层这块就都扔给我了
以上,仅供参考(至于开发板,如果是消费电子类的,好像三星的S3C系列用的人比较多,开发板也很多,工业类的就不懂了。至于选哪家开发板厂家,百度google一下)
《Tensorflow:实战Google深度学习框架》(郑泽宇)电子书网盘下载免费在线阅读
资源链接:
链接:>
提取码:n3qv
书名:Tensorflow:实战Google深度学习框架
作者:郑泽宇
豆瓣评分:80
出版社:电子工业出版社
出版年份:2017-2-10
页数:296
内容简介:
TensorFlow是谷歌2015年开源的主流深度学习框架,目前已在谷歌、优步(Uber)、京东、小米等科技公司广泛应用。《Tensorflow实战》为使用TensorFlow深度学习框架的入门参考书,旨在帮助读者以最快、最有效的方式上手TensorFlow和深度学习。书中省略了深度学习繁琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow样例程序介绍如何使用深度学习解决这些问题。《Tensorflow实战》包含了深度学习的入门知识和大量实践经验,是走进这个最新、最火的人工智能领域的首选参考书。
作者简介:
郑泽宇,现为才云科技(Caicloudio)联合创始人、首席大数据科学家。针对分布式TensorFlow上手难、管理难、监控难、上线难等问题,他带领团队成功开发了国内首个成熟的分布式TensorFlow深度学习平台(TensorFlow as a Service)。基于此平台,才云大数据团队为安防、电商、金融、物流等多个行业提供有针对性的人工智能解决方案。归国创业之前,郑泽宇曾任美国谷歌高级工程师。从2013 年加入谷歌,郑泽宇作为主要技术人员参与并领导了多个大数据项目。由他提出并主导的产品聚类项目用于衔接谷歌购物和谷歌知识图谱(knowledge graph)数据,使得知识卡片形式的广告逐步取代传统的产品列表广告,开启了谷歌购物广告在搜索页面投递的新纪元。郑泽宇于2011年5月获得北京大学计算机学士学位,并荣获北京大学信息科学技术学院十佳优秀毕业论文、北京大学优秀毕业生。2013年5月获得美国 Carnegie Mellon University(CMU)大学计算机硕士学位,并获得西贝尔奖学金 (Siebel Scholarship)。郑泽宇在机器学习、人工智能领域有多年研究经验,并在SIGIR、SIGKDD、ACL、ICDM、ICWSM等顶级国际会议上发表多篇学术论文。
现在互联网发展迅速,众多行业巨头,都已经转投到人工智能领域,而人工智能的首选编程语言就是python,所以学好Python能够从事的工作还是很多的,而且前景非常不错。
学完python可以应用于以下领域:
①Web 和 Internet开发
②科学计算和统计
③人工智能
④桌面界面开发
⑤软件开发
⑥后端开发
⑦网络爬虫
可以从事的岗位也很多,比如Python爬虫工程师,大数据工程师等等!
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
《Tensorflow:实战Google深度学习框架》(郑泽宇 / 顾思宇)电子书网盘下载免费在线阅读:
链接:> 提取码:EDYQ
书名:Tensorflow:实战Google深度学习框架
豆瓣评分:80
作者: 郑泽宇 / 顾思宇
出版社: 电子工业出版社
出品方: 博文视点
出版年: 2017-2-10
页数: 296
内容简介
TensorFlow是谷歌2015年开源的主流深度学习框架,目前已在谷歌、优步(Uber)、京东、小米等科技公司广泛应用。《Tensorflow实战》为使用TensorFlow深度学习框架的入门参考书,旨在帮助读者以最快、最有效的方式上手TensorFlow和深度学习。书中省略了深度学习繁琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow样例程序介绍如何使用深度学习解决这些问题。《Tensorflow实战》包含了深度学习的入门知识和大量实践经验,是走进这个最新、最火的人工智能领域的首选参考书。
作者简介
郑泽宇,现为才云科技(Caicloudio)联合创始人、首席大数据科学家。针对分布式TensorFlow上手难、管理难、监控难、上线难等问题,他带领团队成功开发了国内首个成熟的分布式TensorFlow深度学习平台(TensorFlow as a Service)。基于此平台,才云大数据团队为安防、电商、金融、物流等多个行业提供有针对性的人工智能解决方案。归国创业之前,郑泽宇曾任美国谷歌高级工程师。从2013 年加入谷歌,郑泽宇作为主要技术人员参与并领导了多个大数据项目。由他提出并主导的产品聚类项目用于衔接谷歌购物和谷歌知识图谱(knowledge graph)数据,使得知识卡片形式的广告逐步取代传统的产品列表广告,开启了谷歌购物广告在搜索页面投递的新纪元。郑泽宇于2011年5月获得北京大学计算机学士学位,并荣获北京大学信息科学技术学院十佳优秀毕业论文、北京大学优秀毕业生。2013年5月获得美国 Carnegie Mellon University(CMU)大学计算机硕士学位,并获得西贝尔奖学金 (Siebel Scholarship)。郑泽宇在机器学习、人工智能领域有多年研究经验,并在SIGIR、SIGKDD、ACL、ICDM、ICWSM等顶级国际会议上发表多篇学术论文。
以上就是关于keras如何快速入门全部的内容,包括:keras如何快速入门、第三方库Tensorflow编写程序正常运行,出现warning的问题、有没有嵌入式开发的学习路线,越详细越好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)