#tensorflow #keras #feature-extraction #vgg-net #pre-trained-model
Вопрос:
Я внедряю SRGAN (и у меня не очень большой опыт в этой области), который использует предварительно обученную модель VGG19 для извлечения функций. Следующий код отлично работал на Keras 2.1.2 и tf 1.15.0 до вчерашнего дня. затем в него начали кидать в «AttributeError: модуль ‘водоснабжении.утилиты.generic_utils’ не имеет атрибута ‘populate_dict_with_module_objects’» так как я обновил водоснабжении версию 2.4.3 и TF до 2.5.0. но тут его показывать «вход 0 несовместим со слоем из слоя fс1: ожидается оси -1 ввода формы, чтобы иметь значение 25088, но получил ввод с формы (none, 32768)» на следующую строку
features = vgg(input_layer)
Но здесь ввод должен быть (256,256,3).
Я понизил версии keras и tf до той, о которой я упоминал ранее, чтобы в первую очередь избавиться от этой ошибки, и до вчерашнего дня она работала хорошо.
изменение формы ввода на (224,224,3) не работает. Любая помощь в устранении этой ошибки будет очень признательна.
import glob
import time
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
import keras
from keras.layers import Input
from keras.applications.vgg19 import VGG19
from keras.callbacks import TensorBoard
from keras.layers import BatchNormalization, Activation, LeakyReLU, Add, Dense,Flatten
from keras.layers.convolutional import Conv2D, UpSampling2D
from keras.models import Model
from keras.optimizers import Adam
from scipy.misc import imread, imresize
from PIL import Image
def build_vgg():
input_shape = (256, 256, 3)
vgg = VGG19(weights="imagenet")
vgg.outputs = [vgg.layers[9].output]
input_layer = Input(shape=input_shape)
features = vgg(input_layer)
model = Model(inputs=[input_layer], outputs=[features])
return model
vgg = build_vgg()
vgg.trainable = False
vgg.compile(loss='mse', optimizer=common_optimizer, metrics=['accuracy'])
# Build and compile the discriminator
discriminator = build_discriminator()
discriminator.compile(loss='mse', optimizer=common_optimizer, metrics=['accuracy'])
# Build the generator network
generator = build_generator()
Я использую google colab
Ответ №1:
Импорт keras from tensorflow
и настройка include_top=False
в
vgg = VGG19(weights="imagenet",include_top=False)
кажется, это работает.