Mức ẩn gồm 150
neuron tang hyperbole (Để đơn giản các kết nối trễ và phản hồi
không đ−ợc thể hiện trên hình)
. . . . . . . . . . . . . . .
Hình 7.2 Kiến trúc khái quát của mạng neuron thử nghiệm
/* Đọc file chứa mạng neuron từ đĩa */
inList = CutDirExt(inList1, NumFiles);
NetName = MakeName(Dir, NetName, "net"); ann = LoadNet(NetName);
/* Chuẩn hoá đầu vμo */
NormConnector("CEP", ann, inList, NumFiles, 1.0);
NormGroup("diff1", ann, inList, NumFiles, 1.0); NormGroup("diff2", ann, inList, NumFiles, 1.0);
/* Truyền giá trị cho tham biến xác lập chế độ tích luỹ */
ResetBackPropVar();
SetBackPropVar('m', 0, 0, 0.7, 0.0, NULL, NULL, NULL); SetBackPropVar('g', 0, 0, 1e-5, 0.0, NULL, NULL, NULL); SetBackPropVar('i', Numiters, 0, 0.0, 0.0, NULL, NULL, NULL);
SetBackPropVar('F', 20, 30, 0.0, 0.0, NULL, NULL, NULL); SetBackPropVar('e', 0, 0, Threshold, 0.0, NULL, NULL, NULL);
SetBackPropVar('n', 0, 0, 0.0, 0.0, NetName, NULL, NULL); SetBackPropVar('x', NumFiles, 0, 0.0, 0.0, NULL, NULL, inList);
/* Thực hiện tích luỹ */
BackPropTrain(ann);
FreeNet(ann); }
void MyFilterBank(char** WavsList1, int NumWavs, char*
ParamsDir, char* WavsDir) {
char** WavsList;
WavsList = CutDirExt(WavsList1, NumWavs);
/* Truyền giá trị cho tham biến xác lập chế độ x/lý*/
ResetFibVar();
SetFibVar('d' ,0, 0, 0, ParamsDir, NULL); SetFibVar('x' ,0, 0, 0, "dat", NULL); SetFibVar('p' ,0, 0, 0, WavsDir, NULL); SetFibVar('q' ,0, 0, 0, "wav", NULL);
SetFibVar('i', NumWavs, 0, 0, NULL, WavsList); SetFibVar('n', 24, 0, 0, NULL, NULL);
SetFibVar('c', 12, 0, 0, NULL, NULL); SetFibVar('e', 0, 0, 0, NULL, NULL);
/* Thực hiện xử lý filter bank */
FibAct();
FREE2D(WavsList, NumWavs)
}
void MyRunNet(char* NetName, char* Dir,
char** ParamsList1, int NumParams) {
char** ParamsList;
/* Đọc file chứa mạng neuron từ đĩa */
ParamsList = CutDirExt(ParamsList1, NumParams); NetName = MakeName(Dir, NetName, "net");
LoadNet(NetName);
/* Truyền giá trị cho tham biến */
ResetEvaluationVar();
SetEvaluationVar('t', 0, NetName, NULL);
SetEvaluationVar('i', NumParams, NULL, ParamsList);
/* Thực hiện đánh giá tính năng cho mạng neuron */
Evaluation();
FREE2D(ParamsList, NumParams)
}
7.2.2 Một vài modul quan trọng khác 1. Modul BackPropTrain 1. Modul BackPropTrain
Đây là modul công cụ thực hiện một quá trình tích luỹ back-propagation hoàn chỉnh. Có rất nhiều chế độ thi hành một quá trình nh− vậy phụ thuộc vào các thuộc tính nh−: số l−ợng các Epoch; tham số tốc độ học, hằng số moment; cập nhật các trọng số theo từng Unit, từng file tham số hay sau mỗi Epoch; ... Điều này yêu cầu modul phải có rất nhiều biến trung gian, và vì vậy nó sẽ cung cấp hai thủ tục sau:
/* Thủ tục khởi đầu lại các biến tr−ớc khi truyền giá trị*/
void ResetBackPropVar (void);
/* Thủ tục truyền giá trị các thuộc tính xác định chế độ
thi hμnh. ở đó sign lμ ký tự xác định loại thuộc tính cần thay
đổi vμ các tham biến tiếp theo lμ các giá trị cần gán */
void BackPropVar(char sign, int num1, int num2, float num3, float num4, char* str1,
char* str2, char** List);
/* Thủ tục thi hμnh sau khi đã xác định chế độ*/
void BackPropTrain(void);