Как импортировать обученную модель без инициализации весов - PullRequest
2 голосов
/ 19 июня 2019

Я преобразовал модель EfficientNet, которая была предварительно обучена в ImageNet, в tenorflow-js, используя tenorflowjs-конвертер.Когда я пытаюсь загрузить модель в мой скрипт, он пытается инициализировать веса с помощью инициализаторов, которые не реализованы в tfjs.Однако нет необходимости инициализировать веса, так как модель была предварительно обучена, и веса также были преобразованы.Преобразованная модель находится здесь: https://github.com/paulsp94/tfjs_efficientnet3_imagenet

Вот пример кода CodePen: https://codepen.io/paulsp94/pen/XLNdJq

const start = async () => {
  efficientNetURL = 'https://raw.githubusercontent.com/paulsp94/tfjs_efficientnet3_imagenet/master/model.json';

  console.log("Load Model");
  let model;
  try {
    model = await tf.loadLayersModel(efficientNetURL, {strict: true});
    console.log(model.summary());
   } catch (error) {
     console.error(error);
   }
};

start()

Вы должны открыть консоль браузера, чтобы увидеть правильную ошибку.

Ошибка:

Ошибка: «Неизвестный инициализатор: EfficientConv2DKernelInitializer. Это может быть связано с одной из следующих причин: 1. Инициализатор определен в Python, и в этом случае он долженбыть перенесенным в TensorFlow.js или в ваш код JavaScript. 2. Пользовательский инициализатор определен в JavaScript, но не зарегистрирован должным образом в tf.serialization.registerClass (). "

Обновление: Хотя я мог обойти инициализаторы, заменив все неизвестные инициализаторы, например, инициализаторами нулей.Я столкнулся с другой проблемой с пользовательскими слоями (слой Swish), которая в настоящее время не может быть решена.

1 Ответ

0 голосов
/ 19 июня 2019

Согласно документации:

TensorFlow.js В настоящее время слои поддерживают только модели Keras, использующие стандартные конструкции Keras.Модели, использующие неподдерживаемые операции или слои - например, пользовательские слои, слои Lambda, пользовательские потери или пользовательские метрики - не могут быть импортированы автоматически, поскольку они зависят от кода Python, который не может быть надежно переведен в JavaScript.

ItВ настоящее время невозможно импортировать модель с пользовательскими слоями

...