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

LGPL-3.0

98KB
551

fann-sys-rs

Build Status

对快速人工神经网络库的 C 函数的低级 Rust 绑定。包装库 fann-rs 提供了在这些绑定之上的安全接口。

文档

用法

fann-syslibc 添加到您的 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_errnofann_get_errstr 函数检查最后的错误消息。

数据类型

FANN库中使用的两种主要数据类型是 fann,它表示人工神经网络,以及 fann_train_data,它表示训练数据。

依赖关系