微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Python计算困惑

如何解决使用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 举报,一经查实,本站将立刻删除。