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根据京东商品url获取产品价格
Aug 09 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
python3.x实现base64加密和解密
Mar 28 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
解决python3 安装不了PIL的问题
Aug 16 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
python中Lambda表达式详解
Nov 20 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
python中pyqtgraph知识点总结
Jan 26 Python
Python中super().__init__()测试以及理解
Dec 06 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数组查找函数总结
2014/11/18 PHP
php轻松实现文件上传功能
2016/03/03 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
python写的一个文本编辑器
2014/01/23 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python实现动态循环输出文字功能
2020/05/07 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
产品销售员岗位职责
2013/12/18 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书