繁体   English   中英

如何在Keras中输入预训练网络的最后一层作为张量以展平

[英]How to input last layer of pretrained network as tensor to flatten in Keras

我正在尝试建立一个具有两个输出的模型,一个用于分类,另一个用于回归。 我正在使用Keras的预训练VGG16作为卷积特征提取器。 但是,当我尝试在两个输出序列中构建下一个展平层时,会出现输入不是张量的错误。 如何确保仅将卷积基础的最后一层作为下一层的输入?

conv_base = VGG16(include_top = False,
                  weights = 'imagenet')
conv_base.trainable = False
with tf.variable_scope('classification_head', reuse=tf.AUTO_REUSE):
    x = Flatten()(conv_base.layers[-1])
    x = Dense()(x)

错误:

ValueError:层flatten_1的输入不是符号张量。 收到的类型:类'keras.layers.pooling.MaxPooling2D'。 完整输入:[keras.layers.pooling.MaxPooling2D对象位于0xc2855c9b0]。 该层的所有输入应为张量。

得到所需的张量为:

features = conv_base.output 
print(features)

张量(“ block5_pool / MaxPool:0”,shape =(?, 11,14,512),dtype = float32)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM