0

Azure ML の Python スクリプトで Web サービスから送信されたグローバル パラメーター ("GlobalParameters") にアクセスするにはどうすればよいですか?

私は試した:

if 'GlobalParameters' in globals():
    myparam = GlobalParameters['myparam']

しかし、成功しませんでした。

編集:例

私の場合、サウンド ファイルを Web サービス経由で (サンプルのリストとして) 送信しています。サンプルレートとサンプルあたりのビット数も送信したいと思います。これらのパラメーターを取得するように Web サービス (と思います) を正常に構成したので、GlobalParameters は次のようになります。

"GlobalParameters": {
     "sampleRate": "44100",
     "bitsPerSample": "16",
}

ただし、Python スクリプトからこれらの変数にアクセスすることはできませGlobalParameters["sampleRate"]sampleRate。出来ますか?それらはどこに保管されていますか?

4

3 に答える 3

1

あなたの質問に対する私たちの理解に基づいて、Azure ML パラメーターは「グローバル パラメーター」ではなく、実際のところ、特定のモジュールに関連付けられた単なるパラメーター置換であるため、誤解されている可能性があります。したがって、実際には、あなたが言及した実験全体でアクセスできるグローバル パラメーターはありません。そのような場合、以下の実験はあなたが求めていることを達成すると思います:

  1. 実験に「データ入力」モジュールを追加し、データを csv 形式で追加してください。次に、[データ] でパラメーターをクリックして、Web サービス パラメーターを作成します。クライアント アプリケーションから渡されたデータから置換される CSV データを追加します。いえ ここに画像の説明を入力

  2. 「Python の実行」モジュールを追加し、「データの入力」出力を「Python の実行」入力 1 に接続してください。Python コードを追加して dataframe1 を取得し、それを Python リストに追加します。リストに追加したら、Python コードのどこでも使用できます。

  3. Python コード スニペット

def azureml_main (dataframe1 = なし、dataframe2 = なし):

import pandas as pd
global_list = []

for g in dataframe1["Col3"]:
    global_list.append(g)

df_global = pd.DataFrame(global_list)        
print('Input pandas.DataFrame:\r\n\r\n{0}'.format(df_global))        
return [df_global]

ここに画像の説明を入力

実験を公開したら、下の「データ」: 「」セクションに、実験の「データを入力」値に置き換えた新しい値を追加できます。

data =  {

        "Inputs": {

                "input1":
                {
                    "ColumnNames": ["Col1", "Col2", "Col3"],
                    "Values": [ [ "0", "value", "0" ], [ "0", "value", "0" ], ]
                },        },
            "GlobalParameters": {
        "Data": "1,sampleRate,44500\\n2,bitsPerSample,20",
}
}

ここに画像の説明を入力 これが理にかなっている場合は、お気軽にお知らせください。

于 2015-08-13T06:39:07.903 に答える
0

Python スクリプトで GlobalParameters を使用することはできませんが (以前の回答を参照)、Python スクリプトの 2 番目の入力をハッキング/悪用して、他のパラメーターを渡すことができます。私の例では、それらをメタデータ パラメーターと呼んでいます。

まず、次を追加しました。

  • 「realdata」という名前のWeb サービス入力モジュール (コース外の実際のデータ用)
  • 「metadata」という名前のWeb サービス入力モジュール (これを悪用して、Python にパラメーターを渡します)。
  • 「computedMetadata」という名前のWeb サービス出力モジュール

モジュールを次のように接続します。

ここに画像の説明を入力

ご覧のとおり、実際のデータ セット (レストランの評価) とダミーのメタデータ csv (データを手動で入力) モジュールも追加しました。

この手動データでは、ヘッダーとデータを保持するための 1 つの行のみを持つ csv であるかのように、メタデータ パラメーターを事前定義する必要があります。

ここに画像の説明を入力

この例では、sampleRate と bitsPerSample の両方が 0 に設定されています。

次に、私の Python スクリプトは、その偽の csv をメタデータとして取り込み、ダミーの計算を行い、それを列名として返します。

import pandas as pd

def azureml_main(realdata = None, metadata = None):

    theSum = metadata["sampleRate"][0] + metadata["bitsPerSample"][0]

    outputString = "The sum of the sampleRate and the bitsPerSecond is " + str(theSum)

    print(outputString)

    return pd.DataFrame([outputString])

次に、これを Web サービスとして公開し、次のように Node.js を使用して呼び出しました。

httpreq.post('https://ussouthcentral.services.azureml.net/workspaces/xxx/services/xxx', {
    headers: {
        Authorization: 'Bearer xxx'
    },
    json: {
    "Inputs": {
        "realdata": {
            "ColumnNames": [
                "userID",
                "placeID",
                "rating"
            ],
            "Values": [
                [
                    "100",
                    "101",
                    "102"
                ],
                [
                    "200",
                    "201",
                    "202"
                ]
            ]
        },
        "metadata": {
            "ColumnNames": [
                "sampleRate",
                "bitsPerSample"
            ],
            "Values": [
                [
                    44100,
                    16
                ]
            ]
        }
    },
    "GlobalParameters": {}
}

}, (err, res) => {
    if(err) return console.log(err);
    console.log(JSON.parse(res.body));
});

出力は期待どおりでした:

{ Results:
   { computedMetadata:
      { type: 'table',
        value:
         { ColumnNames: [ '0' ],
           ColumnTypes: [ 'String' ],
           Values:
            [ [ 'The sum of the sampleRate and the bitsPerSecond is 44116' ] ] } } } }

幸運を!

于 2019-01-29T14:28:13.093 に答える