You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gekko Brain类构建回归ANN模型时无法求解问题排查

Gekko Brain类构建回归ANN模型求解失败排查

问题背景

此前用tf_Keras构建的回归ANN模型效果优异,但无法转换为Gekko AMP模型,改用Gekko的Brain类重构时出现求解失败。

相关信息

数据集

使用ss10_1k_converted.csv数据集,按8:2比例拆分训练集与测试集。

模型代码

import pandas as pd
import numpy as np
from gekko import  brain

# load dataset
df = pd.read_csv("ss10_1k_converted.csv")

# split data for train and test
train=df.sample(frac=0.8,random_state=200)
test=df.drop(train.index)

# Preparing training data
train_x = train[['D','V']].to_numpy()
train_x = np.transpose(train_x)
train_y = train['F'].to_numpy()
train_y = np.transpose(train_y).reshape(1,-1)

# Preparing test data
test_x = test[['D','V']].to_numpy()
test_y = test['F'].to_numpy().reshape(1,-1)

# neural network
b = brain.Brain()
b.input_layer(2)
b.layer(relu=61)
#b.layer(relu=61)
b.output_layer(1)
b.learn(train_x, train_y, obj=2)

报错信息

EXIT: Restoration Failed!

An error occured.
The error code is -2


Solver : IPOPT (v3.12)
Solution time : 179.147199999999 sec
Objective : 2064584.02728447
Unsuccessful with error code 0

Creating file: infeasibilities.txt
@error: Solution Not Found

排查方向

  • 数据缩放缺失:Gekko优化器对未缩放的数据敏感度高,tf_Keras通常会做归一化/标准化处理,当前代码未对输入输出数据做缩放,导致目标函数值过大(200万+),优化器难以收敛。建议对train_x、train_y做Min-Max或Z-score缩放,训练完成后再反缩放还原结果。
  • 网络结构参数不合理:隐藏层设置61个神经元可能过多,导致优化变量数量激增,IPOPT求解时易陷入数值困境。尝试减少神经元数量(如10-30区间),或在b.layer()中添加reg参数引入正则化。
  • 求解器配置调整:当前使用默认IPOPT配置,可尝试修改求解器参数,比如增大max_iter迭代次数,或切换为APOPT求解器。在b.learn()中设置disp=True查看详细求解过程,或debug=True生成调试文件定位问题。
  • 目标函数适配:obj=2对应L2损失,若数据波动较大,可尝试切换为obj=1(L1损失),同时检查是否因数据量级问题导致损失函数计算出现数值溢出。

内容的提问来源于stack exchange,提问作者Afshin Salmanpour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:38:22