9 个版本
使用旧的 Rust 2015
0.1.8 | 2024年2月2日 |
---|---|
0.1.7 | 2018年10月19日 |
0.1.6 | 2015年11月7日 |
0.1.5 | 2015年10月26日 |
0.1.3 | 2015年6月29日 |
#421 in 机器学习
用于 fann
98KB
551 行
fann-sys-rs
对快速人工神经网络库的 C 函数的低级 Rust 绑定。包装库 fann-rs 提供了在这些绑定之上的安全接口。
用法
将 fann-sys
和 libc
添加到您的 Cargo.toml
文件中依赖列表
[dependencies]
fann-sys = "*"
libc = "*"
并在 crate 根目录下添加以下内容
extern crate fann;
extern crate libc;
lib.rs
:
对快速人工神经网络库的 C 函数的原始绑定
创建/执行
FANN 库设计得非常易于使用。可以通过简单的 fann_create_standard
函数创建前馈人工神经网络,其他人工神经网络也可以同样轻松地创建。可以通过 fann_train_on_file
进行训练,通过 fann_run
执行。
所有这些都可以在不深入了解人工神经网络内部结构的情况下完成,尽管创建的人工神经网络仍然强大且有效。如果您对人工神经网络有更多的了解,并希望有更多的控制权,几乎可以调整人工神经网络的每个部分,以创建专用和高度优化的人工神经网络。
训练
有几种不同的训练神经网络的方法,FANN 库支持多种不同的方法。
两种最常用的基本方法是
-
固定拓扑训练 - 人工神经网络的大小和拓扑结构是在事先确定的,训练将改变权重以最小化期望输出值和实际输出值之间的差异。这种训练由
fann_train_on_data
支持。 -
演化的拓扑训练 - 训练从一个空的神经网络开始,只包含输入和输出神经元。在训练过程中添加隐藏神经元和连接,以实现与固定拓扑训练相同的目标。这种训练由 FANN 级联训练支持。
级联训练
级联训练与普通训练的不同之处在于,它从空的神经网络开始,然后逐个添加神经元,同时在训练神经网络。这种方法的优点是您无需在训练前猜测隐藏层和神经元的数量,但级联训练在解决某些问题上也已被证明更为有效。
级联训练的基本思想是,首先训练一组候选神经元,这些神经元与实际网络分开训练,然后将其中最有希望的候选神经元插入到神经网络中。接着训练输出连接,并准备新的候选神经元。候选神经元作为新的隐藏层中的快捷连接神经元被创建,这意味着最终的神经网络将包含多个隐藏层,每个隐藏层中有一个快捷连接神经元。
文件输入/输出
可以使用 fann_save
将整个ANN保存到文件中,以便以后使用 fann_create_from_file
加载。
错误处理
FANN库的错误通常报告在 stderr
。然而,可以通过 fann_set_error_log
函数将这些错误消息重定向到文件,或者完全忽略它们。
也可以使用 fann_get_errno
和 fann_get_errstr
函数检查最后的错误消息。
数据类型
FANN库中使用的两种主要数据类型是 fann
,它表示人工神经网络,以及 fann_train_data
,它表示训练数据。