使用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 (将#修改为@)