la próxima predicción de carácter con GRU da resultados diferentes cad

la próxima predicción de carácter con GRU da resultados diferentes cada vez

Estoy tratando de predecir una evolución de sentimientos en un diálogo. Con ese fin, he usado BERT para obtener los sentimientos. Luego, para cada llamada, he codificado sentimientos como P para Positivo, E para Negativo y N para Neutral. Pensando que este es solo un próximo problema de predicción de caracteres, he usado este https://www.tensorflow .org/text/tutorials/text_generation tutorial palabra por palabra para entrenarlo con mis propios datos. El problema es que da resultados diferentes cada vez que ejecuto la inferencia.

índice_llamada sentimientos 6081bdea52c838000aaa53d3 PNNNNPNPNPPENNNNNEPNNNE 6081c27bde933a000a4384b0 PENNNNNEENNPNPEPNPPNNNNNNNNNNN 6081c54dd12abf000ab3c6f5 NNPNNNNNNNPPNNNN 6081c666d7a1f7001cecce98 NNNNNPP 6081d8576eb5530043e3401f NNNNPNNNNNNNNNNNNNNNNNNNNPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
Mostrar la mejor respuesta

Uno de los enfoques no triviales más simples para la generación de texto es hacer lo que se implementa en el tutorial en la línea resaltada ###:

@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

Probablemente recibió una alerta porque esperaba que la generación fuera determinista, lo cual es cierto para el enfoque ingenuo: siempre devuelva el carácter/palabra/token/etc. más probable, pero no es así como funciona el lenguaje en absoluto. Si está interesado en los detalles, vaya a ver el curso de PNL de Stanford (se puede ver libremente en YouTube), de lo contrario, bueno, ahí lo tiene, hay aleatoriedad en el algoritmo.