tensorflow求导和梯度计算实例


Posted in Python onJanuary 23, 2020

1. 函数求一阶导

import tensorflow as tf
tf.enable_eager_execution()
tfe=tf.contrib.eager
from math import pi
def f(x):
  return tf.square(tf.sin(x))
assert f(pi/2).numpy()==1.0
sess=tf.Session()
grad_f=tfe.gradients_function(f)
print(grad_f(np.zeros(1))[0].numpy())

2. 高阶函数求导

import numpy as np
def f(x):
  return tf.square(tf.sin(x))
 
def grad(f):
  return lambda x:tfe.gradients_function(f)(x)[0]
 
x=tf.lin_space(-2*pi,2*pi,100)
# print(grad(f)(x).numpy())
x=x.numpy()
import matplotlib.pyplot as plt
plt.plot(x,f(x).numpy(),label="f")
plt.plot(x,grad(f)(x).numpy(),label="first derivative")#一阶导
plt.plot(x,grad(grad(f))(x).numpy(),label="second derivative")#二阶导
plt.plot(x,grad(grad(grad(f)))(x).numpy(),label="third derivative")#三阶导
plt.legend()
plt.show()
 

def f(x,y):
  output=1
  for i in range(int(y)):
    output=tf.multiply(output,x)
  return output
 
def g(x,y):
  return tfe.gradients_function(f)(x,y)[0]
 
print(f(3.0,2).numpy()) #f(x)=x^2
print(g(3.0,2).numpy()) #f'(x)=2*x
print(f(4.0,3).numpy())#f(x)=x^3
print(g(4.0,3).numpy())#f(x)=3x^2

3. 函数求一阶偏导

x=tf.ones((2,2))
with tf.GradientTape(persistent=True) as t:
  t.watch(x)
  y=tf.reduce_sum(x)
  z=tf.multiply(y,y)
  
dz_dy=t.gradient(z,y)
print(dz_dy.numpy())
dz_dx=t.gradient(z,x)
print(dz_dx.numpy())
for i in [0, 1]:
 for j in [0, 1]:
  print(dz_dx[i][j].numpy() )

4. 函数求二阶偏导

x=tf.constant(2.0)
with tf.GradientTape() as t:
  with tf.GradientTape() as t2:
    t2.watch(x)
    y=x*x*x
  dy_dx=t2.gradient(y,x)
d2y_dx2=t.gradient(dy_dx,x)
 
print(dy_dx.numpy())
print(d2y_dx2.numpy())

以上这篇tensorflow求导和梯度计算实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python和php通信乱码问题解决方法
Apr 15 Python
python实现字符串和日期相互转换的方法
May 13 Python
Django Admin实现上传图片校验功能
Mar 06 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
python实现统计代码行数的小工具
Sep 19 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 30 Python
python获取对象信息的实例详解
Jul 07 Python
Tensorflow的梯度异步更新示例
Jan 23 #Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 #Python
Tensorflow实现部分参数梯度更新操作
Jan 23 #Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 #Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 #Python
tensorflow 实现打印pb模型的所有节点
Jan 23 #Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 #Python
You might like
php&java(一)
2006/10/09 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
React项目动态设置title标题的方法示例
2018/09/26 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python实现基于POS算法的区块链
2018/08/07 Python
python实现多张图片拼接成大图
2019/01/15 Python
python print出共轭复数的方法详解
2019/06/25 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
最新个人职业生涯规划书
2014/01/22 职场文书
平安建设工作方案
2014/06/02 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript