如何在AzureML中的管道的argparse中添加元组?

问题描述 投票:0回答:1

我想为我在管道中执行的函数添加

argparse
元组。为了简单起见,我将跳过读取数据和其他与主题不太相关的步骤。看起来像这样:

def model_train_sales(X_train, order: tuple, seasonal_order: tuple):

    model = sm.tsa.SARIMAX(X_train['sales'], order=order, seasonal_order=seasonal_order)
    results = model.fit()

    return model, results

def main():

    parser = argparse.ArgumentParser()

    parser.add_argument("--order", type=tuple)
    parser.add_argument("--seasonal_order", type=tuple)

    args = parser.parse_args()

    model, results = model_train_sales(X_train['sales'], order=args.order, 
    seasonal_order=args.seasonal_order)

此时一切都很好,但是当你开始构建管道时,解析变量的类型不同了。

from azure.ai.ml import command
from azure.ai.ml import Input, Output

demo_model_training_component = command(
    name='my sarima pipeline',
    display_name='my description',
    description='A long description.',
    inputs={
        "order": Input(type='<TYPE>'),
        "seasonal_order": Input(type='<TYPE>'),
    },
    outputs=dict(
        df = Output(type="uri_folder", mode="rw_mount")
    ),
    code = feature_creation_src_dir,
    command = """python sarima_model.py \
              --order ${{inputs.order}} --seasonal_order ${{inputs.seasonal_order}} \
              --df ${{outputs.df}}
              """,
    environment = f"{pipeline_job_env.name}"{pipeline_job_env.version}",
)

这里我在不确定应该是哪种类型的地方签了

<TYPE>
。我知道类型有限,要么是
string
integer
number
,要么是
bool

有什么方法可以解析其中的元组吗?或者唯一的方法是分别解析

p, d, q
P, D, Q, S
并将它们组合成主函数中的元组?

python-3.x machine-learning tuples azure-machine-learning-service
1个回答
0
投票

不能传递

tuple
类型对象,仅支持
Input
dict
str
bool
int
float

但是,您可以将其作为字符串传递并在

main.py
中将其转换为元组。

在主函数中将其作为字符串给出。

def model_train_sales(X_train, order: tuple, seasonal_order: tuple):

    model = sm.tsa.SARIMAX(X_train['sales'], order=order, seasonal_order=seasonal_order)
    results = model.fit()

    return model, results

def main():

    parser = argparse.ArgumentParser()

    parser.add_argument("--order", type=str)
    parser.add_argument("--seasonal_order", type=str)
    
    print("\n")
    print("------------------------------------------------\n")
    result_tuple = tuple(args.order.split(','))
    print(result_tuple)
    print("\n")
    print("------------------------------------------------\n")

    args = parser.parse_args()

    model, results = model_train_sales(X_train['sales'], order=args.order, 
    seasonal_order=args.seasonal_order)

接下来,将其作为带有逗号分隔值的字符串在命令作业中传递。

from azure.ai.ml import command
from azure.ai.ml import Input, Output

demo_model_training_component = command(
    name='my sarima pipeline',
    display_name='my description',
    description='A long description.',
    inputs={
        "order": "p,d,q",
        "seasonal_order": "P,D,Q,S",
    },
    outputs=dict(
        df = Output(type="uri_folder", mode="rw_mount")
    ),
    code = feature_creation_src_dir,
    command = """python sarima_model.py \
              --order ${{inputs.order}} --seasonal_order ${{inputs.seasonal_order}} \
              --df ${{outputs.df}}
              """,
    environment = f"{pipeline_job_env.name}"{pipeline_job_env.version}",
)

输出:

corrected image description

corrected image description

© www.soinside.com 2019 - 2024. All rights reserved.