搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 黑胡桃实验室 > 将 Keras 模型导入 TensorFlow.js

将 Keras 模型导入 TensorFlow.js

黑胡桃实验室 2019-02-10
举报


Keras 模型(通常通过 Python API 创建)可以以多种格式保存。“整个模型”格式可以转换为可以直接加载到 TensorFlow.js 进行推理或进一步训练的 TensorFlow.js Layers 格式。


TensorFlow.js Layers 格式是一个包含 model.json 文件和一组二进制格式的权重分片文件的格式。model.json 文件包含模型拓扑(又名“architecture(架构)”或“graph(图)”:是对层及其连接方式的描述)和权重文件的清单。


1要求


转换过程需要 Python 环境;您可能需要 pipenv 或者 virtualenv 来保持一个独立的环境,要安装转换器,请运行以下命令:


     
       
       
     
  1. pip install tensorflowjs


将 Keras 模型导入 TensorFlow.js 分为两步。首先,将现有的 Keras 模型转换为 TensorFlow.js Layers 格式,然后将其加载到 TensorFlow.js 中。


2步骤 1:将现有的 Keras 模型转换为 TensorFlow.js Layers 格式


Keras 模型通常通过 model.save(filepath) 保存,生成一个包含模型拓扑和权重的 HDF5(.h5)文件。要将此类文件转换为 TensorFlow.js Layers 格式,请运行以下命令,其中 path/to/my_model.h5 是 Keras.h5 文件的路径,path/to/tfjs_target_dir 是 tf.js 文件的目标输出路径:


     
       
       
     
  1. # bash

  2. tensorflowjs_converter --input_format keras \

  3.                       path/to/my_model.h5 \

  4.                       path/to/tfjs_target_dir


3其他方法:使用 Python API 直接导出为 TensorFlow.js Layers 格式


如果您在 Python 中使用 Keras 模型,则可以将其直接导出为 TensorFlow.js Layers 格式,如下所示:


     
       
       
     
  1. # Python

  2. import tensorflowjs as tfjs

  3. def train(...):

  4.    model = keras.models.Sequential()   # 举例

  5.    ...

  6.    model.compile(...)

  7.    model.fit(...)

  8.    tfjs.converters.save_keras_model(model, tfjs_target_dir)


4步骤 2:将模型加载到 TensorFlow.js 中


使用 Web 服务器为在步骤 1 中生成的模型转换文件提供服务。请注意,为了允许在 JavaScript 中获取文件,您可能需要将服务器设置为 allow Cross-Origin Resource Sharing(CORS,允许跨源资源共享)。


然后利用 model.json 文件的 URL 将 model.json 文件中的模型加载到 TensorFlow.js 中:


     
       
       
     
  1. // JavaScript

  2. import * as tf from '@tensorflow/tfjs';

  3. const model = await tf.loadModel('https://foo.bar/tfjs_artifacts/model.json');


现在,该模型已准备好进行推理、评估或重训练。例如,加载的模型可以立即用于预测:


     
       
       
     
  1. // JavaScript

  2. const example = tf.fromPixelswebcamElement);  //举例

  3. const prediction = model.predict(example);


许多 TensorFlow.js 示例 都采用此方法,使用已转换并托管在 Google Cloud 上的预训练模型。


请注意,您使用 model.json 文件名引用整个模型。 loadModel(...) 获取 model.json,然后发出额外的 HTTP(S)请求,以获取 model.json 中的权重清单引用的权重分片文件。因为 model.json 和权重分片都小于典型的缓存文件大小限制,所以这种方法允许浏览器缓存所有这些文件(可能还有互联网上的其他缓存服务器)。因此,模型在随后的情况下可能加载得更快。


5支持的功能


TensorFlow.js Layers 目前仅支持使用标准 Keras 构造的 Keras 模型。使用不受支持的 Ops(操作)或层(例如自定义层、lambda 层、自定义损失或自定义度量)的模型则不能自动导入,因为它们依赖于 Python 代码,无法可靠地转换为 JavaScript。


✄----------------------------------

本文是黑胡桃实验室与 Googler、GDE 协作翻译的 TensorFlow.js 中文尝鲜版,英文版首发于 https://js.tensorflow.org/


探索AI

触摸科技

黑胡桃实验室

杭州·赛银国际广场4幢1楼

BlackWalnut Labs. 


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《将 Keras 模型导入 TensorFlow.js》的版权归原作者「黑胡桃实验室」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注黑胡桃实验室微信公众号

黑胡桃实验室微信公众号:blackwalnutlabs

黑胡桃实验室

手机扫描上方二维码即可关注黑胡桃实验室微信公众号

黑胡桃实验室最新文章

精品公众号随机推荐

举报