You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行6输入6输出神经网络遇ValueError:Dense层输入维度不兼容

解决Keras输入维度不兼容问题(expected min_ndim=2, found ndim=1)

问题原因

Keras的Dense层要求输入至少是2维张量,形状为(样本数, 特征数)。你传入的[x1,x2,x3,x4,x5,x6]是1维列表,形状为(6,),模型无法识别这是1个带6个特征的样本,因此抛出维度不兼容错误。

解决步骤

  • 将输入、输出数据转换为2维结构(嵌套列表或numpy数组),让形状变为(1, 6)(1个样本,6个特征/输出)
  • 单个样本训练时,batch_size不能大于样本数量,需调整为1

修正后的完整代码

import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 输入:转为2维数组(1个样本,6个特征)
X = np.array([[0, 0, 0, 0, 0, 0]])
# 输出:转为2维数组(1个样本,6个输出)
y = np.array([[0, 0, 0, 0, 0, 1]])

# 创建模型
model = Sequential()
model.add(Dense(12, input_dim=6, activation='relu'))
model.add(Dense(6, activation='sigmoid'))

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型:单个样本时batch_size设为1
model.fit(X, y, epochs=150, batch_size=1)

# 评估模型
scores = model.evaluate(X, y)

print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))

补充说明

如果后续有多个训练样本,比如N个,输入形状要对应(N, 6),输出对应(N, 6),此时可以根据样本数量设置合理的batch_size(比如10)。

内容的提问来源于stack exchange,提问作者Omega_skyres 9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:00:34