【发布时间】:2019-09-19 11:08:17
【问题描述】:
我正在 keras 中开发一个 CNN,用于对具有 10 个光谱带的卫星图像进行分类。我在下面的网络中获得了不错的准确度(15 个类的~60% val 准确度),但我想更好地结合单个像素的光谱带之间的关系,这可以产生很多关于像素类的信息。我看到很多论文都在这样做,但它通常被称为不同的东西。例如:
- 级联跨通道参数池
- Conv1D
- 深度可分离卷积
- Conv2D(num_filters, (1, 1))
而且我不确定这些方法之间的差异(如果有的话)以及我应该如何在下面的简单 CNN 中实现它。我也不清楚我应该在一开始还是最后这样做。当通道仍然是原始光谱数据而不是特征图时,我倾向于一开始就这样做。
input_shape = (32,32,10)
num_classes = 15
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', input_shape=input_shape))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
【问题讨论】:
-
我知道这不是您要问的具体问题,但是对于这种深度的网络来说,15 个类似乎很多,您是否尝试过增加层数?有什么影响?
标签: python tensorflow keras conv-neural-network