导航:首页 > 网络设置 > 神经网络十分类需要多少训练集

神经网络十分类需要多少训练集

发布时间:2023-01-05 13:16:58

❶ 神经网络,训练样本500条,为什么比训练样本6000条,训练完,500条预测比6000条样本好!

并非训练样本越多越好,因课题而异。 1、样本最关键在于正确性和准确性。你所选择的样本首先要能正确反映该系统过程的内在规律。我们从生产现场采得的样本数据中有不少可能是坏样本,这样的样本会干扰你的神经网络训练。通常我们认为坏样本只是个别现象,所以我们希望通过尽可能大的样本规模来抵抗坏样本造成的负面影响。 2、其次是样本数据分布的均衡性。你所选择的样本最好能涉及到该系统过程可能发生的各种情况,这样可以极大可能的照顾到系统在各个情况下的规律特征。通常我们对系统的内在规律不是很了解,所以我们希望通过尽可能大的样本规模来“地毯式”覆盖对象系统的方方面面。 3、再次就是样本数据的规模,也就是你要问的问题。在确保样本数据质量和分布均衡的情况下,样本数据的规模决定你神经网络训练结果的精度。样本数据量越大,精度越高。由于样本规模直接影响计算机的运算时间,所以在精度符合要求的情况下,我们不需要过多的样本数据,否则我们要等待很久的训练时间。 补充说明一下,不论是径向基(rbf)神经网络还是经典的bp神经网络,都只是具体的训练方法,对于足够多次的迭代,训练结果的准确度是趋于一致的,方法只影响计算的收敛速度(运算时间),和样本规模没有直接关系。

如何确定何时训练集的大小是“足够大”的?
神经网络的泛化能力主要取决于3个因素:
1.训练集的大小
2.网络的架构
3.问题的复杂程度
一旦网络的架构确定了以后,泛化能力取决于是否有充足的训练集。合适的训练样本数量可以使用Widrow的拇指规则来估计。 拇指规则指出,为了得到一个较好的泛化能力,我们需要满足以下条件(Widrow and Stearns,1985;Haykin,2008): N = nw / e 其中,N为训练样本数量,nw是网络中突触权重的数量,e是测试允许的网络误差。 因此,假如我们允许10%的误差,我们需要的训练样本的数量大约是网络中权重数量的10倍。

❷ matlab神经网络训练一般需要多少数据

你这个问题真的不好回答,因为没有固定答案,也没有什么经验答案,不能太少也不能太多,因为需要根据实际情况决定了,看你是要做什么了

怎么用spss神经网络来分类数据

用spss神经网络分类数据方法如下:

神经网络算法能够通过大量的历史数据,逐步建立和完善输入变量到输出结果之间的发展路径,也就是神经网络,在这个神经网络中,每条神经的建立以及神经的粗细(权重)都是经过大量历史数据训练得到的,数据越多,神经网络就越接近真实。神经网络建立后,就能够通过不同的输入变量值,预测输出结果。例如,银行能够通过历史申请贷款的客户资料,建立一个神经网络模型,用于预测以后申请贷款客户的违约情况,做出是否贷款给该客户的决策。本篇文章将用一个具体银行案例数据,介绍如何使用SPSS建立神经网络模型,用于判断将来申请贷款者的还款能力。

选取历史数据建立模型,一般会将历史数据分成两大部分:训练集和验证集,很多分析者会直接按照数据顺序将前70%的数据作为训练集,后30%的数据作为验证集。如果数据之间可以证明是相互独立的,这样的做法没有问题,但是在数据收集的过程中,收集的数据往往不会是完全独立的(变量之间的相关关系可能没有被分析者发现)。因此,通常的做法是用随机数发生器来将历史数据随机分成两部分,这样就能够尽量避免相同属性的数据被归类到一个数据集当中,使得建立的模型效果能够更加优秀。

