IDL im2col和col2im方法

IDL im2col和col2im函数示例

本人在卷积神经网络的卷积层、池化层的im2col和反向传播的col2im方法上有所启发,考虑到IDL本身并没有im2col和col2im函数,于是编写了相关的IDL函数。话不多说,直接上代码!

1. im2col

;input_data:(,)2维数组构成的输入数据
;filter_h: 滤波器的高
;filter_w: 滤波器的长
;stride=stride: 步幅
;pad=pad: 填充的个数(默认填充值为0)
;return 二维数组

FUNCTION fun_im2col, input_data, filter_h, filter_w, stride=stride, pad=pad
  param_number = N_PARAMS() ;返回非关键字参数的个数(即位置参数的个数)

  IF param_number EQ 3 THEN BEGIN
    arr_info = SIZE( input_data )
    w = arr_info[1] ;w和h为矩阵的长(列)和高(行)
    h = arr_info[2]
    ;out_h和out_w分别为输出矩阵的长和高
    out_h = FLOOR( (h + 2*pad - filter_h) / stride ) + 1 
    out_w = FLOOR( (w + 2*pad - filter_w) / stride ) + 1

    img = REPLICATE(0.0, w + 2 * pad, h + 2 * pad)
    end_w = w - 1 + pad
    end_h = h - 1 + pad
    img[pad:end_w, pad:end_h] = input_data
    column = FLTARR(filter_w, filter_h, out_w, out_h)

    FOR x = 0, filter_w-1 DO BEGIN
      x_max = x + stride*out_w
      FOR y = 0, filter_h-1 DO BEGIN
        y_max = y + stride*out_h
        ;        if y_max ge h + 2 * pad or x_max ge w + 2 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值