Python 将完全连接的图层转换为conv2d并预测输出?
我尝试将扁平层作为convd2d的输入,并使用cifar-10数据集预测Denset上10类分类问题的输出。 下面是我得到错误的代码片段Python 将完全连接的图层转换为conv2d并预测输出?,python,tensorflow,keras,deep-learning,densenet,Python,Tensorflow,Keras,Deep Learning,Densenet,我尝试将扁平层作为convd2d的输入,并使用cifar-10数据集预测Denset上10类分类问题的输出。 下面是我得到错误的代码片段 global compression BatchNorm = layers.BatchNormalization()(input) relu = layers.Activation('relu')(BatchNorm) AvgPooling = layers.AveragePooling2D(pool_size=(2,2))(relu)
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
有人能告诉我怎么解决吗。
提前谢谢
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)
为什么要在二维卷积之前将数据展平?通常情况下,情况正好相反。对于Conv2D,您需要一个2D输入,展平层将2D转换为1D。