LSTM在文本生成中的应用
1. LSTM文本生成基础操作
1.1 预测操作
我们可以通过对之前计算得到的逻辑值(logits)应用softmax激活函数来进行预测。同时,我们也为验证逻辑值定义预测操作:
train_prediction = tf.nn.softmax(logits)
# 确保在进入下一轮生成之前更新状态变量
with tf.control_dependencies([saved_valid_output.assign(valid_output),
saved_valid_state.assign(valid_state)]):
valid_prediction = tf.nn.softmax(valid_logits)
1.2 困惑度计算
困惑度是衡量LSTM在看到下一个n - gram时的惊讶程度的指标。较高的困惑度意味着性能较差,而较低的困惑度意味着性能较好:
train_perplexity_without_exp = tf.reduce_sum(
tf.concat(train_labels,0)*-tf.log(tf.concat(
train_prediction,0)+1e-10))/(num_unrollings*batch_size)
# 计算验证困惑度
valid_perplexity_without_exp = tf.reduce_sum(val