在具体介绍如何使用SPSS软件建立神经网络模型的案例之前,先介绍SPSS的另外一个功能:随机数发生器。SPSS的随机数发生器常数的随机数据不是真正的随机数,而是伪随机数。伪随机数是由算法计算得出的,因此是可以预测的。当随机种子(算法参数)相同时,对于同一个随机函数,得出的随机数集合是完全相同的。与伪随机数对应的是真随机数,它是真正的随机数,无法预测也没有周期性。目前大部分芯片厂商都集成了硬件随机数发生器,例如有一种热噪声随机数发生器,它的原理是利用由导体中电子的热震动引起的热噪声信号,作为随机数种子。

❹ TensorFlow神经网络调优

训练集73%应该不够吧(笑)
先进一步拟合数据,让网络变得更深及更宽,具体可以的话128个节点可以继续加大,两层网络可以继续加深,以及选取更小的学习率(0.01或者1e-4,1太可怕了)
等到可以拟合数据了以后,再调节过拟合的问题,具体来说使用dropout、正则化参数、提前终止等

❺ 神经网络分类问题

神经网络是新技术领域中的一个时尚词汇。很多人听过这个词,但很少人真正明白它是什么。本文的目的是介绍所有关于神经网络的基本包括它的功能、一般结构、相关术语、类型及其应用。

“神经网络”这个词实际是来自于生物学,而我们所指的神经网络正确的名称应该是“人工神经网络(ANNs)”。在本文,我会同时使用这两个互换的术语。

一个真正的神经网络是由数个至数十亿个被称为神经元的细胞(组成我们大脑的微小细胞)所组成,它们以不同方式连接而型成网络。人工神经网络就是尝试模拟这种生物学上的体系结构及其操作。在这里有一个难题:我们对生物学上的神经网络知道的不多!因此,不同类型之间的神经网络体系结构有很大的不同,我们所知道的只是神经元基本的结构。

The neuron
--------------------------------------------------------------------------------

虽然已经确认在我们的大脑中有大约50至500种不同的神经元,但它们大部份都是基于基本神经元的特别细胞。基本神经元包含有synapses、soma、axon及dendrites。Synapses负责神经元之间的连接,它们不是直接物理上连接的,而是它们之间有一个很小的空隙允许电子讯号从一个神经元跳到另一个神经元。然后这些电子讯号会交给soma处理及以其内部电子讯号将处理结果传递给axon。而axon会将这些讯号分发给dendrites。最后,dendrites带着这些讯号再交给其它的synapses,再继续下一个循环。

如同生物学上的基本神经元,人工的神经网络也有基本的神经元。每个神经元有特定数量的输入,也会为每个神经元设定权重(weight)。权重是对所输入的资料的重要性的一个指标。然后,神经元会计算出权重合计值(net value),而权重合计值就是将所有输入乘以它们的权重的合计。每个神经元都有它们各自的临界值(threshold),而当权重合计值大于临界值时,神经元会输出1。相反,则输出0。最后,输出会被传送给与该神经元连接的其它神经元继续剩余的计算。

Learning
--------------------------------------------------------------------------------

正如上述所写,问题的核心是权重及临界值是该如何设定的呢?世界上有很多不同的训练方式,就如网络类型一样多。但有些比较出名的包括back-propagation, delta rule及Kohonen训练模式。

由于结构体系的不同,训练的规则也不相同,但大部份的规则可以被分为二大类别 - 监管的及非监管的。监管方式的训练规则需要“教师”告诉他们特定的输入应该作出怎样的输出。然后训练规则会调整所有需要的权重值(这是网络中是非常复杂的),而整个过程会重头开始直至数据可以被网络正确的分析出来。监管方式的训练模式包括有back-propagation及delta rule。非监管方式的规则无需教师,因为他们所产生的输出会被进一步评估。

Architecture
--------------------------------------------------------------------------------

在神经网络中,遵守明确的规则一词是最“模糊不清”的。因为有太多不同种类的网络,由简单的布尔网络(Perceptrons),至复杂的自我调整网络(Kohonen),至热动态性网络模型(Boltzmann machines)!而这些,都遵守一个网络体系结构的标准。

