导航:首页 > 网络问题 > 神经网络的库怎么建立

神经网络的库怎么建立

发布时间:2023-06-14 01:16:07

什么是BP神经网络

BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成;正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,使误差减小。经反复学习,最终使误差减小到可接受的范围。具体步骤如下:
1、从训练集中取出某一样本,把信息输入网络中。
2、通过各节点间的连接情况正向逐层处理后,得到神经网络的实际输出。
3、计算网络实际输出与期望输出的误差。
4、将误差逐层反向回传至之前各层,并按一定原则将误差信号加载到连接权值上,使整个神经网络的连接权值向误差减小的方向转化。
5、対训练集中每一个输入—输出样本对重复以上步骤,直到整个训练样本集的误差减小到符合要求为止。

㈡ 用c++实现神经网络一般用什么库

如果你想自己实现神经网络玩玩的话,不妨用MATLAB;具体可以参考Unsupervised Feature Learning and Deep Learning Tutorial,这个教程是Andrew Ng和他的学生写的,上面有配套的MATLAB习题,是很好的练习材料。

但如果你想实际使用神经网络做项目的话,建议还是使用开源的库,比如Caffe | Deep Learning Framework。事实上,不建议个人实现神经网络做为项目用途:其中的卷积、反向传导等实现要想做好还是不太容易的。

关于你说的矩阵库,我只用过armadillo,在Windows上面和VS搭配使用的,配置很简单,里面也有examples,很好上手;而且这个库本身是基于blas和lapack,个人感觉还是很高效的。重点是,这个库的各种函数、语法,整个就一MATLAB,特别简单好用……自从有了它,妈妈再也不用担心老师叫我把MATLAB的代码转成C++了

㈢ (急)如何用MATLAB建立ANN(人工神经网络模型)

问题描述:
有两个自变量,一个因变量,10个样本(这里就取少一点好了)。用实际问题来表述,假设一个股票,开盘价 x1,收盘价 x2,第二天的股价 y。 那用神经网络来预测的目的是,根据10天的开盘价和收盘价,来预测未来股价。显然,这里的y与x1和x2相关,我们要训练一个网络(net)来让他尽可能的预测一个y

MATLAB程序

clc
clear
load data input output
%input就是包含了x1和x2 10天数据的矩阵,说白了就是20个数的矩阵。output是y的一个向量,%10个数
%需要自己找一些数据赋值给input和ouput

P=input;
T=output;
%这里P和T必须是 x1 x2和y的行向量组合。对于P,x1是行向量,x2是行向量。P=[x1;x2]; T=y. y是行向量

Epochs=5000;
NodeNum=12; TypeNum=1;
TF1='logsig'; TF2='purelin';
%设置一些初始参数,Epochs是迭代上限次数,NodeNum是第一个隐藏层的神经元个数,%TypeNum是几层。TF1和TF2分别定义了几个传递函数。

net=newff(minmax(P),[NodeNum TypeNum],{TF1 TF2},'trainlm');
%建立一个神经网络,训练输入和输出数据都有了,设置隐藏层的个数。

net.trainParam.epochs=Epochs;
net.trainParam.goal=1e-4;
net.trainParam.min_grad=1e-4;
net.trainParam.show=200;
net.trainParam.time=inf;
%设置一些训练时的参数,第一个是每次训练的最大迭代次数;

net=train(net,P,T);
%开始网络训练

P_test=P;
B_test=T;
%就用原始的数据进行测试

X=sim(net,P_test);
%测试

Erro=abs(B_test-X);
sigma=std(Erro);
%计算出预测值和实际值的误差,求出方差。将来方差可以用来随机调整

㈣ 用c++实现神经网络一般用什么库

openNN 一款开源的C++神经网络库
http://opennn.cimne.com/

㈤ 关于matlab的BP神经网络:

比较新的版本,比如说matlab 2010以上的,都不需要装神经网络的工具箱
建立网络步骤:
1、数据归一化:输入的数据通常为P,输出数据通常为T,数据格式为:每列对应一个样本,归一化常用函数:mapminmax
[pn,ps]=mapminmax(p); [tn,ts]=mapminmax(t)
pn,tn是归一化后的数据,ps, ts是归一化的结构体,在后面反归一化预测值很有用。
2、建立网络并设定参数
net=newff(pn,tn,[ ]) 中括号里面的是输入层数,隐含神经元数,输出层数,还可以设定节点传递函数等等的参数
net.trainparam.epochs=1000 训练的次数
net.trainparam.goal=0.0001 训练的误差目标值
net.trainparam.lr=0.1 学习速率,通常在0到1之间,过大过小都不好
3、预测并分析
an=sim(net, pn)
ouput=mapminmax('reverse', an, ts) 根据之前归一化的标准,对预测结果进行反归一化,得到结果
error=output-t 这里是对误差进行输出,也可以用error=sum(asb(output-t))
当然也可以作图,比如说:
plot(p,t,'-o')
hold on
plot(p, output,'-*')
看预测值和真实值能否吻合
还可以在神经网络训练完成后的对话框中看MSE和R方
还有很多方法提高神经网络的精度,以上程序没有经过MATLAB调试,但大致过程如上

纯手打,希望采纳!

㈥ python 神经网络库有哪些

学习人工智能时,我给自己定了一个目标--用Python写一个简单的神经网络。为了确保真得理解它,我要求自己不使用任何神经网络库,从头写起。多亏了Andrew Trask写得一篇精彩的博客,我做到了!下面贴出那九行代码:

