6

我想将Google 的机器学习与用 python 编写的App Engine应用程序一起使用。

由于调查性质(使用Kohonen 的 SOM进行数据聚类),此应用程序应在每次使用前重新训练TensorFlow模型。

我有以下问题:

基于App Engine的应用程序可以命令机器学习来使用一些输入数据训练一些模型吗?基于App Engine的应用程序能否将一些输入向量发送到ML 事物并获得结果(该向量属于哪个集群)?如果一切皆有可能,那该怎么做?

如果这一切都不可能,我可以使用任何其他架构来使用基于App Engine的应用程序TensorFlow吗?

我讲这件事: 在此处输入图像描述

4

1 回答 1

9

是的,您可以使用 App Engine 与Google Cloud Machine Learning进行通信(以下简称CloudML)。

要从 Python 与 CloudML 通信,您可以使用Google API 客户端库,您可以将其与任何 Google 服务一起使用。这个客户端库也可以在 App Engine 上使用,它甚至在此处有专门的文档。

我建议先在本地试验 API 客户端,然后再在 App Engine 上进行测试。对于此答案的下一部分,我将不区分在本地或在 App Engine 上使用此客户端库。


您提到了两种不同类型的操作CloudML

  1. 使用新数据更新模型
  2. 从训练/部署的模型中获取预测

1. 用新数据更新模型

根据新数据更新模型实际上对应于两个步骤。首先在新数据上训练模型(有或没有CloudML),然后将这个新训练的模型部署在CloudML.

您可以使用 App Engine 中的 API 客户端库执行这两个步骤,但为了降低复杂性,我认为您应该从预测 quickstart开始。这将使您拥有一个新训练和部署的模型,并使您了解所涉及的不同步骤。

一旦您熟悉了所涉及的概念和步骤,您将看到您可以将新数据存储在GCS上,并将快速入门中的不同 gcloud 命令替换为您可以使用 API 客户端库(文档)进行的相应 API 调用.

2. 从已部署的模型中获取预测

如果您有一个已部署的模型(如果没有,请按照上一步的链接),您可以轻松地与之通信CloudML以获得1)批量预测或 2)在线预测(后者处于 alpha 阶段)。由于您使用的是 App Engine,我假设您有兴趣使用在线预测(获得即时结果)。执行此操作所需的最少代码:

from oauth2client.client import GoogleCredentials
from googleapiclient import discovery

projectID = 'projects/<your_project_id>'
modelName = projectID+'/models/<your_model_name>'

credentials = GoogleCredentials.get_application_default()


ml = discovery.build('ml', 'v1beta1', credentials=credentials)
# Create a dictionary with the fields from the request body.
requestDict = {"instances":[
                    {"image": [0.0,..., 0.0, 0.0], "key": 0}
        ]}
# Create a request to call projects.models.create.
request = ml.projects().predict(
      name=modelName,
      body=requestDict)
response = request.execute()

使用{"image": <image_array>, "key": <key_id>}您通过上一步中的链接为部署模型定义的输入格式。这将返回response包含模型的预期输出。

于 2016-11-10T23:02:56.820 回答