Комментарии 3
Годнота. Жду генетического алгоритма
0
Очень интересно, с точки изучения раста. Плюсую обеими руками.
А еще в этой статье показано, как ни в коем случае не нужно делать нейронки :)
Прохождение слоя делается двумя матричными операциям - умножение и сложение. Для этого нужно реализовать всего две функции - собственно, умножение матриц и сложение. Но это скучнее, конечно :))
0
Из-за особенностей векторизации f32-вычислений (отсутствие ассоциативности) .map(..).sum()
можно безопасно заменить на .fold
:
let mut output = zip(inputs, &self.weights)
.into_iter()
.map(|(input, weight)| input * weight)
.sum();
let mut output = zip(inputs, &self.weights)
.into_iter()
.fold(0.0, |acc, (input, weight)| acc + input * weight);
Вот тут можно увидеть что варианты для i32 используют SIMD, а для f32 - уже нет
https://rust.godbolt.org/z/9T464GToG
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Учимся летать: симуляция эволюции на Rust. 2/5