使用 Pytorch 的基类"nn"实现简单单层 RNN 的困难。线性"类



同时使用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_xW_h不是权重,而是线性层,它使用权重和偏差(自bias=True年起(。它们需要作为函数调用。

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

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

最新更新