我正在使用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)
1条答案
按热度按时间4nkexdtk1#
一个快速的解决办法是-
输入形状必须是可迭代的,并且表示独立变量的数量,或者用简单的术语(在您的情况下)表示 x_train 中的列数
改进
而不是使用-
使用LabelEncoder,额外的好处是简单,高效,易于从字符串转换为数字,反之亦然。另外,我不确定你是否真的只是使用
y.replace('Yes', 1)
将字符串转换为数字。您没有将更新后的值设置回 y。我认为应该是y = y.replace('Yes', 1)
。替换 “否” 时相同MLP中的输入和输出转换
您可以参考this以了解更多关于多层感知器的输入和输出形状的信息。
通过Tensorflow
那些其他错误消息并不相关,但一些无害的警告;你可以参考this的答案,它解释得很好。