转载:cnn学习之卷积或者池化后输出的map的size计算

相信各位在学习cnn的时候,经常对于卷积或者池化后所得map的的大小具体是多少,不知道怎么算。尤为涉及到边界的时候。
 
首先须要了解对于一个输入的input_height*input_widtht的图像,在卷积或者池化的时候,常常须要加padding,这是为了处理边界问题时而采用的一种方式,因而原输入就变成了下图所示:
 
对于输出的size计算 以下图:
out_height=((input_height - filter_height + padding_top+padding_bottom)/stride_height  )+1
out_width=((input_width - filter_width + padding_left+padding_right)/stride_width )+1
 
只不过每每
out_height=out_width ,
input_height = input_width   
fillter_height=filter_width  padding_top=padding_bottom=padding_left=padding_right  
stride_width=stride_height罢了
 
 
此外对于当前主流的cnn框架
 
tensorflow中是如此计算的:
首先对于padding有两个默认的选项same和valid ,若是是valid的话,则padding的四个值均为0,也就是没有padding
对于same,计算方式以下图,图中out的值能够直接计算出来的缘由是由于padding的值是一个根据输入的定值的;你们把pad_along_height的等式转化成,左边是out_height,右边是其余的形式。就同样了。
 
 
其余的框架,好比caffe,应该都是本身设置padding的值大小。
 
至于padding出来的区域的值,通常填0。或者复制边界的值等等。
相关文章
相关标签/搜索