-1

我正在使用 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()。是否可以改用反卷积之类的东西?

4

1 回答 1

1

扁平化就好了。

Flatten在某种意义上,进入一层的“空间”关系是Dense保留的。由于来自特定位置的所有值都映射到密集层中的相同权重。因此,每个点都在数据集中一致地映射。卷积层中映射的“空间”关系正在寻找局部模式,并且在这些层中保持输入不变是很重要的。

于 2018-04-25T00:57:58.780 回答