PHP Conference Japan 2024

fann_scale_input

(PECL fann >= 1.0.0)

fann_scale_input在將輸入向量饋送到基於先前計算參數的 ann 之前縮放資料

描述

fann_scale_input(資源 $ann, 陣列 $input_vector): 布林值

在將輸入向量饋送到基於先前計算參數的 ann 之前縮放資料。

參數

ann

神經網路資源

input_vector

將被縮放的輸入向量

回傳值

成功時回傳 true,否則回傳 false

參見

  • fann_descale_input() - 基於先前計算的參數,在從 ann 取得輸入向量後縮放資料
  • fann_scale_output() - 基於先前計算的參數,在將輸出向量饋送到 ann 之前縮放資料

新增筆記

使用者貢獻的筆記 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 'The raw_input:' . PHP_EOL;
var_dump($raw_input);

echo
'The raw_input Scaled then De-Scaled (values are unchanged/correct):' . PHP_EOL;
var_dump($descaled_input);

echo
'The Scaled input:' . PHP_EOL;
var_dump($scaled_input);

echo
"The raw_output of the ANN (Scaled input):" . PHP_EOL;
var_dump($raw_output);

echo
'The De-Scaled output:' . PHP_EOL;
var_dump($output_descale);


////////////////////
// 範例輸出 //
////////////////////

/*
The raw_input:
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
The raw_input Scaled then De-Scaled (values are unchanged/correct):
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
The Scaled input:
array(2) {
[0]=>
float(-1)
[1]=>
float(1)
}
The raw_output of the ANN (Scaled input):
array(1) {
[0]=>
float(1)
}
The De-Scaled output:
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 'The raw_input:' . PHP_EOL;
var_dump($raw_input);

echo
'The raw_input Scaled then De-Scaled (values are unchanged/correct):' . PHP_EOL;
var_dump($descaled_input);

echo
'The Scaled input:' . PHP_EOL;
var_dump($scaled_input);

echo
"The raw_output of the ANN (Scaled input):" . PHP_EOL;
var_dump($raw_output);

echo
'The De-Scaled output:' . PHP_EOL;
var_dump($output_descale);


////////////////////
// 範例輸出 //
////////////////////

/*
The raw_input:
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
The raw_input Scaled then De-Scaled (values are unchanged/correct):
array(2) {
[0]=>
float(0)
[1]=>
float(100)
}
The Scaled input:
array(2) {
[0]=>
float(-1)
[1]=>
float(1)
}
The raw_output of the ANN (Scaled input):
array(1) {
[0]=>
float(1)
}
The De-Scaled output:
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