【问题标题】:Neural Network script mysteriously doesn't function after optimizations神经网络脚本在优化后神秘地不起作用
【发布时间】:2022-10-15 03:41:55
【问题描述】:

我根据 Sebastian Lague 关于神经网络的视频创建了一个用于创建神经网络的测试脚本 (On repl.it)。在使用导数优化梯度下降之前,一切都正常运行。

在实现所有导数之后,输出的成本收敛到一个看似任意的值。我做了一些测试,看看我的数学是否有问题,但一切似乎都正常。

我的猜测之一是它可能与这些功能有关:

def ActivationFunction(input):
  input = np.clip(input, -500, 500)
  return 1 / (1 + np.exp(-input))

def ActivationDerivative(input):
  input = np.clip(input, -500, 500)
  return np.exp(input) / ((np.exp(input) + 1) ** 2)

我遇到了溢出错误,所以我在输入中添加了一个最小值/最大值。成本的收敛值似乎基于最小/最大值。

ActivationFunction 是一个 sigmoid 函数。 ActivationDerivative 应该是该函数的导数。在尝试实施衍生产品以优化脚本之前,这些功能工作得非常好。

我分配给神经网络尝试解决的唯一任务是解决 XOR 门并确定二进制数是偶数还是奇数。

我想知道究竟是什么导致了这种任意收敛的成本值以及如何解决它。

【问题讨论】:

    标签: python neural-network


    【解决方案1】:

    首先你的导数是错误的,应该是:

    def ActivationDerivative(input):
      if -500 < input < 500:
        return np.exp(-input) / ((np.exp(-input) + 1) ** 2)
      else:
        return 0.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多