Я запутался, чтобы сделать mlmodel обновляемым с помощью инструментов coreml3 - PullRequest
0 голосов
/ 12 марта 2020

У меня есть регрессор mlmodel, обученный с помощью mobilenetv2. Последние несколько слоев следующие:

enter image description here

Я хочу сделать эту mlmodel обновляемой mlмоделируйте и обучите внутренний слой продукта (полностью связанный слой в pytorch). Я преобразовал mlmodel со ссылкой на этот блог: https://machinethink.net/blog/coreml-training-part4/. Но я обнаружил, что второй обучающий ввод обновляемой mlmodel по умолчанию имеет значение «score_true», и это просто значение (тип данных: int32).

enter image description here

Однако выходной слой softmax представляет собой вектор с 10 значениями с плавающей запятой. Итак, как я могу установить второй обучающий вход для вектора, потому что основной истиной является вектор с 10 значениями с плавающей запятой.

И я смотрю API CrossEntropyLoss int coremltools3.3. Его входной параметр может принимать вектор длины N. Так как я могу изменить сгенерированный по умолчанию Score_true с intVal на вектор? Большое спасибо.

enter image description here

1 Ответ

0 голосов
/ 12 марта 2020

То, что вы передаете в score_true MLMultiArray, является индексом класса. Вам не нужно кодировать это самостоятельно, т.е. не нужно превращать его в вектор длиной N.

...