当使用 OpenNMT-py 训练模型时,我们得到一个 dict 作为输出,其中包含网络的权重和偏差。但是,这些张量具有 requires_grad = False,因此没有梯度。例如。对于一层,我们可能有以下张量,表示编码器和解码器中的嵌入以及权重和偏差。它们都没有渐变属性。
编码器.embeddings.emb_luts.0.weight
解码器.embeddings.emb_luts.0.weight
编码器.rnn.weight_ih_l0
编码器.rnn.weight_hh_l0
编码器.rnn.bias_ih_l0
编码器.rnn.bias_hh_l0
解码器.rnn.layers.0.weight_ih
解码器.rnn.layers.0.weight_hh
解码器.rnn.layers.0.bias_ih
解码器.rnn.layers.0.bias_hh
OpenNMT-py 是否可以设置 requires_gradient = True 并使用一些我没有找到的选项,或者是否有其他方法可以获得这些张量的梯度?