2017-12-28 49 views
0
let model = test2() 
     var data = [1.0, 2.0,2.0,2.0,2.0,2.0,2.0] 

     guard let mlMultiArray = try? MLMultiArray(shape:[1,7], dataType:MLMultiArrayDataType.double) else { 
      fatalError("Unexpected runtime error. MLMultiArray") 
     } 

     for (index, element) in data.enumerated() { 
      mlMultiArray[index] = NSNumber(floatLiteral: element) 
     } 





     guard let markupOut = try? model.prediction(input1: mlMultiArray) else { 
      fatalError("Unexpected runtime error.") 
     } 

저는 스위프트 4와 코어 ML을 사용하고 있습니다.coreML 오류 확인 입력 확인

컴파일하지만 실행 시간 동안 실패

[coreml] 입력 입력 1은 랭크 2의 배열이 있지만,이 모델은 단일 벡터 입력 (1 레벨) 또는 의 배치의 순서를 지원 벡터 (랭크 3). [coreml] 입력을 확인하지 못했습니다.

입력 1은 멀티 어레이의 유형입니다 (더블 7)

내가 벡터의 단일 벡터 입력/배치에 두 배의 멀티 어레이를 변환하여 오류를 "입력을 확인 실패"를 수정합니까? 그렇다면 어떻게 double 형의 MultiArray를 단일 벡터 입력 또는 벡터 배치로 변환합니까?

+0

코드를 이미지를 게시하는 대신 질문 자체로 편집하십시오. 따라서 테스트가 훨씬 쉬워지고 판독기를 화면에 표시하는 데 이미지에 액세스 할 수 없게됩니다. –

답변

1

shape:[1,7]을 쓸 때 MLMultiArray는 2 등급입니다. 코어 ML은이 모델이 2 등급 입력을 지원하지 않는다고 말합니다. 따라서 shape:[7] (순위 1로 지정) 또는 shape:[1,1,7] (순위 3)으로 설정하십시오.