如下所示:
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
26
27
28
|
import numpy as np from torchvision.transforms import Compose, ToTensor 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()) |
输出:
1
2
3
4
5
6
7
8
9
10
11
12
|
( 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. ]]]] |
以上这篇PyTorch 普通卷积和空洞卷积实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/hiudawn/article/details/84500648