# tensorflow模型评估任务配置 ``` { "job_detail": { "script_name": "<str>", "evaluation_args": { "losses": "<str|dict>", "batch_size": <int>, "metrics": <str|dict>, "model_call_exclude_input_index": <int>|[<int>...], "input_squeeze": <bool>, "models": [ { "name": "<str>", "path": "<str>" }, ... ], "output_file": "<str>" }, "test_data_args": { "<str>": <any> } } } ``` - **job_detail**: 任务的详细描述,其下字段有: - **script_name**:用户脚本文件名,默认在包目录中,支持相对路径 - **evaluation_args**:评估流程详细参数,其下字段有: - **losses**:用法与训练时一样。 - **batch_size**:评估数据的批次大小 - **metrics**:用法与训练时一样,但是可以使用与训练时不同的metric - **model_call_exclude_input_index**:当模型数据集有多输入时,call模型时是否要排除某些输入。一般情况下不用设置这个参数,目前唯一的使用场景是使用gauc metric时,因为metric输入中需要加上用户标识uid,而在模型训练或者预测时这个uid又是用不到的,这样在Dataset输出和模型输入上就有了差异,此时可以通过设置这个参数来修改call模型时候的输入。 - **input_squeeze**:与model_call_exclude_input_index类似,一般情况下也用不到,主要是标识如果call模型输入中去掉了model_call_exclude_input_index设置的几路输入后只剩下一路,是否需要去掉输入外层的tuple或list,类似于张量处理中的squeeze压缩。 - **models**:需要作为对比的模型数组,其中每个模型有如下字段(!!#cc0000 **有多个模型对比时,最后一个模型将被视为基线模型**!!): - **name**:模型名称 - **path**:模型文件所在目录,可以使用`${ONLINE_MODEL}$`魔法变量 **!!#ff00ff 注意所有模型应该具有相同的输入和输出,另外models数组中的最后一个模型将被认为是基线模型!!** - **output_file**:评估结果输出文件名字(!!#cc0000 不要包含路径名,输出文件会放在数据目录下!!),文件内容是一个json dict格式。其中包含所有模型的评估结果,**!!#cc0000 一般如果下游要接部署任务的话,可以配置output_file,并把这个文件名配置为部署任务的upstream_output_file,这样部署任务就会从这个文件里面获得最优模型的路径。!!** - **test_data_args**:awf_create_test_dataset_fn回调函数的参数,关于awf_create_test_dataset_fn请参考[]。