Не перехваченный (в обещании) Ошибка: Предоставленные данные о весе не имеют целевой переменной: block1_conv1_2 /kernel

#javascript #python #keras #tensorflowjs-converter

#javascript #python #keras #tensorflowjs-конвертер

Вопрос:

Я новичок в машинном обучении, и я следил за этим блогом о том, как написать модель с помощью mobilenet.

Мне удалось преобразовать файловую модель .h5 и я попытался реализовать ее в своем веб-приложении.

К сожалению, когда я пытаюсь загрузить модель JSON, я получаю эту ошибку:

Не перехваченный (в обещании) Ошибка: Предоставленные данные о весе не имеют целевой переменной: block1_conv1_2 /kernel.

Скриншот ошибки в браузере

Я преобразовал модель .h5 в командной строке следующим образом:

tensorflowjs_converter —input_format keras model.h5 Преобразованная модель/

Код для загрузки модели в браузере, я следил за этим блогом

 let model;
async function loadModel(name) {
  $(".progress-bar").show(); 
  model = undefined;
  model = await tf.loadModel(`ConvertedModel/model.json`);
    $(".progress-bar").hide();
}  

Чтобы увидеть код модели, пожалуйста, обратитесь к ссылке на блог.
Но ниже приведен скриншот того, как компилируется модель.
Компиляция модели

Зависимости:

  • Tensorflow 1.13.1
  • Python 3.6.0
  • tensorflowjs 1.0.1

Будем признательны за любую помощь по исправлению этого. Большое вам спасибо.

Комментарии:

1. У меня были похожие проблемы, которые были решены путем обновления с tfjs 1.2.11 на 1.3.2 .

Ответ №1:

Похоже, вы столкнулись с этой ошибкой, когда к некоторым вашим весам был добавлен дополнительный суффикс.

Вы можете обойти эту проблему, вручную удалив эти дополнительные суффиксы из вашего model.json:

 block1_conv1_2/kernel 
  

вместо этого должно быть:

 block1_conv1/kernel
  

Ошибка ‘Error in clip’ теперь исправлена, поэтому я не слишком уверен, почему вы получили эту ошибку, но еще раз вы можете обойти это, вручную отредактировав model.json и изменив каждый экземпляр:

 {"type":"ndarray", "value":6}
  

Для

 6
  

Комментарии:

1. Здравствуйте! Спасибо за ваш ответ. Ваше предложение удалило сообщение об ошибке, которое у меня было, но вернуло это теперь без перехвата (в обещании) Ошибка: Ошибка в clip: min (0) должно быть меньше или равно max ([object объект]). при утверждении (util.ts:81) в clipByValue_ (unary_ops.ts:335) в clipByValue (operation.ts:46) при t.call (advanced_activations.ts:59) в topology.ts:998 в NameScope (common.ts: 52) при t.apply (topology.ts: 957) в executeInternal (исполнитель. ts: 199) в executeInternal (executor.ts:194) в executeInternal (executor.ts:194)

2. @Rstynbl Я обновил свой ответ исправлением и для этого. Надеюсь, это поможет!

3. Я полагаю, что это должно быть просто: > «max_value»: 6.0, <

4. Спасибо! Да, теперь это работает! извините за последний запрос, глупая ошибка! спасибо за всю вашу помощь!

5. Рад, что помогли!