Я преобразовал модель 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), которая в настоящее время не может быть решена.