一个网络包括有多个神经元“层”,输入层、隐蔽层及输出层。输入层负责接收输入及分发到隐蔽层(因为用户看不见这些层,所以见做隐蔽层)。这些隐蔽层负责所需的计算及输出结果给输出层,而用户则可以看到最终结果。现在,为免混淆,不会在这里更深入的探讨体系结构这一话题。对于不同神经网络的更多详细资料可以看Generation5 essays

尽管我们讨论过神经元、训练及体系结构,但我们还不清楚神经网络实际做些什么。

The Function of ANNs
--------------------------------------------------------------------------------

神经网络被设计为与图案一起工作 - 它们可以被分为分类式或联想式。分类式网络可以接受一组数,然后将其分类。例如ONR程序接受一个数字的影象而输出这个数字。或者PPDA32程序接受一个坐标而将它分类成A类或B类(类别是由所提供的训练决定的)。更多实际用途可以看Applications in the Military中的军事雷达,该雷达可以分别出车辆或树。

联想模式接受一组数而输出另一组。例如HIR程序接受一个‘脏’图像而输出一个它所学过而最接近的一个图像。联想模式更可应用于复杂的应用程序,如签名、面部、指纹识别等。

The Ups and Downs of Neural Networks
--------------------------------------------------------------------------------

神经网络在这个领域中有很多优点,使得它越来越流行。它在类型分类/识别方面非常出色。神经网络可以处理例外及不正常的输入数据,这对于很多系统都很重要(例如雷达及声波定位系统)。很多神经网络都是模仿生物神经网络的,即是他们仿照大脑的运作方式工作。神经网络也得助于神经系统科学的发展,使它可以像人类一样准确地辨别物件而有电脑的速度!前途是光明的,但现在...

是的,神经网络也有些不好的地方。这通常都是因为缺乏足够强大的硬件。神经网络的力量源自于以并行方式处理资讯,即是同时处理多项数据。因此,要一个串行的机器模拟并行处理是非常耗时的。

神经网络的另一个问题是对某一个问题构建网络所定义的条件不足 - 有太多因素需要考虑:训练的算法、体系结构、每层的神经元个数、有多少层、数据的表现等,还有其它更多因素。因此,随着时间越来越重要,大部份公司不可能负担重复的开发神经网络去有效地解决问题。

Conclusion
--------------------------------------------------------------------------------

希望您可以通过本文对神经网络有基本的认识。Generation5现在有很多关于神经网络的资料可以查阅,包括文章及程序。我们有Hopfield、perceptrons(2个)网络的例子,及一些back-propagation个案研究。

Glossary
--------------------------------------------------------------------------------
NN 神经网络,Neural Network
ANNs 人工神经网络,Artificial Neural Networks
neurons 神经元
synapses 神经键
self-organizing networks 自我调整网络
networks modelling thermodynamic properties 热动态性网络模型

❻ 神经网络:卷积神经网络(CNN)

神经网络 最早是由心理学家和神经学家提出的,旨在寻求开发和测试神经的计算模拟。

粗略地说, 神经网络 是一组连接的 输入/输出单元 ,其中每个连接都与一个 权 相关联。在学习阶段,通过调整权值,使得神经网络的预测准确性逐步提高。由于单元之间的连接,神经网络学习又称 连接者学习。

神经网络是以模拟人脑神经元的数学模型为基础而建立的,它由一系列神经元组成,单元之间彼此连接。从信息处理角度看,神经元可以看作是一个多输入单输出的信息处理单元,根据神经元的特性和功能,可以把神经元抽象成一个简单的数学模型。

神经网络有三个要素: 拓扑结构、连接方式、学习规则

神经网络的拓扑结构 :神经网络的单元通常按照层次排列,根据网络的层次数,可以将神经网络分为单层神经网络、两层神经网络、三层神经网络等。结构简单的神经网络,在学习时收敛的速度快,但准确度低。

神经网络的层数和每层的单元数由问题的复杂程度而定。问题越复杂,神经网络的层数就越多。例如,两层神经网络常用来解决线性问题,而多层网络就可以解决多元非线性问题

神经网络的连接 :包括层次之间的连接和每一层内部的连接,连接的强度用权来表示。

根据层次之间的连接方式,分为:

