做者:chen_h
微信號 & QQ:862251340
微信公衆號:coderpai
簡書地址:https://www.jianshu.com/p/d05...python
計劃現將 tensorflow 中的 Python API 作一個學習,這樣方便之後的學習。
原文連接
Tensorflow提供了不少的操做,去幫助你構建常量。git
tf.zeros(shape, dtype = tf.float32, name = None)
github
解釋:這個函數返回一個全是零的張量,數據維度是 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
:(可選)爲這個操做取一個名字。輸出參數:微信
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
: 一個整數類型。做者:chen_h
微信號 & QQ:862251340
簡書地址:https://www.jianshu.com/p/d05...
CoderPai 是一個專一於算法實戰的平臺,從基礎的算法到人工智能算法都有設計。若是你對算法實戰感興趣,請快快關注咱們吧。加入AI實戰微信羣,AI實戰QQ羣,ACM算法微信羣,ACM算法QQ羣。長按或者掃描以下二維碼,關注 「CoderPai」 微信號(coderpai)