Использование авто-кодера для расчета потери восприятия вместо Image-Classifier (VGG-16) - PullRequest
0 голосов
/ 10 декабря 2018

Для обучения Генеративных Состязательных Сетей я использую функцию Perceptual_Loss.Perceptual_Loss - это функция, используемая для определения, похожи ли два изображения друг на друга после того, как распознает особенности изображений.Как уже упоминалось здесь , мы можем использовать классификатор изображений и автоматический кодер для распознавания функций.Большинство разработчиков использовали VGG16 в качестве классификатора изображения для вычисления Perceptual_Loss.Я хочу использовать предварительно обученный автоэнкодер (обученный самостоятельно) для этого.Используя предварительно обученные веса автоэнкодера, я изменил следующую оригинальную функцию Perceptual_Loss как

                     #### Original Perceptual Loss Function ####

from keras.applications.vgg16 import VGG16
def perceptual_loss(y_true, y_pred):
    vgg = VGG16(include_top=False, weights='imagenet', input_shape=(256,256,3))
    loss_model = Model(inputs=vgg.input, outputs=vgg.get_layer('block3_conv3').output)

    loss_model.trainable = False

    return K.mean(K.square(loss_model(y_true) - loss_model(y_pred))) 

                    #### My Perceptual Loss Function ####

trained_autoencoder=load_model('Path/AutoEncoder_Model.h5')
trained_autoencoder.compile(loss='mean_squared_error', optimizer='adadelta')
def perceptual_loss(y_true, y_pred):
  return K.mean(K.square(trained_autoencoder.predict(y_true) - trained_autoencoder.predict(y_pred)))

Но это дает мне эту ошибку

**When feeding symbolic tensors to a model, we expect thetensors to have a static batch size. Got tensor with shape: (None, None, None, None)**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...