2024年PHP开发者大会日本站

fann_scale_input

(PECL fann >= 1.0.0)

fann_scale_input根据之前计算的参数,缩放输入向量中的数据,然后将其馈送到人工神经网络。

描述

fann_scale_input(资源 $ann, 数组 $input_vector): 布尔值

根据之前计算的参数,缩放输入向量中的数据,然后将其馈送到人工神经网络。

参数

ann

神经网络 资源

input_vector

将要缩放的输入向量

返回值

成功时返回 true,否则返回 false

参见

  • fann_descale_input() - 根据之前计算的参数,缩放从人工神经网络获取的输入向量中的数据
  • fann_scale_output() - 根据之前计算的参数,缩放输出向量中的数据,然后将其馈送到人工神经网络

添加注释

用户贡献的注释 4 条注释

1
geekgirl dot joy at gmail dot com
3年前
<?php

// 此示例将使用 XOR 数据集,其中负一表示为零,一表示为一百,并演示如何缩放这些值,以便 FANN 可以理解它们,以及如何对 FANN 返回的值进行反缩放,以便您可以理解它们。

// 缩放允许您采用数据集中原始数据数字(如 -1234.975 或 4502012)并将它们转换为人工神经网络可以理解的输入/输出范围。

// 反缩放允许您采用缩放后的数据并将其转换回原始范围。

// scale_test.data
// 注意值是“原始”或未缩放的。
/*
4 2 1
0 0
0
0 100
100
100 0
100
100 100
0
*/

////////////////////
// 配置 ANN //
////////////////////

// 新的 ANN
$ann = fann_create_standard_array(3, [2,3,1]);

// 设置激活函数
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

// 从文件读取原始(未缩放)训练数据
$train_data = fann_read_train_from_file("scale_test.data");

// 将数据范围缩放至 -1 到 1
fann_set_input_scaling_params($ann , $train_data, -1, 1);
fann_set_output_scaling_params($ann , $train_data, -1, 1);

///////////
// 训练 //
///////////

// 推测你会在这里进行训练(取消注释以执行训练)...

// fann_train_on_data($ann, $train_data, 100, 10, 0.01);

// 但这不需要测试缩放,因为在这种情况下,训练文件仅用于计算/导出缩放范围。
// 但是,进行训练会提高 ANN 给出的答案与训练数据的相关性。

//////////
// 测试 //
//////////

$raw_input = array(0, 100); // 测试 XOR (0,100) 输入
$scaled_input = fann_scale_input ($ann , $raw_input); // 缩放的 XOR (-1,1) 输入
$descaled_input = fann_descale_input ($ann , $scaled_input); // 反缩放的 XOR (0,100) 输入
$raw_output = fann_run($ann, $scaled_input); // 从 ANN 获取答案/输出
$output_descale = fann_descale_output($ann, $raw_output); // 反缩放输出

////////////////////
// 报告结果 //
////////////////////
echo '原始输入:' . PHP_EOL;
var_dump($raw_input);

echo
'原始输入缩放后又反缩放(值不变/正确):' . PHP_EOL;
var_dump($descaled_input);

echo
'缩放后的输入:' . PHP_EOL;
var_dump($scaled_input);

echo
"ANN 的原始输出(缩放后的输入):" . PHP_EOL;
var_dump($raw_output);

echo
'反缩放后的输出:' . PHP_EOL;
var_dump($output_descale);


////////////////////
// 示例输出 //
////////////////////

/*
原始输入:
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
原始输入缩放后又反缩放(值不变/正确):
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
缩放后的输入:
array(2) {
[0]=>
float(-1)
[1]=>
float(1)
}
ANN 的原始输出(缩放后的输入):
array(1) {
[0]=>
float(1)
}
反缩放后的输出:
array(1) {
[0]=>
float(100)
}
*/
0
geekgirl dot joy at gmail dot com
3年前
<?php

// 此示例将使用 XOR 数据集,其中负一表示为零,一表示为一百,并演示如何缩放这些值,以便 FANN 可以理解它们,以及如何对 FANN 返回的值进行反缩放,以便您可以理解它们。

// 缩放允许您采用数据集中原始数据数字(如 -1234.975 或 4502012)并将它们转换为人工神经网络可以理解的输入/输出范围。

// 反缩放允许您采用缩放后的数据并将其转换回原始范围。

// scale_test.data
// 注意值是“原始”或未缩放的。
/*
4 2 1
0 0
0
0 100
100
100 0
100
100 100
0
*/

////////////////////
// 配置 ANN //
////////////////////

// 新的 ANN
$ann = fann_create_standard_array(3, [2,3,1]);

// 设置激活函数
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

// 从文件读取原始(未缩放)训练数据
$train_data = fann_read_train_from_file("scale_test.data");

// 将数据范围缩放至 -1 到 1
fann_set_input_scaling_params($ann , $train_data, -1, 1);
fann_set_output_scaling_params($ann , $train_data, -1, 1);

///////////
// 训练 //
///////////

// 推测你会在这里进行训练(取消注释以执行训练)...

// fann_train_on_data($ann, $train_data, 100, 10, 0.01);

// 但这不需要测试缩放,因为在这种情况下,训练文件仅用于计算/导出缩放范围。
// 但是,进行训练会提高 ANN 给出的答案与训练数据的相关性。

//////////
// 测试 //
//////////

$raw_input = array(0, 100); // 测试 XOR (0,100) 输入
$scaled_input = fann_scale_input ($ann , $raw_input); // 缩放的 XOR (-1,1) 输入
$descaled_input = fann_descale_input ($ann , $scaled_input); // 反缩放的 XOR (0,100) 输入
$raw_output = fann_run($ann, $scaled_input); // 从 ANN 获取答案/输出
$output_descale = fann_descale_output($ann, $raw_output); // 反缩放输出

////////////////////
// 报告结果 //
////////////////////
echo '原始输入:' . PHP_EOL;
var_dump($raw_input);

echo
'原始输入缩放后又反缩放(值不变/正确):' . PHP_EOL;
var_dump($descaled_input);

echo
'缩放后的输入:' . PHP_EOL;
var_dump($scaled_input);

echo
"ANN 的原始输出(缩放后的输入):" . PHP_EOL;
var_dump($raw_output);

echo
'反缩放后的输出:' . PHP_EOL;
var_dump($output_descale);


////////////////////
// 示例输出 //
////////////////////

/*
原始输入:
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
原始输入缩放后又反缩放(值不变/正确):
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
缩放后的输入:
array(2) {
[0]=>
float(-1)
[1]=>
float(1)
}
ANN 的原始输出(缩放后的输入):
array(1) {
[0]=>
float(1)
}
反缩放后的输出:
array(1) {
[0]=>
float(100)
}
*/
0
saakyanalexandr at gmail dot com
5年前
fann_scale_input 和 fann_scale_output 的返回值不是布尔值。此函数返回缩放向量。

示例
$r = fann_scale_input($ann, $input);
$output = fann_run($ann, $input);
$s = fann_scale_output ( $ann, $output);

$r 和 $s 是数组
-1
Nolife
7年前
请注意 -> 所有与 FANN 缩放相关的函数都无法正常工作。
它们的实现方式错误,导致缩放计算在库内进行,但没有参考回输入变量。
To Top