1)前馈式网络:连接是单向的,上层单元的输出是下层单元的输入,如反向传播网络,Kohonen网络

2)反馈式网络:除了单项的连接外,还把最后一层单元的输出作为第一层单元的输入,如Hopfield网络

根据连接的范围,分为:

1)全连接神经网络:每个单元和相邻层上的所有单元相连

2)局部连接网络:每个单元只和相邻层上的部分单元相连

神经网络的学习

根据学习方法分:

感知器:有监督的学习方法,训练样本的类别是已知的,并在学习的过程中指导模型的训练

认知器:无监督的学习方法,训练样本类别未知,各单元通过竞争学习。

根据学习时间分:

离线网络:学习过程和使用过程是独立的

在线网络:学习过程和使用过程是同时进行的

根据学习规则分:

相关学习网络:根据连接间的激活水平改变权系数

纠错学习网络:根据输出单元的外部反馈改变权系数

自组织学习网络:对输入进行自适应地学习

摘自《数学之美》对人工神经网络的通俗理解:

神经网络种类很多,常用的有如下四种:

1)Hopfield网络,典型的反馈网络,结构单层,有相同的单元组成

2)反向传播网络,前馈网络,结构多层,采用最小均方差的纠错学习规则,常用于语言识别和分类等问题

3)Kohonen网络:典型的自组织网络,由输入层和输出层构成,全连接

4)ART网络:自组织网络

深度神经网络:

Convolutional Neural Networks(CNN)卷积神经网络

Recurrent neural Network(RNN)循环神经网络

Deep Belief Networks(DBN)深度信念网络

深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。

深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。

Machine Learning vs. Deep Learning 

神经网络(主要是感知器)经常用于 分类

神经网络的分类知识体现在网络连接上,被隐式地存储在连接的权值中。

神经网络的学习就是通过迭代算法,对权值逐步修改的优化过程,学习的目标就是通过改变权值使训练集的样本都能被正确分类。

神经网络特别适用于下列情况的分类问题:

1) 数据量比较小,缺少足够的样本建立模型

2) 数据的结构难以用传统的统计方法来描述

3) 分类模型难以表示为传统的统计模型

缺点:

1) 需要很长的训练时间,因而对于有足够长训练时间的应用更合适。

2) 需要大量的参数,这些通常主要靠经验确定,如网络拓扑或“结构”。

3)  可解释性差 。该特点使得神经网络在数据挖掘的初期并不看好。

优点:

1) 分类的准确度高

2)并行分布处理能力强

3)分布存储及学习能力高

4)对噪音数据有很强的鲁棒性和容错能力

最流行的基于神经网络的分类算法是80年代提出的 后向传播算法 。后向传播算法在多路前馈神经网络上学习。 

定义网络拓扑

在开始训练之前,用户必须说明输入层的单元数、隐藏层数(如果多于一层)、每一隐藏层的单元数和输出层的单元数,以确定网络拓扑。

对训练样本中每个属性的值进行规格化将有助于加快学习过程。通常,对输入值规格化,使得它们落入0.0和1.0之间。

离散值属性可以重新编码,使得每个域值一个输入单元。例如,如果属性A的定义域为(a0,a1,a2),则可以分配三个输入单元表示A。即,我们可以用I0 ,I1 ,I2作为输入单元。每个单元初始化为0。如果A = a0,则I0置为1;如果A = a1,I1置1;如此下去。

一个输出单元可以用来表示两个类(值1代表一个类,而值0代表另一个)。如果多于两个类,则每个类使用一个输出单元。

隐藏层单元数设多少个“最好” ,没有明确的规则。

网络设计是一个实验过程,并可能影响准确性。权的初值也可能影响准确性。如果某个经过训练的网络的准确率太低,则通常需要采用不同的网络拓扑或使用不同的初始权值,重复进行训练。

后向传播算法学习过程:

迭代地处理一组训练样本,将每个样本的网络预测与实际的类标号比较。

每次迭代后,修改权值,使得网络预测和实际类之间的均方差最小。

