Forum Replies Created

Viewing 15 posts - 241 through 255 (of 414 total)
  • Author
    Posts
  • in reply to: Dúvida na contagem do error #39670
    Denny Ceccon
    Moderator

      Isso.

      in reply to: Dúvida no código do vídeo #39666
      Denny Ceccon
      Moderator

        Bem observado, Vinícius!

        O certo seria ter um loop para percorrer os batches na base MNIST também, pois na aula é utilizado somente 1 batch (128 registros) em cada época, mas existem mais dados disponíveis para treinamento. O script apresentado é mais para demonstrar o funcionamento do algoritmo e da pipeline, mas certamente pode ser melhorado.

        in reply to: Dúvida sobre o peso #39665
        Denny Ceccon
        Moderator

          Olá Mateus,

          Isto é complemento de sua outra pergunta. O erro é determinado como a soma/média dos erros individuais, então ele é o mesmo para todas as entradas.

          in reply to: Dúvida na contagem do error #39664
          Denny Ceccon
          Moderator

            Olá Mateus,

            É isso mesmo, mas via de regra o erro é representado como a média, não a soma.

            in reply to: EXEMPLO DE UM SCRIPT NÃO SQUAD #39627
            Denny Ceccon
            Moderator
              in reply to: Avaliação do número de camadas #39574
              Denny Ceccon
              Moderator

                Isso mesmo, meu engano, agora está corrigido.

                in reply to: Avaliação do número de camadas #39567
                Denny Ceccon
                Moderator

                  Olá Vinícius,

                  Você pode fazer algo assim:

                  class classificador_torch(nn.Module):
                      def __init__(self, activation, neurons, n_hidden_layers, initializer):
                          super().__init__()
                          self.input_layer = nn.Linear(30, neurons)
                          initializer(self.input_layer.weight)
                          self.hidden_layers = [nn.Linear(neurons, neurons) for _ in range(n_hidden_layers)]
                          for layer in self.hidden_layers:
                              initializer(layer.weight)
                          self.activation = activation
                          self.output_layer = nn.Linear(neurons, 1)
                      def forward(self, X):
                          X = self.input_layer(X)
                          X = self.activation(X)
                          for layer in self.hidden_layers:
                              X = layer(X)
                              X = self.activation(X)
                          X = self.output_layer(X)
                          return X
                  in reply to: Séries temporais #39526
                  Denny Ceccon
                  Moderator

                    Olá Jonas,

                    Você tem que fazer o pré-processamento dos novos dados da mesma forma que fez com os dados de treino/validação, como por exemplo montar as janelas de tempo que vai passar para o modelo, e qualquer escalonamento que tenha aplicado. Pode usar o mesmo código inclusive, só trocando os dados.

                    in reply to: Projeto #3: Codificação 5 (Redes neurais para regressão) #39525
                    Denny Ceccon
                    Moderator

                      Olá Heitor,

                      Não há uma maneira oficial de determinar. Alguns autores fizeram propostas, como você pode ver neste link, mas de minha experiência eu digo que é difícil definir isto a priori. Via de regra, eu começo usando poucas (1 ou 2), e vou testando o impacto de colocar mais, enquanto houver ganho de desempenho. A não ser que o problema seja muito complexo, não costuma haver ganhos significativos depois de cerca de 3 camadas escondidas.

                      in reply to: Erro ao executar MinMaxScaler #39127
                      Denny Ceccon
                      Moderator

                        Olá Pablo,

                        Isto acontece porque o nome das primeiras colunas é numérico, já que essas são as colunas categóricas onde foi aplicado one hot encoding. Um jeito fácil de resolver isso é seguir a sugestão do warning: antes do escalonamento, fazer X_all.columns = X_all.columns.astype(str)

                        Denny Ceccon
                        Moderator

                          Olá Vinícius,

                          Não existe uma regra geral, pois a princípio a gente não sabe qual a relevância da variável ou do registro na modelagem do problema. Em ciência de dados, muitas vezes nos vemos obrigados a testar mais de uma abordagem e escolher a melhor a posteriori, com base nos resultados de desempenho do modelo criado.

                          Mas o que você falou sobre o tamanho da base é relevante. Se o número de registros apagados for pequeno em comparação ao tamanho da base, eu geralmente escolho como primeira opção apagar o registro.

                          in reply to: Dúvida conceitual sobre a validação cruzada #39109
                          Denny Ceccon
                          Moderator

                            A segunda afirmação. O fato de um mesmo modelo treinado em um mesmo dataset ter desempenho diferente dependendo do split mostra que o modelo não aprendeu muito sobre a população de onde o dataset com que estamos trabalhando é uma amostra, mas sim apenas sobre aquela fração em que ele foi treinado/validado. Imagine que estejamos treinando um modelo para entender a relação entre x e y cujos dados disponíveis mostram a relação abaixo:

                            Se nós escolhermos uma regressão linear para modelar estes dados, o modelo vai desempenhar muito bem na fração linear da curva, mas muito mal na fração da extrema direita. Considerando ainda que estes dados são apenas uma amostra da população de dados, o desempenho pode ficar ainda pior quando estivermos fazendo predições com valores de x fora do intervalo de treinamento.

                            Mesmo que todos os folds tenham desempenho similar, ainda assim não temos certeza se o aprendizado na amostra pode ser extrapolado para a população, mas pelo menos é uma evidência a mais nesse sentido.

                            in reply to: Rede Neural LSTM #39107
                            Denny Ceccon
                            Moderator

                              Olá Jonas,

                              1. Possivelmente porque seus dados não têm tendências temporais que o modelo possa aprender. Basicamente, o modelo deve ter entendido que os dados são praticamente aleatórios, por isso está prevendo uma média com um pequeno ruído. Isto é comum para predição de preços de ações, pois se fosse fácil prever, seria muito fácil ganhar dinheiro na bolsa com algoritmos.
                              2. Sim, mas você precisa prever um valor por vez e colocar o valor predito no final da janela que usa para fazer predições, para prever o próximo. Só que, como cada predição tem um erro associado, o erro desta tática costuma explodir rapidamente. É por isso, por exemplo, que é relativamente fácil prever o tempo para amanhã, mas muito difícil para daqui a uma semana.
                              in reply to: Dúvida conceitual sobre a validação cruzada #39106
                              Denny Ceccon
                              Moderator

                                Olá Vinícius,

                                A validação cruzada serve para mostrar a capacidade de generalização do modelo. Suponha que nós façamos validação cruzada com 10 folds, 9 deles tenham ficado com desempenho similar mas o último tenha tido desempenho inferior, isto quer dizer que, dependendo da fração dos dados que utilizemos para treinamento, o desempenho da rede será diferente. No cenário ideal, todos os resultados devem ser parecidos (ou seja, o desvio padrão deve ser pequeno). Por isso não podemos escolher o modelo com melhor desempenho nesta etapa, já que este desempenho é um mero artefato da forma com que os dados foram divididos.

                                in reply to: Gradiente utilizado no arquivo rede multicamada.py do curso #39105
                                Denny Ceccon
                                Moderator

                                  Olá Vinícius,

                                  Como neste exemplo só temos 4 registros, então não faz sentido treinar em batches. O erro no final de cada época é a média dos erros individuais, já que usamos np.mean(erroCamadaSaida).

                                Viewing 15 posts - 241 through 255 (of 414 total)