Google App Engine应用是否可以与机器学习模型或任务进行通信或控制?

我想在用Python编写的App Engine应用程序中使用Google的机器学习功能。

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

我有以下几个问题:

App Engine基于的应用可以命令机器学习功能使用某些输入数据来训练某个模型吗?App Engine基于的应用可以将某个输入向量发送到ML功能并获得结果(该向量属于哪个聚类)吗?如果这一切都是可能的,如何实现?

如果这些都不可能,有没有其他架构可以让我使用TensorFlow来构建基于App Engine的应用?

我谈论的是这个东西:enter image description here


回答:

是的,你可以使用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客户端库来完成这两个步骤,但为了降低复杂性,我认为你应该先按照预测快速入门来开始。这将使你拥有一个新训练并部署的模型,并让你了解所涉及的不同步骤。

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

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

如果你有一个已部署的模型(如果没有,请按照前一步的链接操作),你可以轻松地与CloudML通信,以获取1)批量预测或2)在线预测(后者处于Alpha阶段)。由于你在使用App Engine,我假设你对使用在线预测感兴趣(获取即时结果)。实现此操作所需的最小代码如下:

from oauth2client.client import GoogleCredentialsfrom googleapiclient import discoveryprojectID = '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中返回模型的预期输出。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注