Forum Replies Created

Viewing 15 posts - 346 through 360 (of 410 total)
  • Author
    Posts
  • in reply to: Bias #35267
    Denny Ceccon
    Moderator

      Não, em todos. Na verdade quando as redes neurais fazem classificação, elas tratam como regressão até a última etapa, e só no final transformam a predição em uma classe.

      in reply to: Detectar discurso de ódio #35265
      Denny Ceccon
      Moderator

        Você também precisaria treinar o mesmo modelo com o dataset rotulado com o assunto.

        in reply to: grid search #35245
        Denny Ceccon
        Moderator

          Oi Caio,

          Não, são dois processos separados.

          in reply to: Bias #35244
          Denny Ceccon
          Moderator

            Oi Caio,

            Imagine que você está fazendo uma regressão linear com somente um atributo. Sem o bias, esta regressão deve necessariamente passar pela origem, ou seja, o ponto (0, 0), mas nem sempre isso é desejável. O bias serve para “deslocar a origem” para outro ponto de y, e assim produzir uma regressão mais adequada. Como na figura abaixo:

             

            in reply to: Detectar discurso de ódio #35243
            Denny Ceccon
            Moderator

              Olá Fabio,

              Quanto mais específico o dataset pra seu problema de interesse, melhor costuma ser o desempenho. Você pode testar com este dataset e verificar se está satisfeito com os resultados antes de tentar com outro.

              in reply to: dropout #35242
              Denny Ceccon
              Moderator

                Oi Caio,

                Infelizmente não existe uma resposta pronta para essa pergunta, pois depende muito das características do problema e se o modelo escolhido é de fato adequado para ele, o que é muito difícil de dizer com certeza. O que se costuma falar muito em machine learning é na ideia do trade-off, em algumas situações nós temos que encontrar um equilíbrio entre, por exemplo, o desvio padrão e a acurácia. Se o desvio está muito “alto”, vale a pena aplicar dropout para reduzir a probabilidade de overfitting, mas assim a gente pode sacrificar um pouco da acurácia. A solução final vai depender de uma série de fatores como a experiência do desenvolvedor e a área de aplicação da IA.

                in reply to: Erro ao gerar a camada Bert #35081
                Denny Ceccon
                Moderator

                  Não precisa fazer downgrade, a versão 2.8.0 ainda está funcional.

                  in reply to: Erro ao gerar a camada Bert #35079
                  Denny Ceccon
                  Moderator

                    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.

                    in reply to: Validação cruzada em datasets grandes #35077
                    Denny Ceccon
                    Moderator

                      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.

                      in reply to: Como converter um resultado do tensor em um percentual? #35071
                      Denny Ceccon
                      Moderator

                        Com a função argmax:

                        array = output.numpy()
                        prob = np.max(array)
                        index = np.argmax(array)
                        return prob, index
                        in reply to: Como converter um resultado do tensor em um percentual? #35032
                        Denny Ceccon
                        Moderator
                          array = output.numpy()
                          array = np.max(array)
                          return array
                          in reply to: Como converter um resultado do tensor em um percentual? #35029
                          Denny Ceccon
                          Moderator

                            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).

                            in reply to: Não consigo prever mais classes, AJUDA POR FAVOR! #35013
                            Denny Ceccon
                            Moderator

                              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
                              in reply to: sigmoid #34752
                              Denny Ceccon
                              Moderator

                                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.

                                in reply to: sigmoid #34703
                                Denny Ceccon
                                Moderator

                                  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.

                                Viewing 15 posts - 346 through 360 (of 410 total)