这种修改“后向”进行。即,由输出层,经由每个隐藏层,到第一个隐藏层(因此称作后向传播)。尽管不能保证,一般地,权将最终收敛,学习过程停止。

算法终止条件:训练集中被正确分类的样本达到一定的比例,或者权系数趋近稳定。

后向传播算法分为如下几步:

1) 初始化权

网络的权通常被初始化为很小的随机数(例如,范围从-1.0到1.0,或从-0.5到0.5)。

每个单元都设有一个偏置(bias),偏置也被初始化为小随机数。

2) 向前传播输入

对于每一个样本X,重复下面两步:

向前传播输入,向后传播误差

计算各层每个单元的输入和输出。输入层:输出=输入=样本X的属性;即,对于单元j,Oj = Ij = Xj。隐藏层和输出层:输入=前一层的输出的线性组合,即,对于单元j, Ij =wij Oi + θj,输出=

3) 向后传播误差

计算各层每个单元的误差。

输出层单元j,误差:

Oj是单元j的实际输出,而Tj是j的真正输出。

隐藏层单元j,误差:

wjk是由j到下一层中单元k的连接的权,Errk是单元k的误差

更新 权 和 偏差 ,以反映传播的误差。

权由下式更新:

 其中,△wij是权wij的改变。l是学习率,通常取0和1之间的值。

 偏置由下式更新:

  其中,△θj是偏置θj的改变。

Example

人类视觉原理:

深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”, 可视皮层是分级的 。

人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。

对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:

在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。

可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。

卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。

CNN最早由Yann LeCun提出并应用在手写字体识别上。LeCun提出的网络称为LeNet,其网络结构如下:

这是一个最典型的卷积网络,由 卷积层、池化层、全连接层 组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。

CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

降低参数量级:如果使用传统神经网络方式,对一张图片进行分类,那么,把图片的每个像素都连接到隐藏层节点上,对于一张1000x1000像素的图片,如果有1M隐藏层单元,一共有10^12个参数,这显然是不能接受的。

但是在CNN里,可以大大减少参数个数,基于以下两个假设:

1)最底层特征都是局部性的,也就是说,用10x10这样大小的过滤器就能表示边缘等底层特征

2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,能用同样的一组分类器来描述各种各样不同的图像

基于以上两个假设,就能把第一层网络结构简化

用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。

卷积运算的定义如下图所示:

如上图所示,一个5x5的图像,用一个3x3的 卷积核 :

   101

   010

   101

来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3x3的卷积结果。

这个过程可以理解为使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。在实际训练过程中, 卷积核的值是在学习过程中学到的。

在具体应用中,往往有多个卷积核,可以认为, 每个卷积核代表了一种图像模式 ,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果设计了6个卷积核,可以理解为这个图像上有6种底层纹理模式,也就是用6种基础模式就能描绘出一副图像。以下就是24种不同的卷积核的示例:

池化 的过程如下图所示:

可以看到,原始图片是20x20的,对其进行采样,采样窗口为10x10,最终将其采样成为一个2x2大小的特征图。

之所以这么做,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行采样。

即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合。

在实际应用中,分为最大值采样(Max-Pooling)与平均值采样(Mean-Pooling)。

LeNet网络结构:

注意,上图中S2与C3的连接方式并不是全连接,而是部分连接。最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。

卷积神经网络的训练过程与传统神经网络类似,也是参照了反向传播算法

第一阶段,向前传播阶段:

a)从样本集中取一个样本(X,Yp),将X输入网络;

b)计算相应的实际输出Op

第二阶段,向后传播阶段

a)计算实际输出Op与相应的理想输出Yp的差;

b)按极小化误差的方法反向传播调整权矩阵。

❼ BP神经网络的训练集需要大样本吗一般样本个数为多少

BP神经网络的训练集需要大样本吗?一般样本个数为多少?
BP神经网络样本数有什么影响
学习神经网络这段时间,有一个疑问,BP神经网络中训练的次数指的网络的迭代次数,如果有a个样本,每个样本训练次数n,则网络一共迭代an次,在n>>a 情况下 , 网络在不停的调整权值,减小误差,跟样本数似乎关系不大。而且,a大了的话训练时间必然会变长。
换一种说法,将你的数据集看成一个固定值, 那么样本集与测试集 也可以按照某种规格确定下来如7:3 所以如何看待 样本集的多少与训练结果呢? 或者说怎么使你的网络更加稳定,更加符合你的所需 。

