Kos*_*mos 6 python google-app-engine machine-learning tensorflow google-cloud-ml
我想使用谷歌的机器学习与在python上编写的App Engine应用程序.
由于调查性质(使用Kohonen的SOM进行数据聚类),此应用程序应在每次使用之前重新训练TensorFlow模型.
我有以下问题:
一个基于App Engine的应用程序可以命令机器学习的东西训练一些模型与一些输入数据吗?一个基于App Engine的应用程序可以将一些输入向量发送到ML事物并获得结果(此向量属于哪个集群)?如果一切皆有可能,那怎么办?
如果没有可能的话,我可以使用任何其他架构来构建基于App Engine的应用程序TensorFlow吗?
是的,您可以使用App Engine与Google Cloud Machine Learning进行通信(请参阅CloudML此处).
要通过Python与CloudML进行通信,您可以使用Google API客户端库,您可以将其用于任何Google服务.此客户端库,也可以在App Engine上使用,它甚至为这个特定的文档在这里.
我建议先在本地试用API Client,然后再在App Engine上进行测试.对于本答案的下一部分,我将在本地或App Engine上使用此客户端库时不做任何区分.
您提到了两种不同类型的操作CloudML:
在新数据上更新模型实际上对应于两个步骤.首先在新数据(有或没有CloudML)上训练模型,然后在此部署新训练的模型CloudML.
您可以使用App Engine中的API客户端库执行这两个步骤,但为了降低复杂性,我认为您应该首先遵循预测快速入门.这将导致您拥有一个新训练和部署的模型,并将让您了解所涉及的不同步骤.
熟悉所涉及的概念和步骤后,您将看到可以将新数据存储在GCS上,并通过API客户端库(文档)中各自的API调用替换快速入门中的不同gcloud命令..
如果您有已部署的模型(如果没有,请按照上一步骤中的链接进行操作),您可以轻松地与之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()
Run Code Online (Sandbox Code Playgroud)
使用{"image": <image_array>, "key": <key_id>}输入格式,您已通过上一步的链接为已部署的模型定义了该格式.这将返回response包含模型的预期输出.
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |