Como converter um resultado do tensor em um percentual?

Home Fóruns Fórum Processamento de Linguagem Natural com BERT e Python Como converter um resultado do tensor em um percentual?

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #35023
    Aislan Greca
    Participante

      Fiz uma classificação de 8 saídas e o resultado foi este:

      tf.Tensor( [[5.0646520e-07 1.3181153e-14 1.4571293e-07 7.5655301e-08 1.2556800e-12 6.9665895e-10 9.9999928e-01 6.7364786e-10]], shape=(1, 8), dtype=float32)

      como converto separadamente este valor em percentual de modo que eu possa responder com a classificação mais próxima?

      #35029
      Denny Ceccon
      Moderador

        Olá Aislan,

        Este tensor já contém as probabilidades para cada uma das classes. Observe que o valor no index 6 é igual a 0.999, que equivale a 99.9%. Todos os outros são tão baixos que na prática equivalem a zero.

        Se você quiser formatar melhor, pode converser este tensor para numpy array com array = tensor.numpy(), e depois extrair o valor máximo com np.max(array).

        #35030
        Aislan Greca
        Participante

          Realmente estou com dúvida nesta conversão

          usei desta forma, mas deu erro

          def get_prediction(sentence):
          tokens = encode_sentence(sentence)
          inputs = tf.expand_dims(tokens, 0) # (batch_size) (1,…)

          output = Dcnn(inputs, training=False)
          array = tensor.numpy(output)
          return array

          #35031
          Aislan Greca
          Participante

            Tendei desta forma, também não consegui

            def get_prediction(sentence):
            tokens = encode_sentence(sentence)
            inputs = tf.expand_dims(tokens, 0) # (batch_size) (1,…)

            output = Dcnn(inputs, training=False)
            array = output.numpy
            array = np.max(array)
            return array

            #35032
            Denny Ceccon
            Moderador
              array = output.numpy()
              array = np.max(array)
              return array
              #35069
              Aislan Greca
              Participante

                Como eu correlaciono o valor maior da probabilidade com a classificação, ou seja, como sei que o valor maior é do item 1,2,3,4 ou 5?

                #35070
                Aislan Greca
                Participante

                  O ideal seria mostrar o % maior e em qual posição ele está no array

                  array([[9.99883652e-01, 1.02646968e-14, 2.08835633e-27, 1.16383424e-04, 5.13055348e-23, 1.39506823e-18, 1.89806015e-31, 8.62781277e-19]], dtype=float32)

                  Assim, seria possível saber em qual item foi classificado.

                  #35071
                  Denny Ceccon
                  Moderador

                    Com a função argmax:

                    array = output.numpy()
                    prob = np.max(array)
                    index = np.argmax(array)
                    return prob, index
                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.