Комментарии 8
Обожаю такие статьи, заголовок "... в 500 строк", но по содержанию понимаешь, что чтобы написать эти 500 строк, нужно изучить матан, теорию вероятности, 3Д моделирование и еще кучу всего. Мое уважение автору за старания и отдельный лайк за демонстрацию результата в 3Д!
При ручной парковке, когда уже остановился практически, нажатие пробела (тормоза) приводит к тому, что при отпускании автомобильчик резво срывается и мчит вперед.
Основной провал в том, что «отсутствию» препятствия задано значение 0. 0 - тоже число! И оно близко к значению «препятствие рядом», что мешает полноценной «тренировке». Задание «никакому» расстоянию относительно большого числа дало бы более показательные результаты. К тому же, так работают реальные датчики расстояния - overflow у них обычно кодируется запредельно большими числами.
let result = 0;
coefficients.forEach((coefficient: number, coefficientIndex: number) => {
if (coefficientIndex < variables.length) {
result += coefficient * variables[coefficientIndex];
} else {
// The last coefficient needs to be added up without multiplication.
result += coefficient
} });
return result;
У массива есть reduce
- специальный метод для свертки, посмотрите, насколько код станет проще:
return coefficients.reduce((result: number, coef: number, i: number) =>
result + coef * (i < variables.length ? variables[i] : 1), 0);
Рефакторинг и укладываешься в 300 строк)
За статью спасибо, было интересно!
Ждем вторую часть, со сравнением разных методов обучения перцептрона.
Самопаркующаяся тачка в 500 строк кода