首页 > 解决方案 > ValueError: Layersequential_16 需要 1 个输入,但它接收到 8 个输入张量

问题描述

我有多个 csv 输入并尝试测试神经网络。我在 cvs (211583x8) 中有 8 个功能。我得到“ValueError:Layersequential_16 需要 1 个输入,但它接收到 8 个输入张量。” 谁能帮我解决这个错误?

train_dataset = tf.data.experimental.make_csv_dataset(
    file_pattern = train_file_names,
    batch_size=10, num_epochs=1,
    num_parallel_reads=20,
    shuffle_buffer_size=10000)

validation_dataset = tf.data.experimental.make_csv_dataset(
    file_pattern = validation_file_names,
    batch_size=10, num_epochs=1,
    num_parallel_reads=20,
    shuffle_buffer_size=10000)

test_dataset = tf.data.experimental.make_csv_dataset(
    file_pattern = test_file_names,
    batch_size=10, num_epochs=1,
    num_parallel_reads=20,
    shuffle_buffer_size=10000)

model = tf.keras.Sequential()

model.add(layers.Dense(8, activation="relu",input_shape=(1, 7) ))
model.add(layers.Dense(8, activation="relu",input_shape=(1, 7)))
model.add(layers.Dense(8, activation="softmax",input_shape=(1, 7)))
model.add(layers.Dense(1))
model.summary()

model.fit(train_dataset, validation_data = validation_dataset,
         validation_steps = validation_steps, epochs = 10)

标签: pythontensorflowmachine-learningkerasdeep-learning

解决方案


添加具有正确输入形状的输入。

import tensorflow as tf

model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(8,)))
model.add(tf.keras.layers.Dense(8, input_shape = (1,7) , activation='relu'))
model.add(tf.keras.layers.Dense(8, input_shape = (1,7) , activation='relu'))
model.add(tf.keras.layers.Dense(8, input_shape = (1,7) , activation='softmax'))
model.add(tf.keras.layers.Dense(1))
model.output_shape

推荐阅读