使用 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 输入和输出。它将显着减小大小并缩短推理时间。
当使用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 输入和输出。它将显着减小大小并缩短推理时间。