Вестник МГТУ, 2023, Т. 26, № 4.

Вестник МГТУ. 2023. Т. 26, № 4. С. 472-488. DOI: https://doi.org/10.21443/1560-9278-2023-26-4-472-488 Строка 1 открывает текстовый файл для чтения с 120 наборами данных для обучения (он знаком по работе в SNN). В строках 2-4 происходит чтение файла в матрицу с именем ISXODN, после чего файл закрывается строкой 5. В строке 6 заданы значения параметров структуры сети 16, 8, 3, 1. Они вносятся строкой 6 в список NN, он определяет затем архитектуру сети. В строках 9 и 10 содержатся матрица входов L_INPUT и вектор целей L_GOAL из 70 строк для обучения. В строке 11 определен список fa, состоящий из трех строчных значений с именами функций активации по слоям сети. function [y]=ann sirelu activ(x) y=x/(1+exp(-x)) endfunction function [y]=ann d sirelu activ(x) y=(1+exp(-x)*(1+x))/(( 1+exp(-x))*(1+exp(-x))) endfunction 1. f=mopen('c:\dats\TestModel_ 120.txt', 'r'); 2. for i=1:120; for j=1:17; 3. ISXODN(i,j)=mfscanf(f,'%g'); 4. end; end; 5. mclose(f); 6. nS0=16;nS1=8;nS2=3;nS3=1; 7. NN=[nS0 nS1 nS2 nS3]; 8. r=[0 1]; 9. L_INPUT=ISX0DN(1:70,1:nS0); 10. L_G0AL=(ISX0DN(1:70,nS0+1)); 11. fa=['ann_tansig_activ','ann_logsig_activ','ann_sirelu_activ'] 12. W_gd=ann_FFBP_gd(L_INPUT',L_G0AL',NN,fa,0.001,1000,1e-10,1e-10); 13. k=105; 14. goal_test=TEST(k,nS0+1); 15. input_test=TEST(k,1:nS0); 16. y_test_gd=ann_FFBP_run(input_test',W_gd,fa); Рис. 16. Программа в SciLab, решающая задачу обучения сети и выполнения тестового решения Fig. 16. Program in SciLab that solves the problem of training the network and executing a test solution Главной в программном коде, показанном на рис. 16, можно считать строку 12, в которой используется функция ann_FFBP_gd, значение которой присваивается переменной W_gd. Это сложная списочная переменная, которая содержит в качестве элементов три весовые матрицы переходов W между слоями и три вектора смещений S. Они получены в процессе обучения сети, определяют переход от слоя к слою и гарантируют минимально возможную погрешность результатов прогноза. Этот переход можно описать формулой Ѵвых = fa(WVвх + S), где Ѵвх, Ѵвых - вектор-столбцы входа и выхода; W - матрица весов; S - вектор смещения; fа - функция активации. Далее можно употреблять элементы W и S в своих целях, например, самостоятельно оценивать погрешность или проверять действие разных функций активации, в том числе и собственного конструирования (Clevert et al., 2015). Удобно также организовывать работу по прогнозу с новыми наборами данных. Строки 14 и 15 позволяют выбрать для тестирования любую строку k (здесь k=105) из массива данных input_test и соответствующий ей результат goal_test. Тестирование выполнено в строке 16 программы обращением к функции пакета ann_FFBP_run. Результаты выполнения программы приведены на рис. 17, где показаны процесс обучения сети по эпохам (слева) и график этого процесса в виде MSE (СКП), а также приведен целевой результат 348 и его прогноз 357, выполненный в строке 16. Относительная погрешность составила 9/348 и 2,5 %. Полученные результаты требуют более глубоких сравнительных оценок, которые предстоит провести в ходе дальнейших исследований по данной теме. В среде SNN матрицу весов W и вектор смещения S также можно получить; они появляются на форме NetWork Editor (рис. 18). На ней в формате Excel выведены эти важные элементы работы по обучению сети, которые можно перенести в среду Excel, выделив мышкой всю область экрана монитора, и обычным копированием перенести на лист табличного процессора. Затем следует работать с частями этой области обычным образом. 485

RkJQdWJsaXNoZXIy MTUzNzYz