长短期记忆(LSTM) 讨论区


#1

http://zh.gluon.ai/chapter_recurrent-neural-networks/lstm.html


#2

gluon官网教程运行出现这个错误:
…\utils.py:266: RuntimeWarning: invalid value encountered in greater
if norm > clipping_norm:
Traceback (most recent call last):
File “D:/deep/code/mxnet_test/gluon-tutorials-zh-master/rnn_test/GRU_test.py”, line 84, in
idx_to_char=idx_to_char, char_to_idx=char_to_idx)
File “…\utils.py”, line 349, in train_and_predict_rnn
exp(train_loss / num_examples)))
OverflowError: math range error


#3

LSTM教程也一样


#4

你的运行环境和python版本是什么,如果把num_steps改小呢


#5

是不是grad clipping没起作用啊,不过我在CPU和GPU两个版本上的mxnet都没有办法复现这个错误,python3.6.

你可以先更新一下mxnet看看错误还在不:
pip install mxnet --pre --upgrade

如果不work,试试把梯度裁剪换成这个:

def grad_clipping(params, clipping_norm, ctx):
    """Gradient clipping."""
    if clipping_norm is not None:
        norm = nd.array([0.0], ctx)
        try:
            for p in params:
                norm += nd.sum(p.grad ** 2)
        except:
            for p in params:
                p.grad[:] *= 0
        else:
            norm = nd.sqrt(norm).asscalar()
            if norm > clipping_norm:
                for p in params:
                    p.grad[:] *= clipping_norm / norm

如果还不work,可以看看不打印ppl,只打印loss,看看loss有多大


#7

你好,请问你解决了么?我也有用到了这个错误,而且当不打印困惑度的时候预测字都是一样的


#8

后来发现是框架的一个bug,就是用GPU计算平方会inf,你把版本更新一下,看可以不,或者不用平方,用x*x。


#9

谢谢~我最近才看的这个应该比较新,改成p.grad*p.grad好像就正常了