做者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai
个人博客:请点击这里python
计划现将 tensorflow 中的 Python API 作一个学习,这样方便之后的学习。
原文连接git
Tensorflow提供了不少的操做,去帮助你构建常量。github
tf.zeros(shape, dtype = tf.float32, name = None)
算法
解释:这个函数返回一个全是零的张量,数据维度是 shape
,数据类型是 dtype
。api
使用例子:数组
#!/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
:(可选)为这个操做取一个名字。bash
输出参数:
* 一个Tensor
,里面的因此数据都是0。微信
tf.zeros_like(tensor, dtype = None, name = None)
dom
解释:这个函数返回一个全是零的张量,数据维度是和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
: 一个整数类型。
CoderPai 是一个专一于算法实战的平台,从基础的算法到人工智能算法都有设计。若是你对算法实战感兴趣,请快快关注咱们吧。加入AI实战微信群,AI实战QQ群,ACM算法微信群,ACM算法QQ群。详情请关注 “CoderPai” 微信号(coderpai) 。