我们必须编写一个简单的3层NN,最后使用softplus激活函数学习f(x)=x²。
在我的实现中,结果只是垃圾,我不知道自己在做什么错。
replaceUrl
预期输出只是增加,并且取决于我选择的参数,它在完成前会变为NaN或inf
答案 0 :(得分:0)
就像在向前步骤中计算Z1,然后先计算A1,然后再计算Z2,然后在A2,在后向步骤中,计算梯度时应按相反的顺序:先先先后依次计算dA2,dZ2,dA1和dZ1。您无需计算dZ2或dZ1,因此无法使用。也许您还有其他问题,但这是最明显的。
要检查梯度是否正确,请直接计算(对于每个权重或偏差,将其增加一个小值的ε,查看误差变化了多少,除以ε)。这样的直接计算应该接近重量梯度。您无需显式计算它们,但应将其用于测试目的。
答案 1 :(得分:0)
更多问题:
如果hiddensize = 1,则表示您中间只有一个神经元。仅仅近似x ** 2是不够的。
如果输出激活为S形,则只能输出0到1的数字。如何输出1到100平方的数字? 1**2=1, 2**2=4, ..., 100**2=10000
,而您的输出单元只能输出0到1之间的数字。