python - ValueError:layersequential_32 的输入 0 与 layer 不兼容::预期 min_ndim=3,发现 ndim=2。收到的完整形状:[无,256]
问题描述
我正在使用训练数据(28659、257)和测试数据(5053、257)构建一个 Conv1D 模型,但我遇到了一个值错误,上面写着:预期 min_ndim=3,发现 ndim=2。收到的完整形状:[无,256]
数据集的大小
print(train_data.shape)
print(test_data.shape)
模型
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=5, activation='relu', input_shape=(256,1)))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(8, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=['accuracy'])
model.summary()
opt = keras.optimizers.Adam(learning_rate=0.01)
model.compile(loss='CategoricalCrossentropy', optimizer=opt, metrics=['accuracy'])
history = model.fit(train_data.values[:, 0:256], to_categorical(train_data.values[:, 256]), epochs=180, batch_size=500)
y_pred = model.predict(test_data.values[:, 0:256])
测试精度
y_pred = model.predict(test_data.values[:,0:256])
y_pred = (y_pred > 0.5)
accuracy = metrics.accuracy_score(to_categorical(test_data.values[:,256]),y_pred)
print(f'Testing accuracy of the model is {accuracy*100:.4f}%')
错误来自 fit(),但我无法计算出我的计算错误!任何帮助表示赞赏!
解决方案
尝试重塑您的训练和测试数据:
X_train=np.reshape(train_data,(train_data.shape[0], train_data.shape[1],1))
X_test=np.reshape(test_data,(test_data.shape[0], test_data.shape[1],1))
您不能提供诸如 : 之类的值[1,2,3,4]
,而必须提供诸如之类的值[[1],[2],[3],[4]]
推荐阅读
- node.js - 如何更改 MongoDB 输出 JSON 格式
- mysql - 获取出生日期在当月的销售人员的平均销售额
- ios - 如何找出应用程序中使用了哪个推送通知证书?代码
- android-studio - 在另一个活动中获取微调器中的回收站视图项目
- symfony - 电子邮件中的生成徽标图像
- python - 基本的 Python 导入机制
- c# - 如何在 C# 中验证加盐和散列密码
- macos - Minikube+Kubectl“无法连接到服务器 - 超时”
- rest - 如何使用 REST 请求创建 BigQuery 视图
- php - PHP是否优化了for循环上的多个strlen调用?