Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 神经网络:计算权重增量是一个瓶颈_Neural Network - Fatal编程技术网

Neural network 神经网络:计算权重增量是一个瓶颈

Neural network 神经网络:计算权重增量是一个瓶颈,neural-network,Neural Network,在分析了我的神经网络代码之后,我意识到,已经给出梯度的计算网络中每个弧的权重变化的方法(包括55%的样本)是瓶颈(包括55%) 有什么技巧可以有效地计算这些值吗?这是正常的行为。我假设您正在使用迭代过程来求解每个进化步骤的权重(例如反向传播?)。如果神经元数量较多且训练(回溯测试)算法较短,则在神经网络训练期间,此类权重变异将消耗较大的计算时间,这是正常的 你是用一个简单的XOR问题或类似问题得到这个结果的吗?如果是这样,您可能会发现,如果您开始解决更复杂的问题(如多维数组中的模式检测、图像处理

在分析了我的神经网络代码之后,我意识到,已经给出梯度的计算网络中每个弧的权重变化的方法(包括55%的样本)是瓶颈(包括55%)


有什么技巧可以有效地计算这些值吗?

这是正常的行为。我假设您正在使用迭代过程来求解每个进化步骤的权重(例如反向传播?)。如果神经元数量较多且训练(回溯测试)算法较短,则在神经网络训练期间,此类权重变异将消耗较大的计算时间,这是正常的

你是用一个简单的XOR问题或类似问题得到这个结果的吗?如果是这样,您可能会发现,如果您开始解决更复杂的问题(如多维数组中的模式检测、图像处理等),那么这些函数将开始消耗微不足道的计算时间

如果您正在评测,我建议您评测一个更接近神经网络设计目的的问题(我猜您设计它不是为了解决XOR或玩tic-tac-toe)你可能会发现优化代码,比如
-rate*gradient+momentum*previous_delta-decation*rate*weight
,或多或少都是浪费时间,至少这是我的经验

如果您确实发现这段代码在实际应用程序中是计算密集型的,那么我建议您尝试通过结构更改来减少这段代码的执行次数。神经网络优化是一个丰富的领域,我不可能从如此广泛的问题中为您提供有用的建议,但我要说的是,如果您的程序异常缓慢,您不可能通过修补如此低级的代码看到显著的改进。然而,我将根据自己的经验提出以下建议:

  • 考虑并行化。许多搜索算法,如反向传播技术中实现的搜索算法,都可以通过并行尝试来提高收敛性。由于权重调整在给定网络的计算需求方面是相同的,因此请考虑中的
    static
    循环
  • 修改收敛条件(停止权重调整前的临界收敛速度),以执行较少的计算
  • 考虑一种确定性解决方案的替代方案,例如反向传播,它更容易进行局部优化。考虑<强>高斯变异< /强>(所有相等的高斯变异将1)减少相对于反向测试2的突变所花费的时间(增加收敛时间,3)不易陷入错误搜索空间的局部极小)

  • 请注意,这是对我解释为非技术性问题的非技术性回答。

    这是正常行为。我假设您正在使用迭代过程来求解每个进化步骤的权重(例如反向传播?)。如果神经元数量较多且训练(回溯测试)算法较短,则在神经网络训练期间,此类权重变异将消耗较大的计算时间,这是正常的

    你是用一个简单的XOR问题或类似问题得到这个结果的吗?如果是这样,您可能会发现,如果您开始解决更复杂的问题(如多维数组中的模式检测、图像处理等),那么这些函数将开始消耗微不足道的计算时间

    如果您正在评测,我建议您评测一个更接近神经网络设计目的的问题(我猜您设计它不是为了解决XOR或玩tic-tac-toe)你可能会发现优化代码,比如
    -rate*gradient+momentum*previous_delta-decation*rate*weight
    ,或多或少都是浪费时间,至少这是我的经验

    如果您确实发现这段代码在实际应用程序中是计算密集型的,那么我建议您尝试通过结构更改来减少这段代码的执行次数。神经网络优化是一个丰富的领域,我不可能从如此广泛的问题中为您提供有用的建议,但我要说的是,如果您的程序异常缓慢,您不可能通过修补如此低级的代码看到显著的改进。然而,我将根据自己的经验提出以下建议:

  • 考虑并行化。许多搜索算法,如反向传播技术中实现的搜索算法,都可以通过并行尝试来提高收敛性。由于权重调整在给定网络的计算需求方面是相同的,因此请考虑中的
    static
    循环
  • 修改收敛条件(停止权重调整前的临界收敛速度),以执行较少的计算
  • 考虑一种确定性解决方案的替代方案,例如反向传播,它更容易进行局部优化。考虑<强>高斯变异< /强>(所有相等的高斯变异将1)减少相对于反向测试2的突变所花费的时间(增加收敛时间,3)不易陷入错误搜索空间的局部极小)

  • 请注意,这是对我解释为非技术性问题的非技术性回答。

    您应该包括代码,瓶颈通常与实现无关。当您说“55%包含样本”时,您的意思是什么?您应该包括代码,瓶颈通常是与实现无关的——当你说“包含55%的样本”时,你是什么意思?是的,你是对的——这是一个非技术性的问题:我不想包含代码,因为它太大,无法解释问题