我尝试从之前的一个例子中看下区别

如何用70行Java代码实现深度神经网络算法

作者其实是实现了一个BP神经网络 ,不多说,看最后的例子

一个运用神经网络的例子
最后我们找个简单例子来看看神经网络神奇的效果。为了方便观察数据分布,我们选用一个二维坐标的数据,下面共有4个数据,方块代表数据的类型为1,三角代表数据的类型为0,可以看到属于方块类型的数据有(1,2)和(2,1),属于三角类型的数据有(1,1),(2,2),现在问题是需要在平面上将4个数据分成1和0两类,并以此来预测新的数据的类型。


图片描述

我们可以运用逻辑回归算法来解决上面的分类问题,但是逻辑回归得到一个线性的直线做为分界线,可以看到上面的红线无论怎么摆放,总是有一个样本被错误地划分到不同类型中,所以对于上面的数据,仅仅一条直线不能很正确地划分他们的分类,如果我们运用神经网络算法,可以得到下图的分类效果,相当于多条直线求并集来划分空间,这样准确性更高。

图片描述

简单粗暴,用作者的代码运行后 训练5000次 。根据训练结果来预测一条新数据的分类(3,1)



预测值 (3,1)的结果跟(1,2)(2,1)属于一类 属于正方形

这时如果我们去掉 2个样本,则样本输入变成如下

//设置样本数据,对应上面的4个二维坐标数据
double[][] data = new double[][]{{1,2},{2,2}};
//设置目标数据,对应4个坐标数据的分类
double[][] target = new double[][]{{1,0},{0,1}};
1
2
3
4
1
2
3
4




则(3,1)结果变成了三角形,

如果你选前两个点 你会发现直接一条中间线就可以区分 这时候的你的结果跟之前4个点时有区别 so 你得增加样本 直到这些样本按照你所想要的方式分类 ,所以样本的多少 重要性体现在,样本得能反映所有的特征值(也就是输入值) ,样本多少或者特征(本例子指点的位置特征)决定的你的网络的训练结果,!!!这是 我们反推出来的结果 。这里距离深度学习好像近了一步。

另外,这个70行代码的神经网络没有保存你训练的网络 ,所以你每次运行都是重新训练的网络。其实,在你训练过后 权值已经确定了下来,我们确定网络也就是根据权值,so只要把训练后的权值保存下来,将需要分类的数据按照这种权值带入网络,即可得到输出值,也就是一旦网络确定, 权值也就确定,一个输入对应一个固定的输出,不会再次改变!个人见解。

最后附上作者的源码,作者的文章见开头链接
下面的实现程序BpDeep.java可以直接拿去使用,

import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数

