使用 tensorflow lite micro ESP32 将输入复制到 CNN 的缓冲区

copy input into buffer for CNN with tensorflow lite micro ESP32

当使用tensorflow lite one a esp32时,我使用

loat input_data[3] = {value1, value2, value3};

// Copy value to input buffer (tensor)
for (size_t i = 0; i < 3; i++){
    model_input->data.f[i] = input_data[i];
    }

将“特征值”复制到输入缓冲区。对于每个样本只有 3 个特征的应用程序(如 setosa 示例),这非常简单。

如何传递 CNN 的值?我的模型输入是

[1,80,3,1]

[noOfTimeSeries, noOfMeasurementsPerSensorPerTimeSeries, noOfSensors, anotherDimensionForTensorflow]

到目前为止,我的特征存储在 struct 中,但如果需要,我可以将它们放入数组中。

我如何为带有图像的 CNN 传递值?

虽然 tflite 模型具有多维输入,但您可以填充输入缓冲区,就好像它是微控制器的 tflite 中的一维数组一样。

在你的情况下,

size_t input_size = 1*80*3*1;

for (size_t i = 0; i < input_size; i++){
    model_input->data.f[i] = input_data[i];
}

在您的例子中,展平的一维数组看起来像

[Measurement1Sensor1, Measurement1Sensor2, Measurement1Sensor3, Measurement2Sensor1, ...]

希望你明白了。

作为附带建议和其他读者,请考虑将模型量化为 int8 参数甚至 int8 输入和输出。它将显着减小大小并缩短推理时间。