Erro auto encoder convolucional

Home Fóruns Fórum Visão Computacional: O Guia Completo Erro auto encoder convolucional

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #46083
    Douglas Santos
    Participante

      na aula

      https://iaexpert.academy/topic/autoencoder-convolucional-4/

      estou com um erro no auto encoder convolucional quanto tento acessar o input.

      seguem abaixo o código e o erro, se alguém puder me ajudar, pois ate mesmo o colab compartilhado da aula, não executou e retornou o mesmo erro.

       

      ae = Sequential()

      # Encoder
      ae.add(Conv2D(filters=16, kernel_size=(3,3), activation=’relu’, padding=’valid’, input_shape=(28,28,1)))
      ae.add(MaxPooling2D(pool_size=(2,2)))

      ae.add(Conv2D(filters=8, kernel_size=(3,3), activation=’relu’, padding=’same’))
      ae.add(MaxPooling2D(pool_size=(2,2), padding=’same’))

      # ae.summary()

      ae.add(Conv2D(filters=8, kernel_size=(3,3), activation=’relu’, padding=’same’, strides=(2,2)))

      ae.add(Flatten())
      # ae.summary()

      #Decoder

      ae.add(Reshape((4,4,8)))
      ae.add(Conv2D(filters=8, kernel_size=(3,3), activation=’relu’, padding=’same’))
      ae.add(UpSampling2D((2,2)));

      ae.add(Conv2D(filters=8, kernel_size=(3,3), activation=’relu’, padding=’same’))
      ae.add(UpSampling2D((2,2)));

      ae.add(Conv2D(filters=16, kernel_size=(3,3), activation=’relu’))
      ae.add(UpSampling2D((2,2)));

      ae.add(Conv2D(filters=1, kernel_size=(3,3), activation=’sigmoid’, padding=’same’))

      ae.summary();

      
      ae.input
      
      

      —————————————————————————

      ValueError Traceback (most recent call last)

      <ipython-input-32-d823f823871b> in <cell line: 1>()
      —-> 1 ae.input

      1 frames
      /usr/local/lib/python3.10/dist-packages/keras/src/ops/operation.py in _get_node_attribute_at_index(self, node_index, attr, attr_name)
      283 “””
      284 if not self._inbound_nodes:
      –> 285 raise ValueError(
      286 f”The layer {self.name} has never been called ”
      287 f”and thus has no defined {attr_name}.”

      ValueError: The layer sequential_8 has never been called and thus has no defined input.

       

       

      #46102
      Gabriel Alves
      Moderador

        Olá Douglas!

        Na linha que ocorreu o erro, troque .input por .get_layer(‘conv2d’).input

        e também faça a troca no método Model() que está na linha logo na sequência.

        Na dúvida, acesse o Colab compartilhado na aba “Materiais” dentro da primeira aula dessa seção sobre Autoencoders, eu rodei aqui novamente e funcionou conforme esperado (nesse Colab já está atualizado essa linha de código).

        Isso ocorre em razão de uma atualização recente do tensorflow, onde é necessário um pequeno ajuste. Alternativamente, você tem a opção de usar uma versão anterior, desse modo não precisa fazer esse ajuste nessa linha de código. Se optar por usar uma versão um pouco anterior (por exemplo a 2.12.0) então basta rodar esse comando abaixo antes de todo o código, colocando como o primeiro bloco.

        !pip install tensorflow==2.12.0

        E após executar isso reiniciar a sessão do Colab. Caso não apareça já automaticamente um botão para reiniciar, basta ir em ‘Ambiente de execução > reiniciar sessão’. Com isso vai funcionar e não precisa fazer nenhum ajuste.

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