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函数式编程指南(三):迭代器详解
Jun 24 Python
Python 操作MySQL详解及实例
Apr 30 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
Django MEDIA的配置及用法详解
Jul 25 Python
Django单元测试工具test client使用详解
Aug 02 Python
python3 下载网络图片代码实例
Aug 27 Python
Python Gitlab Api 使用方法
Aug 28 Python
Python reversed函数及使用方法解析
Mar 17 Python
Python接口开发实现步骤详解
Apr 26 Python
详解python 支持向量机(SVM)算法
Sep 18 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
php通过session防url攻击方法
2014/12/10 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
python关闭占用端口方式
2019/12/17 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
如何用Python徒手写线性回归
2021/01/25 Python
巴西女装购物网站:Eclectic
2018/04/24 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
几个数据库方面的面试题
2016/07/01 面试题
《新型玻璃》教学反思
2014/04/13 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
体育比赛口号
2014/06/09 职场文书
国际金融专业自荐信
2014/07/05 职场文书
大学生军训感言
2015/08/01 职场文书
2016猴年春节问候语
2015/11/11 职场文书
Python中异常处理用法
2021/11/27 Python