向卷积神经网络输入添加附加值?

Ale*_*Dai 4 machine-learning neural-network deep-learning conv-neural-network keras

我有一个要输入到卷积神经网络模型的图像数据集,但是,对于这些图像中的每一个,与图像关联的对象都有一定的距离或距离。

我想输入此范围作为CNN模型的附加上下文。

提供这些额外的信息是否有好处?这样做有意义吗?在Keras可行吗?

谢谢!

Imr*_*ran 8

您在这里有几个选择,一个是将数值编码为输入中的特征平面。如果您的数值是数字,则c可以向每个输入图像添加一个通道,并c在每个像素处添加该值。

另一种选择是将值合并为完全连接层的附加输入。

在喀拉拉邦,这看起来像:

conv = Sequential()
conv.add(Conv2D(32, kernel_size=(3, 3), strides=(1, 1),
                 activation='relu',
                 input_shape=input_shape))
conv.add(MaxPooling2D(pool_size=(2, 2)))
conv.add(Flatten())
conv.add(Dense(512, activation='relu'))

range = Sequential()
range.add(Dense(1, input_shape=(1,), activation='relu'))

merged = Concatenate([conv, range])
merged.add(Dense(n_classes, activation='softmax'))

merged.compile(optimizer='adam', loss='binary_crossentropy',
           metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

选择哪个选项将取决于您的数据,以及您是否认为数字功能将有助于卷积层更好地理解输入,或者是否认为直到稍后才需要它。如果有时间,您可以尝试两种架构,看看哪种架构效果更好。