标签: penn-treebank

计算在penn树库上训练LSTM的困惑

我正在penn treebank上实施语言模型培训.

我为每个时间步增加了损失然后计算困惑.

即使经过一段时间的训练,这也让我感到非常困难,数千亿.

损失本身会减少,但最多只能减少到20左右.(我需要一位数的损失以获得合理的困惑).

这让我想知道我的困惑计算是否被误导了.

它应该基于每个时间步的损失,然后平均而不是将它们全部添加?

我的batch_size是20,num_steps是35.

def perplexity(loss):
    perplexity = np.exp(loss)
    return perplexity

...
loss = 0
x = nn.Variable((batch_size, num_steps))
t = nn.Variable((batch_size, num_steps))
e_list = [PF.embed(x_elm, num_words, state_size, name="embed") for x_elm in F.split(x, axis=1)]
t_list = F.split(t, axis=1)

for i, (e_t, t_t) in enumerate(zip(e_list, t_list)):
    h1 = l1(F.dropout(e_t,0.5))
    h2 = l2(F.dropout(h1,0.5))
    y = PF.affine(F.dropout(h2,0.5), num_words, name="pred")
    t_t = F.reshape(t_t,[batch_size,1])
    loss += F.mean(F.softmax_cross_entropy(y, t_t))

for epoch in range(max_epoch):
    ....
    for i in range(iter_per_epoch):
        x.d, t.d = get_words(train_data, …
Run Code Online (Sandbox Code Playgroud)

lstm penn-treebank rnn

9
推荐指数
1
解决办法
1103
查看次数

我怎么能在python/nltk中使用完整的penn treebank数据集

我正在尝试学习在python中使用NLTK包.特别是,我需要在NLTK中使用penn树库数据集.据我所知,如果我打电话,nltk.download('treebank')我可以获得5%的数据集.但是,我在tar.gz文件中有一个完整的数据集,我想使用它.在 这里据说:

如果您可以访问Penn Treebank的完整安装,则可以将NLTK配置为加载它.下载ptb软件包,并在目录nltk_data/corpora/ptb中放置Treebank安装的BROWN和WSJ目录(符号链接也可以).然后使用ptb模块而不是treebank:

所以,我从终端打开了python,导入了nltk并输入了nltk.download('ptb').使用此命令,在我的~/nltk_data目录下创建了"ptb" 目录.最后,现在我有了~/nltk_data/ptb目录.在里面,正如我上面给出的链接所示,我已经放了我的数据集文件夹.所以这是我的最终目录层次结构.

    $: pwd
    $: ~/nltk_data/corpora/ptb/WSJ
    $: ls
    $:00  02  04  06  08  10  12  14  16  18  20  22  24
      01  03  05  07  09  11  13  15  17  19  21  23  merge.log
Run Code Online (Sandbox Code Playgroud)

在00到24之间的所有文件夹中,有许多 .mrg文件,例如wsj_0001.mrg , wsj_0002.mrg 等等.

现在,让我们回答我的问题.再次,根据这里:

如果我写下列内容,我应该能够获取文件ID:

>>> from nltk.corpus import ptb
>>> print(ptb.fileids()) # doctest: +SKIP
['BROWN/CF/CF01.MRG', 'BROWN/CF/CF02.MRG', 'BROWN/CF/CF03.MRG', 'BROWN/CF/CF04.MRG', ...]
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我输入时print(ptb.fileids())我得到了空数组.

>>> print(ptb.fileids()) …
Run Code Online (Sandbox Code Playgroud)

python nlp corpus nltk penn-treebank

7
推荐指数
1
解决办法
1993
查看次数

标签 统计

penn-treebank ×2

corpus ×1

lstm ×1

nlp ×1

nltk ×1

python ×1

rnn ×1