Keras 简介
Keras是一个用Python编写的深度学习应用程序接口(API)。Keras早期的版本支持多个后端,如TensorFlow、Microsoft Cognitive Toolkit、Theano和PlaidML等,但从2.4版本开始,Keras只支持TensorFlow。Keras的开发旨在实现深度神经网络的快速实验迭代,让用户能够尽可能快将想法转换为结果,使得研究和开发深度学习模型变得更加容易。
Keras包含许多常用神经网络构建块的实现,如层、目标、激活函数、优化器和一系列工具,可以更轻松地处理图像和文本数据,以便简化深度神经网络领域的编程。
除标准神经网络外,Keras还支持卷积神经网络和循环神经网络。它支持其他常见的实用层,如Dropout、批量归一化(batch normalization)和池化(pooling)等。
Keras利用TensorFlow平台的完整部署功能,通过将Keras模型导出到JavaScript,可以在浏览器中直接运行;导出到TF Lite,则可以在iOS、Android和嵌入式设备上运行。这一特点使得Keras成为一个功能强大且灵活的工具,适用于广泛的深度学习应用场景。
Keras原是作为ONEIROS(开放式神经电子智能机器人操作系统)项目研究工作的一部分而开发的,由Google工程师François Chollet开发和维护。在2015年,Keras分离成为了一个独立的开源的人工神经网络工具。它的最初版本以Theano为后台,设计理念参考了Torch,但完全由Python编写。
Keras 特点
Kera利用各种优化技术使得神经网络应用程序接口(API)使用变得容易,性能更好。其主要特点有:
简单,而非简单化。Keras减少了开发者的认知负荷,能够专注于问题中真正重要的部分。
灵活。Keras采用了逐步揭示复杂性的原则。简单的工作流应该快速而简单,而任意高级的工作流应该是可以通过建立在已知基础之上的清晰路径来实现。
强大。Keras提供了行业强度的性能和可扩展性。
Kera 设计原则
模块化 :一个模型被理解为独立的、完全可配置的模块的序列或图形,这些模块可以以尽可能少的限制组合在一起。特别是neural layers(神经网络层)、cost functions(损失函数)、optimizers(优化器)、(initialization schemes)初始方案、激活函数(activation functions)、regularization schemes(正则方案),都是独立模块,可以组合创建新模型。
极简 :每个模块都应该保持简短和简洁,每段代码在第一次阅读时都应该透明易懂,没有所谓的“黑魔法”,因为这会妨碍迭代的速度以及创新的能力。
易扩展:添加新的模块非常简单(作为新建类和函数),并且现有的模块提供了大量的示例。能够轻松创建新的模块,可以实现全面的表达能力,使Keras适合高级研究。
Python : 使用Python进行开发,无需采用声明格式单独的模型配置文件。模型用Python代码进行描述,更加简洁、易于调试,并且可轻松扩展。
Kera 是最广泛使用的机器学习框架之一
截至2023年初,Keras拥有约250万名开发者,处于一个庞大的社区和生态系统的中心。
Keras已被YouTube、Netflix、Uber、Yelp、Instacart、Zocdoc、Twitter、Square/Block等公司使用。Keras在将深度学习作为产品核心的初创企业中特别受欢迎。Keras也被许多你可能不会与机器学习联系起来的知名公司使用,例如JP Morgan Chase、Orange 和 Comcast,以及NASA、美国能源部(DOE)和欧洲核子研究所(CERN)等机构的研究部门。
在Kaggle进行的2022年 "数据科学和机器学习的现状 "调查中,Keras在机器学习开发者和数据科学家中的采用率为61%。
Keras 使模型转化为产品变得容易
与其他深度学习API相比,你的Keras模型可以在更多的平台上轻松部署:
在服务器上,可以通过Python或Node.js运行时部署
在服务器上,可以通过TFX/TF Serving部署
在浏览器中,可以通过TF.js部署
在Android或iOS设备上,可以通过TF Lite或Apple的CoreML部署
在树莓派、Edge TPU或其他嵌入式系统上部署
Keras 生态系统
Kera项目并不局限于用于构建和训练神经网络的核心Kera API。它涵盖了广泛的相关举措,涵盖了机器学习工作流程的每个步骤。
KerasTuner
KerasTuner是一个易于使用、可扩展的超参数优化框架,解决了超参数搜索的难点。可以使用define-by-run语法轻松配置搜索空间,然后利用可用的搜索算法来为模型找到最佳的超参数值。KerasTuner内置了贝叶斯优化(Bayesian Optimization)、Hyperband和随机搜索算法(Random Search algorithms),并且易于研究人员扩展,以便尝试新的搜索算法。
KerasNLP
KerasNLP是一个自然语言处理库,支持用户完成整个开发周期。我们的工作流由模块化组件构建,这些组件在开箱即用时就具有最先进的预设重量和架构,并且在需要更多控制时可以轻松定制。我们强调所有工作流的in-graph计算,以便开发人员可以轻松使用TensorFlow生态系统实现产品化。
KerasCV
KerasCV是一个模块化的面向计算机视觉的Keras组件库。这些组件包括模型、层、度量、损失、回调和实用函数。
KerasCV的主要目标是为训练最先进的计算机视觉模型提供一个一致的、优雅的和愉快的API。用户应该能够仅使用Keras、KerasCV和TensorFlow核心(即tf.data)组件来训练最先进的模型。
可以理解KerasCV为Keras API的横向扩展:组件是新的第一方Keras对象(层、指标等),它们过于专业化而不能添加到核心Keras库中。它们享有与核心Keras API相同的完善程度和向后兼容性保证,并且由Keras团队维护。
API可协助完成常见的计算机视觉任务,如数据增强、分类、目标检测、图像生成等等。应用计算机视觉工程师可以利用KerasCV为所有这些常见的任务快速组建生产级的、最先进的训练和推理管道。
除了API一致性之外,KerasCV组件的目标是实现混合精度兼容性、QAT兼容性、XLA可编译以及TPU兼容性。我们还旨在为车载GPU、移动和边缘芯片等设备上的部署提供通用的模型优化工具。
AutoKeras
AutoKeras是一个基于Keras的AutoML系统,由Texas A&M University的DATA Lab开发。AutoKeras的目标是让每个人都能轻松使用机器学习。它提供了高阶端到端API,如ImageClassifier或TextClassifier,以便用几行代码解决机器学习问题,同时提供了进行架构搜索的灵活构建模块。
TensorFlow.js
TensorFlow.js是TensorFlow的JavaScript运行时,它可以在浏览器或Node.js服务器上运行TensorFlow模型,用于训练和推理。它原生支持加载Keras模型,包括在浏览器中直接微调或重新训练Keras模型的能力。
TensorFlow Lite
TensorFlow Lite是一个高效的设备端推理运行时,它原生支持Keras模型。模型可以在Android、iOS或嵌入式设备上进行部署。
Model Optimization Toolkit
TensorFlow Model Optimization Toolkit是一组实用程序,通过执行后训练权重量化和剪枝感知训练,使推理模型更快、更省内存、更省电。它原生支持Keras模型,其剪枝API直接建立在Keras API之上。
TFX integration
TFX是一个用于部署和维护生产机器学习管道的端到端平台。TFX具有对Keras模型的原生支持。
TensorFlow Recommenders
TensorFlow Recommenders是一个用于构建推荐系统模型的库,基于Keras构建。它可以帮助完成构建推荐系统的整个工作流:数据准备、模型构建、训练、评估和部署。
TensorFlow Decision Forests
TensorFlow Decision Forests是一个在TensorFlow和Keras中训练、运行和解释决策森林模型(例如,随机森林、梯度提升树)的库。它支持分类、回归、排名和提升。
Model Remediation Toolkit
TensorFlow/Keras模型修正工具包是一个实用程序库,用于识别和解决深度学习模型中的公平和偏差问题,构建于Keras API之上。
小结
Keras是一个开源、简单、模块化的应用程序接口(API)库,提供了非常强大的功能来学习深度学习。Keras在TensorFlow上运行,借助TesroFlow的生态,可以快速部署在各种不同的应用和平台上。有许多机器学习框架基于Keras开发,Keras优化了训练和部署,使得开发和研究更加容易。
计算资源、算法大模型都可以成为一种服务,为用户提供一种界面或应用程序接口(API)。计算资源或系统互连也需要应用程序接口(API)来连接,以此来增强应用或服务的能力。随着网络通信技术的发展,互联互通的需求也会越来越多。
在嵌入式设备上,基于应用程序接口(API)开发也已成为一种重要的方式。微控制器或处理器硬件资源越来越多,性能越来越高以及相关软件功能越来越复杂,开发者需要应用程序接口(API)来快速开发应用,而无需自己再重复造轮子,从而大大提升开发效率。
嵌入式系统应用的人工智能,需要较强的工程技术知识和经验,项目以怎样的商业模式落地,是一个值得探索的方向。
领取专属 10元无门槛券
私享最新 技术干货