Вы измеряете точность, но вы тренируете регрессор.Это означает, что вы выводите число с плавающей точкой, а не фиксированное категориальное значение.
Если вы измените последний отпечаток на 3 десятичных знака точности (print('%.3f' % value)
), вы увидите, что прогнозируемые значения равны действительно близко к истине, но не совсем так, поэтому точность низкая:
0.039
0.198
0.392
0.597
0.788
По какой-то причине используется accuracy
(sparse_categorical_accuracy
) рассматривает 0.0
и 0.039
(или аналогичные) как удар вместо промаха, поэтому вы получаете 20%
вместо 0%
.
Если вы измените последовательностьчтобы не содержать ноль, у вас будет точность 0%
, что не так сложно:
seq = array([i/float(length) for i in range(1, length+1)])
Наконец, чтобы исправить это, вы можете использовать, например, mae
вместоaccuracy
в качестве метрики, где вы увидите, что ошибка уменьшается:
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mae'])
Другой вариант - переключиться на категориальную структуру (изменив значения с плавающей точкой на категориальные значения).
Надеюсь это поможет!Я отредактирую ответ, если смогу понять, почему sparse_categorical_accuracy
определяет 0 как попадание, а не как промах.