TensorFlow基本的常量、变量和运算操作详解


Posted in Python onFebruary 03, 2020

简介

深度学习需要熟悉使用一个框架,本人选择了TensorFlow,一边学习一边做项目,下面简要介绍TensorFlow中的基本常量、变量和运算操作,参考斯坦福大学的cs20si和TensorFlow官网API。

常量

tf.constant()

tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False),value为值,dtype类型,shape为张量形状,name名称、verify_shape默认False,这些项可选。作用创建一个常量。

a = tf.constant(2, name="a") # print(a) = 2
b = tf.constant(2.0, dtype=tf.float32, shape=[2,2], name="b") # 2x2矩阵,值为2
c = tf.constant([[1, 2], [3, 4]], name="c") # 2x2矩阵,值1,2,3,4

tf.zeros()和tf.zeros_like()

tf.zeros(shape, dtype=tf.float32, name=None), shape为张量形状,dtype类型,name名称。创建一个值为0的常量。

a = tf.zeros(shape=[2, 3], dtype=tf.int32, name='a') # 2x3矩阵,值为0, a = [[0, 0, 0], [0, 0, 0]]

tf.zeros_like(input_tensor, dtype=None, name=None, optimize=True),input_tensor为张量,dtype类型,name名称,optimize优化。根据输入张量创建一个值为0的张量,形状和输入张量相同。

input_tensor = tf.constant([[1,2], [3,4], [5,6])
a = tf.zeros_like(input_tensor) # a = [[0, 0], [0, 0], [0, 0]]

tf.ones()和tf.ones_like()

tf.ones(shape, dtype=tf.float32, name=None),与tf.zeros()类似。

tf.ones_like(input_tensor, dtype=None, name=None, optimize=True),与tf.zeros_like()类似。

tf.fill()

tf.fill(dims, value, name=None), dims为张量形状,同上述shape,vlaue值,name名称。作用是产生一个张量,用一个具体值充满张量。

a = tf.fill([2,3], 8) # 2x3矩阵,值为8

tf.linspace()

tf.linspace(start, stop, num, name=None),start初始值,stop结束值,num数量,name名称。作用是产生一个等差数列一维向量,个数是num,初始值start、结束值stop。

a = tf.linspace(10.0, 13.0, 4) # a = [10.0 11.0 12.0 13.0]

tf.range()

tf.range(start=0, limit=None, delta=1, dtype=None, name='range'),start初始值,limit限制,delta增量,dtype类型,name名称。作用是产生一个等差数列的一维向量,初始值start,公差delta,结束值小于limit。

a = tf.range(start, limit, delta) # a = [3, 6, 9, 12, 15]
b = tf.range(5) # b = [0, 1, 2, 3, 4]

tf.random_normal()

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None), shape张量形状,mean均值,stddev标准差,dtype类型,seed随机种子,name名称。作用是产生一个正太分布分布,均值为mean,标准差为stddev。

tf.truncated_normal()

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None,name=None),shape张量形状,mean均值,stddev标准差,dtype类型,seed随机种子,name名称。作用是产生一个截断的正太分布,形状为shape,均值为mean,标准差为stddev。

tf.random_uniform()

tf.random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None,name=None),shape张量形状,minval最小值,maxval最大值,dtype类型,seed随机种子,name名称。作用是产生一个均匀分布,形状为shape,最小值为minval,最大值为maxval。

tf.random_shuffle()

tf.random_shuffle(value, seed=None, name=None),value张量,seed随机种子,name名称。作用是将张量value里面的值随机打乱。

a = tf.constant([[1,2],[3,4]],name='a')
b = tf.random_shuffle(a, name='b') # b = [[2,3], [1,4]]

tf.random_crop()

tf.random_crop(value, size, seed=None, name=None),value张量,size大小,seed随机种子,name名称。作用是将张量value随机裁剪成size形状大小的张量,value形状大小>=size。

tf.multinomial()

tf.multinomial(logits, num_samples, seed=None, name=None), logits张量,num_samples采样输出,seed随机种子,name名称。作用是根据概率分布的大小,随机返回对应维度的下标序号。

