首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab中的神经网络设计

matlab中的神经网络设计
EN

Stack Overflow用户
提问于 2010-10-01 13:27:10
回答 2查看 1.4K关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2010-10-01 13:42:59

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

票数 1
EN

Stack Overflow用户

发布于 2014-01-27 01:56:13

你的问题是非常普遍的。你应该告诉我们你想做什么的更具体的细节。但是,根据我使用此工具箱进行车牌识别的经验,我将给您一些关于使用Matlab神经网络工具箱的提示。希望能有所帮助。

1-你需要知道你将使用多少个隐藏层以及你的输出的数量。在我的例子中,我指定了20个隐藏层和9个输出。

2-你需要先有一个数据集。您将使用此数据集来训练您的神经网络。在LPR的情况下,我使用90x50矩阵作为我的数据集。每一行代表一个数字,包含从数字图像中提取的50个数字。

3-您将需要一个目标矩阵来将您的数据集映射到已知输出(因此称为训练)。

以下语法定义了提到的网络:

代码语言:javascript
复制
net = newff(minmax(datasetNormalized'),[20 9],{'logsig' 'logsig'},'traingdx');

为了训练网络,我们写道:

代码语言:javascript
复制
[net,tr]=train(net,datasetNormalized',T);

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

代码语言:javascript
复制
[dummy,b]=max(sim(net,m_normalized'));

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

代码语言:javascript
复制
msgbox(['digit is: ' num2str(b)],'Digit recognized','help');

如果你想知道我的代码到底在做什么,这是完整的源代码:

代码语言:javascript
复制
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');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3836744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档