Pull to refresh

Comments 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 строк)

За статью спасибо, было интересно!

Ждем вторую часть, со сравнением разных методов обучения перцептрона.

Sign up to leave a comment.

Articles