преобразовать полностью связанный слой в 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)