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

在Arduino上部署Keras模型时神经网络输入维度设置问题

Arduino端Keras转换模型输入维度异常排查方案

核心问题说明

你看到的维度值为1是正常情况,这个维度是嵌入式推理框架默认的batch维度,固定为1,你的18个特征存储在第二个维度中。

具体排查步骤

  • 确认模型导出时的输入shape
    Keras训练时输入默认带batch维度,你导出为TFLite格式(后续转.h文件)时,要显式指定输入shape为(1, 18),对应单样本推理、18个特征。不要省略batch维度,避免转换工具自动识别维度出错。
  • 检查Arduino端维度读取逻辑
    以常用的TFLite Micro框架为例,输入tensor的维度读取规则如下:
    TfLiteTensor* input_tensor = interpreter->input(0);
    // 第0维:batch size,固定为1
    int batch = input_tensor->dims->data[0];
    // 第1维:特征数量,应为18
    int feature_count = input_tensor->dims->data[1];
    
    你之前测试取的是第0维的值,自然得到1,取第1维即可得到18的特征数。
  • 修正输入数据填充方式
    不要直接传入一维数组float input[18],要匹配模型要求的二维结构:
    // 定义符合模型输入shape的数组
    float model_input[1][18];
    // 把18个IMU处理后的数据依次填入
    for(int i=0; i<18; i++){
      model_input[0][i] = processed_imu_data[i];
    }
    // 传入推理接口
    interpreter->input(0)->data.f = model_input[0];
    
  • 额外注意输入归一化逻辑
    模型输出错误大概率和输入预处理有关,Arduino端的IMU数据缩放、标准化参数必须和Colab训练时完全一致,比如训练时你用了MinMaxScaler缩放到0~1,Arduino端也要用相同的最大最小值做缩放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:54:02