【问题标题】:Deploying Keras model on Arduino: Specifying input dimensions of Neural net在 Arduino 上部署 Keras 模型:指定神经网络的输入维度
【发布时间】:2021-08-23 13:47:19
【问题描述】:

我正在尝试使用神经网络的 IMU(加速度计 + 陀螺仪)检测特定运动。

我在 google colab (python + keras) 中创建了神经网络,并成功将其转换为 .h 文件。

神经网络有 18 个输入和 1 个输出(输出 = 1/0)

我无法在 C 代码 (arduino) 中指定输入尺寸。 代码编译,运行,但我得到的神经网络输出不正确!

当我尝试在 C 代码中测试神经网络的输入维度时,我得到以下结果: [1]:https://i.stack.imgur.com/FoKuo.png

Dim 1 size 显示 1,但“Dim 1 size”不应该是 18 吗?

感谢您的所有回答!

【问题讨论】:

    标签: python tensorflow keras neural-network


    【解决方案1】:

    在你在 Keras 中创建的模型中,第一层的输入值显示为 1。

    解决方案建议:

    要在 google colab 中测试您的项目,您应该执行此 model.predict(x1,x2,x3,...,x18)。如果此测试成功,您应该检查分配 model_input 变量的设备发送的数据。分配此变量时顺序可能不正确。

    最好的问候

    【讨论】:

    • 您好,首先感谢您的回答!在keras中,我指定了input_size(18,),甚至尝试了input_dim(18)。在 keras 中,我可以通过将新数据传递到 NN 来成功测试我的神经网络。它在新数据上的输出表明,它被正确训练(仅检测特定动作,见图片) 图 1:ibb.co/3SKZb5h 图 2:ibb.co/ym2TFx0
    • 另外,我在 Google Colab 中,我正在使用 model.predict(DATA) 测试 NN,其中 DATA 是大小为 18x10,000(10,000 个样本)的矩阵,它似乎适用于colab,但我仍然不知道如何正确地将 18x40 的数组传递给 arduino [C] 中的输入张量
    • 在ardunio中输入model_input的值不应该是18x1吗?如果可以,请尝试设置一个 40 行和 18 行的 for 循环,并将它们分别发送到模型。如果您说这对您不起作用,请将 input_dim 设置为 (18,40),这样它就可以在 Arduino 中使用。但我不能保证它会给你准确的结果。如果您的传感器正在生成连续数据,那么我建议您使用 LSTM 层,因为您正在进行时间序列分析,而 LSTM 通常擅长时间序列分析。
    • 您好,谢谢您的回答!!我试过只在 arduino 的输入张量中输入 18x1 数组,但它仍然不起作用。我试过 input_dim=720 (即 18*40),但是 keras 模型不想训练,因为我的训练数据是 18x8000... 输入输入 shape(18,40) 不起作用,因为训练数据是 18x8000... 我尝试循环将 720 个信息输入到输入张量中,而 NN 的输出不正确。 ..真诚的,
    • 您好,您是否尝试过在 google colab 中训练模型并将其导出并在 ardunio 中导入此文件?我想了解您是在 ardunio 上进行培训,还是想使用经过培训的模型在 ardunio 上进行培训?
    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多