使用 Keras 将平滑多维函数逼近到 1e-4 的误差

Posted

技术标签:

【中文标题】使用 Keras 将平滑多维函数逼近到 1e-4 的误差【英文标题】:Approximating a smooth multidimensional function using Keras to an error of 1e-4 【发布时间】:2021-01-19 01:39:37 【问题描述】:

我正在尝试使用 Keras 逼近一个函数,该函数将五个输入平滑地映射到一个概率,但似乎已经达到了极限。在这里(Keras Regression to approximate function (goal: loss < 1e-7))针对十维函数提出了类似的问题,我发现那里提出的架构,即:

model = Sequential()

model.add(Dense(128,input_shape=(5,), activation='tanh'))

model.add(密集(64,activation='tanh'))

model.add(Dense(1,activation='sigmoid'))

model.compile(optimizer='adam', loss='mae')

给了我最好的结果,当批大小为 1000 时,在我的验证数据上收敛到大约 7e-4 的最佳损失。添加或删除更多的神经元或层似乎会降低准确性。 Dropout 正则化也会降低准确性。我目前正在使用 1e7 训练样本,需要两天时间才能生成(因此希望近似这个函数)。我想将 mae 降低另一个数量级,有没有人有任何建议如何做到这一点?

【问题讨论】:

【参考方案1】:

我建议使用 keras 回调 ReduceLROnPlateau,文档在 [这里][1] 和 ModelCheckpoint,文档在 [这里][2]。首先,将其设置为监控验证损失,如果在固定数量(耐心)的连续 epoch 之后损失未能减少,它将降低学习率一个因子(因子)。其次,还要监控验证损失并将具有最低验证损失的模型的权重保存到目录中。训练后加载权重并使用它们对测试集进行评估或预测。我的代码实现如下所示。

checkpoint=tf.keras.callbacks.ModelCheckpoint(filepath=save_loc, monitor='val_loss', verbose=1, save_best_only=True,
        save_weights_only=True, mode='auto', save_freq='epoch', options=None)
lr_adjust=tf.keras.callbacks.ReduceLROnPlateau( monitor="val_loss", factor=0.5, patience=1, verbose=1, mode="auto",
        min_delta=0.00001,  cooldown=0,  min_lr=0)
callbacks=[checkpoint, lr_adjust]
history = model.fit_generator( train_generator, epochs=EPOCHS,
          steps_per_epoch=STEPS_PER_EPOCH,validation_data=validation_generator,
          validation_steps=VALIDATION_STEPS, callbacks=callbacks)
model.load_weights(save_loc) # load the saved weights
# after this use the model to evaluate or predict on the test set.
# if you are satisfied with the results you can then save the entire model with
model.save(save_loc)


  [1]: https://keras.io/api/callbacks/reduce_lr_on_plateau/
  [2]: https://keras.io/api/callbacks/model_checkpoint/

【讨论】:

谢谢。这对我的原始架构没有帮助,但它确实允许我训练一个更深的网络,以便使用这个带有 sgd 的回调获得更好的结果。就准确性而言,我还没有达到我的目标,但会继续尝试。

以上是关于使用 Keras 将平滑多维函数逼近到 1e-4 的误差的主要内容,如果未能解决你的问题,请参考以下文章

Recurrentshop 和 Keras:多维 RNN 导致维度不匹配错误

Keras LSTM实现多维输入输出时序预测实践详解

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(23)

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(23)

Keras LSTM 多维输入

万能逼近基于自适应模糊控制技术的万能逼近原理以及自适应二阶滤波器对AUV五个自由度的外界不规则干扰进行估计和补偿simulink仿真