Python错误:预期为2维,但得到了具有形状的数组(45,4,3,2,3,4,3)

Python错误:预期为2维,但得到了具有形状的数组(45,4,3,2,3,4,3),python,keras,recurrent-neural-network,Python,Keras,Recurrent Neural Network,我正在训练一个模型,X_列的形状是(104,4),Y_列的形状是(45,4),如下所示: model = Sequential() model.add(layers.Dense(50, input_dim=x_train.shape[1], activation='relu')) model.add(layers.Dense(40, activation='relu')) model.add(layers.Dense(30, activation='relu')) model.add(layer

我正在训练一个模型,X_列的形状是(104,4),Y_列的形状是(45,4),如下所示:

model = Sequential()
model.add(layers.Dense(50, input_dim=x_train.shape[1], activation='relu'))
model.add(layers.Dense(40, activation='relu'))
model.add(layers.Dense(30, activation='relu'))
model.add(layers.Dense(25, activation='relu'))
model.add(layers.Dense(3, activation='softmax'))

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

history = model.fit(x_train, y_train,
                batch_size = 10, epochs = 50,
                verbose = 1, validation_split = 0.3)
当我尝试拟合数据时,会抛出以下错误:

检查目标时出错:预期稠密_91有2维,但得到形状为(45,4,3,2,3,4,3)的数组

我还尝试在第一个密集层之前添加一个展平层,但这会导致以下错误:

输入2与图层展平3不兼容:预期最小ndim=3,发现ndim=2

我不知道如何修正尺寸。你能帮我修正一下吗?
谢谢

我将发布整个脚本:

import pandas as pd
import numpy as np
from keras.utils import np_utils
import keras
from keras.models import Sequential 
from keras import layers
from keras.optimizers import SGD

from sklearn.model_selection import train_test_split

from sklearn import preprocessing
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data",header=0)

df.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width',"Class"]

df, cl = (df.iloc[:,0:4],df['Class'])

df_scaler = preprocessing.MinMaxScaler(feature_range=(0,1))
df1 = df_scaler.fit_transform(df)

cl1 = LabelEncoder().fit_transform(cl)

x_train, y_train, x_test, y_test = train_test_split(df1,cl1,test_size = 0.3)

y_train = np_utils.to_categorical(y_train, 3)
y_test = np_utils.to_categorical(y_test,3)

model = Sequential()
model.add(layers.Dense(50,input_dim=x_train.shape[1],activation='relu'))
model.add(layers.Dense(40,activation='relu'))
model.add(layers.Dense(30,activation='relu'))
model.add(layers.Dense(25,activation='relu'))
model.add(layers.Dense(3,activation='softmax'))

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

history = model.fit(x_train, y_train,batch_size = 10, epochs = 50,verbose = 1,validation_split = 0.3)
这就是它给我的错误:

ValueError                                Traceback (most recent call last)
<ipython-input-95-4c538cd97d59> in <module>()
      1 history = model.fit(x_train, y_train,
      2                     batch_size = 10, epochs = 50,
----> 3                     verbose = 1, validation_split = 0.3)

2 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
    129                         ': expected ' + names[i] + ' to have ' +
    130                         str(len(shape)) + ' dimensions, but got array '
--> 131                         'with shape ' + str(data_shape))
    132                 if not check_batch_axis:
    133                     data_shape = data_shape[1:]

ValueError: Error when checking target: expected dense_91 to have 2 dimensions, but got array with shape (45, 4, 3, 2, 3, 4, 3)
ValueError回溯(最近一次调用)
在()
1历史=模型拟合(x\U系列、y\U系列、,
2批次尺寸=10,时代=50,
---->3详细=1,验证\u分割=0.3)
2帧
/usr/local/lib/python3.6/dist-packages/keras/engine/training\u utils.py标准化输入数据(数据、名称、形状、检查批处理轴、异常前缀)
129':应为“+名称[i]+”以具有”+
130 str(len(shape))+'维度,但得到数组'
-->131'带形状'+str(数据形状))
132如果不检查批次轴:
133数据形状=数据形状[1:]
ValueError:检查目标时出错:预期密集_91有2个维度,但得到了形状为(45,4,3,2,3,4,3)的数组
希望这能对你有所帮助,我正在学习一门在线课程,但我不知道为什么我会出错


谢谢

发布完整的错误追踪,以及您的培训数据的形状请添加更多详细信息。谢谢什么是顺序的?您使用的是什么建模软件包。这是唯一有用的
标签
为什么你的标签形状很奇怪?您没有包含生成这些标签的代码。X_列的形状为(104,4),Y_列的形状为(45,4),如下所示:这一行正确吗?。。。