JavaScript玩转机器学习:模型转换
JavaScript玩转机器学习:模型转换
模型转换
TensorFlow.js 配备了各种预训练模型,这些模型可以在浏览器中使用,模型仓库 中有相关介绍。但是,您可能已经在其他地方找到或创建了一个 TensorFlow 模型,并希望在 web 应用程序中使用该模型。为此,TensorFlow.js 提供了一个 模型转换器 。TensorFlow.js 转换器有两个组件:
- 一个命令行程序,用于转换 Keras 和 TensorFlow 模型以在 TensorFlow.js 中使用。
- 一个 API ,用于在浏览器中使用 TensorFlow.js 加载和执行模型。
转换您的模型
TensorFlow.js 转换器可以转换以下几种格式的模型:
SavedModel: 保存 TensorFlow 模型的默认格式。SavedModel 的格式细节请 查阅此处。
Keras model: Keras 模型通常保存为 HDF5 文件。有关保存 Keras 模型的更多信息,请访问 此处。
TensorFlow Hub module: 这些是打包后在 TensorFlow Hub 中进行分发的模型,TensorFlow Hub 是一个共享和发现模型的平台。模型库见 此处。
取决于尝试转换的模型的格式,您需要将不同的参数传递给转换器。比如,假设您保存了一个名为 model.h5
的 Keras 模型到 tmp/
目录。为了使用 TensorFlow.js 转换器转换模型,您可以运行以下命令:
$ tensorflowjs_converter --input_format=keras /tmp/model.h5 /tmp/tfjs_model
这会将路径为 /tmp/model.h5
的模型转换并输出 model.json
文件及其二进制权重文件到目录 tmp/tfjs_model/
中。
有关不同格式的模型相对应的命令行参数的更多信息,请参阅 TensorFlow.js 转换器 自述文件。
在转换过程中,我们会遍历模型图形并确认 TensorFlow.js 是否支持每个操作。如果是支持的,我们将图形转换成浏览器可以使用的格式。我们尝试通过将权重分成 4MB 的文件来优化模型以便在 web 上使用 - 这样它们就可以被浏览器缓存。我们也尝试使用开源工程 Grappler 简化模型图形。图形的简化包括相邻操作的折叠,消除常见子图像等。这些更改对模型的输出没有影响。为了进一步优化,用户可以输入参数以指示转换器将模型量化到特定的字节大小。量化是一种减少模型大小的技术,它是通过用更少的比特表示权重实现的。用户应务必确保量化后模型的准确度保持在可接受范围内。 如果在转换过程中遇到了不支持的操作,则该过程失败,我们将为用户打印出该操作的名称。请将此提交到我们的 GitHub - 我们会尝试根据用户的需求实现更多新的操作。
最佳做法
虽然在转换过程中我们尽力优化您的模型,但通常确保您的模型顺利运行的最佳方式是在考虑资源受限的环境下构建。这意味着避免过于复杂的建构和尽可能减少参数(权重)的数目。
运行您的模型
成功转换模型之后,您将得到一组权重文件和一个模型拓扑文件。TensorFlow.js 提供模型加载 APIs ,您可以使用这些接口获取模型并且在浏览器中运行推断。
以下是加载转换后的 TensorFlow SavedModel 或 TensorFlow Hub 模块的 API :
const model = await tf.loadGraphModel(‘path/to/model.json’);
以下是转换后的 Keras 模型的 API :
const model = await tf.loadLayersModel(‘path/to/model.json’);
tf.loadGraphModel
API 返回 tf.FrozenModel
,这意味着各项参数是固定的并且您不能使用新数据对模型进行微调。tf.loadLayersModel
API 返回可训练的 tf.Model。有关训练 tf.Model 的相关信息,请参阅训练模型指南。
在转换之后,我们建议您进行几次推断并且对模型的速度进行基准测试。基于这个目的,我们有一个独立的基准测试页面: https://github.com/tensorflow/tfjs-core/blob/master/integration_tests/benchmarks/benchmark.html。 您可能注意到我们丢弃了初始预热运行中的测量值 - 这是因为(通常情况)下,由于创建纹理和编译着色器的资源消耗,您的模型的第一次的推断将比后续推断慢几倍。
JavaScript玩转机器学习:模型转换相关推荐
- JavaScript玩转机器学习:保存并加载 tf.Model
JavaScript玩转机器学习:保存并加载 tf.Model 保存并加载 tf.Model TensorFlow.js提供了保存和加载模型的功能,这些模型可以是使用LayersAPI创建的或从现有T ...
- JavaScript玩转机器学习:Node 中的 TensorFlow.js
JavaScript玩转机器学习:Node 中的 TensorFlow.js TensorFlow CPU TensorFlow CPU 包,可以按如下方式导入: import * as tf fro ...
- JavaScript玩转机器学习:训练模型
JavaScript玩转机器学习:训练模型 本指南假定您已经阅读了模型和图层指南. 在TensorFlow.js中,有两种方法来训练机器学习模型: 通过LayersModel.fit()或使用Laye ...
- JavaScript玩转机器学习:模型和层
JavaScript玩转机器学习:模型和层 模型和层 机器学习中,一个 model 是一个带有可训练参数的函数.这个函数将输入转化为输出.通俗的来说,这个函数表达了输入和输出之间的变换关系.我们通过在 ...
- JavaScript玩转机器学习:张量(Tensors) 和 操作(operations)
JavaScript玩转机器学习:张量(Tensors) 和 操作(operations) 张量(Tensors) 和 操作(operations) TensorFlow.js是一个在JavaScri ...
- JavaScript玩转机器学习:平台和环境
平台和环境 TensorFlow.js有两种工作平台:浏览器和Node.js.不同平台有很多不同的配置,平台间的差异影响着基于平台的应用开发. 在浏览器平台上,TensorFlow.js既支持移动设备 ...
- sklearn库安装_没有依赖库也能跑机器学习模型!推荐一个强大工具m2cgen
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI m2cgen(Model 2 Code Generator)是一个轻量级代码生成器,它可以将训练好的机器学习模型转换成无需依赖库的本地代码. ...
- 机器学习模型部署PMML
PMML 简介 预测模型标记语言PMML(Predictive Model Markup Language)是一套与平台和环境无关的模型表示语言,是目前表示机器学习模型的实际标准.从2001年发布的P ...
- 玩转Atlas200DK(九)ATC模型转换
九.MindStudio 3.0.4的模型转换 1.背景 在前文 张小白:玩转Atlas 200DK(四)MindStudio安装与配置0 赞同 · 0 评论文章正在上传-重新上传取消 <使用M ...
最新文章
- OpenCV 仿射变换
- c语言图形化编程入门_C语言C++新手入门,VS2013编程器安装教程
- python2和python3的主要区别
- 代理模式【介绍、静态代理、动态代理、入门、应用】
- 学术诚信的重要性_申论作文开头之诚信
- 获取android系统手机的铃声和音量
- 最佳约会策略及其证明
- vim 删除当前词_vim 可视话模式(即删除一列和多列)
- div css将文字居中显示图片,css文字居中、图片居中、div居中解决方案
- python scipy stats学习笔记
- 产品读书《大败局 I》 《大败局II》
- 药店零售管理php系统,医药POS零售管理系统
- Blurring the Lines between Blockchains andDatabase Systems: the Case of Hyperledger Fabric(翻译)
- 【数据仓库】数据仓库的介绍
- 英语话题 topic 4: My hometown
- Downloads Help 下载帮助
- 程序设计思想与方法 笔记
- 重磅!大数据《实战全栈工程师成长手册》,附 PDF PPT 下载
- 软件测试人员必知H5/小程序测试点
- 汽车网络安全风险评估方法