核心TensorFlow库提供了将在Python中创建的要保存的模型转换为描述在浏览器环境中执行的图形和权重的JSON文件的功能。

在示例中,您需要在浏览器中加载整个TensorFlow库,这非常繁重。此外,该库不支持摇树。

我的问题是:如何将TensorFlow JS中必要的元素仅加载到客户端/浏览器中,以减少捆绑的应用程序的整体大小?

编辑:我们正在尝试减少捆绑库的大小。

最佳答案

Tensorflow.js API结合了四个软件包:


tfjs-core:诸如数学函数和后端支持之类的功能
tfjs-layers:支持图层以创建模型(取决于tfjs-core
tfjs-data:数据处理(取决于tfjs-core
tfjs-converter:支持将模型转换为Tensorflow.js


根据您确切需要执行的任务,仅使用某些软件包就足够了。也就是说,请记住tfjs-layerstfjs-data要求导入tfjs-core

代码样例

以下几行仅导入Core和Layers API:

import * as tfc from '@tensorflow/tfjs-core';
import * as tfl from '@tensorflow/tfjs-layers';

// Examples how to use the APIs
const vectr = tfc.tensor(/* .. */);
const model = tfl.sequential();
const dense = tfl.layers.dense(/* .. */);


请注意,通过调用tf.matMul使用类似tfc.matMul的功能,但是通过调用tf.layers.dense使用层API的某些功能(例如tfl.layers.dense),而通过调用tf.sequential使用其他功能(如tfl.sequential) 。

优化

为了让您对潜在的优化有所了解,让我们看一下数字:

--------------------------------------
|     Package    |  Size  | Relative |
|----------------|--------|----------|
| tfjs           |    856 |     100% |
| tfjs-core      |    506 |      59% |
| tfjs-layers    |    228 |      27% |
| tfjs-data      |     52 |       6% |
| tfjs-converter |     80 |       9% |
--------------------------------------


版本1.2.7,以KB为单位(最小的JS文件的大小),相对于tfjs的相对值

直接使用tfjs-coretfjs-layers,可以将大小缩小122 KB或14%。如果您需要的还不止这些,您可以随时尝试自行重建存储库,并删除所有不需要的功能。当然,这种方法将意味着大量的手工工作。

摇树

正如您已经注意到的那样,当前不支持摇树,但是您可能希望遵循tfjs github存储库中有关该主题的support of tree-shaking讨论。

08-24 13:51