目前在教程和其他地方广泛使用的函数的形式如下:
conv_out = conv2d(
input= x, # some 4d tensor
filters= w, # some shared variable
filter_shape= [ nkerns, stack_size, filter_height, filter_width ],
image_shape= [ batch_size, stack_size, height, width ]
)filter_shape as [ 20, 1 , 7, 7 ],即核数为20,每个7x7,'1‘代表什么?我的image_shape是[100, 1, 84, 84 ]。[ 100, 20, 26, 26]形状的张量,我理解。我的下一层现在接受参数filter_shape = [50, 20, 5 ,5 ],image_shape = [ 100, 20 ,26, 26 ],并生成shape [ 100 ,50 ,11 ,11 ]的输出。我似乎有点理解这个操作,除了,如果我想使用一个' 50‘过滤器层,每一个工作在前面的20个功能地图,我不应该产生1000个特征地图,而不是只产生50个特征地图?为了重申我的问题,我有一个由20个特征映射组成的堆栈,每个映射运行50个卷积核,我的输出形状不是应该是[100, 1000, 11, 11]而不是[ 100, 50 , 11, 11]吗?发布于 2015-06-04 20:12:42
回答你的问题:
1代表输入通道的数量。因为你似乎在使用灰度图像,这是一个。对于彩色图像,它可以是3。对于其他卷积层,如在第二个问题中,它必须等于前一层生成的输出数。[50, 20, 5, 5]的输入信号上使用大小为[100, 20, 26, 26]的滤波器实际上也是第一个问题的一个很好的例子。这里有50个形状的[20, 5, 5]过滤器。每一幅图像都是[20, 26, 26]形状的。卷积每次使用全部20个通道:滤波器0被应用到图像通道0,滤波器1被应用到图像1,并对整个结果进行了总结。这有意义吗?https://stackoverflow.com/questions/30633181
复制相似问题