gpt4 book ai didi

tensorflow - 如何使用功能来评估不用于训练模型的自定义 TensorFlow 指标

转载 作者:行者123 更新时间:2023-11-30 09:14:11 29 4
gpt4 key购买 nike

我正在训练一个进行序列预测的模型。例如,给定某人之前写过的 10 个单词,我正在训练 LSTM 来预测他们将写的下一个单词。我有一个有时可以工作的模型,因此我想创建一个指标来跟踪模型通过词性标签预测下一个单词的能力(即预测动词时的损失的一个指标,用于预测动词的单独的指标)预测名词时的损失,然后是预测所有其他词性时损失的最后一个指标)。所以,我拥有的数据看起来像这样:

|----------------------------------------------------------|----------|----------------| 
| X | Y | part-of-speech |
|==========================================================|==========|================|
| When the sunlight strikes raindrops in the air, they act | as | preposition |
|----------------------------------------------------------|----------|----------------|
| the sunlight strikes raindrops in the air, they act as | a | determiner |
|----------------------------------------------------------|----------|----------------|
| sunlight strikes raindrops in the air, they act as a | prism | noun |
|----------------------------------------------------------|----------|----------------|
| strikes raindrops in the air, they act as prism | and | conjunction |
|----------------------------------------------------------|----------|----------------|
| raindrops in the air, they act as a prism and | form | verb |
|----------------------------------------------------------|----------|----------------|
| in the air, they act as a prism and form | a | determiner |
|----------------------------------------------------------|----------|----------------|
| the air, they act as a prism and form a | rainbow. | noun |
|----------------------------------------------------------|----------|----------------|
| ... | ... | ... |
|----------------------------------------------------------|----------|----------------|

我在训练/验证/测试集中有每个单词的词性,但我不想为模型提供任何词性信息,我希望它从原始单词中推断出所有内容(它们确实在模型结构中进行了编码)。但是,我不知道如何在度量计算函数中获取词性而不将词性作为 data_x 或 data_y 的一部分传递。换句话说,现在我的训练数据是 X 列,我的标签是 Y 列,并且我没有将词性列传递给模型。

有什么方法可以将与每个输出样本相关的词性传递给模型,而无需在训练中使用该数据?例如,要么将词性附加到 X,然后在训练中忽略它,要么将词性附加到 Y,然后告诉模型不要在训练中预测它?或者将其附加到两者中,并以某种方式将其与数据关联起来,以便指标函数可以看到它,但不能在模型训练中使用?

我使用的是tensorflow 1.15,因此我一直在使用tf.keras 库来构建我的模型和指标。

编辑12-20:我想在训练循环期间而不是在后处理步骤中通过词性来评估准确性。我正在寻找如何将词性传递到训练循环,而不使用它来训练模型。 tf.keras.metric.update_weight 的参数为 (self, y_true, y_pred, Sample_weight=None) [link] ,并且我想不出如何传递另一个参数,例如 y_part_of_speech。

最佳答案

一个简单的解决方案是将数据分割成词性包以进行评估。仍然可以在没有词性的完整数据集上进行训练,但对每个词性分别进行评估。

假设您在 Python 中执行此操作,它可能看起来像这样:

# assume we have X_eval, Y_eval, Y_pos 
# these are evaluation features, evaluation truth and evaluation part of speech
# model is your model and score a function that returns the metric given the input
# feature matrix and ground truth vector

pos_metrics = {}
for pos in Y_pos.unique():
pos_mask = (Y_pos == pos)
pos_metrics[pos] = model.score(X_eval[pos_mask], Y_pos[pos_mask])

这将为您提供一本字典,其中包含单独评估的每个词性的度量。

关于tensorflow - 如何使用功能来评估不用于训练模型的自定义 TensorFlow 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59417654/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com