XOR 训练

此示例展示如何训练 XOR 函数的数据

示例 #1 xor.data 文件

4 2 1
-1 -1
-1
-1 1
1
1 -1
1
1 1
-1

示例 #2 简单训练

<?php
$num_input
= 2;
$num_output = 1;
$num_layers = 3;
$num_neurons_hidden = 3;
$desired_error = 0.001;
$max_epochs = 500000;
$epochs_between_reports = 1000;

$ann = fann_create_standard($num_layers, $num_input, $num_neurons_hidden, $num_output);

if (
$ann) {
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

$filename = dirname(__FILE__) . "/xor.data";
if (
fann_train_on_file($ann, $filename, $max_epochs, $epochs_between_reports, $desired_error))
fann_save($ann, dirname(__FILE__) . "/xor_float.net");

fann_destroy($ann);
}
?>

此示例展示如何读取和运行 XOR 函数的数据

示例 #3 简单测试

<?php
$train_file
= (dirname(__FILE__) . "/xor_float.net");
if (!
is_file($train_file))
die(
"The file xor_float.net has not been created! Please run simple_train.php to generate it");

$ann = fann_create_from_file($train_file);
if (!
$ann)
die(
"ANN could not be created");

$input = array(-1, 1);
$calc_out = fann_run($ann, $input);
printf("xor test (%f,%f) -> %f\n", $input[0], $input[1], $calc_out[0]);
fann_destroy($ann);
?>

添加笔记

用户贡献的笔记 3 个笔记

Aurelien Marchand
9 年前
以下是训练输入文件的解释,它可能对每个人来说都很明显,你需要理解它才能编写自己的文件。

4 2 1 <- 文件头,表示要读取 4 组数据,每个数据包含 2 个输入和 1 个输出。
-1 -1 <- 第 1 组的 2 个输入。
-1 <- 第 1 组的 1 个输出。
-1 1 <- 第 2 组的 2 个输入。
1 <- 第 2 组的 1 个输出。
1 -1 <- 第 3 组的 2 个输入。
1 <- 第 3 组的 1 个输出。
1 1 <- 第 4 组的 2 个输入。
-1 <- 第 4 组的 1 个输出。
ithirzty
4 年前
如果你想在时间限制后保存你的结果,你需要在你的代码中添加以下内容。
<?php
function shutdown()
{
global
$ann;
fann_save($ann, dirname(__FILE__) . "/result.net");
fann_destroy($ann);
}

register_shutdown_function('shutdown');
?>
其中 $ann 是你的神经网络变量,'result.net' 是你的神经网络配置文件。
To Top