基于多线程互斥的神经网络模型的样本训练方法

文档序号:9811109阅读:1251来源:国知局
基于多线程互斥的神经网络模型的样本训练方法
【技术领域】
[0001]本发明涉及神经网络模型的样本训练方法,特别涉及一种基于多线程互斥的神经网络模型的样本训练方法。
【背景技术】
[0002]卷积神经网络的训练过程异常的耗时,整个训练时段完全处于一种被动的等待状态,算法的改进和实验结果的时间成本具有不可比拟性。训练结果的运算周期往往在几天到几周甚至数月之久,而小样本数量的训练测试结果又不具备泛化性和说服力,即使使用小样本数量的训练样本投入训练过程,在花费较短时间训练得到分类器,可测试结果往往不尽人意。这时我们迫切的需要一种解决加快训练和减少计算时间问题的方法。
[0003]卷积神经网络是最近广泛应用于模式识别和计算机视觉等领域的一种算法模型,其中分类器的设计往往需要大量的样本训练和高性能服务器的运算环节上,对于一个可靠和稳定的分类器的训练来说:大量样本数据,高性能计算体系和长久的时间成本,这三者成为课题继续推进和发展的瓶颈,必须有针对性的改进训练的计算过程用于减少时间运行的损耗。

【发明内容】

[0004]本发明的目的是为了解决目前的神经网络模型在样本训练过程中训练耗时长的问题。
[0005]为达到上述目的,本发明提供一种基于多线程互斥的神经网络模型的样本训练方法,包括:确定一定数量的样本集合作为训练的基准数据集合,对训练权值进行适度的扭曲,设置训练的初始学习率和最终学习率;
[0006]以初始学习率为基础,使用二阶反向传播学习算法对样本集合进行训练,当学习率达到最终学习率时,结束训练;
[0007]其特征在于,训练时,同一进程中运行多个线程,多线程之间共享数据时,判断共享数据是否为需要加锁的数据,若是,则锁定和释放同步对象采用即用即释放资源的共享权值访问方法。
[0008]具体地,判断共享数据是否为需要加锁的数据的方法如下:对于同一共享数据,若存在不同线程对其既需要读取又需要写入的情况时,该共享数据位需要加锁的数据。
[0009]具体地,当某一线程试图锁定互斥体保护的神经网络节点的共享权值时,将等待直到网络可以获取锁,获得锁之后,线程向前传播模式运作并计算存储网络中的所有神经元的输出值,互斥体的锁被释放。
[0010]较佳地,在加锁后多线程程序中产生锁竞争问题,本发明采用如下方法解决加锁后的锁竞争问题:通过资源复制的方法让每个线程都拥有一份该资源的副本从而避免资源共享或使用读写锁来减少锁竞争。
[0011 ] 具体地,所述初始学习率为0.001,最终学习率为0.00005。
[0012]具体地,对训练权值进行扭曲的方法包括缩放因子,反转和弹性形变。
[0013]本发明的有益效果是:本专利兼顾性能和总体训练耗时等方面原因,对算法的提升做实验数据的比对,证明多线程互斥原理在程序实施方面具有极优的性能体现。通过本发明的方法,神经网络模型的样本训练时间大大缩短,提高了整个训练的效率。
【具体实施方式】
[0014]以下对本发明的基于多线程互斥的神经网络模型的样本训练方法的流程及其原理进行详细说明。
[0015]本发明为解决目前的神经网络模型在样本训练过程中训练耗时长的问题,提供一种基于多线程互斥的神经网络模型的样本训练方法,包括:确定一定数量的样本集合作为训练的基准数据集合,对训练权值进行适度的扭曲,设置训练的初始学习率和最终学习率;
[0016]以初始学习率为基础,使用二阶反向传播学习算法对样本集合进行训练,当学习率达到最终学习率时,结束训练;
[0017]训练时,同一进程中运行多个线程,多线程之间共享数据时,判断共享数据是否为需要加锁的数据,若是,则锁定和释放同步对象采用即用即释放资源的共享权值访问方法。
[0018]以下对本发明的方法的原理进行进一步详细说明。
[0019]本发明涉及一种关于多线程互斥原理在卷积神经网络设计实现方面的优化方法,其中主要包括如何设计神经网络的训练形式和实验过程等优化运行。最终通过软件实现卷积神经网络的训练模型,并使用训练分类器的用时和实际测试数据等具体运行参数上说明本发明所阐述的方法取得优良运行结果,进而表明算法对实验运行时间方面很大程度上可以节约开销。
[0020]首先本发明提出如何在多线程操作方面使用多个线程对共享数据的访问,而神经网络层级和神经元彼此间数据的传递往往存在很多对共享数据的访问和修改。假设有线程A和线程B,它们需要访问同一权值共享区域读取某个权值,线程A写(或者是更新)线程B读。一般情况下我们是希望线程A写操作完成后再进行读操作或者线程B读操作完成后我们再进行写操作。但是在多线程中,可能由于线程A分配的时间片用完了或者其他原因导致线程A的写操作还没完成就调用线程B来对这块共享权值进行更新操作,也有可能在线程B的读操作还没完成就调用线程A来对这块共享权值进行更新操作,这些情况都有可能导致错误而使整体收敛速度变缓。本发明在设计之初把线程需要访问的共享权值表示可以上锁的对象,而同步对象当成是锁的唯一钥匙,重点在于阐述一把钥匙开一把锁既一次只允许一次线程访问。在并发的环境里,加锁可以保护共享的数据,但是加锁也会存在一些问题:其中最主要的问题是由于临界区无法并发运行,进入临界区就需要等待,加锁带来效率的降低,这就意味着时间成本的增加。
[0021]本发明提出并行计算中加锁机制,由于大多数并发是不需要加锁的,所以本专利这里重点讲述在神经网络训练过程时如何在处于同一个进程中运行多个线程,而且各自处理相互独立的事务过程对加锁解锁方面的介绍。在神经网络节点间计算和传播权重值的情况下,各个并发实体之间如果没有共享数据,并发运行也就不需
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1