在azureml Python脚本中访问GlobalParameters

2024-05-20 09:10:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何访问azureml上Python脚本中从web服务发送的全局参数(“GlobalParameters”)?在

我试过了:

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

但是没有成功。在

编辑:示例

在我的例子中,我通过web服务发送一个声音文件(作为示例列表)。我还想发送一个采样率和每个样本的位数。我已经成功地配置了web服务(我想)以获取这些参数,因此GlobalParameters现在看起来像:

^{pr2}$

但是,我不能从Python脚本访问这些变量,既不能作为GlobalParameters["sampleRate"]也不能作为sampleRate访问。有可能吗?它们存放在哪里?在


Tags: in脚本web编辑示例参数if全局
3条回答

Python脚本中不能使用GlobalParameters参数。它用于覆盖其他模块中的某些参数。在

例如,如果您使用“拆分数据”模块,您将找到一个选项,可以将参数转换为web服务参数:

turn parameter into web service parameter

单击该按钮后,将出现一个名为“Web服务参数”的新部分。在这里,您可以将默认参数名称更改为您选择的名称之一。在

change web service parameter name

如果将项目部署为web服务,则可以通过将其放在GlobalParameters参数中来重写该参数:

"GlobalParameters": {
     "myFraction": 0.7
}

我希望这能把事情弄清楚一点。在

根据我们对您问题的理解,这里可能有一个误解,即azureml参数不是“全局参数”,事实上,它们只是绑定到特定模块的参数替换。所以在effect中,没有全局参数可以在你提到的整个实验中访问。在这种情况下,我们认为下面的实验实现了您的要求:

  1. 请将“输入数据”模块添加到实验中,并以csv格式添加数据。然后对于数据,单击该参数以创建web服务参数。添加将从客户端应用程序传递的数据中替换的CSV数据。即。 enter image description here

  2. 请添加一个“executepython”模块并将“enterdata”输出连接到“executepython”input1。添加python代码以获取dataframe1并将其添加到python列表中。你可以在python代码的任何地方使用它。

  3. Python代码片段

def azureml_main(数据帧1=无,数据帧2=无):

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]

enter image description here

发布实验后,您可以在下面的“数据”:“部分中添加新值,并使用实验中“Enter Data”值替换的新值。在

^{pr2}$

enter image description here 请随时告诉我们这是否合理。在

尽管在Python脚本中不可能使用GlobalParameters(请参见my previous answer),但是您可以修改/滥用Python脚本的第二个输入来传入其他参数。在我的示例中,我将它们称为元数据参数。在

首先,我补充道:

  • 一个名为“realdata”的Web服务输入模块
  • 一个名为“metadata”的webserviceinput模块(我们将滥用这个模块来向Python传递参数)。在
  • 一个名为“computedMetadata”的Web服务输出模块

按如下方式连接模块:

enter image description here

如您所见,我还添加了一个真实的数据集(餐馆评级)和一个虚拟元数据csv(手动输入数据)模块。在

在本手册数据中,您必须预定义元数据参数,就好像它们是一个带有标题且只有一行来保存数据的csv:

enter image description here

在该示例中,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服务发布,并使用节点.js像这样:

^{pr2}$

产出如预期:

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

祝你好运!在

相关问题 更多 >