我使用CUDA实现了一个神经网络,有两层(每层有2个神经元)。我试图通过反向传播让它学习两个简单的二次多项式函数。但是它并没有收敛,反而发散(输出变成无穷大)。
以下是我尝试过的方法:
- 我将初始权重设置为0,但由于发散,我随机化了初始权重。 - 我阅读了一些资料,得知如果学习率过高,神经网络可能会发散,因此我将学习率降低到0.000001。 - 我尝试让其加上两个函数:3 * i + 7 * j+9 和 j*j + i*i + 24 (我将i和j作为输入层),但却没有成功。 - 以前我曾将其实现为单层网络,并能更好地逼近多项式函数。 - 我在考虑在这个网络中实现动量,但不确定是否能帮助它学习。 - 我使用线性(也就是没有)激活函数。 - 开始存在振荡现象,但是一旦任何一个权重大于1,输出便开始发散。
我检查了我的代码,但似乎没有任何问题。所以我的问题是:这里出了什么问题?非常感谢您的帮助。
以下是我尝试过的方法:
- 我将初始权重设置为0,但由于发散,我随机化了初始权重。 - 我阅读了一些资料,得知如果学习率过高,神经网络可能会发散,因此我将学习率降低到0.000001。 - 我尝试让其加上两个函数:3 * i + 7 * j+9 和 j*j + i*i + 24 (我将i和j作为输入层),但却没有成功。 - 以前我曾将其实现为单层网络,并能更好地逼近多项式函数。 - 我在考虑在这个网络中实现动量,但不确定是否能帮助它学习。 - 我使用线性(也就是没有)激活函数。 - 开始存在振荡现象,但是一旦任何一个权重大于1,输出便开始发散。
我检查了我的代码,但似乎没有任何问题。所以我的问题是:这里出了什么问题?非常感谢您的帮助。