Classificação de gatos e cachorros

Home Fóruns Fórum Deep Learning de A à Z com PyTorch e Python Classificação de gatos e cachorros

Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #35750
    Luis Garcia
    Participante

      Olá,

      Logo no primeiro video nos fazemos:

      nn.Linear(in_features=14*14*32, out_features=128)

      Será que me podem explicar melhor de onde vem o “14*14*32” e o “128”?

      Muito obrigado!

      #35762
      Denny Ceccon
      Moderador

        Olá Luís,

        Observe que, na aula seguinte (Base de dados, por volta de @5:15), o professor vai configurar o loader para entregar imagens com o tamanho de 64×64 pixels. Nas camadas de convolução, como estamos usando um kernel_size de 3 e stride de 1 (o stride não está explícito na construção do modelo, mas 1 é o valor padrão), isto implica que o resultado será uma matriz com 2 pixels a menos, 1 em cada extremidade. Ou seja, ao final da primeira convolução, a matriz terá 62×62 pixels. Na camada de MaxPooling, estamos usando um kernel_size de 2, o que fará com que a matriz fique com a metade dos pixels, ou seja, 31. Como este processo é repetido mais uma vez, isto resulta primeiro, na convolução, em uma matriz de 29×29, e depois, no MaxPooling, em uma matriz de 14×14 (1 pixel é descartado porque a divisão não é perfeita). Já o 32 é o número de filtros utilizado na última camada de convolução (parâmetro out_channels).

        O 128 não tem uma razão específica, a princípio poderia ser qualquer valor, mas é comum construir camadas densas com exponentes de 2, e 128 é um valor bastante comum.

        #35763
        Luis Garcia
        Participante

          Olá Denny. Obrigado pela resposta rápida. Ficou esclarecido!

          Eu estava a tentar fazer o mesmo mas com imagens próprias mas estou tendo um erro na classificação quando estou a avaliar o modelo.

          Estou a usar exatamente o mesmo código mas com imagens diferentes. (todas elas têm o mesmo tamanho.

          No entanto quando tento classificar no fim usando a função classificar_imagem retorna-me este erro:

          “cannot reshape array of size 16384 into shape (64,64,3)”

          Estará a faltar-me alguma coisa?

          Obrigado mais uma vez!

          • Esta resposta foi modificada 1 ano, 9 meses atrás por Luis Garcia.
          #35765
          Denny Ceccon
          Moderador

            Olá Luis,

            Se você observar, 16384 = 64 * 64 * 4. Imagens coloridas geralmente têm 3 canais diferentes, um para cada cor primária, mas algumas (como as de formato PNG) têm um quarto canal chamado de alpha com a transparência. Deve ser este o caso. Tenta converter elas pra JPEG antes.

            #35767
            Luis Garcia
            Participante

              Olá Denny. Agora faz todo o sentido esqueci me desse canal extra. Após converter para jpg tudo deu certo.

              Mais uma vez obrigado pela resposta rápida.

              Cumprimentos

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.