对于分类任务(我正在向 CNN 显示一对正好两个图像,应该以 0 -> 假对或 1 -> 真对回答)我正在努力弄清楚如何设计输入。
目前网络的架构如下所示:
image-1 image-2
| |
conv layer conv layer
| |
_______________ _______________
|
flattened vector
|
fully-connected layer
|
reshape to 2D image
|
conv layer
|
conv layer
|
conv layer
|
flattened vector
|
output
卷积层有一个2x2
步幅,因此图像尺寸减半。我会使用第一个全连接层作为第一层,但是它的大小不适合我的 GPU 的 VRAM。因此,我首先将图像大小减半的第一个 conv 层,然后将信息与全连接层组合,然后使用 conv 层对组合图像信息进行实际分类。
我的第一个想法是简单地将信息相加,例如(image-1 + image-2) / 2
……但这不是一个好主意,因为它严重混淆了图像信息。
下一个尝试是将图像连接成一个大小为 400x100 的图像,而不是两个 200x100 的图像。但是,这种方法的结果非常不稳定。我认为是因为在大的连接图像的中心,卷积会卷积两个图像的信息(的右边界image-1
/左边界image-2
),这再次以不太有意义的方式混合了图像信息。
我的最后一种方法是当前的架构,简单地留下一个全连接层的image-1
组合image-2
。这很有效 - 有点(结果显示出很好的收敛性,但可能会更好)。
将两个图像组合为 CNN 输入的合理、“最先进”的方法是什么?
我显然不能简单地增加批量大小并在那里放置图像,因为这些对是相互关联的,如果我一次只输入一个图像并增加批量大小,这种关系就会丢失。