Dilated Convolutions 空洞卷积 pytorch版

from torch import nn
import torch.nn.init as init
def transform():
    return Compose([
        ToTensor(),
        # Normalize((12,12,12),std = (1,1,1)),
    ])

arr = range(1,26)
arr = np.reshape(arr,[5,5])
arr = np.expand_dims(arr,2)
arr = arr.astype(np.float32)
# arr = arr.repeat(3,2)
print(arr.shape)
arr = transform()(arr)
arr = arr.unsqueeze(0)
print(arr)

conv1 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=1)  # 普通卷积
conv2 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=2)  # dilation就是空洞率,即间隔
init.constant_(conv1.weight, 1)
init.constant_(conv2.weight, 1)
out1 = conv1(arr)
out2 = conv2(arr)
print('standare conv:\n', out1.detach().numpy())
print('dilated conv:\n', out2.detach().numpy())
输出:
(5, 5, 1)
tensor([[[[ 1., 2., 3., 4., 5.],
[ 6., 7., 8., 9., 10.],
[11., 12., 13., 14., 15.],
[16., 17., 18., 19., 20.],
[21., 22., 23., 24., 25.]]]])
standare conv:
[[[[ 63. 72. 81.]
[108. 117. 126.]
[153. 162. 171.]]]]
dilated conv:
[[[[117.]]]]

在这里插入图片描述

转自:https://blog.csdn.net/hiudawn/article/details/84500648

猜你喜欢

转载自blog.csdn.net/zw__chen/article/details/85007519