matlab里BP网络,为什么我这样多组的输入输出训练样本训练时出错?报错是说Ttrain应该只有一行

matlab里BP网络,为什么我这样多组的输入输出训练样本训练时出错?报错是说Ttrain应该只有一行,第1张

如果你的每个样本输入是二维向量[x1 x2],输出是一维向量,总共有7组样本,那么输入矩阵应该这么给:

input=[x11 x12x21 x22x31 x32x41 x42等等],xij代表第i个样本第j维输入

不太懂你14*10矩阵中的10是代表什么?你不是只有7组样本,每组样本只有两个输入么?

楼主解决没?这是我知道的

[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)%归一化数据,方便后面的预测

net.trainParam. show = 100 %这里的show是显示步数,每100步显示一次

net.trainParam.goal=0.0001%目标误差,训练得到的数据和原始输入

net.trainParam.lr = 0.01 %lr是学习动量,一般越小越好

y1=sim(net,pn) %sim用来预测的

xlswrite('testdata6',tnew1) ?这里的testdata6是excel表格的名称

你可以看看书的,书上都有介绍

第一步:准备facenet程序

一、下载FaceNet源码。

下载地址:facenet源码

二、精简代码。

作者在代码里实现了很多功能,但是对于初学者来说,很多代码是没有必要的,反倒找不到学习这个程序的入口。建议先精简一下代码,便于读懂代码:新建一个文件夹,取名:facenet,把源码中的src文件夹直接拷贝过来。

注:便于大家能够看懂代码,以上两步我已经完成,同时,自己运行程序之后,还对里边的代码做了详细的注释,如果想先了解facenet的源码,强烈建议下载这个,下载地址:facenet精简版

第二步:下载预训练模型。

facenet提供了两个预训练模型,分别是基于CASIA-WebFace和MS-Celeb-1M人脸库训练的,不过需要去谷歌网盘下载,这里给其中一个模型的百度网盘的链接:链接: 预训练模型百度网盘地址 密码: 12mh

下载完成后,把预训练模型的文件夹拷贝在刚才的文件夹里。用pycharm打开这个工程文件

第三步:运行人脸比对程序(compare.py)。

facenet可以直接比对两个人脸经过它的网络映射之后的欧氏距离。

-1、在compare.py所在目录下放入要比对的文件1.png和2.png。

-2、运行compare.py文件,但是会报错

这是因为这个程序需要输入参数,在上方的工具栏里选择Run>EditConfigurations ,在Parameters中配置参数:20170512-110547 1.png 2.png。再次运行程序

可以看到,程序会算出这两个图片的差值矩阵

第四步:图片预处理——运行人脸对齐程序(align\align_dataset_mtcnn.py)。

我们可以下载LFW数据集用来测试这个程序,也为后边的训练函数做好数据准备。

下载链接:http://vis-www.cs.umass.edu/lfw/。下载后解压在data文件夹中。

因为程序中神经网络使用的是谷歌的“inception resnet v1”网络模型,这个模型的输入时160*160的图像,而我们下载的LFW数据集是250*250限像素的图像,所以需要进行图片的预处理。

在运行时需要输入的参数:

input_dir:输入图像的文件夹(E:\facenet\data\lfw E:\facenet\data\lfw)

output_dir:输出图像的文件夹(E:\facenet\data\lfw E:\facenet\data\lfw_160)

指定裁剪后图片的大小:--image_size 160 --margin 32 --random_order(如果不指定,默认的裁剪结果是182*182像素的)

比如我的是:E:\facenet\data\lfw E:\facenet\data\lfw_160 --image_size 160 --margin 32 --random_order

如果在pycharm中运行,按照同样的方法配置以上参数

第五步:运行训练程序:(train_tripletloss.py)。

前边已经下载并处理好了LFW的数据集,现在,可以进行训练了。

运行之前,要在train_tripletloss.py中把加载数据的路径改成自己的数据集所在路径

注:train_tripletloss.py和train_softmax.py的区别:这是作者对论文做出的一个延伸,除了使用facenet里提到的train_tripletloss三元组损失函数来训练,还实现了用softmax的训练方法来训练。当然,在样本量很小的情况下,用softmax训练会更容易收敛。但是,当训练集中包含大量的不同个体(超过10万)时,最后一层的softmax输出数量就会变得非常大,但是使用train_tripletloss的训练仍然可以正常工作。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7844909.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存