我有一个Azure webjob,它通过HttpRequests调用ML训练实验,利用ML webportal中生成的代码:
var request = new BatchExecutionRequest()
{
Inputs = new Dictionary<string, AzureBlobDataReference>() {
{
"input1",
new AzureBlobDataReference()
{
ConnectionString = _connectionString,
RelativeLocation = $"{_containerName}/{experimentId}/{tenantId}/{trainingDataFileName}"
}
},
},
Outputs = new Dictionary<string, AzureBlobDataReference>() {
{
"output1",
new AzureBlobDataReference()
{
ConnectionString = "azureStorageConnectionString",
RelativeLocation = $"{_containerName}/{experimentId}/{tenantId}/Model_2018421.ilearner"
}
},
},
GlobalParameters = new Dictionary<string, string>()
{
}
};
但是,请求失败并显示以下消息:
blob参考: 实验/ experimentId / TenantId / Model_2018421.ilearner 文件扩展名无效或丢失。支持的文件扩展名 对于此输出类型是:\\&#34; .csv,.tsv,.arff \\&#34;
我对此感到非常困惑,因为如果我希望受过训练的模型能够使用&#34; .ilearner&#34;作为模型的文件扩展名。
我已经看到this question询问利用DataFactory的同一错误,还有this question on datascience.stackexchange。没有人有任何线索,答案或其他跟进。
对我失踪的任何见解都将不胜感激!
答案 0 :(得分:0)
对于那些正在寻找你的人而言,不要过度思考它&#34;一天中的时刻:
我需要提供两个输出blob文件引用:
var request = new BatchExecutionRequest()
{
Inputs = new Dictionary<string, AzureBlobDataReference>() {
{
"input1",
new AzureBlobDataReference()
{
ConnectionString = _connectionString,
RelativeLocation = $"{_containerName}/{experimentId}/{tenantId}/{trainingDataFileName}.csv"
}
},
},
Outputs = new Dictionary<string, AzureBlobDataReference>() {
{
"output1",
new AzureBlobDataReference()
{
ConnectionString = _connectionString,
RelativeLocation = $"{_containerName}/{experimentId}/{tenantId}/{outputFileNameCsv}.csv"
}
},
{
"output2",
new AzureBlobDataReference()
{
ConnectionString = _connectionString,
RelativeLocation = $"{_containerName}/{experimentId}/{tenantId}/{outputFileNameIlearner}.ilearner"
}
},
},
GlobalParameters = new Dictionary<string, string>()
{
}
};
美国英语中有一句老话说不做假设,我假设第二个输出是批处理操作中使用的可选参数。由于我实际上并没有从每个调用中查找多个结果,因此我认为可以安全地删除第二个输出参数。
TL / DR:将所有参数保留在webservice门户&#34;消费&#34;选项卡生成,并确保第一个是.csv文件引用。