一个业余爱好者是否有兴趣在设计和训练深层神经网络方面获得一些“亲自动手”的经验,并为此目的使用普通的笔记本电脑(没有GPU),还是在没有强大的计算机/集群/GPU的情况下,在合理的时间内获得好的结果是没有希望的?
更具体地说,笔记本电脑的CPU是英特尔核心i7 5500 U fith一代,内存为8GB。
现在,由于我还没有具体说明我想要解决哪些问题,我将以一种不同的方式提出我的问题:您建议我尝试用硬件实现哪些深度架构,以便实现以下目标:获得直觉和知识,了解如何和何时使用在过去10年中引入的技术,这些技术对于深层网的兴起是必不可少的(例如理解初始化、删除、rmsprop,仅举几个例子)。
我读过关于这些技术的文章,但当然,如果不亲自尝试,我就不知道如何以及何时以有效的方式实现这些技术。另一方面,我担心如果我尝试使用一台不够强大的个人电脑,那么我自己的学习速度就会太慢,说我已经获得了更好的理解是毫无意义的。如果我尝试在浅层网上使用这些技术,也许我就不会建立正确的直觉。
我想象(我)学习的过程如下:我实现了一个神经网络,让它练习长达几个小时,看看我得到了什么,并重复这个过程。如果我每天这样做一次或两次,我会很高兴,如果在6个月后,我将获得实际知识,这是类似于一个专业人士应该知道的。
发布于 2016-04-25 23:51:32
发布于 2016-04-29 15:41:45
...在没有强大的计算机/集群/GPU的情况下,在合理的时间内获得好的结果是没有希望的吗?
这并不是无望的,毫无疑问,你可以通过使用你提到的计算机规范获得大量的相关经验。这将取决于您的神经网络体系结构(层数和神经元数)、数据集的大小(输入的数量)、数据的性质(固有模式)和实现。尽管你可能需要把自己限制在这些方面,但这并不妨碍你获得你所指的直觉和知识。你很容易就会遇到过度适应的问题,正则化的影响,预训练的效果,不同的神经元类型和结构的影响等等。
我会给你一个更具体的例子。我在Julia中实现了几个深度学习算法(都是基于CPU的),并在MacBook Air上运行它们(类似于您的规范)。当神经元和层被实际的数据结构而不是单个巨大的矩阵所代表时,代码并没有得到很好的优化。因此,进一步提高性能是可能的。
对于一个完全连接的56x300x300x300x1网络(56个输入和大约200k连接)和250个培训示例,我能够在一天内获得5k的回传传递。通常,这足以适应数据或完全适合培训集(但这将取决于您的数据集和其他上述因素)。如果数据具有强大的模式,并且示例不足10k,那么您通常不需要那么多迭代。很少有数以百计的预训练和精化迭代会带来好的结果,这并不罕见。所以是的,你的笔记本电脑已经足够好了,你可以用几个小时进行有意义的实验。
... --您会推荐我用硬件实现哪个深度体系结构,这样就实现了以下目标:获得关于如何和何时使用在过去10年中引入的技术的直觉和知识,这些技术对于深网的兴起至关重要。
我建议选择具有强模式的较小数据集。我建议研究训练前的技术,如自动编码器,因为它们通常需要较少的迭代才能获得更好的结果。从反向传播开始,从那里开始构建,尝试不同的体系结构,神经元类型,使用正则化,自动编码,退出,.
同时,也要为你的实验选择一种表演性语言或库。
https://datascience.stackexchange.com/questions/10329
复制相似问题