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 模拟购物车的实例讲解
Sep 11 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
python实现图片批量压缩程序
Jul 23 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
django 配置阿里云OSS存储media文件的例子
Aug 20 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
Python zip函数打包元素实例解析
Dec 11 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
简单了解Python write writelines区别
Feb 27 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 Python
分享几种python 变量合并方法
Mar 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+DBM的同学录程序(4)
2006/10/09 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
javascript编写简易计算器
2017/05/06 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
Python中操作文件之write()方法的使用教程
2015/05/25 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
详解Python中的Lock和Rlock
2021/01/26 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
小学数学课题方案
2014/06/15 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
Django框架中模型的用法
2022/06/10 Python