Autoncoders Aula: Codificação de imagens

Home Fóruns Fórum Visão Computacional: O Guia Completo Autoncoders Aula: Codificação de imagens

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

      Boa tarde, na aula https://iaexpert.academy/topic/codificacao-das-imagens/

       

      escrevo codigo exatamente conforme a aula

       

      # 784 – 128 – 64 – 32 – 64 – 128 – 784
      autoencoder = Sequential()

      # Codicação
      autoencoder .add(Dense(units=128, activation=’relu’, input_dim=784));
      autoencoder .add(Dense(units=64, activation=’relu’));
      autoencoder .add(Dense(units=32, activation=’relu’));

      # Decodificação
      autoencoder .add(Dense(units=64, activation=’relu’));
      autoencoder .add(Dense(units=128, activation=’relu’));
      autoencoder .add(Dense(units=784, activation=’sigmoid’));

       

      autoencoder .compile(optimizer=’Adam’, loss=’binary_crossentropy’, metrics=[‘accuracy’])

      autoencoder .fit(x_train, x_train, epochs=50)

      encoder = Model(inputs = autoencoder .input, outputs = autoencoder .get_layer(‘dense_2’).output)

       

      ele me retorna o seguinte erro abaixo, eu não consegui resolver, executei o colab fixado na aula e ele retornou o mesmo erro.

      alguem sabe como resolver?

       

      ValueError Traceback (most recent call last)
      <ipython-input-29-f028aab7eb2f> in <cell line: 1>()
      —-> 1 encoder = Model(inputs = ae.input, outputs = ae.get_layer(‘dense_2’).output)

      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 has never been called and thus has no defined input.

      acima esta meu codigo e a respectiva mensagem de erro, mantendo a integridade do meu codigo, o que preciso fazer para corrigir o erro

       

       

      #46065
      Gabriel Alves
      Moderador

        Olá Douglas!

        Isso é devido a uma atualização recente do tensorflow, onde é necessário um pequeno ajuste. Na verdade, você tem duas opções: ou usar uma versão anterior, ou fazer esse ajuste.

        Se optar por usar uma versão anterior (por exemplo a 2.12.0   — mas pode ser mais recente, só não pode ser uma das últimas) 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.

        A outra opção é fazer um pequeno ajuste. Após uma atualização recente do tensorflow é necessário agora usar get_layer() para a camada de input, igual é feito com a camada de output.

        Ou seja, ao invés de  autoencoder.input   agora vai ser: autoencoder.get_layer(‘dense’).input

        você deve substituir isso no parâmetro inputs em “encoder = Model()“. ficando assim:

        encoder = Model(inputs = autoencoder.get_layer(‘dense’).input, outputs = autoencoder.get_layer(‘dense_2’).output)

        Observação: além desse trecho, também será preciso mudar lá logo abaixo da seção “Codificação e decodificação das imagens de teste”, alterando de autoencoder.input para autoencoder.get_layer(‘conv2d’).input

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