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新手经常遇到的17个错误分析
Jul 30 Python
Python中的高级数据结构详解
Mar 27 Python
用Python实现换行符转换的脚本的教程
Apr 16 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
python实现按行分割文件
Jul 22 Python
Django学习之文件上传与下载
Oct 06 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 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维护文件系统
2006/10/09 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
在模板页面的js使用办法
2010/04/01 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
syb养殖创业计划书
2014/01/09 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
项目合作协议书
2014/09/23 职场文书
大学生党性分析材料
2014/12/19 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
java实现面板之间切换功能
2022/06/10 Java/Android