2017-08-07 199 views
0

我想要做的是在导入的VGG16模型前添加一个Upsampling2D图层。然而,我不知道如何做到这一点,从未在互联网上的任何地方看到过这样的事情。Keras - 在模型前添加一层

我试图这样做:

VGG = VGG16() 
model = Sequential() 
model.add(UpSampling2D((32,32), input_shape=(7,7,3))) 
model.add(VGG) 

但试图利用这个模型任何会引发以下错误:

AttributeError: Layer model_1 has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use get_output_at(node_index) instead.

任何想法,为什么?

回答

0

您可以在VGG16()中提供input_tensor参数。

from keras.applications.vgg16 import VGG16 
from keras.layers import Input, UpSampling2D 
input_tensor = Input(shape=(7, 7, 3)) 
upsampled = UpSampling2D((32, 32))(input_tensor) 
VGG = VGG16(input_tensor=upsampled) 

通过运行VGG.summary(),你应该看到类似:

_________________________________________________________________ 
Layer (type)     Output Shape    Param # 
================================================================= 
input_1 (InputLayer)   (None, 7, 7, 3)   0 
_________________________________________________________________ 
up_sampling2d_1 (UpSampling2 (None, 224, 224, 3)  0 
_________________________________________________________________ 
block1_conv1 (Conv2D)  (None, 224, 224, 64)  1792 
_________________________________________________________________ 
block1_conv2 (Conv2D)  (None, 224, 224, 64)  36928 
_________________________________________________________________ 
block1_pool (MaxPooling2D) (None, 112, 112, 64)  0 
_________________________________________________________________ 

...