我一直在試驗FANN這個庫,它似乎是一個很好的神經網絡庫,我在使用它的時候遇到了一些問題。使用FANN庫
所以我在這裏要做的是培養一個神經網絡,爲了搞亂圖書館,給它一個輸入並期待輸出。
FANN::neural_net nn;
const float desired_error = 0.00001;
const unsigned int max_epochs = 500000;
const unsigned int epochs_between_reports = 1000;
const unsigned int layers_count = 3;
const unsigned int layers[layers_count] = {7, 5, 1};
nn.create_standard_array(layers_count, layers);
nn.train_on_file(TRAINING_DATA, max_epochs, epochs_between_reports, desired_error);
這裏是我的訓練數據文件(TRAINING_DATA)的第一行:
16969 7 1
0.0812069 0.0812069 0.381578 0.0812069 5.8931e-05 0.0843302 0.606695
1
0.429961 0.0509753 0.381578 0.0266957 0.000117862 0.00707172 0.0221581
1
0.0983558 0.486888 0.381578 0.000117862 0.0266957 0.00701279 0.0539808
1
0.0983558 0.486888 0.598562 0.0161471 0.0161471 0.000471448 0.00135541
1
的完整數據集可以發現here
從訓練數據文件中使用的樣本數據,我應該得到匹配它的輸出,對吧?然而,如果我做以下,我得到0作爲輸出...
fann_type i[7], *o;
i[0] = 0.429961; i[1] = 0.0509753; i[2] = 0.381578; i[3] = 0.0266957; i[4] = 0.000117862; i[5] = 0.00707172; i[6] = 0.0221581;
o = nn.run(i);
std::cout << "output (run) is " << o[0] << std::endl;
有人能真正解釋我在這裏發生了什麼?
我使用的是fann的2.2.0版本。
謝謝
編輯:看來,2.1.0測試版產生預期的結果,但不是2.2.0版本。
編輯2:這實際上是我使用的版本中的一個錯誤。
你已經得到16969個訓練實例,所以當你有一個MSE(均方誤差)<0.00001並不意味着所有內容都能正確預測。您的網絡是否會達到預期的錯誤? – alfa 2012-03-08 10:17:11
是的。其實很快。 – ALOToverflow 2012-03-08 18:45:31
你測試過任何其他輸入嗎? – alfa 2012-03-08 21:27:41