层 fc1 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 25088,但收到的输入具有形状 (None, 32768)

时间:2021-05-26 14:40:28

标签: tensorflow keras feature-extraction vgg-net pre-trained-model

我正在实施 SRGAN(并且在这个领域不是很有经验),它使用预训练的 VGG19 模型来提取特征。直到昨天,以下代码在 Keras 2.1.2 和 tf 1.15.0 上运行良好。然后它开始抛出“AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'”所以我将 keras 版本更新为 2.4.3 和 tf 到2.5.0。但随后它显示“层 fc1 的输入 0 与该层不兼容:输入形状的预期轴 -1 具有值 25088,但收到的输入具有形状(无,32768) em>" 在下一行

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()

The Error message

我正在使用 google colab

1 个答案:

答案 0 :(得分:1)

导入keras from tensorflow并在

中设置include_top=False
vgg = VGG19(weights="imagenet",include_top=False)

似乎有效。