Python 使用Pytork'实现简单的单层RNN有困难;s基类&x201C;nn.线性和#x201D;班

Python 使用Pytork'实现简单的单层RNN有困难;s基类&x201C;nn.线性和#x201D;班,python,pytorch,typeerror,recurrent-neural-network,Python,Pytorch,Typeerror,Recurrent Neural Network,在使用Pytorch nn.linear函数制作简单RNN时。首先,我将我的权重初始化为 self.W_x = nn.Linear(self.input_dim, self.hidden_dim, bias=True) self.W_h = nn.Linear(self.hidden_dim, self.hidden_dim, bias=True) 现在在主要步骤中,我将使用前一个状态和使用此代码语句的权重值来获得当前状态的结果 h_t = np.tanh((inp * self.W_x) +

在使用Pytorch nn.linear函数制作简单RNN时。首先,我将我的权重初始化为

self.W_x = nn.Linear(self.input_dim, self.hidden_dim, bias=True)
self.W_h = nn.Linear(self.hidden_dim, self.hidden_dim, bias=True)
现在在主要步骤中,我将使用前一个状态和使用此代码语句的权重值来获得当前状态的结果

h_t = np.tanh((inp * self.W_x) + (prev_h * self.W_h))
所以这里我得到了python错误,如下所示

TypeError: mul(): argument 'other' (position 1) must be Tensor, not Linear

有谁能帮我问好吗…

你的
W_x
W_h
不是权重,而是使用权重和偏差的线性层(因为
bias=True
)。它们需要作为函数调用

此外,不能对PyTorch张量使用NumPy操作,但如果将张量转换为NumPy数组,则无法通过它们反向传播,因为计算图中只跟踪PyTorch操作。无论如何,不需要像PyTorch一样使用np.tanh

h_t=torch.tanh(self.W_x(inp)+self.W_h(prev_h))

什么是单层RNNN@prosti单层RNN是指单层神经元,其中第一个神经元的每个输出都是第二个神经元的输入,序列继续。非常感谢您指出错误。希望它能帮助我解决问题。祝你过得愉快,迈克尔。