简而言之,我的问题是:如果她想要对训练数据进行完美拟合(mae < 1e-04),应该选择哪种优化器来试验完全连接的神经网络?
细节:在我的特殊情况下,函数的输入是 60 维,输出是 1 维(训练数据集是通过求解前向模型准备的)。输入和输出被归一化,样本均值被转换为 0。我的神经元的激活函数是 tanh(这给了我比 ReLu 和 Sigmoid 更好的结果)。到目前为止,我使用 Keras 的“adam”和“sgd”作为优化器,并且尝试了各种学习率。
此外,我尝试增加每个隐藏层中的神经元数量并增加隐藏层的数量。在某些时候,我的可训练参数的总数超过了 1 亿。
然而,即使尝试不同的批量大小和 10,000 个 epoch,我的最佳平均绝对误差 (mae) 也从未低于 0.07。我还没有做太多实验的唯一部分是自定义/使用高级优化器。我完全不知道为什么神经网络找不到一组可训练的参数,至少它可以过度拟合训练数据?
专家有什么建议吗?提前感谢您的时间和耐心。我非常感谢您的支持。
示例代码:
input_size = ND
nodes = 10000
inp = Input(shape=(input_size,),name='Input')
l0 = Dense(nodes, activation='tanh',name='Level0')(inp)
l1 = Dense(nodes, activation='tanh',name='Level1')(l0)
lo = Dense(1, activation='tanh',name='Level_out')(l1)
merged = Model(inputs=inp,outputs=l10)
opt = optimizers.adam(lr = 1e-5)
merged.compile(optimizer=opt,
loss='mean_squared_error',
metrics=['mae'])