发布网友 发布时间:2022-04-24 13:25
共1个回答
热心网友 时间:2023-10-14 09:18
NaN意思是Not A Number,除非是发散,不过一般不会出现这种情况。可能你的程序有错。
如果是新定义算法的话理论上的收敛要证明,可以证明它在迭代次数趋近无穷的时候等于某一解,也可以证明它满足李普希兹条件(就是带有完备范数和李普希兹常数的那个),这种情形下我们叫做收敛,要是用已有算法或者干脆就是BP算法的时候不需要你证明.理论上不收敛的情况是这样,当迭代次数趋近无穷的时候,权向量的解不唯一.
实际上的收敛是这样,给定一个最大迭代次数n,一个误差限erl,反向传播算法应该很容易找,我不往上写了,每一步权值修正都会使er减小,直观的看就是权向量的分量沿着梯度减小的方向在前进,虽然理论上样本足够大并且n趋于无穷的时候会收敛,但是实际上有可能出现当迭代到第n次,误差er依然大于误差限erl的情况,也就是说我们没有解出来满足要求的权向量,所以网络训练失败,叫做不收敛.当然,也可以使用梯度限来作为迭代终止的条件,这种情况下不收敛就是梯度在迭代了n次以后没有小于某一值,从而没有求出满足要求的权向量;收敛就是求出了满足梯度限的权向量.