2011-01-17 2 views
0

Привет, я нашел этот код где-то с небольшим количеством информации с ним. это должно быть код нейронной сети backpropagation. , но, похоже, ему не хватает чего-то вроде веса и предвзятости. - правильный код? это тест-в-поезде backpropagation нейронной сети? спасибоВопрос о нейронной сети matlab code

% --- Executes on button press in pushbutton6. 

    %~~~~~~~~~~~[L1 L2 1];first hidden layer,second & output layer~~~~~ 
    layer = [11 15 1]; 
    myepochs = 30; 
    attemption = 1; %i; 
    mytfn = {'tansig' 'tansig' 'purelin'}; 

    %~~~~~~load data~~~~~~~~~~~~~~~~~~~~~~~ 
    m = xlsread('D:\MATLAB\datatrain.csv'); 

    %~~~~~~convert the data in Matrix form~~~~ 
    [row,col] = size(m);   

    P = m(1:row,1:10)'; 


    T1 = m(1:row, col)'; % target data for training...last column 


    net = newff([minmax(P)],layer,mytfn,'trainlm'); %nnet 
    net.trainParam.epochs = myepochs; % how many time newff will repeat the training 
    net.trainParam.showWindow = true; 
    net.trainParam.showCommandLine = true; 
    net = train(net,P,T1); % start training newff with input P and target T1 

    Y = sim(net,P); % training 

    save 'net7' net; 


    % --- Executes on button press in pushbutton4. 

    %~~~~~~load data~~~~~~~~~~~~~~~~~~~~~~~ 
    mt = xlsread('D:\MATLAB\datatest.csv'); 

    %~~~~~~convert the data in Matrix form~~~~ 
    [row1,col1] = size(mt);  
    Pt= mt(1:row1,1:10)'; 
    Tt = mt(1:row1, col1)'; 

    load 'net7' -mat; 
    Yt= sim(net,Pt); 

    %~~~~~~~final result of the neural network~~~~~~~~ 
    [r,c]=size(Yt); 
    result=Yt(c); 


    if result>0.7 
     error=1-result; 
     set(handles.edit39,'String','yes') 
     set(handles.edit40,'String',num2str(error)) 
     set(handles.edit41,'String','Completed') 
     data1=[num2str(result) ]; 
     fid = fopen('D:\MATLAB\record.csv','a+'); 
     fprintf(fid,[data1,'\n']); 
     fclose(fid); 


    else 
     set(handles.edit39,'String','no') 
     set(handles.edit40,'String',num2str(result)) 
     set(handles.edit41,'String','Completed') 
     data1=[num2str(result) ];   
     fid = fopen('D:\MATLAB\record.csv','a+'); 
     fprintf(fid,[data1,'\n']); 
     fclose(fid); 
    end  

ответ

0

Код верный. Весы и смещения нейронных сетей хранятся внутри структуры net, вы можете получить к ним доступ через net.IW и net.LW структур. Уклонения хранятся внутри net.b. Этот код тренирует сеть с использованием входов P и целями T1, разделяя их на подмножества обучения, тестирования и проверки, используемые во время обучения. Проверьте документацию для получения дополнительной информации о процедуре обучения.

+0

Я понимаю о тренировке, затем тестировании. Я использую систему распознавания образов с помощью gui. скажем, у меня уже есть 300 параметров изображения для учебного магазина в traindata.csv. то я хочу протестировать 100 изображений. что я сделал, я загружаю 1 изображение, затем выполняю этот код и повторяю его до 100 изображений. Я могу это сделать? это правильно? я сомневаюсь в этом, потому что он похож на нейронную сеть с тестированием во время обучения. Является ли это возможным? – user562873

+0

Я не уверен, что понял правильно. Ну, если у вас есть что-то вроде traindata.csv, вы можете иметь аналогичный файл, например testdata.csv, не так ли? Затем вы можете использовать функцию sim для тестирования вашей обученной сети на новые данные тестирования ... –

+0

Я использую gui для реализации этой системы распознавания. после того, как все данные поезда сохранены в файле данных, я использую этот код для проверки изображения. когда я тестирую одно изображение, ответ да. но когда я снова тестирую одно и то же изображение, ответ будет отрицательным. почему он продолжает меняться, когда одно и то же изображение снова тестируется? – user562873

Смежные вопросы