public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;l<layernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1<layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;j<layernum[l]+1;j++)
for(int i=0;i<layernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;l<layer.length;l++){
for(int j=0;j<layer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;i<layer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);

while(l-->0){
for(int j=0;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}

public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
下面是这个测试程序BpDeepTest.java的源码:

import java.util.Arrays;
public class BpDeepTest{
public static void main(String[] args){
//初始化神经网络的基本配置
//第一个参数是一个整型数组,表示神经网络的层数和每层节点数,比如{3,10,10,10,10,2}表示输入层是3个节点,输出层是2个节点,中间有4层隐含层,每层10个节点
//第二个参数是学习步长,第三个参数是动量系数
BpDeep bp = new BpDeep(new int[]{2,10,2}, 0.15, 0.8);

//设置样本数据,对应上面的4个二维坐标数据
double[][] data = new double[][]{{1,2},{2,2},{1,1},{2,1}};
//设置目标数据,对应4个坐标数据的分类
double[][] target = new double[][]{{1,0},{0,1},{0,1},{1,0}};

//迭代训练5000次
for(int n=0;n<5000;n++)
for(int i=0;i<data.length;i++)
bp.train(data[i], target[i]);

//根据训练结果来检验样本数据
for(int j=0;j<data.length;j++){
double[] result = bp.computeOut(data[j]);
System.out.println(Arrays.toString(data[j])+":"+Arrays.toString(result));
}

//根据训练结果来预测一条新数据的分类
double[] x = new double[]{3,1};
double[] result = bp.computeOut(x);
System.out.println(Arrays.toString(x)+":"+Arrays.toString(result));
}
}

❽ 神经网络 专业术语解释(Step, Batch Size, Iteration,Epoch)

1. 名词解释

Step: 训练模型的步数

Batch Size(批尺寸): 计算梯度所需的样本数量,太小会导致效率低下,无法收敛。太大会导致内存撑不住,Batch Size增大到一定程度后,其下降方向变化很小了,所以Batch Size是一个很重要的参数。

为什么需要有 Batch_Size :

batchsize 的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。 

Epoch(回合):代表样本集内所有的数据经过了一次训练。  

每个 epoch 都会进行shuffle,对要输入的数据进行重新排序,分成不同的batch。

Iteration(迭代):

理解迭代,只需要知道乘法表或者一个计算器就可以了。迭代是 batch 需要完成一个 epoch 的次数。记住:在一个 epoch 中,batch 数和迭代数是相等的。

比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。

2. 换算关系

实际上,梯度下降的几种方式的根本区别就在于上面公式中的 Batch Size不同。

*注:上表中 Mini-Batch 的 Batch 个数为 N / B + 1 是针对未整除的情况。整除则是 N / B。

3. 例子

CIFAR10 数据集有 50000 张训练图片,10000 张测试图片。现在选择 Batch Size = 256 对模型进行训练。

每个 Epoch 要训练的图片数量: 50000

训练集具有的 Batch 个数: 50000/256 = 195 +1 = 196

每个 Epoch 需要完成的 Batch 个数: 196

每个 Epoch 具有的 Iteration 个数: 196

每个 Epoch 中发生模型权重更新的次数: 196

训练 10 代后,模型权重更新的次数: 196 * 10

不同代的训练,其实用的是同一个训练集的数据。第  代和第  代虽然用的都是训练集的五万张图片,但是对模型的权重更新值却是完全不同的。因为不同代的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。

❾ 神经网络中的Epoch、Iteration、Batchsize

神经网络中epoch与iteration是不相等的

1)batchsize:中文翻译为批大小(批尺寸)。在深度学习中,一般采用SGD训练,即每次训练在 训练集中取batchsize个样本训练 ;

2)iteration:中文翻译为迭代, 1个iteration等于使用batchsize个样本训练一次 ;一个迭代 = 一个正向通过+一个反向通过

3)epoch:迭代次数, 1个epoch等于使用训练集中的全部样本训练一次 ;一个epoch = 所有训练样本的一个正向传递和一个反向传递

举个例子,训练集有1000个样本,batchsize=10,那么:训练完整个样本集需要:100次iteration,1次epoch。

阅读全文

与神经网络十分类需要多少训练集相关的资料

热点内容
无线网络有网不能用 浏览:401
网络不好举起手机的图片 浏览:10
如何看待网络辅导班 浏览:328
路由器网络红色亮 浏览:718
vivos7数据网络设置在哪里 浏览:488
手机网络未知异常 浏览:975
网络哪里可以学习泡茶 浏览:289
美国的社交网络是哪个情节 浏览:70
网络没有光信号怎么解 浏览:802
怀来网络营销旅游管理 浏览:154
移动网络机顶安装视频 浏览:352
自媒体网络共享 浏览:220
靠网络怎么赚钱的 浏览:480
台式电脑网络共享器 浏览:26
dnf卡住就网络连接中断 浏览:647
魔百盒网络设置网络 浏览:498
网络图连接线 浏览:650
qq显示无网络怎么回事啊 浏览:113
首都图书馆网络卡号和密码 浏览:845
网络联机怎么玩红警 浏览:514

友情链接