-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTiny_ML.ino
61 lines (47 loc) · 1.71 KB
/
Tiny_ML.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "model_data.h"
#include <tflm_esp32.h>
#include <eloquent_tinyml.h>
#define NUMBER_OF_INPUTS 2
#define NUMBER_OF_OUTPUTS 1
#define ARENA_SIZE 20000
#define NO_OF_OPS 10
Eloquent::TF::Sequential<NO_OF_OPS, ARENA_SIZE> tf;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("__TENSORFLOW LITE MODEL__");
tf.setNumInputs(NUMBER_OF_INPUTS);
tf.setNumOutputs(NUMBER_OF_OUTPUTS);
while (!tf.begin(converted_model_tflite).isOk()) {
Serial.println(tf.exception.toString());
}
Serial.println("Send input data in the format: value1,value2");
}
void loop() {
if (Serial.available() > 0) {
String data = Serial.readStringUntil('\n');
int commaIndex = data.indexOf(',');
String input1String = data.substring(0, commaIndex);
String input2String = data.substring(commaIndex + 1);
float input1 = input1String.toFloat();
float input2 = input2String.toFloat();
float input_data[2] = {input1, input2};
unsigned long startTime = micros();
if (!tf.predict(input_data).isOk()) {
Serial.println(tf.exception.toString());
return;
}
unsigned long endTime = micros();
Serial.print("Predicted Efficiency: ");
for (int i = 0; i < NUMBER_OF_OUTPUTS; ++i) {
Serial.print("Output ");
Serial.print(i);
Serial.print(": ");
Serial.println(tf.output(i));
}
Serial.print("Inference Time: ");
Serial.print(endTime - startTime);
Serial.println(" ms");
}
delay(1000);
}