对于深度学习领域的从业者来说,Keras当然不陌生,它是深度学习的主流框架之一。2015年3月27日,谷歌软件工程师、Keras之父FrancoisChollet在他的GitHub上提交并发布了Keras的第一个版本。作为纯Python编写的深度学习框架,Keras的代码更加简单方便,适合初学者。此外,Keras具有很强的可扩展性,可以直观地定义神经网络,并且函数式API的使用允许用户将层定义为函数。Keras官网地址:https://keras.io/为了训练自定义的神经网络,Keras需要一个后端。在v1.1.0之前,Keras默认的后端是Theano。2015年11月9日,Google发布了TensorFlow。Keras开始支持TensorFlow作为后端。渐渐地,TensorFlow成为最受欢迎的后端,并从Kerasv1.1.0版本开始成为其默认后端。tf.keras是在TensorFlowv1.10.0中引入的,这是将Keras直接集成到TensorFlow包中的第一步。当谷歌在2019年6月发布TensorFlow2.0时,他们宣布Keras为TensorFlow的官方高级API。并且,在Keras2.3.0发布时,Francois表示这是第一个与tf.keras同步的Keras版本,也是支持Theano等多后端的Keras最终版本。所有深度学习从业者都应该将他们的代码转换为TensorFlow2.0和tf.keras包。这意味着两者合并,但许多开发商并不认同这个看似双赢的决定。API的混乱和碎片化不仅让开发者不知所措,也让开发者更难找到教程。是时候改变了!最近,Keras之父FrancoisChollet在他的Twitter上宣布了一项重要决定:他们将Keras代码从TensorFlow代码库中分离出来,并移回了他们自己的repo。Keras从TensorFlow中分离出来有什么好处?Francois说:“这将改善开源贡献者的开发体验。对于用户来说,这将允许他们在本地运行测试,不再需要编译TF来测试Keras,同时也会改善CI时间。”Keras正式从TensorFlow代码库分离Keras分离过程的负责人是谷歌的高级软件工程师ScottZhu。他代表Keras团队向所有Keras用户发表了公开声明,解释了Keras与TensorFlow代码库分离的原因。用户带来的诸多便利。开发团队花了很多精力使TensorFlow更加模块化,并优化了Keras和TensorFlow之间的依赖关系。最终Keras从TensorFlow代码库中剥离出来,拥有自己独立的代码库。这使Keras可以使用TensorflowPythonAPI作为PIP包依赖项,而无需在构建和测试时编译TensorFlow。因此,在本地运行KerasBazel测试现在只需几分钟而不是几小时。更改后,当前TensorFlow代码库的Keras部分将很快被删除。这意味着:1、Keras开源代码库的访问地址会发生变化;原地址:https://github.com/tensorflow/tensorflow新地址:https://github.com/keras-team/keras2。用于代码库管理的git工具。3.任何未在先前代码库中解决的与Keras相关的活动问题将在现有票证线程中处理,并将通过提交到新代码库来修复;4.与原始代码库相关的旧问题将被关闭。如果您认为它仍然值得提问,请随时在新代码库中重新打开该问题;5.在此更改之前未完成的新Keras代码库中的任何PR/问题都被视为旧的,将被关闭。一个用户想投稿,怎么投稿?当用户提交自己的代码进行审核并获得批准时,他们必须签署谷歌个人贡献者许可协议(CLA),这样代码才能放在Keras代码库中。此外,在提交进一步的贡献时,用户应首先通过问题跟踪器联系Keras。所有用户(包括项目成员)提交的内容都将接受审查。为此,Keras使用GitHub拉取请求(pullrequests,PRs)并建议用户在创建PR之前阅读相关指南。本地修改并通过测试验证后,用户可以在keras-team/keras项目中打开并发送一个PR,然后会经过一系列的测试来验证其正确性。一旦PR被审查者测试并批准,PR将被镜像到Google内部存储库。一旦合并到Google的内部存储库成功完成,PR也将被标记为已合并。这是和TensorflowOSS一样的贡献流程,示例如下图:在做任何改动之前,Keras团队建议先开一个issue并在上面讨论。Keras还提供反馈并验证用户提出的更改。如果更改很小,例如文档修复中的简单错误修复,则无需讨论即可打开PR。与个人用户不同,企业用户提交的投稿需要遵守《谷歌软件授权与企业贡献者许可协议》。开发所需工具使用Keras进行开发所需工具主要包括:Bazel工具和Python,用于创建和测试Keras项目;用于代码库管理的git工具。设置和检查本地工作空间使用AppleMac电脑(Linux系统的配置非常相似),使用以下命令设置和检查本地工作空间的配置:下载Keras代码并设置虚拟环境Python虚拟环境是创建独立环境的强大工具,可隔离任何系统级配置更改。因此,Keras强烈建议避免任何意外的依赖关系或版本控制问题。本地运行测试在本地运行一个测试的代码如下:(venv_dir)scottzhu-macbookpro2:kerasscottzhu$bazeltest-coptkeras:backend_testWARNING:Thefollowingconfigswereexpandedmorethanonce:[v2].Forrepeatableflags,repeatsarecountedtwiceandmayleadtounexpectedbehavior.INFO:Optionsprovidedbytheclient:Inherited'common'options:--isatty=1--terminal_columns=147INFO:Readingrcoptionsfor'test'from/Users/scottzhu/workspace/keras/.bazelrc:Inherited'build'options:--apple_platform_type=macos--defineopen_source_build=true--define=use_fast_cpp_protos=false--define=tensorflow_enable_mlir_generated_gpu_kernels=0--define=allow_oversize_protos=true--spawn_strategy=standalone-copt--announce_rc--define=grpc_no_ares=true--config=short_logs--config=v2INFO:Readingrcoptionsfor'test'from/Users/scottzhu/workspace/keras/.bazelrc:'test'options:--defineopen_source_build=true--define=use_fast_cpp_protos=false--config=v2INFO:Foundapplicableconfigdefinitionbuild:short_logsinfile/Users/scottzhu/workspace/keras/.bazelrc:--output_filter=DONT_MATCH_ANYTHINGINFO:Foundapplicableconfigdefinitionbuild:v2infile/Users/scottzhu/workspace/keras/.bazelrc:--define=tf_api_version=2--action_env=TF2_BEHAVIOR=1INFO:Foundapplicableconfigdefinitionbuild:v2infile/Users/scottzhu/workspace/keras/keras:--define=tf_api_version=2--action_env=TF2_BEHAVIOR=1INFO:Analyzedtarget//keras:backend_test(0packagesloaded,0targetsconfigured).INFO:Found1testtarget...目标//keras:backend_testup-to-date:bazel-bin/keras/backend_testINFO:Elapsedtime:45.535s,CriticalPath:45.26sINFO:19processes:19local.INFO:Buildcompletedsuccessfully,20totalactions//keras:backend_testPASSEDin45.2sStatsover4runs:max=45.2s,min=40.0s,avg=41.5s,devFO=2.1sBuildcompletedsuccessfully,20totalactions最后给大家推荐一个Keras中文教程。由Keras团队软件工程师金海峰翻译自官网教程。详细介绍了Keras和TensorFlow的基本用法和核心概念。)和超网络(Hypernetwork)这两个完整的例子展示了如何在实践中使用Keras
