backpropagation相关内容

训练用于OCR的前馈神经网络

目前,我正在学习神经网络,并且正在尝试创建一个可以训练以识别手写字符的应用程序. 对于这个问题,我使用前馈神经网络,当我训练它识别1个,2个或3个不同的字符时,它似乎可以工作.但是,当我尝试使网络学习3个以上的字符时,它将以40%-60%左右的错误百分比停滞不前. 我尝试使用多层和更少/更多的神经元,但是我似乎无法正确地做到这一点,现在我想知道前馈神经网络是否能够识别这么多信息. 一些 ..

反向传播训练算法如何工作?

我一直在尝试学习反向传播如何与神经网络一起工作,但是从技术性较低的方面找到了很好的解释. 反向传播如何工作?如何从提供的训练数据集中学习?我将不得不对此进行编码,但是在此之前,我需要对它有更深入的了解. 解决方案 反向传播的工作原理与前馈的逻辑非常相似.区别在于数据流的方向.在前馈步骤中,您将观察到输入和输出.您可以将值向前传播,以训练前面的神经元. 在反向传播步骤中,您无法知 ..

多线程反向传播

我已经在VB.NET中编写了一个反向传播类-它很好用-并且正在C#人工智能项目中使用它. 但是我家里有AMD Phenom X3,学校有Intel i5.而且我的神经网络不是多线程的. 如何将反向传播类转换为多线程算法?或如何在其中使用GPGPU编程?还是应该使用具有多线程反向传播神经网络的任何第三方库? 解决方案 有关C#多线程反向传播的文章(来自Jeff Heaton) ..

反向传播算法:误差计算

我目前正在编写反向传播脚本.我不确定如何更新体重值.这是一个图像,只是为了使事情变得简单. 我的问题:错误是如何计算和应用的? 我确实知道k1和k2会产生误差值.我知道k1和k2会产生单独的误差值(目标-输出).但是,我不知道是否要使用它们. 我应该使用两个误差值的平均值,然后将单个误差值应用于所有权重吗? 或者我应该: update weight Wk1j1 and ..
发布时间:2020-05-06 14:15:12 AI人工智能

numpy和matlab之间的性能差异

我正在为稀疏自动编码器计算backpropagation算法.我已经使用numpy和matlab在python中实现了它.代码几乎相同,但是性能却大不相同. matlab完成任务所需的时间为0.252454秒,而numpy为0.973672151566,几乎是原来的四倍.在最小化问题中,我将多次调用此代码,因此这种差异会导致实现之间的延迟几分钟.这是正常行为吗?如何提高numpy的性能? 大 ..
发布时间:2020-05-06 12:15:35 Python

RNN:仅在最后一个时间步进行输出时的时间反向传播

在此 Denny Britz撰写的有关递归神经网络的博客. 在仅在最后一个时间步获取输出的情况下:反向传播将如何变化,如果每个时间步都没有输出,则仅最后一个输出?我们需要在每个时间步长定义损失,但是如何在没有输出的情况下做到呢? 解决方案 这不是正确的,因为您“需要在每个时间步长定义输出",实际上,随着时间的向后传播更简单,并且只有一个输出而不是图片上的那个当只有一个输出时,只需“将网络 ..

卷积神经网络不收敛

我一直在观看有关深度学习/卷积神经网络的视频,例如此处和此处,我试图用C ++实现自己的实现.我尝试使输入数据相对简单,因此我的想法是区分十字和圆形,我有一个小数据集,每个约25个(64 * 64图像),它们看起来像这样: 网络本身分为五层: Convolution (5 filters, size 3, stride 1, with a ReLU) MaxPool (size 2) ..

反向传播神经元网络方法-设计

我正在尝试制作一个数字识别程序.我将输入一个数字的黑白图像,我的输出层将触发相应的数字(在输出层的0-> 9个神经元中,将触发一个神经元).我完成了二维反向传播神经元网络的实现.我的拓扑大小为[5] [3]-> [3] [3]-> 1 [10].因此,它是一个2-D输入层,一个2-D隐藏层和一个1-D输出层.但是,我得到的结果很奇怪和错误(平均错误和输出值). 在此阶段进行调试非常耗时.因此 ..

为什么只有一个隐藏节点的IRIS数据集具有良好的准确性?

我有一个带有反向传播训练器的神经网络的最小示例,可以在IRIS数据集上对其进行测试.我从7个隐藏节点开始,而且效果很好. 我将隐藏层中的节点数减少到1(期望它会失败),但是惊讶地发现准确性提高了. 我在azure ml中设置了实验,只是为了验证这不是我的代码.在那里,只有一个隐藏节点,准确率达到98.3333%. 有人可以向我解释这里发生了什么吗? 解决方案 首先,已经很 ..

