如标题所示,在 Python 中训练和测试我的神经网络模型之后。
我可以使用 scipy 中的 SQP 函数来优化神经网络回归问题吗?
例如,我使用温度、湿度、风速这三个特征进行输入,预测某个区域的能源使用情况。
所以我使用神经网络来模拟这些输入和输出的关系,现在我想知道一些能源使用最低点,输入特征是什么(即温度,湿度,风种子是什么)。这只是一个例子,所以可能听起来不切实际。
因为据我所知,没有那么多人只是使用 scipy 来进行神经网络优化。但在某些限制下,scipy
是我目前拥有的最理想的优化工具(p.s.:我不能使用cvxopt
)。
有人可以给我一些建议吗?我将非常感激!
最佳答案
当然,这是可能的,但您的问题太宽泛,无法给出完整的答案,因为缺少所有详细信息。
但是:SLSQP 不是正确的工具!
- 这是有原因的,神经网络训练主要由一阶方法主导,例如 SGD 及其所有变体
- 快速计算梯度,并且易于在小批量模式下完成(无需支付完整梯度;占用内存更少)
- 随机梯度下降的非常不同的收敛理论,通常对于大规模问题要好得多
- 一般来说:迭代速度快(例如每个时期的时间),但可能需要更多时期(为了完全收敛)
- NN 是无约束连续优化
- SLSQP 是一种非常通用的优化,能够解决约束问题,您将为此付出代价(性能和稳健性)
- LBFGS 实际上是唯一有时用来执行此操作的工具(我看到的)(也可以在 scipy 中使用)
- 它是一个有边界约束的优化器(没有 SLSQP 那样的一般约束)
- 它近似于逆 hessian,因此与 BFGS 和 SLSQP 相比,内存使用量大大减少
- 这两种方法都是全批量方法(与 SGD 的在线/小批量性质相反)
- 他们还使用线性搜索或类似的方法,从而减少需要调整的超参数:没有学习率!
我认为你应该坚持使用 SGD 及其变体。
关于python - 我可以在 scipy 中使用 SQP(顺序二次规划)进行神经网络回归优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657733/