backpropagation相关内容

如何检测火炬中拟合不足和消失梯度的来源?

如何检测火炬中消失梯度的来源? 通过逐渐消失的梯度,我的意思是,即使对于有限的数据集,训练的损失也不会降至某个值以下. 我正在尝试训练一些网络,但是我遇到了以上问题,在该问题中,我什至无法使网络过度适应,但无法理解问题的根源. 我花了很长的时间对此进行谷歌搜索,只找到了防止过度拟合的方法,但是对于拟合不足或消失的梯度一无所知. 我确实发现了什么 Pytorch论坛讨论 ..
发布时间:2021-04-14 19:07:11 Python

进行梯度下降时检查梯度

我正在尝试实现前馈反向传播自动编码器(梯度下降训练),并想验证我是否正确计算了梯度.此教程建议一次计算每个参数的导数:grad_i(theta)=(J(theta_i + epsilon)-J(theta_i-epsilon))/(2 * epsilon).我已经在Matlab中编写了一个示例代码来执行此操作,但是运气不佳-从导数计算出来的梯度和从数值上发现的梯度之间的差异往往比较大(>> 4位有 ..

神经网络:如何计算单位的误差

我正在尝试从此试卷中解决问题26(考试是从2002年开始的,没有一个我被打上分数!) 这是确切的问题: 答案是B. 有人可以指出我要去哪里了吗? 我从纸上的上一个问题得出的I1为0.982. 激活功能为S型.对于输出1,总和应该也是如此: d1 = f(Ik)[1-f(Ik)](Tk-Zk) 从问题开始: T1 = 0.58Z1 = 0.83T1-Z1 = ..
发布时间:2021-04-14 19:07:05 其他开发

有状态RNN中的时间反向传播

如果我在Keras中使用有状态RNN来处理长度为N的序列,该序列分为N个部分(每个时间步都是单独处理的), 反向传播如何处理?它只会影响最后一个时间步长,还是会在整个序列中反向传播? 如果它没有在整个序列中传播,是否有办法做到? 解决方案 反向传播范围仅限于输入序列的第二维.即,如果您的数据类型为(num_sequences,num_time_steps_per_seq,data_ ..

PyTorch中的截断的反向传播(代码检查)

对于尝试在 K1 = K2 的简单情况下,我试图在PyTorch中实现随时间的截断反向传播.我下面有一个可以产生合理输出的实现,但是我只想确保它是正确的.当我在网上寻找TBTT的PyTorch示例时,它们在分离隐藏状态,将梯度归零以及这些操作的顺序方面做得不一致.如果我做错了,请告诉我. 在下面的代码中, H 保持当前的隐藏状态,而 model(weights,H,x)输出预测和新的隐藏状态 ..
发布时间:2021-04-14 19:06:59 其他开发

LSTM RNN反向传播

有人可以对LSTM RNN的反向传播进行清楚的解释吗?这是我正在使用的类型结构.我的问题不是什么是反向传播,我理解这是一种计算假设误差和输出误差的逆序方法,用于调整神经网络的权重.我的问题是LSTM反向传播与常规神经网络有何不同. 在代码中,它只是三个矩阵和两个偏置向量: #模型参数Wxh = np.random.randn(hidden_​​size,vocab_size)* 0.01# ..

神经网络:反向传播阶段的分步细分?

我必须设计一个具有功能性的神经网络的动画视觉表示(即具有允许您调整值的UI).它的主要目标是帮助人们可视化如何以及何时以慢动作实时动画执行不同的数学运算.我已经建立了视觉效果和UI,可用来调整值和更改神经元的布局以及前馈阶段的可视化效果,但是由于我实际上并不专门研究神经网络,因此我我在寻找可视化反向传播阶段的最佳方法时遇到了麻烦-主要是由于在此阶段我一直难以弄清确切的操作顺序. 可视化从向前 ..
发布时间:2021-04-14 19:06:53 其他开发

Tensorflow.js神经网络中的反向传播

当我尝试实现此功能时,将 tf.train.stg(learningRate).minimize(loss)嵌入我的代码中以进行反向传播.我遇到了多个错误,例如在variableGrads(f)中传递的f必须是一个函数.我如何将上述功能成功实现到下面的代码中?为什么会出现此错误? 神经网络: var X = tf.tensor([[1,2,3],[4,5,6],[7,8,9],[10,1 ..

训练神经网络中出现极小的NaN值

我正在尝试在Haskell中实现神经网络架构,并在MNIST上使用它. 我正在将hmatrix软件包用于线性代数. 我的培训框架是使用pipes软件包构建的. 我的代码可以编译并且不会崩溃.但是问题是,层大小(例如1000),小批量大小和学习率的某些组合会在计算中产生NaN值.经过一番检查,我发现极小的值(1e-100的顺序)最终出现在激活中.但是,即使没有发生这种情况,培训仍然无法进 ..
发布时间:2020-11-22 06:44:44 其他开发

了解何时在Pytorch中使用python列表

基本上,正如该主题所讨论的那样,此处,您不能使用python列表包装子模块(例如,图层);否则,Pytorch不会更新列表内子模块的参数.相反,您应该使用nn.ModuleList来包装子模块,以确保将更新其参数.现在,我还看到了类似以下代码的代码,其中作者使用python列表计算损失,然后执行loss.backward()进行更新(在RL的增强算法中).这是代码: policy_loss ..
发布时间:2020-09-18 05:41:32 其他开发

反向传播算法的实现

全部死亡 我正在尝试实现一个使用反向传播的神经网络.到目前为止,我进入了一个阶段,每个神经元都从上一层中的所有神经元接收加权输入,根据它们的总和计算出S型函数,并将其分布在下一层中.最后,整个网络产生一个结果O.A然后将误差计算为E = 1/2(D-O)^ 2,其中D是所需的值.此时,网络中所有神经元都有各自的输出以及网络的整体误差,我该如何反向传播以调整权重? 干杯:) 解决方 ..
发布时间:2020-09-18 05:41:21 其他开发

张量流如何在梯度计算过程中处理不可微节点?

我理解自动微分的概念,但是找不到任何解释来说明张量流如何计算不可微函数的误差梯度,例如损失函数中的tf.where或图形中的tf.cond.它工作得很好,但是我想了解张量流如何通过这些节点反向传播错误,因为没有公式可以根据它们计算梯度. 解决方案 对于tf.where,您有一个具有三个输入的函数,条件C,值为true T,值为false 和一个输出Out.渐变接收一个值,并且必须返回三个值 ..

找不到原位运算:原位运算已修改了梯度计算所需的变量之一

我正在尝试计算网络的雅可比损失(即执行双重反向传播),并且出现以下错误: RuntimeError:梯度计算所需的变量之一已通过就地操作进行了修改 我在代码中找不到inplace操作,所以我不知道要修复哪一行. *该错误发生在最后一行: loss3.backward() inputs_reg = Variable(data, requires_grad=T ..
发布时间:2020-09-18 05:41:17 其他开发

人工神经网络RELU激活函数和梯度

我有一个问题.我观看了有关在C ++中实现人工神经网络的非常详细的教程.现在,我对神经网络的工作原理以及如何进行编程和训练有了基本的了解. 因此,在本教程中,使用双曲线正切来计算输出,并且显然使用它的导数来计算梯度.但是我想转到其他功能.特别是泄漏的RELU(以避免死亡的神经元). 我的问题是,它指定此激活功能应仅用于隐藏层.对于输出层,应使用其他函数(softmax或线性回归函数). ..