【问题标题】:Neural Network design in matlabmatlab中的神经网络设计
【发布时间】:2014-01-27 01:56:12
【问题描述】:

我正在研究语音识别,我正在尝试在 Matlab 中使用神经网络设计一种语音识别算法。如何定义网络结构?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    Matlab 有一个Neural Network Toolbox。也许你可以看看那个?

    【讨论】:

    • 我正在使用该工具箱..但是有任何选项可以手动定义输入和输出层神经元。
    • 我已经很久没有使用这个工具箱了,但我记得这样的事情是可能的。不幸的是,我不记得具体是如何...
    【解决方案2】:

    您的问题很笼统。您应该向我们提供有关您想要做什么的更具体的细节。 但是,根据我使用此工具箱进行车牌识别的经验,我给您一些使用 Matlab 神经网络工具箱的技巧。希望对您有所帮助。
    1-您需要知道将使用多少隐藏层以及输出数量。在我的例子中,我指定了 20 个隐藏层和 9 个输出。
    2-您首先需要有一个数据集。您将使用此数据集来训练您的神经网络。在 LPR 的情况下,我使用 90x50 矩阵作为我的数据集。每行代表一个数字,包含从数字图像中提取的 50 个数字。
    3- 您将需要一个目标矩阵来将您的数据集映射到已知输出(因此称为训练)。
    以下语法定义了提到的网络:

    net = newff(minmax(datasetNormalized'),[20 9],{'logsig' 'logsig'},'traingdx');
    

    为了训练我们编写的网络:

    [net,tr]=train(net,datasetNormalized',T);
    

    我们使用以下代码向网络提供一个新的输入:

    [dummy,b]=max(sim(net,m_normalized'));
    

    b 是我们在这里寻找的答案(以最大概率输出),因此我们将其显示给用户:

    msgbox(['digit is: ' num2str(b)],'Digit recognized','help');
    

    如果您想确切了解我的代码在做什么,这是完整的源代码:

    clc
    clear
    close all
    
    numOfPhotos=90;
    imgRows=100;
    imgCols=50;
    
    X=zeros(numOfPhotos,(imgRows*imgCols)/100);
    
    
    
    
    %%Resize Images
    %  myresize(imgRows,imgCols);
    
    
    %read train images
    datasetIndex=0;    
    
    for i=1:numOfPhotos/10
        for j=1:numOfPhotos/9           
            datasetIndex=datasetIndex+1;
        im=imread(['resized_train_numbers\' num2str(i) ' (' num2str(j) ').jpg']);
        im=im2bw(im,graythresh(im));    
    
        c=1;
        for g=1:imgRows/10
            for e=1:imgCols/10
                s=sum(sum(im((g*10-9:g*10),(e*10-9:e*10))));
                X(datasetIndex,c)=s;
                c=c+1;            
            end    
        end
    
        end
    end
    datasetNormalized=zeros(numOfPhotos,imgRows*imgCols/100);
    %%Normalize dataset contents
    minDataset=min(min(X));
    maxDataset=max(max(X));
    for i = 1:numOfPhotos
        for j=1:imgRows*imgCols/100
            datasetNormalized(i, j) = (X(i,j)-minDataset)/(maxDataset-minDataset);
        end
    end
    
    
    
    
    % 
    %%Neural network part
    
    
    % T=zeros(1,90);
    % for  i=1:90
    %     T(i)=ceil(i/10);
    % end
    
    T=zeros(9,90);
    for j=1:90
        i=ceil(j/10);
        T(i,j)=1;
    end
    
    % net=newff(datasetNormalized',T,20);
    net = newff(minmax(datasetNormalized'),[20 9],{'logsig' 'logsig'},'traingdx');
    
    net.performFcn='sse';
    net.trainParam.goal=0.01;
    net.trainParam.show=20;
    net.trainParam.epochs=100;
    net.trainParam.mc=0.95;
    % net.trainFcn='trainlm';
    net.trainParam.min_grad=1e-12;
    [net,tr]=train(net,datasetNormalized',T);
    
    
    
    
    %Read input image for recognition
    [name file]=uigetfile('*.jpg','Choose Plate Digit Image');
    newImg=imread([file name]);
    newImg=imresize(newImg,[imgRows imgCols]);
    newImg=im2bw(newImg,graythresh(newImg));
    figure,imshow(newImg);
    
    m=zeros(1,imgRows*imgCols/100);
    c=1;
    for g=1:imgRows/10
            for e=1:imgCols/10
                s=sum(sum(newImg((g*10-9:g*10),(e*10-9:e*10))));
                m(c)=s;
                c=c+1;            
            end
    end
    %Normalize m contents
    
    m_normalized=zeros(1,imgRows*imgCols/100);
    for i=1:imgRows*imgCols/100    
            m_normalized(i)=(m(i)-min(m))/(max(m)-min(m));
    end
    
    
    [dummy,b]=max(sim(net,m_normalized'));
    % b=round(sim(net,m_normalized'));
    msgbox(['digit is: ' num2str(b)],'Digit recognized','help');
    

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 2023-01-19
      • 2013-06-09
      • 2011-01-02
      • 2015-12-03
      • 2011-08-23
      • 2012-09-22
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多