Respostas no Fórum

Visualizando 15 posts - 346 até 360 (de 403 do total)
  • Autor
    Posts
  • em resposta a: Erro ao gerar a camada Bert #35079
    Denny Ceccon
    Moderador

      Olá Aislan,

      Eu tentei rodar o notebook do Colab com a versão 2.8.0 do Tensorflow mesmo (a que é atualmente instalada por padrão no Colab) e não teve problemas. Você só deve fazer o downgrade se tiver problemas com a versão atual.

      em resposta a: Validação cruzada em datasets grandes #35077
      Denny Ceccon
      Moderador

        Olá Luis,

        A biblioteca skorch que usamos para fazer validação cruzada no curso suporta o uso de GPUs, como é documentado aqui. Mesmo assim, é possível implementar a validação cruzada de forma mais manual, criando os folds explicitamente, e aproveitar o suporte a GPUs que o próprio PyTorch já tem.

        em resposta a: Como converter um resultado do tensor em um percentual? #35071
        Denny Ceccon
        Moderador

          Com a função argmax:

          array = output.numpy()
          prob = np.max(array)
          index = np.argmax(array)
          return prob, index
          em resposta a: Como converter um resultado do tensor em um percentual? #35032
          Denny Ceccon
          Moderador
            array = output.numpy()
            array = np.max(array)
            return array
            em resposta a: Como converter um resultado do tensor em um percentual? #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).

              em resposta a: Não consigo prever mais classes, AJUDA POR FAVOR! #35013
              Denny Ceccon
              Moderador

                Olá Micael,

                Para prever mais de uma categoria, além de ajustar o parâmetro NB_CLASSES, você precisa transformar seus rótulos usando o LabelEncoder do Sklearn:

                from sklearn.preprocessing import LabelEncoder
                encoder = LabelEncoder()
                data_labels = encoder.fit_transform(data_labels.reshape(-1, 1))

                Aliás, dá pra fazer isto também com duas categorias, ao invés de fazer a transformação manualmente como o professor fez.

                O interessante de usar este método é que dá pra recuperar os rótulos originais no final, usando o método inverse_transform do encoder:

                def get_prediction(sentence):
                    tokens = encode_sentence(sentence)
                    inputs = tf.expand_dims(tokens, 0)
                    output = Dcnn(inputs, training=False).numpy()
                    output = np.argmax(output, -1)
                    category = encoder.inverse_transform(output)
                    return category
                em resposta a: sigmoid #34752
                Denny Ceccon
                Moderador

                  Se você usar sigmoide, então cada neurônio que tiver valor o acima de 0.5 indica presença da categoria. Por exemplo, se neurônio_mamífero = 0.6, neurônio_aquático = 0.7 e neurônio_escamoso = 0.4, então o registro é mamífero e também aquático, mas não tem escamas.

                  Quando o problema só admite uma classe, nós usamos softmax, que aí sim o valor maior indica a presença da única classe permitida.

                  em resposta a: sigmoid #34703
                  Denny Ceccon
                  Moderador

                    Até consegue, pois você pode por exemplo colocar três neurônios na camada de saída, todos ativados com sigmoide. Neste caso, a rede neural vai determinar se o registro pertence a cada uma das classes, independentemente. É assim que trabalhamos com problemas multi-classe, por exemplo quando um animal pode ser mamífero e aquático ao mesmo tempo. Mas se as classes forem exclusivas, por exemplo mamífero ou réptil ou peixe. a ativação mais adequada é softmax, que limita a resposta a somente uma categoria.

                    em resposta a: sigmoid #34702
                    Denny Ceccon
                    Moderador

                      Até consegue, pois você pode por exemplo colocar três neurônios na camada de saída, todos ativados com sigmoide. Neste caso, a rede neural vai determinar se o registro pertence a cada uma das classes, independentemente. É assim que trabalhamos com problemas multi-classe, por exemplo quando um animal pode ser mamífero e aquático ao mesmo tempo. Mas se as classes forem exclusivas, por exemplo mamífero ou réptil ou peixe. a ativação mais adequada é softmax, que limita a resposta a somente uma categoria.

                      em resposta a: sigmoid #34675
                      Denny Ceccon
                      Moderador

                        Olá Caio,

                        Cada neurônio de entrada representa uma variável do dataset, e cada neurônio terá pesos diferentes para cada camada oculta.

                        A função sigmoide produz resultados no intervalo entre 0 e 1, mas ela força para que os resultados se concentrem mais próximos de 0 ou de 1. Por isso, ela é uma função de ativação adequada para problemas de classificação binária, indicando uma das classes com 0 e a outra com 1.

                        em resposta a: COnversão Date em Datetime #34674
                        Denny Ceccon
                        Moderador

                          Olá Felix,

                          Seria interessante converter a coluna Date para datetime se o professor fosse utilizar a data para, por exemplo, plotar um gráfico temporal, mas como ele não fez isso, não faz diferença, o importante é recuperar a informação de interesse.

                          em resposta a: Visualizar um dataframe atraves do displaCY #34659
                          Denny Ceccon
                          Moderador

                            É que o displacy renderiza uma frase por vez, e tecnicamente, em uma coluna, você terá várias frases. Mas pode tentar algo deste tipo:

                            for frase in df['coluna']:
                                doc = nlp(frase)
                                displacy.render(doc, style='dep')
                            em resposta a: Qui quadrado #34657
                            Denny Ceccon
                            Moderador

                              Depende, neste caso o 1 vai só significar se o registro não está nulo para a categoria “estado civil”. Se você quiser explicitar que a categoria pode ser casado, solteiro, viúvo ou nulo, precisa fazer desta forma:

                              reg1: casado => [1, 0, 0, 0]
                              reg2: solteiro => [0, 1, 0, 0]
                              reg3: viúvo => [0, 0, 1, 0]
                              reg4: nulo => [0, 0, 0, 1]

                              Assim, cada posição da lista indica uma das 4 categorias possíveis para “estado civil”.

                              Esta codificação é tão comum que é chamada de One Hot Encoding, você vai encontrar referências a ela e como realizá-la no curso Machine Learning e Data Science com Python de A à Z, Parte 1 – Classificação, aula Atributos categóricos – OneHotEncoder.

                              em resposta a: Qui quadrado #34636
                              Denny Ceccon
                              Moderador

                                Olá Caio,

                                As classes qualitativas devem estar representadas com 0 (para ausência) e 1 (para presença), como acontece com várias colunas do dataset mostrado na aula.

                                em resposta a: Teste de hipótese #34635
                                Denny Ceccon
                                Moderador

                                  Olá Caio,

                                  Você precisa garantir que as duas são amostras representativas da mesma população. Existe uma literatura considerável sobre o que significa uma amostra representativa, mas um dos princípios mais fundamentais é que ela seja aleatória. Não precisa ter o mesmo número de amostras, mas tecnicamente você precisa garantir que o número de amostras seja suficiente para medir o efeito de interesse. Este é outro assunto que tem bastante material de referência, te recomendo este artigo pra te dar uma ideia: https://www.statology.org/minimum-sample-size-for-t-test/

                                Visualizando 15 posts - 346 até 360 (de 403 do total)