tensorflow - 在 python 中保存 Keras/Sklearn 并在 tensorflow.js 中加载保存的模型

标签 tensorflow keras scikit-learn tensorflow.js

我有一个经过训练的 .pkl 格式的 sklearn SVM 模型和一个 Keras .h5 模型。我可以在浏览器上使用 tensorflow.js 加载这些模型吗? 我的大部分编码都是用 python 完成的,不知道如何使用 tensorflow.js 我的模型保存代码如下所示

from sklearn.externals import joblib 

joblib.dump(svc,'model.pkl') 
model = joblib.load('model.pkl')  
prediction = model.predict(X_test) 

#------------------------------------------------------------------

from keras.models import load_model

model.save('model.h5')  
model = load_model('my_model.h5')

最佳答案

为了使用tensorflow-js部署模型,您需要使用tensorflowjs_converter,因此您还需要安装tensorflowjs依赖项。

您可以通过 pip install tensorflowjs 在 python 中执行此操作。

接下来,根据您的自定义名称,通过此操作转换经过训练的模型:tensorflowjs_converter --input_format=keras/tmp/model.h5/tmp/tfjs_model,其中最后一个路径是转换结果的输出路径。

请注意,转换后您将获得一个 model.json (模型的架构)和一个 N 分片列表(权重分为 N 个分片)。

然后,在 JavaScript 中,您需要使用函数 tf.loadLayersModel(MODEL_URL),其中 MODEL_URL 是指向 model.json 的 url。确保分片也位于与 model.json 相同的位置。

由于这是一个异步操作(您不希望您的网页在模型加载时被阻止),因此您需要使用 JavaScript await 关键字;因此等待 tf.loadLayersModel(MODEL_URL)

请查看以下链接以查看示例:https://www.tensorflow.org/js/guide/conversion

关于tensorflow - 在 python 中保存 Keras/Sklearn 并在 tensorflow.js 中加载保存的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59873062/

相关文章:

python - 属性错误: module 'tensorflow' has no attribute 'init_scope' during train. py

python - Lambda 上的值错误

python - ValueError : Error when checking target: expected dense_3 to have shape (1000, ) 但得到形状为 (1,) 的数组

python - RandomForestClassfier.fit() : ValueError: could not convert string to float

tensorflow - TFLiteConverter.from_saved_model 运行时错误 : MetaGraphDef associated with tags {'serve' } could not be found in SavedModel

python - 使用 Python 实例化 TensorFlow 模型时出现 google.protobuf.text_format.ParseError

python - 在 Keras 中下载 ResNet50 生成 "SSL: CERTIFICATE_VERIFY_FAILED"

tensorflow - 我的训练数据集对于我的神经网络来说是否太复杂?

python - 使用 SelectKBest(f_classif,... ) 时 Sklearn : invalid value encountered in true_div,

python - 如何在 scikit-learn DecisionTreeRegressor 中使用实际的特征名称而不是 "X"?