преобразовать полностью связанный слой в conv2d и предсказать результат?

Я пытаюсь получить плоский слой в качестве входных данных для convd2d и прогнозирую результат для задачи классификации 10 классов в Densenet с набором данных cifar-10. следующий фрагмент кода, в котором я получаю сообщение об ошибке.

global compression
    BatchNorm = layers.BatchNormalization()(input)
    relu = layers.Activation('relu')(BatchNorm)
    AvgPooling = layers.AveragePooling2D(pool_size=(2,2))(relu)
    flat = layers.Flatten()(AvgPooling)
    # output = layers.Dense(num_classes, activation='softmax')(flat)
    output = layers.Conv2D(filters=10,kernel_size=3,strides=1,activation='softmax',padding='valid')(flat)

Я получаю следующую ошибку

ValueError: Input 0 is incompatible with layer conv2d_513: expected ndim=4, found ndim=2

Может ли кто-нибудь сказать мне, как это решить. Заранее спасибо.

1 ответ

output = layers.Conv2D(filters=10, kernel_size=(1,1),strides =(2,2))

Этот код изменит ваш плотный слой на соответствующий слой Conv2D. Но чтобы избежать ошибок, вам нужно добавитьsoftmaxкак другой слой. Что должно выглядеть так:

not_final = layers.Activation('softmax')(output)

result = layers.Flatten()(not_final)
Другие вопросы по тегам