a = tf.constant([[1, 2, 3, 4, 1], [3, 2, 3, 4, 3]], name='a')
b = tf.multinomial(a, 1, name='b') # b = [0, 0]或者[0, 2]或者[4, 4]

tf.random_gamma()

tf.random_gamma(shape, alpha, beta=None, dtype=tf.float32, seed=None, name=None)。作用是产生一个Gamma分布。

变量

tf.Variable()

tf.Variable(<initial-value>, name=<optional-name>),变量可以根据直接赋值,如a、b、c,也可以根据构造函数赋值,如W、Z。

a = tf.Variable(2, name="scalar")
b = tf.Variable([2, 3], name="vector")
c = tf.Variable([[0, 1], [2, 3]], name="matrix")
W = tf.Variable(tf.zeros([784,10]), name="weights")
Z = tf.Variable(tf.random_normal([784, 10], mean=0, stddev=0.01), name="Z"

tf.Variable().initializer

1.全局变量初始化

init = tf.global_variables_initializer()
with tf.Session() as sess:
 sess.run(init)

2.指定变量初始化

W = tf.Variable(tf.truncated_normal([700, 10]))
with tf.Session() as sess:
 sess.run(W.initializer)
 print(W) # Tensor("Variable/read:0", shape=(700, 10), dtype=float32)

tf.Variable().eval()

返回变量值。

W = tf.Variable(tf.truncated_normal([700, 10]))
with tf.Session() as sess:
 sess.run(W.initializer) 
 print(W.eval())
>> [[-0.76781619 -0.67020458 1.15333688 ..., -0.98434633 -1.25692499 -0.90904623]
 [-0.36763489 -0.65037876 -1.52936983 ..., 0.19320194 -0.38379928
 0.44387451]
 [ 0.12510735 -0.82649058 0.4321366 ..., -0.3816964 0.70466036
 1.33211911]
 ...,
 [ 0.9203397 -0.99590844 0.76853162 ..., -0.74290705 0.37568584
 0.64072722]
 [-0.12753558 0.52571583 1.03265858 ..., 0.59978199 -0.91293705
 -0.02646019]
 [ 0.19076447 -0.62968266 -1.97970271 ..., -1.48389161 0.68170643

tf.Variable.assign()

直接调用assign()并不起作用,它是一个操作,需要sess.run()操作才能起效果。

W = tf.Variable(10)
W.assign(100)
with tf.Session() as sess:
 sess.run(W.initializer)
 print(W.eval()) # >> 10
W = tf.Variable(10)
assign_op = W.assign(100)
with tf.Session() as sess:
 # sess.run(W.initializer) # 当变量有值的话,可以省略,不需要初始化
 sess.run(assign_op)
print W.eval() # >> 100

运算操作

运算操作图

TensorFlow基本的常量、变量和运算操作详解

tf.multiply()和tf.matmul()

tf.multiply(x, y, name)作用是x, y逐项相乘。

tf.matmul(x, y, name)作用是x,y矩阵相乘。

a = tf.constant([3, 6])
b = tf.constant([2, 2])
c1 = tf.matmul(a, b) # 报错
c2 = tf.matmul(tf.reshape(a, [1, 2]), tf.reshape(b, [2, 1]))# c2 = [[18]]
c3 = tf.multiply(a, b) # c3 = [6, 12]

加减就不细说了。

结束语

总结了一些常用的常量、变量和操作运算,供大家参考,尤其是对于tensorflow和python不太熟悉的选手有帮助,后续会补充更新,希望大家多多支持三水点靠木。

Python 相关文章推荐
Python第三方库的安装方法总结
Jun 06 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
python 删除非空文件夹的实例
Apr 26 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
用python拟合等角螺线的实现示例
Dec 27 Python
python实现简单颜色识别程序
Feb 19 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
Aug 05 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
重构Python代码的六个实例
Nov 25 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 #Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 #Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 #Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 #Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 #Python
详解字符串在Python内部是如何省内存的
Feb 03 #Python
python自动化unittest yaml使用过程解析
Feb 03 #Python
You might like
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php分页查询的简单实现代码
2017/03/14 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
使用JS获取页面上的所有标签
2018/10/18 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
python 内置模块详解
2019/01/01 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
各国货币符号大全
2022/02/17 杂记
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技