Home › Fóruns › Fórum Visão Computacional: O Guia Completo › Autoncoders Aula: Codificação de imagens
- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 1 mês atrás por Gabriel Alves.
- AutorPosts
- 7 de setembro de 2024 às 15:53 #46035
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
10 de setembro de 2024 às 15:17 #46065Olá 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
- AutorPosts
- Você deve fazer login para responder a este tópico.