我试图用人工神经网络来模拟一个技术过程(一些非线性方程)。该函数有多个输入和多个输出(例如50个输入,150个输出-所有浮点)。在
我尝试了python library ffnet(fortran库的包装器)并取得了巨大成功。某个数据集的误差远低于0.2%。在
它使用的是完全连通图和这些附加参数。在Basic assumptions and limitations:
Network has feed-forward architecture.
Input units have identity activation function, all other units have sigmoid activation function.
Provided data are automatically normalized, both input and output, with a linear mapping to the range (0.15, 0.85). Each input and output is treated separately (i.e. linear map is unique for each input and output).
Function minimized during training is a sum of squared errors of each output for each training pattern.
我使用一个输入层,一个隐藏层(大小:输入向量的2/3+输出向量的大小)和一个输出层。我用的是scipy共轭梯度优化器。在
ffnet的缺点是训练时间长,缺乏使用gpu的功能。因此,我想切换到另一个框架,并选择了keras和TensorFlow作为后端。在
我曾尝试对以前的配置进行建模:
^{pr2}$
然而,结果要差得多,只有几千(!)的误差高达0.5%训练的时代。ffnet培训在292个时代自动取消。此外,网络响应与验证目标之间的差异不是以0为中心,而是大部分为负值。
我试过所有的优化器和不同的损失函数。我还跳过了批处理规范化,并以与ffnet相同的方式手动规范化数据。什么也帮不上忙。在
是否有人建议使用KERA获得更好的结果?