ValueError: Слой sequential_20 ожидает 1 вход, но получил 2 входных тензора - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь создать простой автоэнкодер, используя набор данных KMNIST из Tensorflow и некоторый пример кода из учебника, который я использую, но у меня появляется ошибка, когда я пытаюсь соответствовать модели.

ошибка говорит ValueError: Layer sequential_20 expects 1 inputs, but it received 2 input tensors.

Я действительно новичок в TensorFlow, и все мои исследования этой ошибки сбили меня с толку, поскольку, похоже, что-то связано с моим кодом. Этот поток не помог, поскольку я использую только последовательные слои.

Полный код:

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])

Ответы [ 2 ]

1 голос
/ 05 мая 2020

мне помогло, когда я изменился:
validation_data=[X_val, y_val]validation_data=(X_val, y_val)
На самом деле все еще удивляюсь, почему.

0 голосов
/ 04 мая 2020

Предлагаю сделать один выстрел

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...