二维卷积操作常用于特征提取,输入通常是一个四维的张量。tensorflow和pytorch的二维卷积的差异主要有两个:
1)对于tensorflow来说,是BHWC的形状,通道数是最后一维;而对pytorch而言,输入是BCHW形状,通道数在第二维。
2)对于tensorflow来说,weight权重的形状是kernel, input_chan, output_chan
例如对于(2,3)的卷积核,输入4通道输出8通道,则weight权重的形状是(2,3,4,8)
而同样的配置下,pytorch的weight权重的形状是(8,4,2,3)
bias的形状是一样的。
至于padding,tensorflow有'valid'和'same',pytorch直接是数字量。
tensorflow的'valid'表示不padding,对应pytorch是(0,0),'same'表示输出形状和输入保持一致,pytorch需要根据输出输入的维度变化公式计算padding的数值。
例子中 tensorflow padding是用'valid'模式。对应pytorch:padding=(0,0)
1)tensorflow转pytorch
weight参数要做一个转置transpose(3,2,0,1),bias是一样的。

最低0.47元/天 解锁文章
8056

被折叠的 条评论
为什么被折叠?



