optim.py-使用tensorflow实现一般优化算法
optim.py
Project URL:https://github.com/Codsir/optim.git
Based on: tensorflow, numpy, copy, inspect
Why Tensorflow?
Tensorflow supports symbol computation well like Automatic derivation and the program
could be excuted with GPU, which will save our time.
dogleg(p_u, p_b, delta, tau = 2)
The Dogleg method to solve the subproblems of trust region method
getGrad(f, x_value)
Get the gradient of function f with tf.gradients()
f= lambda x:100*(x[1]-x[0]**2)**2 + (1-x[0])**2
x_value = [1.0,2.0]
f_gradients = getGrad(f, x_value)
getHess(f, x_value)
Get the Hessian matrix of f with tf.hessian
TrustRegion_dogleg(f, delta = 0.5, eta = 0, *x_0, tolerance= 0.0001)
Trust region method with subproblems solved by the Dogleg method
ExactLineSearch_quadratic(f, x_k, p_k)
Exact line search method when the target function is quadratic
QuasiNewton(f, *x_0, HUpdateMethod = 'BFGS', LineSearch = ExactLineSearch_quadratic, tolerance = 0.0001)
quasi-Newton method
PenaltySimple(f, c_eq, c_leq, epsilon)
f is the target function, c_eq is a list contains equation constraints,
c_leq is a list contains unequal constrains, epsilon is the terminal parameter
these functions could be function name or anonymous functions, which defined by 'lambda'
The subproblem is solved by Newton Method, but it will be modified in the future because sometimes it's hard to compute the inverse matrix of Hessian matrix.
Example
Demo 1:trust region method with subproblems solved by the Dogleg method
f = lambda x:100*(x[1]-x[0]**2)**2 + (1-x[0])**2
f.paraLength = 2 ## 这一步不可缺少
x_k, f_k = TrustRegion_dogleg(f, delta = 10)
Demo 2:quasi-Newton method demo
print('Demo 2:quasi-Newton method demo')
f = lambda x:x[0]**2 + 2 * x[1]**2
f.paraLength = 2
x_0 = np.array([1, 1])
x_k, f_k = QuasiNewton(f, x_0)
Demo 3:penalty function method demo
print('Demo 3:penalty function method demo')
f = lambda x:x[0] + x[1]
f.paraLength = 2
c_eq = [lambda x:x[0]**2 + x[1]**2 - 2]
c_leq = []
x_k, f_k = PenaltySimple(f, c_eq, c_leq, [-3,-4])
optim.py-使用tensorflow实现一般优化算法的更多相关文章
- TensorFlow中的优化算法
搭建好网络后,常使用梯度下降类优化算法进行模型参数求解,模型越复杂我们在训练神经网络的过程上花的时间就越多,为了解决这一问题,我们就需要找一些优化算法来提高训练速度,TF的tf.train模块中提供了 ...
- torch.optim优化算法理解之optim.Adam()
torch.optim是一个实现了多种优化算法的包,大多数通用的方法都已支持,提供了丰富的接口调用,未来更多精炼的优化算法也将整合进来. 为了使用torch.optim,需先构造一个优化器对象Opti ...
- TensorFlow实现与优化深度神经网络
TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林Github工程地址:https://github.com/ahangchen/GDLnotes欢迎star,有问题可以到Issue ...
- PyTorch-Adam优化算法原理,公式,应用
概念:Adam 是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重.Adam 最开始是由 OpenAI 的 Diederik Kingma 和多伦多大学的 Jim ...
- Tensorflow 中的优化器解析
Tensorflow:1.6.0 优化器(reference:https://blog.csdn.net/weixin_40170902/article/details/80092628) I: t ...
- Adam优化算法
Question? Adam 算法是什么,它为优化深度学习模型带来了哪些优势? Adam 算法的原理机制是怎么样的,它与相关的 AdaGrad 和 RMSProp 方法有什么区别. Adam 算法应该 ...
- 优化算法——拟牛顿法之L-BFGS算法
一.BFGS算法 在"优化算法--拟牛顿法之BFGS算法"中,我们得到了BFGS算法的校正公式: 利用Sherman-Morrison公式可对上式进行变换,得到 令,则得到: 二. ...
- 《深度学习-改善深层神经网络》-第二周-优化算法-Andrew Ng
目录 1. Mini-batch gradient descent 1.1 算法原理 1.2 进一步理解Mini-batch gradient descent 1.3 TensorFlow中的梯度下降 ...
- 【优化算法】Greedy Randomized Adaptive Search算法 超详细解析,附代码实现TSP问题求解
01 概述 Greedy Randomized Adaptive Search,贪婪随机自适应搜索(GRAS),是组合优化问题中的多起点元启发式算法,在算法的每次迭代中,主要由两个阶段组成:构造(co ...
随机推荐
- 2020年,哪一款远程桌面(VPS管理器)最值得你期待
上周,我得知到,iis7远程桌面版本又更新的消息.进入该网站一看,果然如此. 通道:IIS7远程桌面V2.0.1 版本 最新程序截图如下,和老版本相比,果然又高大上了很多:
- PowerPC-MPC56xx Flash模式代码启动过程
https://mp.weixin.qq.com/s/iruM5VwKgnH_7nmIQxO0-g 参考第5章 In order for the e200z4d core to be able ...
- Multiple annotations found at this line: - Undefined attribute name (charset).
把 meta charset="UTF-8" 改为 meta http-equiv="Content-Type" content="text/html ...
- Java实现 LeetCode 802 找到最终的安全状态 (DFS)
802. 找到最终的安全状态 在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走. 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止. 现在, 如果我们最后能走到终点,那么 ...
- Java实现 蓝桥杯VIP 算法训练 求指数
问题描述 已知n和m,打印n1,n2,-,nm.要求用静态变量实现.nm表示n的m次方.已知n和m,打印n1,n2,-,nm.要求用静态变量实现.nm表示n的m次方.(每行显示5个数,每个数宽为12, ...
- Java实现 蓝桥杯 素因子去重
素因子去重 问题描述 给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式 一个整数,表示n 输出格式 输出一行,包含一个整数p. 样例输入 1000 样 ...
- DEV控件之TreeList使用
绑定DataTable 直接设置DataSource即可,同时需要设置KeyFieldName和ParentFieldName两个属性,好处就是,无需像TreeView一样去递归节点,设置了这两个属性 ...
- CORS跨域漏洞学习
简介 网站如果存CORS跨域漏洞就会有用户敏感数据被窃取的风险. 跨域资源共享(CORS)是一种浏览器机制,可实现对位于给定域外部的资源的受控访问.它扩展了同源策略(SOP)并增加了灵活性.但是,如果 ...
- 使用PD(Power Designer)设计数据库,并且生成可执行的SQL文件创建数据库(本文以SQL Server Management Studio软件执行为例)
下载和安装PD: 分享我的软件资源,里面包含了对PD汉化包(链接出问题时可以留言,汉化包只能对软件里面部分菜单栏汉化) 链接:https://pan.baidu.com/s/1lNt1UGZhtDV8 ...
- centos7上安装memcached以及PHP安装memcached扩展(二)
开始在 PHP 中使用 Memcached 前, 我们需要确保已经安装了 Memcached 服务,接下来安装 php-memcached 扩展. PHP Memcached 扩展安装 第一步:如果 ...