#概要
jsdoでtensoefllow.jsやってみた。
tensorflow.jsで学習した、ウェイトとバイアスを使って、arduinoでsin回帰してみた。
#写真
#サンプルコード
double w1[12] = {0.6203325, -1.027319, 1.8841791, -3.2817535, 1.2214272, 0.9679314, 1.4196726, 7.171823, 1.3714954, 3.7268815, 0.0598045, 1.1944624};
double b1[12] = {1.1656082, -2.0180476, -6.9387307, 3.3653135, -1.7032033, -2.8969588, 0.0565524, -9.5316219, -5.7146306, -2.8060255, -0.3085915, -6.3642092};
double w2[12] = {-1.2655445, -1.0401167, 0.2071615, -0.4695872, -2.6633599, -0.5835096, 1.2490041, 1.2825323, -1.5088843, 0.6767025, 0.0224434, 1.6849496};
double b2 = -0.2928229;
int i;
double tanh(double x)
{
if (x > 20) return 1.0;
else if (x < -20) return -1.0;
else
{
double a = exp(x);
double b = exp(-x);
return (a - b) / (a + b);
}
}
void setup()
{
Serial.begin(115200);
i = 0;
}
void loop()
{
int j;
i++;
if (i > 20) i = 0;
double x = i / 3.0;
double sum = 0;
double d[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for (j = 0; j < 12; j++)
{
d[j] += w1[j] * x + b1[j];
}
for (j = 0; j < 12; j++)
{
d[j] = tanh(d[j]);
}
for (j = 0; j < 12; j++)
{
sum += w2[j] * d[j];
}
sum += b2;
sum = tanh(sum);
Serial.println(sum);
}
#成果物
以上。