-
来自ACNet[1]
-
上代码
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
a = torch.ones((1, 1, 10, 10))
kernel_V = np.array([[1, 0, 0],
[1, 0, 0],
[1, 0, 0]])
kernel_H = np.array([[1, 1, 1],
[0, 0, 0],
[0, 0, 0]])
kernel_Full = np.array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
kernel_Sum = kernel_V + kernel_H + kernel_Full
def ConvFunc(inputImg, kernel):
kernel = torch.FloatTensor(kernel).unsqueeze(0).unsqueeze(0)
weight = nn.Parameter(data=kernel, requires_grad=False)
return F.conv2d(inputImg, weight)
print(a)
print("H: \n", ConvFunc(a , kernel_H))
print("V: \n", ConvFunc(a , kernel_V))
print("Full: \n", ConvFunc(a , kernel_Full))
print(kernel_Sum)
print("Sum :\n", ConvFunc(a, kernel_Sum))
- 运行结果
tensor([[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]])
H:
tensor([[[[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.]]]])
V:
tensor([[[[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.],
[3., 3., 3., 3., 3., 3., 3., 3.]]]])
Full:
tensor([[[[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.],
[9., 9., 9., 9., 9., 9., 9., 9.]]]])
[[3 2 2]
[2 1 1]
[2 1 1]]
Sum :
tensor([[[[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.],
[15., 15., 15., 15., 15., 15., 15., 15.]]]])
- 以上用一个超级学渣的方式将二维卷积可加性得到验证…
- PyTorch implement