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

基于DenseNet121+手工特征的回归模型输入不匹配问题求助

问题与解决方案

问题描述

我有RGB图像,想要构建一个以DenseNet121为骨干网络、结合CSV文件中手工特征的回归模型来预测Lodging_score。运行代码时出现错误:

ValueError: Layer "model" expects 2 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, None, None, None) dtype=float32>]

错误原因

模型定义了图像输入+手工特征输入两个输入分支,但训练时仅传入了图像生成器的单输入数据,没有将手工特征与图像数据按批次配对传入,导致模型接收的输入数量不匹配。

解决方案

1. 自定义混合数据生成器

flow_from_dataframe仅能输出图像数据,无法同时关联手工特征,因此需要自定义生成器,按批次将图像和对应的手工特征组合:

def hybrid_generator(image_generator, features_array, batch_size):
    while True:
        # 获取当前批次的图像和标签
        image_batch, label_batch = next(image_generator)
        # 计算当前批次的索引范围
        current_idx = image_generator.batch_index * batch_size
        if current_idx >= len(image_generator.filenames):
            current_idx = 0
        end_idx = current_idx + batch_size
        # 取出对应批次的手工特征
        features_batch = features_array[current_idx:end_idx]
        # 返回双输入和标签
        yield [image_batch, features_batch], label_batch

2. 替换原有生成器

将训练、验证、测试阶段的图像生成器包装为混合生成器:

# 创建混合训练/验证/测试生成器
train_hybrid_gen = hybrid_generator(train_generator, train_features, batch_size)
val_hybrid_gen = hybrid_generator(val_generator, val_features, batch_size)
test_hybrid_gen = hybrid_generator(test_generator, test_features, batch_size)

3. 修改训练逻辑

更新model.fit,使用混合生成器作为输入:

# 训练模型
history = model.fit(
    train_hybrid_gen,
    steps_per_epoch=len(train_generator),
    epochs=50,
    validation_data=val_hybrid_gen,
    validation_steps=len(val_generator),
    callbacks=[early_stopping])

4. 修改评估与预测逻辑

同样使用混合生成器完成评估和预测:

# 评估模型
loss = model.evaluate(test_hybrid_gen, steps=len(test_generator), verbose=0)
# 生成预测结果
predictions = model.predict(test_hybrid_gen, steps=len(test_generator))

额外注意事项

  • 保持shuffle=False,确保图像与手工特征的顺序严格对应;若需要打乱数据,需同步对图像文件名和手工特征的索引进行随机打乱。
  • 验证集和测试集必须使用相同的混合生成器逻辑,避免输入不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:10:54