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实现子类调用父类的方法
Nov 10 Python
python访问类中docstring注释的实现方法
May 04 Python
Python使用chardet判断字符编码
May 09 Python
Python中几个比较常见的名词解释
Jul 04 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
python实现flappy bird小游戏
Dec 24 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
python全栈知识点总结
Jul 01 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Python机器学习之基础概述
May 19 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
jquery使用经验小结
2015/05/20 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python 串行执行和并行执行实例
2020/04/30 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
优秀学生评语大全
2014/04/25 职场文书
课外活动总结范文
2014/07/09 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
辩护词范文大全
2015/05/21 职场文书
体育教师研修感悟
2015/11/18 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
java设计模式--三种工厂模式详解
2021/07/21 Java/Android