Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

522
Vistas
ValueError: la capa secuencial_20 espera 1 entrada, pero recibió 2 tensores de entrada

Estoy tratando de construir un Autoencoder simple usando el conjunto de datos KMNIST de Tensorflow y un código de muestra de un libro de texto que estoy usando, pero sigo recibiendo un error cuando intento ajustar el modelo.

El error dice ValueError: Layer sequential_20 expects 1 inputs, but it received 2 input tensors.

Soy realmente nuevo en TensorFlow, y toda mi investigación sobre este error me ha desconcertado, ya que parece involucrar cosas que no están en mi código. Este hilo no fue útil ya que solo estoy usando capas secuenciales.

Código completo:

 import numpy as np import tensorflow as tf from tensorflow import keras import tensorflow_datasets as tfds import pandas as pd import matplotlib.pyplot as plt #data = tfds.load(name = 'kmnist') (img_train, label_train), (img_test, label_test) = tfds.as_numpy(tfds.load( name = 'kmnist', split=['train', 'test'], batch_size=-1, as_supervised=True, )) img_train = img_train.squeeze() img_test = img_test.squeeze() ## From Hands on Machine Learning Textbook, chapter 17 stacked_encoder = keras.models.Sequential([ keras.layers.Flatten(input_shape=[28, 28]), keras.layers.Dense(100, activation="selu"), keras.layers.Dense(30, activation="selu"), ]) stacked_decoder = keras.models.Sequential([ keras.layers.Dense(100, activation="selu", input_shape=[30]), keras.layers.Dense(28 * 28, activation="sigmoid"), keras.layers.Reshape([28, 28]) ]) stacked_ae = keras.models.Sequential([stacked_encoder, stacked_decoder]) stacked_ae.compile(loss="binary_crossentropy", optimizer=keras.optimizers.SGD(lr=1.5)) history = stacked_ae.fit(img_train, img_train, epochs=10, validation_data=[img_test, img_test])
over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

En las soluciones, algunos dicen que necesita cambiar de brazalete a paréntesis, pero no funcionaba en Colab. Y sí, convertir validation_data=[X_val, y_val] en validation_data=(X_val, y_val) debería funcionar ya que es un formato requerido, pero en tf==2.5.0 (en Google Colab) no resuelve el problema. Cambié de API funcional a API secuencial, eso soluciona el problema. Extraño.

over 4 years ago · Santiago Trujillo Denunciar

0

Ha proporcionado datos en lugar de etiquetas dos veces:

 history = stacked_ae.fit(img_train, img_train, epochs=10, validation_data=[img_test, img_test])

en lugar de

 history = stacked_ae.fit(img_train, label_train, epochs=10, validation_data=[img_test, label_test])
over 4 years ago · Santiago Trujillo Denunciar

0

Use validation_data=(img_test, img_test) en lugar de validation_data=[img_test, img_test]

Aquí el ejemplo con codificador y decodificador combinados:

 stacked_ae = keras.models.Sequential([ keras.layers.Flatten(input_shape=[28, 28]), keras.layers.Dense(100, activation="selu"), keras.layers.Dense(30, activation="selu"), keras.layers.Dense(100, activation="selu"), keras.layers.Dense(28 * 28, activation="sigmoid"), keras.layers.Reshape([28, 28]) ]) stacked_ae.compile(loss="binary_crossentropy", optimizer=keras.optimizers.SGD(lr=1.5)) history = stacked_ae.fit(img_train, img_train, epochs=10, validation_data=(img_test, img_test))
over 4 years ago · Santiago Trujillo Denunciar

0

me ayudó cuando cambié:
validation_data=[X_val, y_val] en validation_data=(X_val, y_val)
En realidad todavía me pregunto por qué?

over 4 years ago · Santiago Trujillo Denunciar

0

Como se indica en la referencia de la API de Keras ( enlace ),

datos_de_validación : ... los datos_de_validación podrían ser: - tuple (x_val, y_val) de matrices o tensores Numpy - tuple (x_val, y_val, val_sample_weights) de matrices Numpy - conjunto de datos ...

Entonces, validation_data tiene que ser una tupla en lugar de una lista (de matrices o tensores Numpy). Deberíamos usar paréntesis (corchetes) (...) , no corchetes [...] .

Sin embargo, según mi experiencia limitada, TensorFlow 2.0.0 sería indiferente al uso de corchetes, pero TensorFlow 2.3.0 se quejaría de ello . Su secuencia de comandos estaría bien si se ejecuta bajo TF 2.0 en lugar de TF 2.3.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda