matlab中识别过程训练,在MATLAB中训练神经网络用于用户识别

几点说明:

您说过,对于每个用户,您已经提取了136个功能 . 听起来每个用户只有一次重复(即用户尝试过使用过一次系统) . 但是,我没有得到某种随机性 . 你提到步态分析,这听起来每次用户使用系统时给定一个用户的记录数据会有所不同 . 换句话说:用户使用你的系统,你捕获数据,你提取136个功能(数字);然后,用户再次使用系统,但提取的136个功能将不同 . 因此,您应该为每个用户提供几个示例来训练分类器 . 就"matlab matrix"而言,您的矩阵每个示例应该有一个COLUMN,并且136行(每个要素) . 由于每个用户应该有几次重复(例如10次),因此大矩阵应该是:136行x 360列 .

您应该为每个用户“创建”一个新的神经网络 . 给定用户(例如User4),您可以创建包含该用户样本的数据集(新矩阵),以及其他几个用户(User1,User3,User5 ......)的样本 . 你做了二进制分类(例如:“user4”对抗“其他用户”) . 在训练之后,建议使用在训练阶段期间不存在数据的其他用户的数据来测试分类器(例如User2和其他用户) . 由于您正在进行二进制分类,因此您的矩阵应该如下所示:

例如,您有每个用户的10个试验(示例) . 您想要创建一个神经网络来检测用户User1 . 矩阵应该是:(符号 cU1_t1 表示:具有用户1,试验1的功能的列)input_matrix = [cU1_t1; cU1_t2; ...; cU1_t10; cU2_t1; ...; cU36_t10]

目标矩阵应该是:target =一个矩阵,其10个第一列是[1,0],其他350个列是[0,1] . 这意味着前10列是A型,其他是B型 . 在这种情况下,“A型”表示“User1”,“B型”表示“Not User1” .

然后,您应该分割数据(训练数据,验证数据,测试数据)以训练神经网络等 . 请记住仅为测试阶段保存一些用户,例如,列车矩阵不应包含五个用户的任何列:user2,user6,user7,user10,user20(50列) .

我想你应该已经明白了 .

问候 .

************ UPDATE: ******************************

此示例假定用户选择/指示其名称,然后系统使用神经网络对用户进行身份验证(如密码) . 我会给你一个随机数字的小例子 .

假设您已经记录了15个用户的数据(但将来您会有更多) . 当您对录音设备执行某些操作时,您可以录制“步态数据” . 从录制的信号中提取一些功能,假设您提取了5个功能(5个数字) . 因此,每次用户使用您的机器得到5个数字 . 即使用户是相同的,每次5个数字也会不同,因为记录的信号具有一些随机性 . 因此,要训练神经网络,您必须拥有每个用户的几个示例 . 假设每个用户执行了18次重复 .

总结这个例子:

有15位用户可以进行实验 .

每次用户使用系统时,您都会记录5个数字(功能) . 你得到 feature vector . 在matlab中它将是一个列 .

对于实验,每个用户已经执行了18次重复 .

现在,您必须为每个用户创建一个神经网络 . 为此,您必须构造几个矩阵 .

让's say you want to create the neural network (NN) of user 2 (U2). The NN will classify the feature vectors in 2 classes: U2 and NotU2. Therefore, you have to train and test the NN with examples of this. The group NotU2 represents any other user that it is not U2, however, you should NOT train the NN with data of every other user that you have in your experiment. This will be cheating (think that you can' t拥有来自世界上每个用户的数据) . 因此,要创建 train 数据集,您将排除某些用户在训练期间( validation 数据集)和训练后( test 数据集)测试NN的所有重复次数 . 对于此示例,我们将使用用户{U1,U3,U4}进行验证,并使用用户{U5,U6,U7}进行测试 .

因此,您构造以下矩阵:

Train input matrix 它将有12个U2的例子(70%或更少)以及用户{U8,U9,...,U14,U15}的每个例子 . 每个例子都是一列,因此,列车矩阵将是5行156列(12 8 * 18)的矩阵 . 我将按如下顺序排序:[U2_ex1,U2_ex2,...,U2_ex12,U8_ex1,U8_ex2,...,U8_ex18,U9_ex1,...,U15_ex1,... U15_ex18] . 其中U2_ex1表示在重复/示例编号1期间具有用户2的5个特征的列向量 .

列车矩阵的目标矩阵 . 它是一个2行156列的矩阵 . 每列j表示示例j的正确类 . 该列由零组成,并且该行的1表示该类 . 由于我们只有2个类,因此矩阵只有2行 . 我会说类U2将是第一个(因此该类的每个示例的列向量将是[1 0]),而另一个类(NotU2)将是第二个(因此每个示例的列向量)这个班的将是[0 1]) . 显然,该矩阵的列具有与列车矩阵相同的顺序 . 因此,根据我使用的顺序,目标矩阵将是:12列[1 0]和144列[0 1] .

Validation input matrix 它将有3个U2示例(15%或更少)以及用户[U1,U3,U4]的每个示例 . 因此,这将是6行和57列(3 3 * 18)的矩阵 .

验证矩阵的目标矩阵:2行和57列的矩阵:3列[1 0]和54列[0 1] .

Test input matrix 它将包含U2的剩余3个示例(15%)以及用户[U5,U6,U7]的每个示例 . 因此,这将是6行和57列(3 3 * 18)的矩阵 .

测试矩阵的目标矩阵:2行和57列的矩阵:3列[1 0]和54列[0 1] .

IMPORTANT. The columns of each matrix should have a random order to improve the training. That is, do not put all the examples of U2 together and then the others. For this example I have put them in order for clarity. 显然,如果更改输入矩阵的顺序,则必须在目标矩阵中使用相同的顺序 .

要使用MATLAB,您必须传递两个矩阵:inputMatrix和targetMatrix . inputMatrix将加入训练,验证和测试输入矩阵 . 而targetMatrix与目标相同 . 因此,inputMatrix将是一个包含6行和270列的矩阵 . targetMatrix将有2行和270列 . 为清楚起见,我会说前156列是训练列,然后是57列验证,最后是57列测试 .

MATLAB命令将是:

% Create a Pattern Recognition Network

hiddenLayerSize = 10; %You can play with this number

net = patternnet(hiddenLayerSize);

%Specify the indices of each matrix

net.divideFcn = 'divideind';

net.divideParam.trainInd = [1: 156];

net.divideParam.valInd = [157:214];

net.divideParam.testInd = [215:270];

% % Train the Network

[net,tr] = train(net, inputMatrix, targetMatrix);

在打开的窗口中,您将能够看到神经网络的性能 . 输出对象“net”是您训练的神经网络 . 如果需要,您可以将它与新数据一起使用 .

对每个其他用户(U1,U3,... U15)重复此过程以获得他/她的神经网络 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值