我正在寻找一些相对简单的数据集来testing和比较不同的人工neural network训练方法。 我希望数据不会花费太多的预处理来将其转换为input和输出列表(标准化为0-1)的input格式。 任何链接赞赏。
我目前正试图制定一个计划,根据其外观区分腐烂的橙子和食用橙子。 为了做到这一点,我正计划使用卷积neural network来训练腐烂的橙子和普通的橙子。 经过一番search,我只能find约一个数据库。 黑色背景上的150个橙子和150个普通橙子( http://www.cofilab.com/downloads/ )。 显然,一个机器学习模式将需要至less几千个桔子才能达到90%左右的精度。 但是,我可以通过某种方式改变这150个橙子来制作更多的橘子照片吗? 通过改变,我的意思是在柑橘类水果上添加不同的橙色色调,以形成“不同的橙色”。 这是否是训练neural network的有效方法?
我正在做一个简单的学习模拟,屏幕上有多个有机体。 他们应该学习如何吃,使用他们简单的neural network。 他们有4个神经元,每个神经元激活一个方向的运动(从鸟的angular度来看,这是一个2D平面,所以只有四个方向,因此需要四个输出)。 他们唯一的投入是四个“眼睛”。 当时只有一只眼睛是活跃的,它基本上是指向最近物体(绿色食物块或另一个生物体)的指针。 因此,networking可以这样想像: 而一个有机体看起来是这样的(理论上和实际的模拟,他们真的是他们周围的红色块): 这就是这一切的样子(这是一个旧版本,眼睛仍然没有工作,但它是相似的): 现在我已经描述了我的一般想法,让我来谈谈问题的核心。 初始化 | 首先,我创造了一些生物和食物。 然后,他们的neural network中的所有16个权重被设置为随机值,如下所示:weight = random.random()* threshold * 2。 阈值是描述每个神经元为了激活(“火”)需要多lessinput的全局值。 通常设置为1。 学习 | 默认情况下,neural network中的权重每步降低1%。 但是,如果某些有机体真的设法吃东西,最后积极的投入和产出之间的联系就会加强。 但是,有一个很大的问题。 我认为这不是一个好的方法,因为他们实际上并没有学到任何东西! 只有那些初始权重随机设定为有益的人才有机会吃东西,只有他们的权重才会加强! 那些关系不好的人呢? 他们会死的,而不是学习。 我如何避免这种情况? 想到的唯一的解决办法是随机增加/减less权重,以便最终有人会得到正确的configuration,并偶尔吃东西。 但是我觉得这个解决scheme非常简单和丑陋。 你有什么想法? 编辑:谢谢你的答案! 他们中的每一个都非常有用,有些则更加相关。 我决定使用以下方法: 将所有权重设置为随机数。 减less重量随着时间的推移。 有时随机增加或减less一个重量。 单位越成功,权重就会变得越less。 新 当生物体吃东西时,增加相应input和输出之间的权重。
我是neural network领域的新手,我想知道Deep Belief Networks和Convolutional Networks之间的区别。 另外,还有深度卷积networking是深信与卷积neural network的结合吗? 这是我迄今为止收集的。 如果我错了,请纠正我。 对于图像分类问题, Deep Beliefnetworking有很多层次,每个层次都是使用贪心层次策略进行训练的。 例如,如果我的图片大小是50 x 50,并且我想要一个包含4个图层的深度networking input层 隐藏层1(HL1) 隐藏层2(HL2) 输出层 为了训练input层和HL1之间的权重(W1),我的input层将有50 x 50 = 2500个神经元,HL1 = 1000个神经元(比方说),HL2 = 100个神经元(比方说),输出层= 10个神经元。使用自动编码器(2500 – 1000 – 2500),并学习大小为2500 x 1000的W1(这是无监督学习)。 然后,我通过第一个隐藏层向前馈送所有图像以获得一组特征,然后使用另一个自动编码器(1000 – 100 – 1000)获取下一组特征,最后使用softmax图层(100 – 10)进行分类。 (只学习最后一层的权重(HL2 – 作为softmax层的输出)是监督学习)。 (我可以使用RBM代替autoencoder)。 如果使用卷积neural network解决同样的问题,那么对于50×50的input图像,我将只使用7×7的补丁(比如说)来开发一个networking。 我的层将是 input层(7 x 7 = 49个神经元) HL1(25个不同特征的25个神经元) […]
我想devise一个(或多个)卷积层(CNN)和一个或多个完全连接的隐藏层的深层networking。 对于具有完全连接层的深度networking,在无监督预训练中使用例如使用去噪自动编码器或RBM的方法 。 我的问题是:我怎样才能实现一个无监督的卷积层预训练阶段? 我不期望一个完整的实现作为答案,但我将不胜感激链接到一个很好的教程或可靠的参考。
简单的机器学习问题。 可能有很多方法来解决这个问题: 有4个可能的事件的无限stream: 'event_1', 'event_2', 'event_4', 'event_4' 事件不是以完全随机的顺序进来的。 我们将假设大多数事件的顺序都有一些复杂的模式,其余事件都是随机的。 我们不知道提前模式。 在收到每个事件之后,我想根据事件发生的顺序来预测下一个事件。 所以我的问题是: 什么机器学习algorithm应该用于这个预测? 然后告诉预测者下一个事件实际上是什么: Predictor=new_predictor() prev_event=False while True: event=get_event() if prev_event is not False: Predictor.last_event_was(prev_event) predicted_event=Predictor.predict_next_event(event) 问题出现在预测者应该维持多久的历史,因为保持无限的历史将是不可能的。 我会留给你回答。 答案虽然是实用的,但是不能被解释。 所以我相信这个预言必须用某种滚动历史来完成。 因此,添加新事件并过期旧事件应该是相当有效的,并且不要求重build整个预测器模型。 具体的代码,而不是研究论文,将增加我的巨大的价值 ,你的回应。 Python或C库很好,但任何事情都可以。 更新:如果每轮都能同时发生多个事件,那该怎么办? 这是否改变了解决scheme?
更新:这个问题的一个更好的表述。 我试图理解以异或neural network为例的反向传播algorithm。 对于这种情况,有2个input神经+ 1个偏差,2个神经元在隐层+ 1个偏差,1个输出神经元。 ABA XOR B 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 我正在使用随机反向传播 。 在读了更多的信息之后,我发现输出单元的错误会传播到隐藏的层上……最初这是令人困惑的,因为当你到达neural network的input层时,每个神经元都会得到一个错误调整来自隐藏层中的两个神经元。 特别是错误分布的方式起初难以掌握。 步骤1计算每个input实例的输出。 步骤2计算输出神经元(在我们的情况下只有一个)和目标值(s)之间的误差: 第2步http://pandamatak.com/people/anand/771/html/img342.gif 步骤3我们使用步骤2中的误差来计算每个隐藏单元的误差h: 第3步http://pandamatak.com/people/anand/771/html/img343.gif “权重kh”是隐藏单元h和输出单元k之间的权重,这很混乱,因为input单元没有与输出单元相关的直接权重。 在看了几个小时的公式之后,我开始思考总结的意思,我开始得出结论,即每个input神经元的权重连接到隐藏层神经元乘以输出误差并总结。 这是一个合乎逻辑的结论,但是这个公式似乎有点混乱,因为它清楚地说明了“权重kh”(输出层k和隐藏层h之间)。 我在这里正确理解一切吗? 有人可以证实这一点吗? 什么是input层的O(H)? 我的理解是,每个input节点都有两个输出:一个input到隐藏层的第一个节点,一个input到第二个节点隐藏层。 哪两个输出应插入公式的O(h)*(1 – O(h))部分? 第3步http://pandamatak.com/people/anand/771/html/img343.gif
有人可以向我解释如何更新反向传播中的偏见吗? 我读过不less书,但是找不到更新! 我明白,偏见是一个额外的input1附加一个权重(每个神经元)。 必须有一个公式。 谢谢, @msw 最有趣的。 谢谢,我认为有两点好处:1.“如果你省略偏置项,那么具有最常用的隐层激活函数的多层感知器的”通用逼近“属性并不成立,但是Hornik(1993)没有偏差的通用逼近性质的充分条件是没有激发函数的导数在原点处消失,这意味着在通常的S形激活函数中,可以使用固定的非零偏差项而不是可训练的偏差。 2.可以像其他权重一样学习偏差项。“所以我要么join一个”恒定的权重“,要么像使用梯度下降一样训练这个权重。 我理解对吗?
我注意到训练中频繁发生的是NAN s的引入。 通常情况下,似乎是通过内部产品/完全连接或卷积层吹起来的重量来引入的。 这是否发生,因为梯度计算正在炸毁? 或者是因为重量初始化(如果是的话,为什么重量初始化有这个效果)? 或者这可能是由input数据的性质造成的? 这里最重要的问题是: 在训练期间发生NAN的最常见原因是什么? 其次,有什么方法来打击这个(为什么他们工作)?
tensorflow是否有类似scikit学习处理分类数据的一个热门编码器 ? 将使用tf.string的占位符行为作为分类数据? 我意识到我可以在将数据发送到tensorflow之前手动预处理数据,但是内置它非常方便。