GRU 的下一个字符预测每次都会给出不同的结果
next character prediction with GRU gives different results each time
我正在尝试预测对话中情绪的演变。为此,我使用了 BERT 来获取情绪。然后对于每个电话,我将情绪编码为 P 表示积极,E 表示消极,N 表示中立。认为这只是一个下一个字符预测问题,我使用这个 https://www.tensorflow.org/text/tutorials/text_generation 教程逐字地在我自己的数据上训练它。问题是每次我 运行 推理时它都会给出不同的结果。
call_index
sentiments
6081bdea52c838000aaa53d3
PNNNNPNPNPPENNNNNEPNNE
6081c27bde933a000a4384b0
PENNNNNEENNPNPEPNPPNNNNNNNNNNN
6081c54dd12abf000ab3c6f5
NNPNNNPNNNPPNNN
6081c666d7a1f7001cecce98
NNNNNPP
6081d8576eb5530043e3401f
NNNNPNNNNNNNNNNNNNNNNNNPPNNNNNNNNNENNNNNNENNNN
最简单的文本生成方法之一是执行本教程中 ###
突出显示的行:
@tf.function
def generate_one_step(self, inputs, states=None):
input_chars = tf.strings.unicode_split(inputs, 'UTF-8')
input_ids = self.ids_from_chars(input_chars).to_tensor()
predicted_logits, states = self.model(inputs=input_ids, states=states,
return_state=True)
predicted_logits = predicted_logits[:, -1, :]
predicted_logits = predicted_logits/self.temperature
predicted_logits = predicted_logits + self.prediction_mask
### THE FOLLOWING LINE IS IMPORTANT ###
predicted_ids = tf.random.categorical(predicted_logits, num_samples=1)
predicted_ids = tf.squeeze(predicted_ids, axis=-1)
predicted_chars = self.chars_from_ids(predicted_ids)
return predicted_chars, states
你可能被提醒是因为你期望生成是确定性的,这对于天真的方法来说是正确的:总是 return 最有可能 character/word/token/etc,但这不是语言在全部。如果你对细节感兴趣,去看看斯坦福 NLP 课程(它可以在 YouTube 上免费观看),否则,好吧,你去吧,算法中有随机性。
我正在尝试预测对话中情绪的演变。为此,我使用了 BERT 来获取情绪。然后对于每个电话,我将情绪编码为 P 表示积极,E 表示消极,N 表示中立。认为这只是一个下一个字符预测问题,我使用这个 https://www.tensorflow.org/text/tutorials/text_generation 教程逐字地在我自己的数据上训练它。问题是每次我 运行 推理时它都会给出不同的结果。
call_index | sentiments |
---|---|
6081bdea52c838000aaa53d3 | PNNNNPNPNPPENNNNNEPNNE |
6081c27bde933a000a4384b0 | PENNNNNEENNPNPEPNPPNNNNNNNNNNN |
6081c54dd12abf000ab3c6f5 | NNPNNNPNNNPPNNN |
6081c666d7a1f7001cecce98 | NNNNNPP |
6081d8576eb5530043e3401f | NNNNPNNNNNNNNNNNNNNNNNNPPNNNNNNNNNENNNNNNENNNN |
最简单的文本生成方法之一是执行本教程中 ###
突出显示的行:
@tf.function
def generate_one_step(self, inputs, states=None):
input_chars = tf.strings.unicode_split(inputs, 'UTF-8')
input_ids = self.ids_from_chars(input_chars).to_tensor()
predicted_logits, states = self.model(inputs=input_ids, states=states,
return_state=True)
predicted_logits = predicted_logits[:, -1, :]
predicted_logits = predicted_logits/self.temperature
predicted_logits = predicted_logits + self.prediction_mask
### THE FOLLOWING LINE IS IMPORTANT ###
predicted_ids = tf.random.categorical(predicted_logits, num_samples=1)
predicted_ids = tf.squeeze(predicted_ids, axis=-1)
predicted_chars = self.chars_from_ids(predicted_ids)
return predicted_chars, states
你可能被提醒是因为你期望生成是确定性的,这对于天真的方法来说是正确的:总是 return 最有可能 character/word/token/etc,但这不是语言在全部。如果你对细节感兴趣,去看看斯坦福 NLP 课程(它可以在 YouTube 上免费观看),否则,好吧,你去吧,算法中有随机性。