ValueError:在Keras中找到的形状不匹配输入形状

svdrlsy4  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(113)

我正在使用youtube上的教程。我把我自己的旋转它,虽然代码基本上是相同的,我得到一个错误消息说,找到的形状不匹配输入形状

ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 621, 17), found shape=(None, 17)

导致这一点的代码如下所示

import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow as tf

datasetFull = pd.read_csv('College_Data.csv')
dataset = datasetFull.drop("Name", axis=1)

x = dataset.drop("Private", axis=1)

y = dataset["Private"]
y.replace('Yes', 1)
y.replace('No', 0)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

print(x_train.shape)

model = tf.keras.models.Sequential()

model.add(tf.keras.layers.Dense(256, input_shape=x_train.shape, activation='sigmoid'))
model.add(tf.keras.layers.Dense(256, activation='sigmoid'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

tf.reshape(x_train, [621, 17])

print(x_train.shape)

model.fit(x_train, y_train, epochs=1000)

不确定这是否相关,但我也收到了类似这样的错误消息,这些消息似乎并没有真正停止进程。

This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.

如您所见,在将输入数据的形状作为输入形状并将其提交给fit之前,我尝试print输入数据的形状
我还尝试在使用tf.reshape(x_train, [621, 17])将输入数据提交给Keras之前对其进行整形
不管我做了什么,总是会出现同样的错误:

ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 621, 17), found shape=(None, 17)
4nkexdtk

4nkexdtk1#

一个快速的解决办法是-

model.add(tf.keras.layers.Dense(256, input_shape=(x_train.shape[1], ), activation='sigmoid'))

输入形状必须是可迭代的,并且表示独立变量的数量,或者用简单的术语(在您的情况下)表示 x_train 中的列数

改进

而不是使用-

y = dataset["Private"]
y.replace('Yes', 1)
y.replace('No', 0)

使用LabelEncoder,额外的好处是简单,高效,易于从字符串转换为数字,反之亦然。另外,我不确定你是否真的只是使用y.replace('Yes', 1)将字符串转换为数字。您没有将更新后的值设置回 y。我认为应该是y = y.replace('Yes', 1)。替换 “否” 时相同

MLP中的输入和输出转换

您可以参考this以了解更多关于多层感知器的输入和输出形状的信息。

通过Tensorflow

那些其他错误消息并不相关,但一些无害的警告;你可以参考this的答案,它解释得很好。

相关问题