如何解决使用Python计算困惑
我目前正在训练一种语言模型,为了评估它,我编写了下面给出的函数来计算测试集的复杂性,
def calculate_perplexity(predictions,labels):
log_probabilities = []
for i in range(0,len(predictions)):
log_prob = np.log(np.sum(predictions[i] * labels[i]))
log_probabilities.append(log_prob)
sum_log_probabilities = np.sum(log_probabilities)
per_char_log_probability = sum_log_probabilities / len(predictions)
perplexity = np.exp(per_char_log_probability)
return perplexity
predictions参数是指使用model.predict()
的TensorFlow模型的预测,并且标签是一种一键编码格式的目标。
我已经使用对数概率完成了此操作,并且参考了下面给出的文章
https://towardsdatascience.com/perplexity-in-language-models-87a196019a94
我想知道我所做的是正确的还是真实的,
perplexity = 1 / np.exp(per_char_log_probability)
对此将提供任何帮助。
注意:以下是我的语言模型的代码,仅供您参考
tf.keras.optimizers.Adam(learning_rate=0.01)
model = tf.keras.Sequential([
tf.keras.layers.Embedding(total_chars,256,input_length=lk_inputs.shape[1]),tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(100)),tf.keras.layers.Dense(total_chars,activation = 'softmax')
])
我也愿意就如何改进我的模型提出任何建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。