Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JS后端和Python进行机器学习_Python_Node.js_Tensorflow_Tensorflow.js - Fatal编程技术网

使用JS后端和Python进行机器学习

使用JS后端和Python进行机器学习,python,node.js,tensorflow,tensorflow.js,Python,Node.js,Tensorflow,Tensorflow.js,我需要一些资深的建议。我想使用JS创建一个API,但是所有的ML功能都使用Python。我不想摆脱像GraphQL这样的很棒的JS库,但我不想牺牲Python的性能。我知道我可以使用Tensorflow.js,但正如我所说的,在性能方面,Python要好得多 我的想法是使用Python将一个ML模型部署到云中,然后在我的JSAPI或类似的东西中获取预测 另一个想法是使用Python创建推断,将其保存为.h5或.json格式,然后在我的API中使用Tensorflow.js直接加载它们 本地###

我需要一些资深的建议。我想使用JS创建一个API,但是所有的ML功能都使用Python。我不想摆脱像GraphQL这样的很棒的JS库,但我不想牺牲Python的性能。我知道我可以使用Tensorflow.js,但正如我所说的,在性能方面,Python要好得多

我的想法是使用Python将一个ML模型部署到云中,然后在我的JSAPI或类似的东西中获取预测

另一个想法是使用Python创建推断,将其保存为.h5或.json格式,然后在我的API中使用Tensorflow.js直接加载它们

本地#####
输入=输入(形状=(trainX.shape[1],trainX.shape[2],trainX.shape[3]))
...
Conv2D
Conv2D
Conv2D
...
模型=模型(输入=输入,输出=预测)
model.compile(…)
模型拟合(…)
model.save(model.json)#我认为我无法用Python将权重保存为.json格式
我真的不知道这是否可行,或者有更好的形式(或者甚至有可能)


所有的想法和建议都非常感谢。谢谢。

您已经指出了两种方法,可以用来为您的ML/DL模型执行预测。我将列出每项建议所需的步骤以及我个人的建议


本地: 在这里,您必须使用Tensorflow和Python构建和训练模型。然后,要在web应用程序上使用该模型,您需要使用将其转换为正确的格式。例如,您将返回一个
model.json
group1-shard1of1.bin
文件,然后可以使用该文件对来自
客户端的数据进行预测。为了提高性能,可以在转换模型时对其进行量化

  • 我发现这样做更容易预测,因为整个过程并不困难
  • 模型总是在客户端,所以如果您希望快速预测,它应该是最好的选择
  • 安全方面,如果在生产中使用此模型,则不会将任何用户数据传递到服务器端,因此用户不必担心其数据被不当使用。例如,如果您在欧盟,您必须遵守《通用数据保护条例》(GDPR)
  • ,这将使事情变得更加复杂
  • 如果您想要改进模型,那么您需要训练一个新模型,然后在web应用程序上进行更新以更改模型文件。您无法执行
    在线学习
    (根据看到的新数据对模型进行培训,并动态改进)

  • 应用程序编程接口: 在这里,您必须使用某种库来创建RESTAPI。我会推荐一种很容易安装和运行的。您需要创建路由,以便
    将数据发布到模型中。您可以创建您发出
    POST
    请求的路由,这些请求将从客户端接收数据,然后使用您拥有的模型对数据执行预测。然后它将在请求主体中发回预测。API和用于进行预测的代码必须托管在某个地方,以便您从客户端进行查询,您可以使用它。这贯穿了整个过程

  • 与局部方法相比,该过程是复杂的
  • 数据需要发送到服务器,因此,如果您需要对大量数据进行非常快速的预测,那么与本地方法相比,该方法的速度会较慢
  • 对于生产用例,这是首选方法,除非用户数据无法发送到服务器
  • 这些都是REST API,所以要让它与GraphQL一起工作,您必须使用详细的步骤将REST API与GraphQL打包
  • 您可以不断改进模型,而不必接触客户端代码

  • 我不想摆脱像GraphQL这样的很棒的JS库,但我不想牺牲Python的性能。我知道我可以使用Tensorflow.js,但正如我所说的,在性能方面,Python要好得多

    我想指出的一点是,无论使用
    Python
    还是
    Javascript
    ,模型的预测速度都是相同的。唯一可以改进它的方法是通过量化,它减少了模型大小,同时也改善了CPU和硬件加速器延迟,模型精度几乎没有下降,因为您所做的一切就是使用模型进行预测。除非在网速较慢的地区向端点发送大量数据,否则使用这两种方法之间的差异可以忽略不计

    ##### API #####
    https.get('SOMEURL', (resp) => {
      const model = await tf.loadLayersModel('file://path/to/my-model/model.json');
      
      const { data } = resp
      
      return model.predict(data)
    
    }).on("error", (err) => {
      console.log("Error: " + err.message);
    });