在Tensorflow 1.14和1.15 中如何使用LBFGS优化方法

最近想使用二阶优化方法l-BFGS进行神经网络的优化,发现pytorch的optimizer已经实现的该方法,而tensorflow的trian模块没有包含。所以自己找了很久,找到了LBFGS优化方法。

参考链接:https://tensorflow.google.cn/versions/r1.15/api_docs/python/tf/contrib/opt

https://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html

http://cn.voidcc.com/question/p-bvlbecgj-ub.html

https://www.w3cschool.cn/doc_tensorflow_python/tensorflow_python-tf-contrib-opt-scipyoptimizerinterface.html

scipy.optimize优化器的各种使用

tf.contrib.opt.ScipyOptimizerInterface

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LBFGS(Limited-memory Broyden-Fletcher-Goldfarb-Shanno)是一种优化算法,常用于梯度下降方法,尤其适合于解决大规模数据集的问题,因为它内存消耗小,适用于在线学习。在Python的机器学习库如scikit-learn、TensorFlow或PyTorch,你可以使用它来训练模型。 这里是一个使用scikit-learn库的`sklearn.optimize.minimize`函数,以LBFGS作为优化器训练简单线性回归模型的基本示例: ```python from sklearn.datasets import make_regression from sklearn.linear_model import LinearRegression from sklearn.optimize import minimize # 创建一个简单的数据集 X, y = make_regression(n_samples=100, n_features=10, noise=0.1) # 定义线性模型 model = LinearRegression() # 定义损失函数,通常是最小二乘法 def mse_loss(params): model.coef_ = params[:10] # 假设参数为10维 model.intercept_ = params[10] return 'mean_squared_error', (y - model.predict(X)).mean() ** 2 # 使用LBFGS优化器 initial_params = [0] * (10 + 1) # 初始化模型参数 res = minimize(mse_loss, initial_params, method='L-BFGS-B') # 打印结果 print(res) ``` 在这个例子,`minimize`函数接收一个损失函数和初始参数,方法选择为LBFGS。函数返回一个`OptimizeResult`对象,包含了最优解和一些统计信息。 相关问题: 1. 在实际应用,如何根据具体模型调整LBFGS的参数? 2. LBFGS与其他优化器(如SGD、Adam)相比,有何优势和适用场景? 3. 如何在处理大型神经网络时优化内存消耗,以更好地使用LBFGS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值