在这篇文章中,我将解释我是如何做得,以便你可以写出你自己的。我将会提供一个长点的但是更完美的源代码。
首先,神经网络是什么?人脑由几千亿由突触相互连接的细胞(神经元)组成。突触传入足够的兴奋就会引起神经元的兴奋。这个过程被称为“思考”。

我们可以在计算机上写一个神经网络来模拟这个过程。不需要在生物分子水平模拟人脑,只需模拟更高层级的规则。我们使用矩阵(二维数据表格)这一数学工具,并且为了简单明了,只模拟一个有3个输入和一个输出的神经元。

我们将训练神经元解决下面的问题。前四个例子被称作训练集。你发现规律了吗?‘?’是0还是1?

你可能发现了,输出总是等于输入中最左列的值。所以‘?’应该是1。
训练过程
但是如何使我们的神经元回答正确呢?赋予每个输入一个权重,可以是一个正的或负的数字。拥有较大正(或负)权重的输入将决定神经元的输出。首先设置每个权重的初始值为一个随机数字,然后开始训练过程:
取一个训练样本的输入,使用权重调整它们,通过一个特殊的公式计算神经元的输出。
计算误差,即神经元的输出与训练样本中的期待输出之间的差值。
根据误差略微地调整权重。
重复这个过程1万次。

最终权重将会变为符合训练集的一个最优解。如果使用神经元考虑这种规律的一个新情形,它将会给出一个很棒的预测。
这个过程就是back propagation。

计算神经元输出的公式
你可能会想,计算神经元输出的公式是什么?首先,计算神经元输入的加权和,即

接着使之规范化,结果在0,1之间。为此使用一个数学函数--Sigmoid函数:

Sigmoid函数的图形是一条“S”状的曲线。

把第一个方程代入第二个,计算神经元输出的最终公式为:

你可能注意到了,为了简单,我们没有引入最低兴奋阈值。
调整权重的公式
我们在训练时不断调整权重。但是怎么调整呢?可以使用“Error Weighted Derivative”公式:

为什么使用这个公式?首先,我们想使调整和误差的大小成比例。其次,乘以输入(0或1),如果输入是0,权重就不会调整。最后,乘以Sigmoid曲线的斜率(图4)。为了理解最后一条,考虑这些:
我们使用Sigmoid曲线计算神经元的输出
如果输出是一个大的正(或负)数,这意味着神经元采用这种(或另一种)方式
从图四可以看出,在较大数值处,Sigmoid曲线斜率小
如果神经元认为当前权重是正确的,就不会对它进行很大调整。乘以Sigmoid曲线斜率便可以实现这一点
Sigmoid曲线的斜率可以通过求导得到:

把第二个等式代入第一个等式里,得到调整权重的最终公式:

当然有其他公式,它们可以使神经元学习得更快,但是这个公式的优点是非常简单。
构造Python代码
虽然我们没有使用神经网络库,但是将导入Python数学库numpy里的4个方法。分别是:
exp--自然指数
array--创建矩阵
dot--进行矩阵乘法
random--产生随机数
比如, 我们可以使用array()方法表示前面展示的训练集:

“.T”方法用于矩阵转置(行变列)。所以,计算机这样存储数字:

我觉得我们可以开始构建更优美的源代码了。给出这个源代码后,我会做一个总结。
我对每一行源代码都添加了注释来解释所有内容。注意在每次迭代时,我们同时处理所有训练集数据。所以变量都是矩阵(二维数据表格)。下面是一个用Python写地完整的示例代码。

结语
试着在命令行运行神经网络:

你应该看到这样的结果:

我们做到了!我们用Python构建了一个简单的神经网络!
首先神经网络对自己赋予随机权重,然后使用训练集训练自己。接着,它考虑一种新的情形[1, 0, 0]并且预测了0.99993704。正确答案是1。非常接近!
传统计算机程序通常不会学习。而神经网络却能自己学习,适应并对新情形做出反应,这是多么神奇,就像人类一样。

㈦ 如何建立神经网络模型

人工神经网络有很多种,我只会最常用的BP神经网络。不同的网络有不同的结构和不同的学习算法。
简单点说,人工神经网络就是一个函数。只是这个函数有别于一般的函数。它比普通的函数多了一个学习的过程。
在学习的过程中,它根据正确结果不停地校正自己的网络结构,最后达到一个满意的精度。这时,它才开始真正的工作阶段。
学习人工神经网络最好先安装MathWords公司出的MatLab软件。利用该软件,你可以在一周之内就学会建立你自己的人工神经网络解题模型。
如果你想自己编程实现人工神经网络,那就需要找一本有关的书籍,专门看神经网络学习算法的那部分内容。因为“学习算法”是人工神经网络的核心。最常用的BP人工神经网络,使用的就是BP学习算法。

阅读全文

与神经网络的库怎么建立相关的资料

热点内容
电脑网络断网重启后正常 浏览:554
路由器没开就有网络 浏览:961
路由器与网络连接 浏览:839
光猫怎么更换无线网络 浏览:558
网络麻将怎么打 浏览:682
网络用语dgjj什么意思 浏览:912
怎样找到电脑网络账号 浏览:16
苹果手机打开软件网络特别卡 浏览:719
网络安全保障人员培训 浏览:40
网络宽带上行下行调多少 浏览:1001
降档什么意思网络语 浏览:930
设置了dns网络快了好多 浏览:910
老路由器网络卡顿怎么办 浏览:66
亿联网络股票是哪个板块 浏览:291
计算机网络支撑技术包括 浏览:135
vpm苹果网络加速 浏览:901
苹果6怎么修改网络 浏览:955
全球手机网络最贵的国家是 浏览:543
计算机网络空间技术是干什么的 浏览:447
电视上如何添加网络 浏览:685

友情链接