【发布时间】:2019-11-15 18:45:14
【问题描述】:
当我们在 Keras2 中进行迁移学习时,Arguments 需要“input_shape”和“input_tensor”。但我只使用了 input_tensor,从未使用过 input_shape。我觉得只有input_tensor就够了,不知道什么时候用input_shape。 我应该如何单独使用它们?
我同时使用了input_tensor和input_shape,分别取值,只采用了input_tensor的值,忽略了input_shape。
vgg16_model = VGG16(include_top=False, weights='imagenet',
input_tensor = Input(shape=(150, 150, 3)),
input_shape=(224,224,3))
top_model = Sequential()
top_model.add(Flatten(input_shape=vgg16_model.output_shape[1:]))
top_model.add(Dense(256, activation='relu'))
top_model.add(Dense(1, activation='sigmoid'))
model = Model(input=vgg16_model.input, output=top_model(vgg16_model.output))
model.summary()
Layer (type) Output Shape Param #
================================================================
input_6 (InputLayer) (None, 150, 150, 3) 0
_________________________________________________________________
block1_conv1 (Conv2D) (None, 150, 150, 64) 1792
_________________________________________________________________
block1_conv2 (Conv2D) (None, 150, 150, 64) 36928
_________________________________________________________________
block1_pool (MaxPooling2D) (None, 75, 75, 64) 0
_________________________________________________________________
block2_conv......
我预计这段代码会出现一些错误,但没有错误,而且这个模型可以接受 (150, 150, 3) 的形状。 Input_shape=(224,224,3) 被忽略。
你能给我一点帮助吗?谢谢。
【问题讨论】:
-
当不使用完全连接的分类层时,两者都是可选参数。这些模型可以接受可变大小的输入,但随后会提供可变大小的输出
-
谢谢!但我还有一个问题。我添加了代码的详细信息。我什么时候必须使用 input_shape 而不是 input_tensor?
标签: python machine-learning keras deep-learning transfer-learning