Tensorflow-Python-API-翻译(constant_op)
标签: TensorFlow
作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai
计划现将 tensorflow 中的 Python API 做一个学习,这样方便以后的学习。
原文链接
该章介绍有关常量张量,序列操作,随机数张量的API
常量张量
Tensorflow提供了很多的操作,去帮助你构建常量。
tf.zeros(shape, dtype = tf.float32, name = None)
解释:这个函数返回一个全是零的张量,数据维度是 shape,数据类型是 dtype。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.zeros(shape = [2, 3], dtype = tf.int32, name = "input_data")
print sess.run(data)
输入参数:
* shape: 一个整型的数组,或者一个一维的Tensor,数据类型是:int32。
* dtype: 输出结果Tensor的数据类型。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,里面的所以数据都是0。
tf.zeros_like(tensor, dtype = None, name = None)
解释:这个函数返回一个全是零的张量,数据维度是和Tensor一样,数据类型是默认是和Tensor一样,但是我们也可以自己指定。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.zeros(shape = [2, 3], dtype = tf.int32, name = "input_data")
d_1 = tf.zeros_like(data)
d_2 = tf.zeros_like(data, tf.float32)
print sess.run(d_1)
print sess.run(d_2)
输入参数:
* tensor: 一个Tensor。
* dtype: 输出结果Tensor的数据类型,必须是 float32,float64,int8,int16,int32,int64,uint8或者complex64。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,里面的所以数据都是0。
tf.ones(shape, dtype = tf.float32, name = None)
解释:这个函数返回一个全是1的张量,数据维度是shape,数据类型是dtype。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.ones(shape = [2, 3], dtype = tf.int32, name = "input_data")
print sess.run(data)
输入参数:
* shape: 一个整型的数组,或者一个一维的Tensor,数据类型是 int32。
* dtype: 输出结果Tensor的数据类型。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,里面的所以数据都是1。
tf.ones_like(tensor, dtype = None, name = None)
解释:这个函数返回一个全是一的张量,数据维度是和Tensor一样,数据类型是默认是和Tensor一样,但是我们也可以自己指定。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.zeros(shape = [2, 3], dtype = tf.int32, name = "input_data")
d_1 = tf.ones_like(data)
d_2 = tf.ones_like(data, tf.float32)
print sess.run(d_1)
print sess.run(d_2)
输入参数:
* tensor: 一个Tensor。
* dtype: 输出结果Tensor的数据类型,必须是 float32,float64,int8,int16,int32,int64,uint8或者complex64。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,里面的所以数据都是1。
tf.fill(dims, value, name = None)
解释:这个函数返回一个Tensor,数据维度是dims,填充的数据都是value。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.fill([2,3], 9)
print sess.run(data)
输入参数:
* dim: 一个Tensor,数据类型是int32,表示输出数据的维度。
* value: 一个Tensor,数据维度是0维,即是一个常量(标量),输出数据所以填充的都是该值。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型和value相同。
tf.constant(value, dtype = None, shape = None, name = 'Const')
解释:这个函数返回一个常量Tensor。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.constant([1, 2, 3])
print sess.run(data)
data = tf.constant(-1.0, shape = [2, 3])
print sess.run(data)
data = tf.constant(2.0, dtype = tf.float32, shape = [2, 3])
print sess.run(data)
输入参数:
* value: 一个常量或者是一个数组,该数据类型就是输出的数据类型。
* dtype: 输出数据的类型。
* shape:(可选)输出数据的维度。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个常量Tensor。
序列操作
Tensorflow提供了一些函数,去帮助我们构建序列。
tf.linspace(start, stop, num, name = None)
解释:这个函数返回一个序列数组,数组的第一个元素是start,如果num>1,那么序列的最后一个元素就是 stop - start / num - 1。也就是说,最后一个元素肯定是stop。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.linspace(10.0, 15.0, 10)
print sess.run(data)
输入参数:
* start: 一个Tensor。数据类型必须是float32或者float64。该值是输出序列的第一个元素。
* stop: 一个Tensor。数据类型必须和start相同。该值是输出序列的最后一个元素。
* num: 一个Tensor,数据类型是int32。该值确定输出序列的个数
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型和start相同,数据维度是一维。
tf.range(start, limit, delta = 1, name = 'range')
解释:这个函数返回一个序列数组,数组的第一个元素是start,之后的每一个元素都在前一个元素的基础上,加上delta,直到limit,但是不包括limit。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.range(3, 15, 3)
print sess.run(data)
输入参数:
* start: 一个0维的Tensor,即一个标量。数据类型必须是int32。该值是输出序列的第一个元素。
* limit: 一个0维的Tensor,即一个标量。数据类型必须是int32。该值是输出序列的最后限制,但不包含该值。
* delta: 一个0维的Tensor,即一个标量。数据类型必须是int32。(可选)该值默认是1,也就是说输出数据从start开始。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型int32,数据维度是一维。
随机数张量
Tensorflow提供了一些函数,去帮助我们构建随机数张量。
tf.random_normal(shape, mean = 0.0, stddev = 1.0, dtype = tf.float32, seed = None, name = None)
解释:这个函数返回一个随机数序列,数组里面的值按照正态分布。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.random_normal([2, 3])
print sess.run(data)
输入参数:
* shape: 一个一维的Tensor,或者是一个python数组。该值是确定输出序列的数据维度。
* mean: 一个0维的Tensor,或者一个数据类型是dtype的python值。该值表示正态分布的均值。
* stddev: 一个0维的Tensor,或者一个数据类型是dtype的python值,该值表示正态分布的标准偏差。
* dtype: 输出数据的数据类型。
* seed: 一个python整型,为分布产生一个随机种子,具体可以参见set_random_seed函数。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型是dtype,数据维度是shape,里面的值符合正态分布。
tf.truncated_normal(shape, mean = 0.0, stddev = 1.0, dtype = tf.float32, seed = None, name = None)
解释:这个函数返回一个随机数序列,数组里面的值按照正态分布,但和random_normal函数不同的是,该值返回的是一个截断的正态分布类型。也就是说,产生出来的值范围都是在 [mean - 2 * standard_deviations, mean + 2 * standard_deviations]内,下图可以告诉你这个具体范围在哪。

