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中的cookielib模拟登录网站
Apr 09 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
Python绘制的二项分布概率图示例
Aug 22 Python
面向初学者的Python编辑器Mu
Oct 08 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python之拟合的实现
Jul 19 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
python双向链表原理与实现方法详解
Dec 03 Python
python爬虫分布式获取数据的实例方法
Nov 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php strtotime 函数UNIX时间戳
2009/01/14 PHP
php whois查询API制作方法
2011/06/23 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
python 产生token及token验证的方法
2018/12/26 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
社区学习雷锋活动总结
2014/04/25 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
python区块链持久化和命令行接口实现简版
2022/05/25 Python