Keras plot_model ввод и вывод формы только вопросительный знак - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь закодировать YOLOV1 в Keras, и я использую VGG16, который принимает (224,224,3), в то время как ввод (448, 448, 3) (это размер, используемый авторами), поэтому я добавил Conv2D и слой MaxPooling для преобразования 448 в 224. Однако, когда я использую plot_model, входные и выходные формы слоев Conv и MaxPooling в середине - все это вопросительный знак (?).

введите описание изображения здесь

Вот мой код:

   base_model = VGG16(
        input_shape=backbone_img_shape,
        # input_shape=img_shape,
        include_top=False,
        weights='imagenet')
    # pdb.set_trace()
    img_input = Input(shape=img_shape)
    arch = layers.Conv2D(64, 3, padding='same', activation='relu') (img_input)
    arch = layers.MaxPooling2D() (arch)
    for i, layer in enumerate(base_model.layers[2:]):
        arch = layer(arch)
    # arch = base_model(img_input)
    arch = layers.Flatten() (arch)
    arch = layers.Dense(4096, activation='relu') (arch)
    arch = layers.Dropout(0.5) (arch)
    arch = layers.Dense((grid_num_per_axis**2)*(num_bbox_per_grid*5 + n_cls)) (arch)
    arch = layers.Reshape(
        (grid_num_per_axis, grid_num_per_axis, num_bbox_per_grid*5 + n_cls)) (arch)
    model = Model(inputs=img_input, outputs=arch)
    model.summary()
    # pdb.set_trace()
    model.compile(
        # optimizer=SGD(lr=0.001, momentum=0.9),
        optimizer='adam',
        loss=yolov1_loss)
    tf.keras.utils.plot_model(model, to_file='haha.png', show_shapes=True)

, где backbone_img_shape = (224,224,3) и img_shape = (448,448,3). Я думаю, что что-то не так, потому что, например, слой max_pooling2d имел размер (?, 224, 224, 64), но у более поздних слоев должно было быть что-то похожее вместо них (?). Пожалуйста, помогите мне, большое спасибо.

...