我有一个想要输入到卷积神经网络模型的图像数据集,但是,对于这些图像中的每一个,与图像相关联的对象都有一个范围或距离 .
我想输入这个范围作为CNN模型的附加上下文 .
提供这些额外的信息是否会带来任何好处?这样做有意义吗?在Keras可行吗?
谢谢!
这里有几个选项,一个是将数值编码为输入中的特征平面 . 如果您的数值为 c ,则可以为每个输入图像添加一个通道,每个像素的值为 c .
c
另一种选择是将值作为附加输入合并到完全连接的层 .
在keras中,这看起来像:
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'])
您选择哪个选项取决于您的数据以及您是否认为数字特征将有助于卷积层更好地理解输入,或者您是否认为直到稍后才需要它 . 如果你有时间,你可以尝试两种架构,看看哪种架构更好 .
1 回答
这里有几个选项,一个是将数值编码为输入中的特征平面 . 如果您的数值为
c
,则可以为每个输入图像添加一个通道,每个像素的值为c
.另一种选择是将值作为附加输入合并到完全连接的层 .
在keras中,这看起来像:
您选择哪个选项取决于您的数据以及您是否认为数字特征将有助于卷积层更好地理解输入,或者您是否认为直到稍后才需要它 . 如果你有时间,你可以尝试两种架构,看看哪种架构更好 .