Keras cnn模型输出形状与模型摘要不匹配

时间:2017-06-10 16:55:44

标签: conv-neural-network convolution keras-layer resnet keras-2

我正在尝试使用ResNet50()模型的卷积部分,如下所示:

cdf = np.cumsum(z_scaled)
pdf = np.gradient(cdf)

模型摘要很长,但最后一部分显示输出的形状应为(None,2048)。

enter image description here

所以我假设如果我向这个模型投入200个图像,我应该有一个形状为(200,2048)的输出。我是对的吗?

但实际上,有200张图像,我得到了一个形状为(800,2048)的输出。我想知道为什么会这样。

我检查了another topic,但这似乎是一个不同的问题。请帮忙!顺便说一下,这是在Keras 2中完成的。

更新

我意识到如果我设置#generate batches def get_batches(dirname, gen=image.ImageDataGenerator(), shuffle=True, batch_size=4, class_mode='categorical', target_size=(224,224)): return gen.flow_from_directory(dirname, target_size=target_size, class_mode=class_mode, shuffle=shuffle, batch_size=batch_size) trn_batches = get_batches("path_to_dirctory", shuffle=False,batch_size=4) #create model rn_mean = np.array([123.68, 116.779, 103.939], dtype=np.float32).reshape((1,1,3)) inp_resnet = Input((224,224,3)) preproc = Lambda(lambda x: (x - rn_mean)[:, :, :, ::-1])(inp_resnet) resnet_model = ResNet50(include_top=False, input_tensor=preproc) res5b_branch2a = resnet_model.get_layer('res5b_branch2a') last_conv_layer = resnet_model.layers[resnet_model.layers.index(res5b_branch2a)-1].output resnet_model_conv = Model(inp_resnet, Flatten()(AveragePooling2D((7,7))(last_conv_layer))) #feed batches to model trn_conv_features_resnet = resnet_model_conv.predict_generator(trn_batches, trn_batches.samples) ,我得到(800,2048)输出,输入200个图像,如果我改变batch_size=4,我得到(400,2018)输出相同200图像输入。这是batch_size=2设置的工作原理吗?我应该只使用batch_size吗?我认为batch_size是一次送到模型的图片数量,无论batch_size=1是什么,图像总数应该是200,对吧?例如,如果是4,则将50个批次送入模型,如果为2,则将100个批次送入模型。

0 个答案:

没有答案