У меня есть рабочий код python в keras wit shadoworflow backend. Я использую трансферное обучение от VGG16. Все хорошо.
Я хотел использовать бэкэнд mxnet, но имел некоторые проблемы:
from keras.preprocessing.image import ImageDataGenerator
from keras import applications
from helper import target_size, batch_size
from math import ceil
import numpy as np
datagen = ImageDataGenerator(rescale=1./255)
загрузка модели vgg16, исключая верхние полностью подключенные слои
model = applications.VGG16(include_top=False, weights='imagenet' , input_shape=(224, 224 , 3))
выше кода (форма (224,224,3)) дает:
ValueError: вход должен иметь 3 канала; получил
input_shape=(224, 224, 3)
если я использую: shape (3,224,24)
'Переопределение переменной% s'% self.name AssertionError: переопределение переменной block1_conv1/kernel1
как я могу правильно использовать mxnet вместо backend в рабочем коде?
Спасибо
Примечание: keras.json:
{
"epsilon": 1e-07,
"floatx": "float32",
"image_data_format": "channels_first",
"backend": "mxnet"
}
когда я меняю бэкэнд на mxnet от tensorflow, вам нужно перезагрузить vgg16 модель для mxnet?
Решение:
Установите data_format в 'channels_last'.
Подробности:
Весы VGG16 imagenet находятся в формате 'channels_last'. Вы должны установить конфигурацию keras в 'channels_last', чтобы заставить ее работать с бэкэндом MXNet.
У нас есть проблема Github и работаем над тем, чтобы позволить бэкенду MXNet загружать другие ориентированные на бэкэнд нагрузки в разных data_format. т.е. Скажите, что у вас есть подготовленная модель TF, которая была подготовлена в формате channels_last. Если вы попытаетесь загрузить это в бэкэнде MXNet с параметром data_format, установленным в 'channels_first', тогда автоматического перехода с каналов_last на channels_first не произойдет.
Причина выпуска:
Бэкэнд MXNet переносит входной слой и ядра уровня Conv, когда слой вызывается с использованием формата channel_last для ускорения. И это вызовет проблемы с заранее подготовленными другими весами бэкэнд-модели, которые не транспонируются. Мы работаем над его исправлением и включением функции.
pip install keras-mxnet
), чем собственноpip install keras-mxnet
; Вы установили эту вилку?