使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.truncated_normal([2, 3])
print sess.run(data)
输入参数:
* shape: 一个一维的Tensor,或者是一个python数组。该值是确定输出序列的数据维度。
* mean: 一个0维的Tensor,或者一个数据类型是dtype的python值。该值表示正态分布的均值。
* stddev: 一个0维的Tensor,或者一个数据类型是dtype的python值,该值表示正态分布的标准偏差。
* dtype: 输出数据的数据类型。
* seed: 一个python整型,为分布产生一个随机种子,具体可以参见set_random_seed函数。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型是dtype,数据维度是shape,里面的值是一个截断的正态分布。
tf.random_uniform(shape, minval = 0.0, maxval = 1.0, dtype = tf.float32, seed = None, name = None)
解释:这个函数返回一个随机数序列,数组里面的值按照均匀分布,数据范围是 [minval, maxval)。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.random_uniform([2, 3])
print sess.run(data)
输入参数:
* shape: 一个一维的Tensor,或者是一个python数组。该值是确定输出序列的数据维度。
* minval: 一个0维的Tensor,或者一个数据类型是dtype的python值。该值表示均匀分布的最小值。
* maxval: 一个0维的Tensor,或者一个数据类型是dtype的python值,该值表示均匀分布的最大值,但是不能取到该值。
* dtype: 输出数据的数据类型。
* seed: 一个python整型,为分布产生一个随机种子,具体可以参见set_random_seed函数。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型是dtype,数据维度是shape,里面的值符合均匀分布。
tf.random_shuffle(value, seed = None, name = None)
解释:这个函数返回一个随机数序列,将value中的数据打乱输出。
使用例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
sess = tf.Session()
data = tf.constant([[1, 2], [3, 4], [5, 6]])
shuff_data = tf.random_shuffle(data)
print sess.run(data)
print sess.run(shuff_data)
data = tf.constant([1, 2, 3, 4, 5, 6])
shuff_data = tf.random_shuffle(data)
print sess.run(data)
print sess.run(shuff_data)
输入参数:
* value: 一个Tensor,需要打乱的数据。
* seed: 一个python整型,为分布产生一个随机种子,具体可以参见set_random_seed函数。
* name:(可选)为这个操作取一个名字。
输出参数:
* 一个Tensor,数据类型和数据维度都和value相同。
tf.set_random_seed(seed)
解释:这个函数是设置图层面的随机种子。随机种子分为两类,一类是图层面的随机种子,另一类是操作层面的随机种子。具体区别如下:
第一种,如果图层面和操作层面的随机种子都没有设置,那么随机种子将在每个操作中被更新。例子如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
a = tf.random_uniform([1])
b = tf.random_normal([1])
print "Session 1"
with tf.Session() as sess1:
print sess1.run(a) # generates 'A1'
print sess1.run(a) # generates 'A2'
print sess1.run(b) # generates 'B1'
print sess1.run(b) # generates 'B2'
print "Session 2"
with tf.Session() as sess2:
print sess2.run(a) # generates 'A3'
print sess2.run(a) # generates 'A4'
print sess2.run(b) # generates 'B3'
print sess2.run(b) # generates 'B4'
第二种,如果图层面的随机种子被设置了,但是操作层面的随机种子没有被设置。那么,系统将把图层面的随机种子设置成操作层面的随机种子,以至于操作层面的随机种子将被确定下来。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
tf.set_random_seed(1234)
a = tf.random_uniform([1])
b = tf.random_normal([1])
# Repeatedly running this block with the same graph will generate different
# sequences of 'a' and 'b'.
print "Session 1"
with tf.Session() as sess1:
print sess1.run(a) # generates 'A1'
print sess1.run(a) # generates 'A2'
print sess1.run(b) # generates 'B1'
print sess1.run(b) # generates 'B2'
print "Session 2"
with tf.Session() as sess2:
print sess2.run(a) # generates 'A1'
print sess2.run(a) # generates 'A2'
print sess2.run(b) # generates 'B1'
print sess2.run(b) # generates 'B2'
第三种,如果图层面的随机种子没有被设置,但是操作层面的随机种子被设置了,那么被设置随机种子的操作层将有确定的唯一种子,其他操作层不具有唯一种子。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
a = tf.random_uniform([1], seed=1)
b = tf.random_normal([1])
# Repeatedly running this block with the same graph will generate the same
# sequence of values for 'a', but different sequences of values for 'b'.
print "Session 1"
with tf.Session() as sess1:
print sess1.run(a) # generates 'A1'
print sess1.run(a) # generates 'A2'
print sess1.run(b) # generates 'B1'
print sess1.run(b) # generates 'B2'
print "Session 2"
with tf.Session() as sess2:
print sess2.run(a) # generates 'A1'
print sess2.run(a) # generates 'A2'
print sess2.run(b) # generates 'B3'
print sess2.run(b) # generates 'B4'
第四种,如果图层面和操作层面都设置了随机种子,那么这两个随机种子都将被使用,但是最后起作用的随机种子是唯一的,即操作的随机输出值是确定的。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
tf.set_random_seed(1234)
a = tf.random_uniform([1], seed = 1)
b = tf.random_normal([1], seed = 2)
# Repeatedly running this block with the same graph will generate the same
# sequence of values for 'a', but different sequences of values for 'b'.
print "Session 1"
with tf.Session() as sess1:
print sess1.run(a) # generates 'A1'
print sess1.run(a) # generates 'A2'
print sess1.run(b) # generates 'B1'
print sess1.run(b) # generates 'B2'
print "Session 2"
with tf.Session() as sess2:
print sess2.run(a) # generates 'A1'
print sess2.run(a) # generates 'A2'
print sess2.run(b) # generates 'B1'
print sess2.run(b) # generates 'B2'
输入参数:
* seed: 一个整数类型。
智能推荐
css3常用选择器
先介绍一下基本选择器,如下几种 *:通配符。选择页面的所有元素 E:元素选择器。对页面的一些元素进行选择,如p,div,li等 .class:类选择器 #id:id选择器。一个Id在一个页面中只能选择,这是和类选择器的区别 E F:后代选择器。如ul li。选中ul下的li E>F:子元素选择器。如下,可以用 h1 > strong {color:red;}使h1的子元素strong变...
python is not set from command line or npm configuration
问题 猜测原因 python版本冲突 解决方案 去官网找到最新版本python 点击下载,注意记住你下载的目录,下载好以后,打开这个目录下的文件夹,Python310, 整个文件夹复制一下 在项目里运行npm config list --json 找到python的路径 我的是 C:\\Python27\\python.exe 说明项目里用的还是py...
Java8 Stream流操作
前言 我们常常需要将一个容器转化成另一个容器,或是对这个容器中的数据进行批量处理,这时使用Stream流可以大大减少我们的工作量。 1 Stream概述 Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 那么什么是Stream? Stream将要处理的元素集合看作一种流,在流的过程中,借助St...
带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑
在Windows下进行C++的开发,不可避免的要与Windows的底层库进行交互,然而VS下的一项设置MT、MTd、MD和MDd却经常让人搞迷糊,相信不少人都被他坑过,特别是你工程使用了很多第三库的时候,及容易出现各种链接问题。看一下下面这个错误提示: LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined...
git 设置 gitignore 忽略 __pycache__
清除git缓存中的pycache 直接删掉硬盘上的文件 如果我想保留硬盘上的这个文件,而只删除版本管理中的文件,就需要加入--cached参数。 切换分支出现问题 尽管我已经删除了__pycache__,硬盘也没有了,但是切换分支的时候依然是会提示本地重写的情况。 提示:需要我在切换分支之前,提交一次更新。 提交了更新之后,再来尝试切换分支,如下: 成功了,说明当做了任何变更之后,切换分支前需要执...
猜你喜欢
人生苦短,我用Python(二)— 爬取会议网站 EasyChair Smart CFP
寒假留校帮学长写了个爬虫,抓取会议网站上一些CFP信息。想着把一些知识点、坑点记下来,一来做个小总结给工作收收尾,二是以后再遇到好从容应对。 这是我写的第二个比较完善的爬虫了,比第一个要简单许多,完全过程化的代码,而且easychair这个网站页面布局比较友好,适合python新手、前端小白入门练习。但这个网站反爬比较厉害,写爬虫的过程中就被ban了好几次…… 制定抓取...
(三)Single Threaded Execution模式
一、定义 一个线程执行。有时也称为Critical Section(临界区)。 二、模式案例 案例: 假设有三个人,频繁地通过一扇门,规定每次只能通过一个人,当通过一个人时,程序会将通过的总人次加1,同时记录该次通过人的姓名和出生地。 门的定义: 人的定义 测试类 多次执行后发现可能出现以下结果: &...
Linux服务管理之系统管理员需要掌握的命令
为什么80%的码农都做不了架构师?>>> systemd的主要命令行工具是systemctl。大多数Linux系统管理员应该都已经非常熟悉系统服务和init系统管理,比如service,chkconfig和telinit命令的使用。systemd也完成同样的管理任务,只是命令工具systemctl的语法有所不同而已。 1. sysvinit和system...
StringBuilder和StringBuffer的区别(检查多线程环境下会触发的问题和异常)
StringBuilder和StringBuffer的区别在哪里? 当接触这个问题的时候,我们可能第一反应就是,StringBuilder是线程不安全的,StringBuffer是线程安全的 为什么StringBuilder是线程不安全,StringBuffer是线程安全? ...
机器学习实战之决策树基础笔记
决策树的优缺点 优点 计算复杂度不高 输出结果容易理解 对中间值的缺失不敏感 可以处理不相关特征数据 缺点 可能会产生过度匹配问题 决策树原理 《机器学习实战》书中讲了二十个问题的游戏的一个例子:就是参与游戏的一方脑子里想着某个事物。其他参与者可以向他提29个问题,但是答案只能用对错来回答。比如最简单的猜数游戏。我心里想一个数是7.然后A说你心里想的数比100小。然后我说正确。然后B说你心里想的数...
