我正在使用Keras进行图像分类。 有我的模特:
model = Sequential()
model.add(Conv2D(filters = 8, kernel_size = (3,3),padding = 'Same',
activation ='relu', input_shape = (64,64,3)))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(filters = 16, kernel_size = (3,3),padding = 'Same',
activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(filters = 32, kernel_size = (3,3),padding = 'Same',
activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(3, activation = "sigmoid"))

我想避免使用Flatten(),因为在这种情况下我们会丢失一些空间信息。我看了一些教程,但他们都使用了Flatten()。是否可以使用像deconvolution这样的东西?
答案 0 :(得分:0)
Flatten很好。
"空间"从某种意义上说,Flatten
进入Dense
层的关系是保留的。因为来自特定位置的所有值都映射到密集层中的相同权重。因此,每个点都在数据集中一致地映射。 "空间"在卷积层中映射的关系正在寻找局部模式,并且在这些层中保持输入不变是很重要的。