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 相关文章推荐
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python简单获取自身外网IP的方法
Sep 18 Python
在windows下Python打印彩色字体的方法
May 15 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
Dec 07 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 Python
Python中使用ipython的详细教程
Jun 22 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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
使用php4加速网络传输
2006/10/09 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
Node.js的特点详解
2017/02/03 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
js实现缓动动画
2020/11/25 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Python连接Redis的基本配置方法
2018/09/13 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
python实现控制台输出颜色
2021/03/02 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
大学生军训广播稿
2014/01/24 职场文书
粗加工管理制度
2014/02/04 职场文书
学校欢迎标语
2014/06/18 职场文书
教师年度个人总结
2015/02/11 职场文书