6

Python で書かれたApp EngineアプリケーションでGoogle の Machine Learningを使いたいです。

このアプリケーションは、調査の性質 ( Kohonenの SOMを使用したデータ クラスタ化) のため、使用する前に毎回 TensorFlow モデルを再トレーニングする必要があります。

次の質問があります。

App Engineベースのアプリは、機械学習に命令して、入力データを使用してモデルをトレーニングできますか? App Engineベースのアプリは、入力ベクトルをMLに送信して、結果 (このベクトルが属するクラスタ) を取得できますか? すべてが可能である場合、それを行う方法は?

これから何もできない場合、App Engineベースのアプリを使用するために使用できる他のアーキテクチャはありますTensorFlowか?

私はこのことについて話します: ここに画像の説明を入力

4

1 に答える 1

9

はい。App Engine を使用して、Google Cloud Machine Learningと通信できます (以降、「Google Cloud Machine Learning 」と呼びCloudMLます)。

Python から CloudML と通信するには、任意の Google サービスで使用できるGoogle API クライアント ライブラリを使用できます。このクライアント ライブラリは App Engine でも使用できます。これに関する具体的なドキュメントもここにあります

App Engine でテストする前に、まずローカルで API クライアントを試してみることをお勧めします。この回答の次の部分では、このクライアント ライブラリをローカルで使用するか、App Engine で使用するかを区別しません。


あなたがやりたい2つの異なる種類の操作について言及しましたCloudML

  1. モデルを新しいデータで更新する
  2. トレーニング済み/デプロイ済みのモデルから予測を取得する

1. 新しいデータでモデルを更新する

新しいデータでモデルを更新することは、実際には 2 つのステップに相当します。最初に新しいデータでモデルをトレーニングし (を使用して、または使用せずにCloudML)、次にこの新しくトレーニングしたモデルを にデプロイしCloudMLます。

App Engine の API クライアント ライブラリを使用して両方のステップを実行できますが、複雑さを軽減するために、予測クイックスタートに従うことから始める必要があると思います。これにより、新しくトレーニングおよびデプロイされたモデルが作成され、関連するさまざまな手順を理解できるようになります。

関連する概念と手順を理解すると、新しいデータをGCSに保存し、クイックスタートのさまざまな gcloud コマンドを、API クライアント ライブラリで実行できるそれぞれの API 呼び出しに置き換えることができることがわかります (ドキュメント) 。 .

2. デプロイされたモデルから予測を取得する

デプロイされたモデルがある場合 (そうでない場合は、前のステップのリンクに従ってください)、簡単に通信しCloudMLて、1) バッチ予測または 2) オンライン予測(後者はアルファ版です) を取得できます。あなたは 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 に答える