Neural network 基于十亿字语言模型基准的语言模型困惑度计算
最近,我一直在尝试基于此实现RNNLM。 有一个与一些LSTM分解技巧有关的示例,但与作者最初的实现类似 序言部分 1) 将数据集拆分为文件,然后在训练时对文件行进行洗牌,并在测试时按顺序馈送。(): 2) 批次是连续形成的 *符号表示句子的开始\结束。每个矩阵代表一个巴赫。因此:Neural network 基于十亿字语言模型基准的语言模型困惑度计算,neural-network,deep-learning,lstm,recurrent-neural-network,language-model,Neural Network,Deep Learning,Lstm,Recurrent Neural Network,Language Model,最近,我一直在尝试基于此实现RNNLM。 有一个与一些LSTM分解技巧有关的示例,但与作者最初的实现类似 序言部分 1) 将数据集拆分为文件,然后在训练时对文件行进行洗牌,并在测试时按顺序馈送。(): 2) 批次是连续形成的 *符号表示句子的开始\结束。每个矩阵代表一个巴赫。因此: 如果句子比num_步骤长,它将在同一行的下一批中继续 如果句子较短,则批处理行将填充其他句子 3) 他们计算了一批平均损失。num_steps-LSTM的内存。 4) LSTM单元在每次训练迭代后更新,并在评估
# deterministic at test time, non deterministic at train time
if not self._deterministic:
random.shuffle(lines)
# loss_shape = [batch_size * num_steps]
# 1D tensor, reshaped 2d tensor with dims of [batch_size, num_steps]
loss = tf.reduce_mean(loss)
for i, (x, y) in enumerate(data_iterator):
# get a batch
loss = sess.run(model.loss, {model.x: x, model.y: y})
loss_nom += loss
loss_den += 1
loss = loss_nom / loss_den
sys.stdout.write("%d: %.3f (%.3f) ... " % (i, loss, np.exp(loss)))
sys.stdout.flush()
sys.stdout.write("\n")