《Keras深度学习实战(1).docx》由会员分享,可在线阅读,更多相关《Keras深度学习实战(1).docx(5页珍藏版)》请在第一文库网上搜索。
1、1ibratus并未使用它的直觉的内置策略,而是用算法来计算出一个可以在风险和奖赏问达到平衡的策略,又叫纳什均衡。从2017年1月17日1月31日,1ibratUS与人类4个顶尖扑克牌选手(更多信息请参考UppingtheAnte:TopPokerProsFaceOffvs.Artificia1Inte11igence,CarnegieMe11onUniversity,January2017)展开对决,并轰动性地将他们全部击败了。DeePStaCk的直觉通过使用随机扑克牌局生成的样例来进行强化学习训练。它同来自17个国家的33位专业选手对战并赢得比优秀玩家更好的最佳玩家评级(更多信息请参考Th
2、eUncannyIntuitionofDeep1earningtoPredictHumanBehavior,作者C.E.Perez,Mediumcorporation,IntuitionMachine,February13,2017)。如你所见,确实有非常激动人心的时刻。深度学习网络能够玩游乐场游戏的发展,使得网络可以高效读懂你的想法,或至少参与(有时是非理想的)人类行为并在故弄玄虚的游戏中获胜。深度学习带来的可能性似乎是无限的。8. 4小结本章中,我们学习了强化学习背后的概念,以及如何利用它在KeraS中构建基于奖赏回报玩游乐场游戏的深度学习网络。然后我们简要讨论了这个领域的进展,如可以教会
3、它以超人级别玩更难的游戏,如围棋和扑克。虽然玩游戏似乎是看起来没有意义的应用,但这些构思是走向通用人工智能应用的第一步,其中网络可以从经验中学习,而非大量的训练数据。第9章结束语恭喜你读到了本书的末尾!让我们花时间看看我们从开始到现在学到的东西。如果你和大多数读者一样,了解一些Python知识,具备一些机器学习背景,你就有兴趣学习更多的深度学习知识。并能够使用Python应用这些深度学习技巧。你学习了如何在自己的机器上安装Keras,并开始使用它构建简单深度学习模型。之后你学习了原始的深度学习模型,即多层感知机,也被称为全连接网络(Fu11yconnectednetwork,FCN)o你学习了
4、使用KeraS构建感知机网络。你还学习了通过调整多个可调参数来获取更好的网络结果。Kera会替你完成一大部分艰辛的工作,因为它有很合理的默认设置。还是存在一些情况,使得这些知识对你很有帮助。紧接着,你了解了卷积神经网络。最初的构建是为了利用图像的局部空间特征,尽管你也能使用它们处理其他类型的数据,如文本、音频和视频。你再一次看到了如何使用KeraS构建CNN网络。你也看到了KeraS为简单、直接的构建卷积神经网络提供的功能。你看到了如何使用预训练好的图像网络,通过迁移学习和网络调整预测你自己的图像。接下来,你学习了生成对抗网络,它是一对尝试互相攻击的网络(通常是CNN),并在此过程中使彼此更加
5、强大。生成对抗网络是深度学习领域的尖端技术。最近的很多工作都围绕着生成对抗网络进行。然后,我们把注意力转向文本。我们学习了词嵌入,它在最近儿年成为了用于文本向量表示的最通用的技术。我们了解了多个流行的词嵌入算法,并看到了如何使用预训练好的词嵌入表示词的集合,以及Keras和gensim对词嵌入的支持。我们之后学习了循环神经网络,这是一类优化后用于处理文本或时间序列这类序列化数据的神经网络。我们了解了基本RNN模型的不足以及这些不足如何使用更强大的变体如长短期网络和门循环单元得以改善。我们看了这些组件应用的几个例子。我们也简要查看了有状态RNN模型,以及它们可能用到的场合。接下来,我们看了几个额
6、外的模型,它们和我们讨论过的模型并不相近。其中的自动编码器是一个无监督学习模型,它是回归网络,用于预测连续值而非离散标签。我们介绍了Keras功能API,它让我们利用多个输入输出和多个管道间共享组件来构建复杂的网络。我们查看了如何自定义Keras以添加现在不存在的功能。最后,我们在游乐场游戏的场景下讨论了使用强化学习训练深度学习网络,这被很多人认为是通用人工智能应用的第一步。我们给出了一个用Keras实现的例子来训练一个简单游戏。之后我们简要描述了这个领域的改进,就以超人的水平玩更难的游戏如围棋和扑克而-X-.置们相信你现在已经掌握了使用深度学习和KeraS解决新的机器学习问题的技能。这是你在
7、成为深度学习专家的路上需要具备的重要和有价值的技能。感谢你让我们在你成为深度学习大师的路上可以有所助益。9. 1Keras2.O新特性据FranCOiSCho11et说,KeraS在两年前的2015年3月发布,之后它的用户从1个增加到10万个。图9.1来自KCraS博客,展示了KeraS用户随时间的增长数量。Thursday,March9,20177DayActiveUsers:34,73814DayActiveUsers:59,19430DayActiveUsers:107,942KemS文档用户图9.1Keras2.0的一个重要更新是,从TensorF1ow1.2开始,其API将成为Ten
8、sorF1ow的一部分。确实,KCraS正被更多地当作深度学习的通用语,并成为在增加的深度学习场景中使用的规范。例如,Skyinind用SCa1a为SCaINee实现了KeraS规范,KeraS.js为JavaScript在浏览器上支持了深度学习的直接运行。为MXNET和CNTK深度学习工具包提供KeraSAPI的工作也在进行中。9.1.1安装Keras2.O安装KeraS2.O非常简单,先运行以下命令:pipinsta11keras-upgrade然后执行以下命令:pipinsta11tensorf1ow-upgrade9.1.2API的变化Keras2.0的变化隐含了一些AP1的新想法的需
9、要,其完整细节请参考发布注释(同时测试Keras1和2版本时避免警告的实用函数/导入keraskeras_2=int(keras._version.sp1it(.)0)1#Keras1deffi!generator(mode1,generator,epochs,steps_per_epoch):ifkeras_2:mode1,fit_generator(generator,epochs=epochs,steps_per_epoch=steps_per_epoch)e1se:mode1,fit_generator(generator,nb_epoch=epochs,samp1es_per_epo
10、ch=steps_per_epoch)deffit(mode1,x,y,nbepoch=10,*args,*kwargs):ifkeras_2:returnmode1,fit(x,y,*args,epochs=nb_epoch,*kwargs)e1se:returnmode1,fit(x,y,*args,nb_epoch=nb_epoch,*kwargs)def1112(11=0,12=0):ifkeras_2:returnkeras.regu1arizers.1112(11,12)e1se:returnkeras.regu1arizers.1112(11,12)defDense(units,
11、Wregu1arizer=None,Winitia1izer=,g1orot-uniform,*kwargs):ifkeras_2:returnkeras.1ayers.Dense(units,kerne1_regu1arizer=W_regu1arizer,kerne1_initia1izer=W_initia1izer,*kwargs)e1se:returnkeras.1ayers.Dense(units,W_regu1arizer=Wregu1ar!zer,init=Winitia1izer,*kwargs)defBatchNorma1ization(mode=0,*kwargs):if
12、keras_2:returnkeras.1ayers.BatchNorma1ization(*kwargs)e1se:returnkeras.1ayers.BatchNorma1ization(mode=mode,*kwargs)defConvo1ution2D(units,w,h,W_reguIarizer=None,Winitia1izer,g1orotuniform,borderjnode=same,*kwargs):ifkeras_2:returnkeras.1ayers.Conv2D(units,(w,h),padding=border_mode,kerne1regu1arizer=
13、Wregu1arizer,kerne1_initia1izer=W_initia1izer,*kwargs)e1se:returnkeras.1ayers.Conv2D(units,w,h,border_mode=border_mode,Wregu1arizer=Wregu1arizer,init=W_initia1izer,*kwargs)defAveragePoo1ing2D(poo1_size,border_mode=,va1id,*kwargs):ifkeras_2:returnkeras.1ayers.AveragePoo1ing2D(poo1_size=poo1_size,padd
14、ing=border_mode,*kwargs)e1se:returnkeras.1ayers.AveragePoo1ing2D(poo1_size_poo1_size,border_mode=border_mode,*kwargs)Keras2.O也有一些突破性的改变,特别的地方如下: InaXOUt全连接层,时序分布全连接层,以及highway遗留层已经被移除。 批归一化层不再支持argument模式,因为Keras内部己经改变。自定义层的更新。没有写入文档的Keras功能可能已发生大的改变。另外,KeraS基础代码会检测KCraS1X的使用。AP1调用并提示错误警告,告知用户如何修改调用为Keras2的API。如果你有了Keras1.X的代码并因为对非突破性改变的恐惧而犹豫是否该尝试KeraS2,这些来自KeraS底层代码的错误提示会在迁移中给你很大帮助。