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根据出生日期获得年龄的方法
Mar 31 Python
Python实现的字典值比较功能示例
Jan 08 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
python查看数据类型的方法
Oct 12 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
Python类继承和多态原理解析
Feb 05 Python
详解Python中namedtuple的使用
Apr 27 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
方法汇总:Python 安装第三方库常用
Apr 26 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
求职信的七个关键技巧
2014/02/05 职场文书
员工离职证明范本
2015/06/12 职场文书
2015小学师德工作总结
2015/07/21 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
情况说明书格式及范文
2019/06/24 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python