首页 > 代码库 > CNN碎片记录

CNN碎片记录

只有conv和fc层有权重和偏置。relu,pooling是固定函数,没有参数

每一个卷积层都是接受一个3D输入,给出一个3D输出。比如input 227*227*3 -> conv1 (kernal size:11*11, stride:4, kernals:96) -> 55*55*96 -> relu1 -> pool1 (kernal size: 3*3, stride:2) -> 27*27*96 

针对每个input的local receptive field做卷积,实际是11*11*3的input区域和11*11*3的权重做点积的结果,一共96个kernal那么,这个11*11*3的区域产生的输出就是1*1*96,整张图片走过一边的输出就是55*55*96, 每一个kernal的参数是11*11*3+1(bias)input 如果是27*27*96 -> conv2 (kernal size: 5*5, pad:2, kernals:256) -> 27*27*256 则每个kernal的参数是27*27*96+1

每个kernal用来提取一个特征,一个kernal内所有神经元的权值是共享的,因为需要提取的特征是一样的。conv1为例:一个神经元的权值是11*11*3+1, 则conv1的所有参数数量为: (11*11*3+1)*96 = 34944

CNN碎片记录