我正在尝试用keraspython设计CNN架构。我想(对于我的解码器)将反褶积层5(512个滤波器大小为4x4)转换到下一层(使用反褶积2d),并转到反褶积第6层128个滤波器,滤波器大小为7x7
。我怎样才能进行反褶积呢?我尝试了以下方法:
d6 = Deconvolution2D(128, 5, 5, subsample=(2,2), activation='relu',init='uniform', output_shape=(None, 128, 7, 7), border_mode='same')(d6)
但是,此操作将导致128个大小为8x8
的过滤器。我怎么能改成7x7
?在
我还尝试从(8x8)
到{(3x3)
并使用相同数量的过滤器:
但是,最后的结果仍然是相同的(128,8,8)
,而不是{
在第一种情况下,问题是使用偶数表示
subsample
(当前为“步长”),而奇数表示图像大小。在使用
subsample=(2,2)
时,图像的大小必须是原来的一半,因此逆卷积必然是图像大小的两倍。除非您开始使用8x8或删除subsample
,否则您在这里无能为力。(如果你开始过多地使用内核大小、边界模式和子样本的组合,你可能会得到7 x 7,但除了令人困惑的数学之外,它还可能产生一个不平衡的图像,例如,更多地向左或向右。当图像太小时,这可能会影响结果)在第二种情况下,结果是相同的,因为您使用的是
border_mode='same'
。但如果你去掉这个,你的尺寸将从8x8变为6x6。你需要一个(2,2)的过滤器大小来只损失一个像素。在我建议你搬到凯拉斯2号。在
示例:
相关问题 更多 >
编程相关推荐