赞
踩
用以前的代码并不能实现 python、Tensorflow 同样的效果。
MatConvNet 和 Tensorflow 中的卷积,在步长为2时,并且图像长宽是偶数时,并不完全相同
比如步长为1的一个卷积结果是这样的:
- [[ 2. 0. 2. 4.]
- [ 1. 4. 4. 3.]
- [ 4. 3. 5. 9.]
- [ 3. 4. 6. 2.]]
步长为2的一个卷积结果可以是:
- [[ 2. . 2. .]
- [ . . . .]
- [ 4. . 5. .]
- [ . . . .]]
由于跳步的位置不同也可以是:
- [[ . . . .]
- [ . 4. . 3.]
- [ . . . .]
- [ . 4. . 2.]]
这两个结果显然是不同的。
由于我的卷积代码是从 MatConvNet 中抄来的,所以这里用
<步长为1的卷积 + 间隔删除> 来代替 <步长为2的卷积>
2步长卷积:
- /*2步长卷积*/
- wid=wid/2;hei=hei/2;
- if(ConvX->输出维度 != 目标->depth || 目标->width != wid || 目标->height != hei)
- Resize卷积层(*目标,wid,hei,ConvX->输出维度);
- pad=ConvX->核宽/2;
- vl_nnconv(源,目标,ConvX ,2,2,pad,pad,pad,p
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。