ValueError: 检查输入时出错:期望 dense_26_input 的形状为 (45781,),但得到的数组形状为 (2,)

我的输入只是一个包含45781行和两列的CSV文件。我试图在神经网络上训练我的数据,但在尝试拟合模型时,它抛出了一个错误。

ValueError: Error when checking input: expected dense_26_input to have shape (45781,) but got array with shape (2,)

我尝试按照这个链接中给出的解决方案来实现:

Error when checking model input: expected lstm_1_input to have 3 dimensions, but got array with shape (339732, 29)

但我仍然无法运行代码。这是我的代码:

X = df.iloc[:, 0:2].valuesy = df.iloc[:, 2].valuesdf_sklearn = df.copy()lb_make = LabelEncoder()df_sklearn['Type'] = lb_make.fit_transform(df['Type'])df_sklearn.head() #结果是向df添加一个新列df_onehot = df.copy()df_onehot = pd.get_dummies(df_onehot, columns=['Type'], prefix = ['Type'])df_onehot_sklearn = df.copy()lb = LabelBinarizer()lb_results = lb.fit_transform(df_onehot_sklearn['Type'])lb_results_df = pd.DataFrame(lb_results, columns=lb.classes_)result_df = pd.concat([df_onehot_sklearn, lb_results_df], axis=1)X_train, X_test, y_train, y_test = train_test_split(X, lb_results_df, test_size = 0.4)classifier = Sequential()classifier.add(Dense(output_dim = 6, init = 'uniform', activation = 'relu', input_dim = 45781))classifier.add(Dense(output_dim = 6, init = 'uniform', activation = 'relu'))classifier.add(Dense(output_dim = 1, init = 'uniform', activation = 'sigmoid'))classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])classifier.fit(X_train, y_train, batch_size = 10, nb_epoch = 100)

回答:

通常情况下,行的数量是你训练的样本数,模型期望你省略这个维度。因此,如果有45781个样本,每个样本有2列,那么input_dim应该为2。此外,如果你在堆叠层时,可以省略output_dim参数,但你必须指定units(神经元的数量)。

最后的Dense层需要有与y的维度相同数量的神经元(在你的例子中是20)。

下面是一个使用虚拟数据的示例:

X_train = np.random.random((300,2))y_train = np.random.random((300,20))classifier = Sequential()classifier.add(Dense(units = 6, init = 'uniform', activation = 'relu', input_dim = 2))classifier.add(Dense(units = 6, init = 'uniform', activation = 'relu'))classifier.add(Dense(units = 20, init = 'uniform', activation = 'sigmoid'))classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])classifier.summary()classifier.fit(X_train, y_train, batch_size=10, nb_epoch=100)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注