循环神经网络的简洁实现

https://zh.d2l.ai/chapter_recurrent-neural-networks/rnn-concise.html

1 Like

请问RNNModel类,begin_state函数中的注释nn.GRU 以张量作为隐藏状态、 # nn.LSTM 以张量作为隐藏状态,怎么理解?

我觉得是写错了, nn.LSTM和自己手写的都是以元组 (H,) 作为返回

1 Like

请问, 循环神经网络的简洁实现的输出层代码
output = self.linear(Y.reshape((-1, Y.shape[-1])))
是在哪里计算的啊

这里用的就是pytorch自带的 torch.nn. Linear

我在看里面的参数时,发现这个rnn中有4个参数,两个weight权重,两个bias,按照前面讲的,在rnn中不应该只有一个Wxh,一个Whh还有一个bias吗,另外在输出层才有另外的bias啊?help me please

1 Like

这些参数都是要优化算法学习的参数,你可以使用rnn.state_dict()查看这些参数。使用的时候仅仅输入相应的维度即可。

1 Like

源码写了Second bias vector included for CuDNN compatibility. Only one bias vector is needed in standard definition.

2 Likes

发现不可以用softmax欸,一旦用softmax,loss就会卡住不动,然后生成的全是类1,也就是空格,有没有大佬知道为什么,我这个大冤种今天卡了一整天就是因为这个

是不是用的functional里的softmax,然后dim写错了?

在训练途中batch size是每次训练样本大效,num_steps是句子长度,在训练过程中是否使用了全部样本呢。

state = torch.zeros((1, batch_size, num_hiddens))
这里初始化隐状态为0,反向传播计算梯度的时候不会导致更新值一直为0的情况吗?

是在 loss 前加了一层 softmax 实现吗,好像这里用的余弦交叉熵自带 softmax;我也不确定是不是这个问题。CrossEntropyLoss — PyTorch 2.0 documentation

因为这个子类继承了其父类的module的属性,所以self.linear就是nn.linear吧,我是这样理解的