ValueError: 层 sequential_7 的输入 0 与层不兼容:期望的最小维度为 4,但发现的维度为 2。接收到的完整形状为:(None, 1024)

我是新手 Python 开发者。我查看了这里类似的帖子,但还是无法解决问题。希望能得到任何帮助。

print('X_train:', X_train.shape)print('y_train:', y_train1.shape)print('X_test:', X_train.shape)print('y_test:', y_train1.shape)

X_train: (42000, 32, 32)y_train: (42000,)X_test: (42000, 32, 32)y_test: (42000,)

from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2Ddef featuremodel() :    model = Sequential()    model.add(Conv2D(32, kernel_size=4, activation='relu', input_shape=(X_train.shape[0],32,64)))    model.add(MaxPooling2D(pool_size=3))    model.add(Conv2D(64, kernel_size=4, activation='relu'))    model.add(Flatten())    model.add(Dense(len(y_train[0]), activation='softmax'))    model.compile(loss='categorical_crossentropy',          optimizer='adadelta',                metrics=['acc'])    model.summary()    model.fit(X_train, y_train, epochs = 10, validation_data = (X_test,y_test))

return model

ValueError: 层 sequential_7 的输入 0 与层不兼容:期望的最小维度为 4,但发现的维度为 2。接收到的完整形状为:(None, 1024)


回答:

您指定的输入形状需要更改。您的输入有 42000 个样本,每个样本的形状为 (32,32)。您不应该将样本数量 (42000) 传递给输入层,并且您需要添加一个通道维度。因此,输入形状应该是 (32,32,1)

修改后的代码应如下所示:

from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D# 测试数据X_train = tf.random.uniform((42000,32,32))  y_train1 = tf.random.uniform((42000,))X_train = tf.expand_dims(X_train, axis=3)    #添加通道轴 (42000,32,32) => (42000,32,32,1) model = Sequential()model.add(Conv2D(32, kernel_size=4, activation='relu', input_shape=(32,32,1))) #更改输入形状model.add(MaxPooling2D(pool_size=3))model.add(Conv2D(64, kernel_size=4, activation='relu'))model.add(Flatten())#最后一层应该有与您的 y 数据相似的输出。在这种情况下,它应该是 1,因为每个样本有一个 ymodel.add(Dense(1, activation='softmax'))  model.compile(loss='categorical_crossentropy',      optimizer='adadelta',            metrics=['acc'])model.summary()model.fit(X_train, y_train1, epochs = 10) #, validation_data = (X_test,y_test))

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中创建了一个多类分类项目。该项目可以对…

发表回复

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