Как импортировать обученную модель без инициализации весов

Я преобразовал модель 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 ответ

Решение

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

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

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

Другие вопросы по тегам