Невозможно сохранить модель с помощью model.save('modelName') ⇐ Python
-
Anonymous
Невозможно сохранить модель с помощью model.save('modelName')
Я обучил сиамскую модель, но теперь столкнулся с проблемой сохранения этой модели, используя:
siamese_model.save('siamesemodel.h5')
Вот код сиамской модели:
def make_embedding(): inp = Input(shape = (100, 100, 3), name = 'Входное изображение') #Первый Блок c1 = Conv2D(64, (10, 10), активация = 'relu')(inp) m1 = MaxPooling2D(64, (2,2), дополнение = 'тот же')(c1) #Второй блок c2 = Conv2D(128, (7, 7), активация = 'relu')(m1) m2 = MaxPooling2D(64, (2,2), дополнение = 'тот же')(c2) #Третий Блок c3 = Conv2D(128, (4, 4), активация = 'relu')(m2) m3 = MaxPooling2D(64, (2,2), дополнение = 'тот же')(c3) #Финальный блок закрепления c4 = Conv2D(256, (4,4), активация = 'relu')(m3) f1 = Сгладить()(c4) d1 = Плотный (4096, активация = 'сигмовидная') (f1) return Model (входные данные = [inp], выходные данные = [d1], имя = 'Встраивание') встраивание = make_embedding() класс L1Dist(Слой): def __init__(self, **kwargs): супер().__init__() # Здесь происходит волшебство def call(self, input_embedding, validation_embedding): возврат (input_embedding-validation_embedding) защита get_config (сам): base_config = супер().get_config() config = { "подслой": keras.saving.serialize_keras_object(self.sublayer),} вернуть {**base_config, **config} def make_siamese_model(): # Обрабатывать входы # Закрепить ввод изображения в сети input_image = Input(name = 'input_img', shape = (100, 100, 3)) # Проверка изображения в сети validation_image = Input(name = 'validation_img', shape = (100, 100, 3)) # Объединить компонент L1Dist сиамский_слой = L1Dist() siamese_layer._name = 'расстояние' расстояния = siamese_layer(embedding(input_image), embedding(validation_image)) # Уровень классификации классификатор = Dense(1, активация = 'сигмовидная')(расстояния) return Model (входные данные = [input_image, validation_image], выходные данные = классификатор, имя = 'siameseNetwork') siamese_model = make_siamese_model()
ОШИБКА: модуль «tensorflow.keras» не имеет атрибута «сохранение»
У меня также возникла проблема с загрузкой уже сохраненной сиамской модели. Я попробовал загрузить модель, используя пользовательские объекты, как показано ниже, но это не сработало:
из tensorflow.keras.models import load_model model = load_model('siamesem_model.h5', custom_objects={'L1Dist':L1Dist, 'BinaryCrossentropy': tf.losses.binary_crossentropy}) NameError: имя «L1Dist» не определено
Я обучил сиамскую модель, но теперь столкнулся с проблемой сохранения этой модели, используя:
siamese_model.save('siamesemodel.h5')
Вот код сиамской модели:
def make_embedding(): inp = Input(shape = (100, 100, 3), name = 'Входное изображение') #Первый Блок c1 = Conv2D(64, (10, 10), активация = 'relu')(inp) m1 = MaxPooling2D(64, (2,2), дополнение = 'тот же')(c1) #Второй блок c2 = Conv2D(128, (7, 7), активация = 'relu')(m1) m2 = MaxPooling2D(64, (2,2), дополнение = 'тот же')(c2) #Третий Блок c3 = Conv2D(128, (4, 4), активация = 'relu')(m2) m3 = MaxPooling2D(64, (2,2), дополнение = 'тот же')(c3) #Финальный блок закрепления c4 = Conv2D(256, (4,4), активация = 'relu')(m3) f1 = Сгладить()(c4) d1 = Плотный (4096, активация = 'сигмовидная') (f1) return Model (входные данные = [inp], выходные данные = [d1], имя = 'Встраивание') встраивание = make_embedding() класс L1Dist(Слой): def __init__(self, **kwargs): супер().__init__() # Здесь происходит волшебство def call(self, input_embedding, validation_embedding): возврат (input_embedding-validation_embedding) защита get_config (сам): base_config = супер().get_config() config = { "подслой": keras.saving.serialize_keras_object(self.sublayer),} вернуть {**base_config, **config} def make_siamese_model(): # Обрабатывать входы # Закрепить ввод изображения в сети input_image = Input(name = 'input_img', shape = (100, 100, 3)) # Проверка изображения в сети validation_image = Input(name = 'validation_img', shape = (100, 100, 3)) # Объединить компонент L1Dist сиамский_слой = L1Dist() siamese_layer._name = 'расстояние' расстояния = siamese_layer(embedding(input_image), embedding(validation_image)) # Уровень классификации классификатор = Dense(1, активация = 'сигмовидная')(расстояния) return Model (входные данные = [input_image, validation_image], выходные данные = классификатор, имя = 'siameseNetwork') siamese_model = make_siamese_model()
ОШИБКА: модуль «tensorflow.keras» не имеет атрибута «сохранение»
У меня также возникла проблема с загрузкой уже сохраненной сиамской модели. Я попробовал загрузить модель, используя пользовательские объекты, как показано ниже, но это не сработало:
из tensorflow.keras.models import load_model model = load_model('siamesem_model.h5', custom_objects={'L1Dist':L1Dist, 'BinaryCrossentropy': tf.losses.binary_crossentropy}) NameError: имя «L1Dist» не определено
Мобильная версия