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 相关文章推荐
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
python绘制散点图并标记序号的方法
Dec 11 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
django ORM之values和annotate使用详解
May 19 Python
Pyinstaller 打包发布经验总结
Jun 02 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语言流程控制中的主动与被动
2012/11/05 PHP
YII实现分页的方法
2014/07/09 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php自定义时间转换函数示例
2016/12/07 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
2017/02/04 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python 域名分析工具实现代码
2009/07/15 Python
python根据文件大小打log日志
2014/10/09 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
保险专业大专生求职信
2013/10/26 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
迟到检讨书大全
2014/01/25 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
给下属加薪申请报告
2015/05/15 职场文书
刑事辩护词范文
2015/05/21 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript