Watson Visual Recognition:Curl命令" url:(6)无法解析主机:POST;主机未找到"

时间:2017-01-11 10:46:29

标签: curl nginx visual-recognition

我想知道为什么我想在分类器中包含的大多数类都不是在创建分类器时制作的?

我使用以下代码训练我的分类器(使用curl -k而不是curl -x)但是并不是我想要创建的所有类都显示在输出/响应中:

输入:

curl.exe -k POST -F "Hairline Cracking
Severe_positive_examples=@HairLineCracking_Severe.zip" -F "Durability 
Cracking_positive_examples=@DCracking.zip" -F 
"Scaling_positive_example=@Scaling.zip" -F "Pop 
Outs_positive_example=@PopOuts.zip" -F "Offset 
Cracking_positive_example=@OffsetCracking.zip" -F "Map 
Cracking_positive_example=@MapCracking.zip" -F "Hairline 
Cracking_positive_example=@HairLineCracking.zip" -F 
"negative_examples=@NotConcrete.zip" -F "name=concreteIssues" 
"https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classifiers?
api_key={apikey}=2017-05-20"

输出:

url: (6) Could not resolve host: GET; Host not found

"classifier_id": "concreteIssues_580100916",
    "name": "concreteIssues",
"owner": "6217d8a0-8995-4b94-9e96-bfacd090bfcb",
"status": "training",
"created": "2017-01-11T09:17:09.558Z",
"classes": [
    {"class": "Hairline Cracking Severe"},
    {"class": "Durability Cracking"}
]

然后,我尝试通过添加响应中未显示的其余类来更新分类器,但是它响应了413请求实体太大

(注意:我所有的.zips都不到3mb,所以这不是zip文件太大的问题)

1 个答案:

答案 0 :(得分:1)

感谢您的提问。发布的代码存在一些问题。

从您的标题中,错误“url: (6) Could not resolve host: POST; Host not found”来自卷曲 - 在客户端上。这意味着它试图将字符串POST解释为URL,而不是。

您提到使用-k而不是-x。 -k选项告诉curl允许不安全的证书,我不认为你想要这里。您应该删除-k和字符串POST。使用-F选项意味着POST。

此外,字符串的一部分" https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classifiers? API_KEY = {apikey} = 2017年5月20日"似乎缺少字符串"版本"在=2017-05-20部分之前。我认为这是一个错字。

现在,关于为什么某些课程没有出现的问题,例如" Scaling"在你的例子中。我看到你的命令并没有明显的问题。但是,如果Scaling.zip文件中存在少于最少10个正面必需示例,则会发生这种情况。这可能吗?

关于重新训练和接收413错误代码 - 如果由于内部超时而导致总共有超过约100个训练图像,则会发生这种情况。这是一个已知问题 - 在7月5日的发行说明中有所描述。 https://www.ibm.com/watson/developercloud/doc/visual-recognition/releasenotes.shtml

然而,好消息是,虽然您可能会收到此错误消息,但再培训过程很可能会在后台继续并取得成功。您应该遵循此工作流程 - 并且不会为同一个分类器提交额外的再培训请求,直到第一个成功完成,成功与否:

因此,对于再培训,变通方法的工作流程是:

  1. 注意来自GET / classifiers / {cid}的retrained时间戳(如果有)的值这是上次成功重新训练的时间。
  2. 开始一次重新训练请求。单个分类器并行提交重新训练请求可能会导致未定义的结果。 VR试图阻止这一点,但是存在一个竞争条件,即第一个"第一个"。
  3. 忽略此次通话中的413错误或500错误
  4. 每个训练图像等待1秒(新图像和上一张/原始图像)
  5. 开始轮询GET / classifiers / {cid}以获得最准确的状态
  6. 检查retrained时间戳是否已更新。这表示成功,您可以重复此过程以根据需要添加更多图像。
  7. 如果状态为readyretrained时间戳与步骤1相同,则表示重新训练失败,分类器回滚到步骤1的状态。可能会有explanation字段现已添加到分类器说明中。
  8. 如果在每个训练图像等待和轮询10秒后,状态仍为retraining并且retrained时间戳未更新,则表示很可能发生故障。使用分类器进行/ classify应该具有与重新训练请求之前相同的结果。