Python 具有不可训练预定义核的PyTorch卷积

Python 具有不可训练预定义核的PyTorch卷积,python,deep-learning,neural-network,pytorch,conv-neural-network,Python,Deep Learning,Neural Network,Pytorch,Conv Neural Network,我想为我的神经网络引入一个自定义层。数学运算应该是具有不可训练内核的离散二维互相关(或卷积)。内核中的值取决于三个因素:内核形状、步长和填充。我打算将输出元素与权重矩阵相乘 PyTorch已经实现了一个称为“Conv2d”的离散2D互相关类,但是它生成一个随机内核,并使用所述内核的条目进行训练。如果可能的话,我希望有一个类似于“Conv2d”的类来满足我的需要,以确保最有效地使用我的GPU。我试着自己实现这一点,但不知道如何为输入数组获得正确的形状如果我理解正确,Conv2d“仅在通道中使用”。

我想为我的神经网络引入一个自定义层。数学运算应该是具有不可训练内核的离散二维互相关(或卷积)。内核中的值取决于三个因素:内核形状、步长和填充。我打算将输出元素与权重矩阵相乘


PyTorch已经实现了一个称为“Conv2d”的离散2D互相关类,但是它生成一个随机内核,并使用所述内核的条目进行训练。如果可能的话,我希望有一个类似于“Conv2d”的类来满足我的需要,以确保最有效地使用我的GPU。我试着自己实现这一点,但不知道如何为输入数组获得正确的形状如果我理解正确,Conv2d“仅在通道中使用”。

如果我理解正确,您需要一个定义了内核的
Conv2d
层,并且您不希望它是可学习的

在这种情况下,您可以像这样使用
conv2d
功能:

import torch.nn.功能为F
输出张量=F.conv2d(输入张量,您的内核,…)
参数
your_kernel
是权重矩阵,您还需要声明函数的其他参数,如
padding
stride

然后,您需要将
requires\u grad
属性设置为“False”,如果不希望它是可学习的,则将其从优化器中排除

关于形状问题,也许你想