Keras:基于Python的深度学习库*万震(WANZhen)Godblesswzwanzhen@cqu.edu.cn2018年5月16日*Copyright©2018bykeras-team前言整理Keras:基于Python的深度学习库(PDF版)的主要原因在于学习Keras深度学习库时方便本地查阅,最新PDF版本请访问:。感谢keras-team所做的中文翻译工作,本文档制作基于此处。严正声明:本文档可免费用于学习和科学研究,可自由传播,但切勿擅自用于商业用途,由此引发一切后果作者概不负责。ThemainreasonoforganizingPDFversionbasedtheChineseKerasMarkdownisthatitiseasytoreadlocallywhenlearningtheKerasDeepLearningLibrary.ForthelatestPDFversion,pleasevisit:Thisdocumentcanbefreelyusedforlearningandscientificresearchandisfreelydisseminated,butitmustnotbeusedforcommercialpurposes.Otherwise,theauthorisnotresponsiblefortheconsequences.目录I目录1Keras:基于Python的深度学习库11.1你恰好发现了Keras....................................11.2指导原则..........................................11.3快速开始:30秒上手Keras...............................11.4安装指引..........................................31.5使用TensorFlow以外的后端...............................31.6技术支持..........................................31.7为什么取名为Keras?...................................42为什么选择Keras?52.1Keras优先考虑开发人员的经验.............................52.2Keras被工业界和学术界广泛采用............................52.3Keras可以轻松将模型转化为产品............................52.4Keras支持多个后端引擎,并且不会将你锁定到一个生态系统中..........62.5Keras拥有强大的多GPU和分布式训练支持......................62.6Keras的发展得到深度学习生态系统中的关键公司的支持..............63快速开始73.1Sequential顺序模型指引.................................73.1.1开始使用Keras顺序(Sequential)模型.....................73.1.2指定输入数据的尺寸...............................73.1.3编译........................................83.1.4训练........................................83.1.5例子........................................93.1.5.1基于多层感知器(MLP)的softmax多分类:............103.1.5.2基于多层感知器的二分类:......................113.1.5.3类似VGG的卷积神经网络:.....................113.1.5.4基于LSTM的序列分类:.......................123.1.5.5基于1D卷积的序列分类:......................133.1.5.6基于栈式LSTM的序列分类.....................133.1.5.7带有状态(stateful)的相同的栈式LSTM模型............143.2函数式API指引......................................163.2.1开始使用Keras函数式API...........................163.2.2例一:全连接网络................................163.2.3所有的模型都可调用,就像网络层一样....................163.2.4多输入多输出模型................................173.2.5共享网络层....................................193.2.6层「节点」的概念................................20目录II3.2.7更多的例子....................................213.2.7.1Inception模型.............................213.2.7.2卷积层上的残差连接..........................223.2.7.3共享视觉模型..............................223.2.7.4视觉问答模型..............................233.2.7.5视频问答模型..............................243.3KerasFAQ:常见问题解答................................253.3.1KerasFAQ:常见问题解答............................253.3.2如何引用Keras?..................................253.3.3如何在GPU上运行Keras?...........................253.3.4如何在多GPU上运行Keras模型?.......................263.3.4.1数据并行................................263.3.4.2设备并行................................263.3.5“sample”,“batch”,“epoch”分别是什么?...................273.3.6如何保存Keras模型?..............................273.3.6.1保存/加载整个模型(结构+权重+优化器状态).........273.3.6.2只保存/加载模型的结构........................283.3.6.3只保存/加载模型的权重........................283.3.6.4处理已保存模型中的自定义层(或其他自定义对象).......293.3.7为什么训练误差比测试误差高很多?......................303.3.8如何获取中间层的输出?............................303.3.9如何用Keras处理超过内存的数据集?....................313.3.10在验证集的误差不再下降时,如何中断训练?................313.3.11验证集划分是如何计算的?...........................313.3.12在训练过程中数据是否会混洗?........................313.3.13如何在每个epoch后记录训练集和验证集的误差和准确率?........313.3.14如何「冻结」网络层?..............................323.3.15如何使用有状态RNN(statefulRNNs)?....................323.3.16如何从Sequential模型中移除一个层?....................333.3.17如何在Keras中使用预训练的模型?......................343.3.18如何在Keras中使用HDF5输入?.......................343.3.19Keras配置文件保存在哪里?..........................353.3.20如何在Keras开发过程中获取可复现的结果?................354模型374.1关于Keras模型......................................374.2Sequential顺序模型API.................................384.2.1Sequential顺序模型API.............................384.2.2常用Sequential属性...............................384.2.3Sequential模型方法...............................38目录III4.2.3.1compile.................................384.2.3.2fit....................................394.2.3.3evaluate.................................404.2.3.4predict..................................414.2.3.5train_on_batch.............................414.2.3.6test_on_batch..............................414.2.3.7predict_on_batch...........................424.2.3.8fit_generator..............................424.2.3.9evaluate_generator..........................434.2.3.10predict_generator...........................444.2.3.11get_layer................................444.3函数式API.........................................464.3.1Model类API...................................464.3.2Model的实用属性................................464.3.3Model类模型方法................................464.3.3.1compile...