python - Google App Engine 应用程序是否可以交流或控制机器学习模型或任务?

标签 python google-app-engine machine-learning tensorflow google-cloud-ml

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

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

我有以下问题:

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

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

我来说说这件事: enter image description here

最佳答案

是的,您可以使用 App Engine 与 Google Cloud Machine Learning 通信(从这里开始称为 CloudML)。

要从 Python 与 CloudML 通信,您可以使用 Google API client library ,您可以将其与 any Google Service 一起使用.这个客户端库也可以在 App Engine 上使用,它甚至有关于这个的特定文档 here .

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


您提到了要对 CloudML 执行的两种不同类型的操作:

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

1。使用新数据更新模型

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

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

熟悉相关概念和步骤后,您会发现可以将新数据存储在 GCS 上,并将快速入门中的不同 gcloud 命令替换为您可以使用 API 客户端库 (documentation) 进行的各自 API 调用。

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

如果您有已部署的模型(如果没有,请遵循上一步中的 link),您可以轻松地与 CloudML 通信要么得到1)batch predictions or 2)online predictions (后者处于 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包含模型的预期输出。

关于python - Google App Engine 应用程序是否可以交流或控制机器学习模型或任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40257152/

相关文章:

Python 正则表达式 url 抓取

python - 路径名中的编码字符

java - 带有 Gradle 的谷歌云存储 Java 客户端库

python - 使用 scikit 学习 (sklearn) 的批量梯度下降

python Ridge回归解释结果

python - 将模块加载到 apache + mod-wsgi

google-app-engine - Google App Engine 中 "background thread"的时间限制

保存数据存储实体时出现 java.util.concurrent.CancellationException

c# - 用于生成 XML 文件的机器学习算法

machine-learning - 用于学习排名算法的良好查询文档数据集?