如何使用TensorFlow LSTM教程进行字符级语言建模?

2024-09-30 12:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现andrejkarpathy的博客中的RNN字符级语言模型http://karpathy.github.io/2015/05/21/rnn-effectiveness/ 使用TensorFlow RNN。首先,我接受了ptb的话_lm.py公司从TensorFlow中的LSTM教程中,并更改了reader函数,因此现在不再使用原始的包含10000个不同单词的PTB数据集,而是在36个不同字符的流上进行训练。(包埋形状相应减小:由10000x200改为36x36)。训练/验证集是战争与和平的文本(350万个小写字符)。在

我以为会有直接的结转。 相反,在大约20次运行之后,RNN陷入一种状态,单词的开头和结尾都有过多的T,在大约5次epoch运行之后,一个示例输出开始如下所示: 他们向艾哈迈特和汤姆塞德提出了一个新的要求,那就是他们不会看到这个国家的和平

(这里大写字母代表更高的可能性)。在接下来的100+个历元运行中不会有进一步的进展。对于训练集来说,困惑很快就冻结在4左右,而对于验证集来说则是3.75。在

的确,在典型文本中的所有字符对中,“space-T”和“T-space”是最常见的,但是RNN应该解决这些问题,对吗?我试着改变参数(ADAM表示梯度、较长步长、忘记偏差=1.0等),没有任何变化。 我已经穷途末路了。这里会出什么问题?在

非常感谢!在


Tags: io模型文本github语言httptensorflowspace
1条回答
网友
1楼 · 发布于 2024-09-30 12:30:49

你检查你的初始化了吗?如果梯度为零,学习就会陷入困境。如果将权重(或偏移)初始化为0或1,则会发生这种情况。根据激活(非线性),有不同的初始化选择。完整的初始化将是正常的或截断的正常。在

例如tf.truncated_normal([size_in, size_out], stddev=0.1)

对于偏差,小常数也起作用tf.constant(0.1, shape=[size_out])

相关问题 更多 >

    热门问题