神经网络不适合异或

我创建了一个Octave脚本,用于使用反向传播训练具有1个隐藏层的神经网络,但它似乎不适合XOR函数. x输入4x2矩阵[0 0; 0 1; 1 0; 1 1] y输出4x1矩阵[0; 1; 1; 0] theta隐藏/输出层权重 z加权总和 a激活函数应用于加权总和 m样本计数(此处为4) 我的体重初始化如下 epsilon_init = 0.12; theta1 = ..

反向传播和反向模式autodiff有什么区别?

仔细阅读这本这本书,我对以下内容很熟悉: 对于每个训练实例,反向传播算法首先使 预测(前向通过),测量误差,然后遍历每个 反过来测量每个层的误差贡献 连接(反向传递),最后稍微调整连接 权重以减少错误. 但是我不确定这与TensorFlow的反向模式autodiff实现有何不同. 据我所知,反向模式autodiff首先在正向方向遍历该图,然后在第二遍计算相对于输入的输出的所有偏导 ..

在TensorFlow中将stop_gradient与AdamOptimizer一起使用

当每次反向传播迭代中某些参数保持固定时,我正在尝试实现一个训练/微调框架.我希望能够在迭代之间更改一组更新或固定参数. TensorFlow方法 tf.stop_gradient ,该方法显然会强制某些参数的梯度保持零,对于此目的非常有用,并且如果更新或固定参数的集合在每次迭代之间均不变,则它与不同的优化器完美配合.如果与随机渐变配合使用,它还可以处理各种更新或固定参数集下降.我的问题是,与tf. ..
发布时间:2020-05-04 09:38:47 AI人工智能

反向传播用于校正带有交叉熵误差的线性单元

我正在尝试使用反向传播为神经网络实现梯度计算. 我无法使它与交叉熵误差和整流线性单位(ReLU)一起工作. 我设法通过Sigmoid,tanh和ReLU激活函数使实现工作适用于平方误差.正确计算出具有S型激活梯度的交叉熵(CE)误差.但是,当我将激活更改为ReLU时-失败. (我跳过CE的tanh,因为它重新显示(-1,1)范围内的值.) 是因为log函数在接近0的值下的行为(对于正常 ..

神经网络反向传播算法在Python中不起作用

按照示例,我正在用Python写一个神经网络.这里.鉴于神经网络在经过1万次训练后未能产生正确的值(误差范围内),因此反向传播算法似乎无法正常工作.具体来说,在以下示例中,我正在训练它以计算正弦函数: import numpy as np class Neuralnet: def __init__(self, neurons): self.weights = [] ..

为什么在Pytorch中对网络的权重进行复制时,它将在反向传播后自动更新?

我编写了以下代码作为测试,因为在我的原始网络中,我使用ModuleDict,并且取决于我提供的索引将仅对该网络的一部分进行切片和训练. 我想确保只有切成薄片的层会更新它们的权重,所以我编写了一些测试代码来进行仔细检查.好吧,我得到一些奇怪的结果.假设我的模型有2个层,第1层是FC,第2层是Conv2d,如果我对网络进行切片并仅使用第2层,则我希望第1层的权重保持不变,因为它们未被使用,并且第 ..
发布时间:2020-05-04 09:21:24 AI人工智能

随机输入神经网络的顺序的影响

对于我的高级算法和数据结构课程,我的教授要求我们选择对我们感兴趣的任何话题.他还告诉我们进行研究,并尝试在其中实施解决方案.我选择了神经网络,因为这是我想学习很长时间的东西. 我已经能够使用神经网络实现“与",“或"和“异或"运算,该神经网络的神经元对激活器使用阶跃函数.之后,我尝试实现一个反向传播的神经网络,该网络学习识别XOR运算符(使用S型函数作为激活器).通过使用3-3-1网络(在输 ..

何时在Caffe中使用就地图层?

通过将底部和顶部blob设置为相同,我们可以告诉Caffe进行“就地"计算以节省内存. 目前,我知道我可以安全地使用就地"BatchNorm","Scale"和"ReLU"图层了(请告诉我我是否错了).尽管其他层似乎存在一些问题(此问题似乎是一个例子). 何时在Caffe中使用就地图层? 反向传播如何工作? 解决方案 正如您所指出的,就地图层通常不能“开箱即用"地工作. 对 ..