问题描述
我目前正在训练一种语言模型,为了评估它,我编写了下面给出的函数来计算测试集的复杂性,
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 (将#修改为@)