在指令工作中使用參數
你可以透過參數來提升腳本的彈性。 想像你創造了一個程式碼腳本來訓練機器學習模型。 你可以用同一個腳本在不同資料集上訓練模型,或使用不同的超參數值。
處理腳本參數
要在腳本中使用參數,必須使用函式庫 argparse ,例如讀取傳遞給腳本的參數並將其指派給變數。
例如,以下腳本讀取一個名為 training_data參數的參數,指定訓練資料的路徑。
# import libraries
import argparse
import pandas as pd
from sklearn.linear_model import LogisticRegression
def main(args):
# read data
df = get_data(args.training_data)
# function that reads the data
def get_data(path):
df = pd.read_csv(path)
return df
def parse_args():
# setup arg parser
parser = argparse.ArgumentParser()
# add arguments
parser.add_argument("--training_data", dest='training_data',
type=str)
# parse args
args = parser.parse_args()
# return args
return args
# run script
if __name__ == "__main__":
# parse args
args = parse_args()
# run main function
main(args)
你預期的任何參數都應該在腳本中定義。 在腳本中,你可以指定每個參數期望的值類型,以及是否要設定預設值。
將參數傳遞給腳本
要將參數值傳給腳本,你需要在指令中提供參數值。
例如,如果您在終端機執行腳本時傳遞參數值,會使用以下指令:
python train.py --training_data diabetes.csv
在範例中, diabetes.csv 是一個本地檔案。 或者,你也可以指定在 Azure Machine Learning 工作空間中建立的資料資產的路徑。
同樣地,當你想將參數值傳給你想執行的指令工作腳本時,你在指令中指定以下值:
from azure.ai.ml import command
# configure job
job = command(
code="./src",
command="python train.py --training_data diabetes.csv",
environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
compute="aml-cluster",
display_name="train-model",
experiment_name="train-classification-model"
)
提交指令工作後,你可以檢視你指定的輸入和輸出參數。