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

Keras拼接3个并行密集层时出现样本数不一致报错的问题求助

Keras拼接3个并行密集层时出现样本数不一致报错的问题求助

看起来你在构建多输入并行模型做分类时踩了数据维度匹配的坑,我来帮你捋清楚问题出在哪,以及怎么解决~

问题分析

你的需求很明确:处理形状为[10000, 3]的特征矩阵,把每一列作为独立输入,各自经过Dense层后拼接,最终输出12类的分类结果。但报错ValueError: Found input variables with inconsistent numbers of samples: [3, 10000],核心原因有两个:

  • 特征拆分方式错误:你用np.array_split(features.transpose(), num_features)处理数据,原特征是(10000,3),转置后变成(3,10000),按轴0拆分后得到3个(1,10000)的数组——这相当于把10000个样本变成了3个“样本”,和labels的10000个样本完全不匹配。
  • Concatenate层调用错误:Concatenate(hidden_layers)的写法不对,Keras的层需要先实例化再调用,应该是Concatenate()(hidden_layers)。

修正后的完整代码

import numpy as np
from tensorflow.keras.layers import Input, Dense, Concatenate
from tensorflow.keras.models import Model
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier

num_features = 3
num_outputs = 12

def create_model():
    # 每个输入对应1个特征,形状(1,)
    inputs = [Input(shape=(1,)) for i in range(num_features)]
    # 每个输入对应一个Dense隐藏层
    hidden_layers = [Dense(8, activation='relu')(input_layer) for input_layer in inputs]
    # 正确调用Concatenate层:先实例化,再传入输入列表
    concatenated = Concatenate()(hidden_layers)
    # 输出层:多分类用softmax
    output = Dense(num_outputs, activation='softmax')(concatenated)
    # 创建模型
    model = Model(inputs=inputs, outputs=output)
    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    return model

# 假设features是形状(10000,3)的特征矩阵,labels是对应标签
# 正确拆分特征:按列拆分,每个输入形状为(10000,1)
split_features = [features[:, i:i+1] for i in range(num_features)]

# 创建KerasClassifier并训练
keras_classifier = KerasClassifier(model=create_model, verbose=0)
keras_classifier.fit(split_features, labels, verbose=0)

关键修正点说明

  1. 特征拆分:用features[:, i:i+1]按列提取特征,得到的每个数组形状是(10000,1),刚好对应模型每个输入层的要求——10000个样本,每个样本1个特征,和labels的样本数完全匹配。
  2. Concatenate层:Concatenate()先创建层实例,再传入hidden_layers列表,这样才能正确把三个(10000,8)的张量拼接成(10000,24)的张量,供后续输出层使用。

备注:内容来源于stack exchange,提问作者Nikki Mino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:58:09