import torch
from torch import nn
def corr2d(X,K):
h,w=K.shape
Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))
for i in range(Y.shape[0]):
for j in range(Y.shape[1]):
Y[i,j]=(X[i:i+h,j:j+w]*K).sum()
return Y
# X=torch.tensor([[0.0,1.0,2.0],[3.0,4.0,5.0],[6.0,7.0,8.0]])
# K=torch.tensor([[0.0,1.0],[2.0,3.0]])
#
# print(corr2d(X,K))
# 二维实现卷积层
class Conv2d(nn.Module):
def __init__(self,kernel_size):
super().__init__()
self.weight=nn.Parameter(torch.rand(kernel_size))
self.bias=nn.Parameter(torch.zeros(1))
def forward(self,x):
return corr2d(x,self.weight)+self.bias
X=torch.tensor([[0.0,1.0,2.0],[3.0,4.0,5.0],[6.0,7.0,8.0]])
ney=Conv2d((2,2))
print(ney(X))
# X=torch.ones((6,8))
# X[:,2:6]=0
# print(X)
# K=torch.tensor([[1.0,-1.0]])
# print(corr2d(X,K))
实现二维卷积层
最新推荐文章于 2022-09-06 15:22:23 发布