【问题标题】:Difficulty in Implementing a simple single-layer RNN using Pytorch's base class “nn.Linear” class使用 Pytorch 的基类“nn.Linear”类实现简单单层 RNN 的难度
【发布时间】:2020-05-17 20:04:01
【问题描述】:

在使用 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

谁能帮我打个招呼……

【问题讨论】:

  • 什么是单层RNNN
  • @prosti 单层 RNN 表示单层神经元,其中第一个神经元的每个输出都是第二个神经元的输入,并且序列继续。

标签: python pytorch typeerror recurrent-neural-network


【解决方案1】:

您的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))

【讨论】:

  • 非常感谢您指出错误。希望它可以帮助我解决我的问题。祝你有美好的一天迈克尔。
猜你喜欢
  • 2018-02-25
  • 2019-06-23
  • 1970-01-01
  • 2019-08-09
  • 2020-07-04
  • 2018-12-24
  • 2021-09-15
  • 2019-07-21
  • 2013-04-19
相关资源
最近更新 更多