从零搭建神经网络:矩阵、层与前向传播
本文带你用Rust实现神经网络核心组件:矩阵运算、多层结构、前向传播,适合零基础入门。
为什么需要矩阵和层?
一个神经元只能学一条直线,但真实问题(比如预测炮弹距离)受风速、角度、重量等多个因素影响。我们需要矩阵(一种表格,行是样本,列是特征)来同时处理多个输入和多个神经元。
安装Rust环境
- 打开 rustup.rs,下载并运行安装程序。
- 在终端输入
rustc --version验证安装成功。 - 用
cargo new meu_projeto创建新项目。
实现矩阵乘法与层
在 src/main.rs 中,我们定义层(Layer)——一组神经元共享同一输入。每个层包含权重矩阵W和偏置向量b。
- 权重初始化:用随机小值(Xavier初始化),避免所有神经元学相同的东西。
- 前向传播:计算
Y = X @ W + b,其中@是矩阵乘法。
代码示例:
struct Layer {
weights: Vec<Vec<f64>>,
bias: Vec<f64>,
}
impl Layer {
fn forward(&self, input: &[Vec<f64>]) -> Vec<Vec<f64>> {
// 矩阵乘法 + bias
}
}注意:输入矩阵X的列数必须等于W的行数,否则会出错。
验证前向传播
- 创建3个特征、2个神经元的层。
- 传入2个样本(2行3列矩阵)。
- 输出应为2行2列矩阵,每个值是神经元的加权和加偏置。
- 用
cargo run运行,检查结果维度是否正确。
恭喜!你已经跑通了神经网络的前向传播。下一步可以加入激活函数(如ReLU)和反向传播,让网络真正学习。
内容来源
DEV Machine Learning
发布时间
2026-07-07 01:32