在人工智能和机器学习飞速发展的今天,Rust神经网络正逐渐成为开发者关注的新热点。Rust 语言以其内存安全、高性能和并发能力著称,非常适合用于构建高效可靠的机器学习系统。本教程将带你从零开始,用 Rust 实现一个简单的前馈神经网络(Feedforward Neural Network),即使你是编程新手,也能轻松上手!
相比 Python 等传统机器学习语言,Rust 在性能和安全性方面具有显著优势:

首先,请确保你已安装 Rust。打开终端并运行以下命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh接着,创建一个新的 Rust 项目:
cargo new rust_neural_networkcd rust_neural_network我们还需要一些数学库来处理矩阵运算。编辑 Cargo.toml 文件,添加以下依赖:
[dependencies]rand = "0.8"ndarray = "0.15"我们将构建一个包含输入层、隐藏层和输出层的三层神经网络。主要功能包括前向传播(Forward Propagation)和反向传播(Backpropagation)。
首先,在 src/main.rs 中引入所需模块:
use ndarray::{Array2, Array1, s};use rand::prelude::*;use std::f64::consts::E;定义激活函数(Sigmoid)及其导数:
fn sigmoid(x: f64) -> f64 { 1.0 / (1.0 + E.powf(-x))}fn sigmoid_derivative(x: f64) -> f64 { let s = sigmoid(x); s * (1.0 - s)}接下来,定义神经网络结构:
struct NeuralNetwork { input_nodes: usize, hidden_nodes: usize, output_nodes: usize, weights_input_hidden: Array2, weights_hidden_output: Array2, learning_rate: f64,} 实现构造函数和训练方法:
impl NeuralNetwork { fn new(input_nodes: usize, hidden_nodes: usize, output_nodes: usize, learning_rate: f64) -> Self { let mut rng = thread_rng(); // 初始化权重(随机小值) let weights_input_hidden = Array2::from_shape_fn( (hidden_nodes, input_nodes), |_| rng.gen_range(-0.5..0.5) ); let weights_hidden_output = Array2::from_shape_fn( (output_nodes, hidden_nodes), |_| rng.gen_range(-0.5..0.5) ); NeuralNetwork { input_nodes, hidden_nodes, output_nodes, weights_input_hidden, weights_hidden_output, learning_rate, } } fn train(&mut self, inputs: &Array1, targets: &Array1) { // 前向传播 let hidden_inputs = self.weights_input_hidden.dot(inputs); let hidden_outputs = hidden_inputs.mapv(sigmoid); let final_inputs = self.weights_hidden_output.dot(&hidden_outputs); let final_outputs = final_inputs.mapv(sigmoid); // 计算误差 let output_errors = targets - &final_outputs; let hidden_errors = self.weights_hidden_output.t().dot(&output_errors); // 反向传播更新权重 let hidden_outputs_2d = hidden_outputs.insert_axis(ndarray::Axis(0)); let output_errors_2d = output_errors.insert_axis(ndarray::Axis(1)); self.weights_hidden_output += &(self.learning_rate * (output_errors_2d * &final_outputs.mapv(sigmoid_derivative)).dot(&hidden_outputs_2d)); let inputs_2d = inputs.insert_axis(ndarray::Axis(0)); let hidden_errors_2d = hidden_errors.insert_axis(ndarray::Axis(1)); self.weights_input_hidden += &(self.learning_rate * (hidden_errors_2d * &hidden_outputs.mapv(sigmoid_derivative)).dot(&inputs_2d)); } fn predict(&self, inputs: &Array1) -> Array1 { let hidden_inputs = self.weights_input_hidden.dot(inputs); let hidden_outputs = hidden_inputs.mapv(sigmoid); let final_inputs = self.weights_hidden_output.dot(&hidden_outputs); final_inputs.mapv(sigmoid) }} 现在,让我们用 XOR 问题来测试这个网络。XOR 是一个经典的非线性可分问题,非常适合验证神经网络的有效性。
fn main() { // 创建神经网络:2个输入,3个隐藏节点,1个输出 let mut nn = NeuralNetwork::new(2, 3, 1, 0.1); // 训练数据(XOR) let training_data = vec![ (array![0.0, 0.0], array![0.0]), (array![0.0, 1.0], array![1.0]), (array![1.0, 0.0], array![1.0]), (array![1.0, 1.0], array![0.0]), ]; // 训练 10000 轮 for _ in 0..10000 { for (input, target) in &training_data { nn.train(input, target); } } // 测试结果 for (input, _) in &training_data { let output = nn.predict(input); println!("Input: {:?} => Output: {:.4}", input, output[0]); }}运行程序后,你应该看到类似以下的输出:
Input: [0, 0] => Output: 0.0421Input: [0, 1] => Output: 0.9572Input: [1, 0] => Output: 0.9583Input: [1, 1] => Output: 0.0415这表明我们的神经网络已经成功学会了 XOR 逻辑!
虽然我们从头实现了简单网络,但在实际项目中,你可以借助成熟的 Rust 机器学习库,如:
这些工具能帮助你更高效地开发复杂的 Rust机器学习 和 Rust深度学习 应用。
通过本教程,你已经掌握了如何用 Rust 从零构建一个基本的神经网络,并成功解决了 XOR 问题。这不仅让你理解了神经网络的核心原理,也展示了 用Rust构建神经网络 的可行性与优势。下一步,你可以尝试增加更多层、使用不同激活函数,或接入真实数据集进行训练。
Rust 的安全性和性能使其在 AI 领域大有可为。无论你是系统程序员还是机器学习爱好者,掌握 Rust神经网络 技能都将为你打开新的技术大门!
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122938.html