我正在编写一个函数逼近神经网络,试图逼近一个非常复杂的函数。
对于训练数据,我在两个限制之间生成1000个随机数,然后我通过函数f(x)传递这些数字,得到输出。
我的神经网络旨在近似该函数的逆。因此,我将使用函数的输出作为输入训练数据,并将1000个随机数作为输出训练数据。
问题是当一个随机数放入函数f(x)时,输出更可能在0到0.01之间,非常罕见的是它将落在这个范围之外。下面是一个数字行,其顶部绘制了函数输出中的1000个数字。正如您所看到的,示例并未统一涵盖所有可能的数字。
为了解决这个问题,我使用了大量的训练样例,希望在0.1到0.9的范围内有更多的例子,但这意味着使用了一些荒谬的例子。
因此,对于这样的功能,使用更多示例会更好吗,或者如果使用大量数据会出现问题?
答案 0 :(得分:2)
是否有可能尝试拟合f(x)的对数或一些基于对数的变换?它可以更均匀地分配您的输出。
答案 1 :(得分:1)
简单地删除0.01以上的所有内容,然后将数据从0到0.01归一化为-1到1.由于0.01以上的数据点很少,删除它们不会影响训练。
或者,试试这个:
我建议通过计算来标准化独立的数字数据 数字x数据的均值和标准差,然后应用 transform(x - mean)/ stddev。
您希望在0到1(或-1到1)的范围内更均匀地展开聚簇数据。
答案 2 :(得分:-1)
“越多越好”只能达到一定程度;您可以为神经网络提供过多数据。
过多的样本会导致过度拟合/过度训练的风险。