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实现竖排打印传单手机号码易撕条
Mar 16 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
Python根据成绩分析系统浅析
Feb 11 Python
python移位运算的实现
Jul 15 Python
Django Rest framework权限的详细用法
Jul 25 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
python tkinter组件摆放方式详解
Sep 16 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 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 反向排序和随机排序代码
2010/06/30 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
python实现备份目录的方法
2015/08/03 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
在python里面运用多继承方法详解
2019/07/01 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
python属于解释型语言么
2020/06/15 Python
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
旅游活动总结
2014/08/27 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
表彰大会新闻稿
2015/07/17 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
go设置多个GOPATH的方式
2021/05/05 Golang
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python