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使用rabbitmq实现网络爬虫示例
Feb 20 Python
python判断、获取一张图片主色调的2个实例
Apr 10 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
python获取代码运行时间的实例代码
Jun 11 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
python实现简单名片管理系统
Nov 30 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 Python
Python异常类型以及处理方法汇总
Jun 05 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python变量和数据类型详解
2017/02/15 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
个人实习生的自我评价
2014/02/16 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