Tensorflow 函數學習筆記

A:

A:## tf.argmax(A, axis).eval() 輸出axis維度上最大的數的索引 axis=0:列,axis=1:行

A:## tf.add(a,b)  建立a+b的計算圖

A:## tf.assign(a, b) 建立a=b的計算圖

state = tf.Variable(0)
new_value = tf.add(state, tf.constant(1)) update = tf.assign(state, new_value) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(state)) for _ in range(3): sess.run(update) print(sess.run(state))
>>0
1
2
3

B:

B:##  tf.boolean_mask(a,b)

    tensorflow 裏的一個函數,在作目標檢測(YOLO)時經常用到。python

     其中b通常是bool型的n維向量,若a.shape=[3,3,3]    b.shape=[3,3]    git

      則  tf.boolean_mask(a,b) 將使a (m維)矩陣僅保留與b中「True」元素同下標的部分,並將結果展開到m-1維。算法

      例:應用在YOLO算法中返回全部檢測到的各種目標(車輛、行人、交通標誌等)的位置信息(bx,by,bh,bw)session

a = np.random.randn(3, 3,3)
b = np.max(a,-1) c= b >0.5 print("a="+str(a)) print("b="+str(b)) print("c="+str(c)) with tf.Session() as sess: d=tf.boolean_mask(a,c) print("d="+str(d.eval(session=sess)))
>>
a=[[[-1.25508127  1.76972539  0.21302597]
  [-0.2757053  -0.28133549 -0.50394556]
  [-0.70784415  0.52658374 -3.04217963]]

 [[ 0.63942957 -0.76669861 -0.2002611 ]
  [-0.38026374  0.42007134 -1.08306957]
  [ 0.30786828  1.80906798 -0.44145949]]

 [[ 0.22965498 -0.23677034  0.24160667]
  [ 0.3967085   1.70004822 -0.19343556]
  [ 0.18405488 -0.95646895 -0.5863234 ]]]
b=[[ 1.76972539 -0.2757053   0.52658374]
 [ 0.63942957  0.42007134  1.80906798]
 [ 0.24160667  1.70004822  0.18405488]]
c=[[ True False  True]
 [ True False  True]
 [False  True False]]
d=[[-1.25508127  1.76972539  0.21302597]
 [-0.70784415  0.52658374 -3.04217963]
 [ 0.63942957 -0.76669861 -0.2002611 ]
 [ 0.30786828  1.80906798 -0.44145949]
 [ 0.3967085   1.70004822 -0.19343556]]

C:

C:## tf.cast(x, dtype, name=None) 將x轉換爲dtype類型

C:## tf.convert_to_tensor(a) 轉化爲tensorflow張量

 

C:##  tf.constant(? ?)      建立常量

 

# Constant 1-D Tensor populated with value list.
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]

 

# Constant 2-D tensor populated with scalar value -1.
tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.][-1. -1. -1.]]

 

 

D:

E:

E:## tf.equal(A,B)  判斷A,B是否相等 輸出 true and false

F:

G:

G:## tf.global_variables_initializer() 全局變量初始函數

H:

I:

J:

K:

L:

L:## tf.linspace (10.0, 12.0, 3, name="linspace")  建立等差數列

tf.linspace(10.0, 12.0, 3, name="linspace") => [ 10.0  11.0  12.0]

M:

M:## tf.matmul(w,x)       矩陣乘法

w = tf.Variable([[0.5,1.0]])
x = tf.Variable([[2.0],[1.0]]) 
y = tf.matmul(w, x)  
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print (y.eval())   #tf中顯示變量值需加.eval
>> [[ 2.]]

 

N:

 

N:## tf.nn.softmax (A) 求A的softmax值

N:## tf.nn.sigmoid(A) 計算sigmoid

 

N:## tf.nn.relu(A)         計算relu

N:## tf.nn.softmax_cross_entropy_with_logits(pred, y) 交叉熵函數

             僅求得y*log(a),未通過求和操做。要求得求和的交叉熵,還要使用tf.reduce_sumdom

O:

O:## tf.ones(shape,dtype) 建立全1陣

tf.ones([2, 3], int32) ==> [[1, 1, 1], [1, 1, 1]]

O:## tf.ones_like(tensor) 建立tensor同維的全1陣

# 'tensor' is [[1, 2, 3], [4, 5, 6]]
tf.ones_like(tensor) ==> [[1, 1, 1], [1, 1, 1]]

 

P:

P:## tf.placeholder(dtype, shape=None, name=None) 建立佔位符

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32) output = tf.mul(input1, input2) with tf.Session() as sess: print(sess.run([output], feed_dict={input1:[7.], input2:[2.]})) #須要以字典方式賦值
》[[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

P:## tf.pad()

for example:函數

t=[[2,3,4],[5,6,7]],paddings=[[1,1],[2,2]],mode="CONSTANT"學習

那麼sess.run(tf.pad(t,paddings,"CONSTANT"))的輸出結果爲:優化

array([[0, 0, 0, 0, 0, 0, 0],
          [0, 0, 2, 3, 4, 0, 0],
          [0, 0, 5, 6, 7, 0, 0],
          [0, 0, 0, 0, 0, 0, 0]], dtype=int32)spa

能夠看到,上,下,左,右分別填充了1,1,2,2行恰好和paddings=[[1,1],[2,2]]相等,零填充.net

Q:

R:

R:## tf.range(start, limit, delta)      建立等差數列start->limit  步長delta

tf.range(start, limit, delta) ==> [3, 6, 9, 12, 15]

R:## tf.random_uniform(shape[], -1.0, 1.0) 建立[-1,1]內的隨機數矩陣

R:## tf.random_normal(shape, mean=-1, stddev=4) 建立隨機數矩陣 服從mean=-1,stddev=4的高斯分佈

R:## tf.random_shuffle(c)    洗牌,打亂矩陣c

norm = tf.random_normal([2, 3], mean=-1, stddev=4)

# Shuffle the first dimension of a tensor
c = tf.constant([[1, 2], [3, 4], [5, 6]]) shuff = tf.random_shuffle(c) # Each time we run these ops, different results are generated sess = tf.Session() print (sess.run(norm)) print (sess.run(shuff))
>>[[-0.30886292  3.11809683  3.29861784]
 [-7.09597015 -1.89811802  1.75282788]] [[3 4] [5 6] [1 2]]

 

R:## tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)  求平均值

R:## tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None) 求最大值

R:## tf.reduce_sum(input_tensor, reduction_indices=None, keep_dims=False, name=None) 求和

參數1--input_tensor:待求值的tensor。

參數2--reduction_indices:在哪一維上求解。

 

R:## tf.rank(A).eval()       輸出矩陣維度

S:

S:## tf.square(a)  求a的平方

S:## tf.shape(A).eval()    輸出矩陣各維度元素個數

S:## tf.slice()

1,函數原型 tf.slice(inputs,begin,size,name='')

2,用途:從inputs中抽取部份內容

     inputs:能夠是list,array,tensor

     begin:n維列表,begin[i] 表示從inputs中第i維抽取數據時,相對0的起始偏移量,也就是從第i維的begin[i]開始抽取數據

     size:n維列表,size[i]表示要抽取的第i維元素的數目

     有幾個關係式以下:

         (1) i in [0,n]

         (2)tf.shape(inputs)[0]=len(begin)=len(size)

         (3)begin[i]>=0   抽取第i維元素的起始位置要大於等於0

         (4)begin[i]+size[i]<=tf.shape(inputs)[i]

 例子詳見:http://blog.csdn.net/chenxieyy/article/details/53031943

T:

T:## tf.train.SummaryWriter("./tmp", sess.graph) 生成tensorflow 可視化圖表並保存到路徑

T:## tf.train.GradientDescentOptimizer(learining_rate).minimize(loss)   梯度降低優化器

 learning_rate = 學習率 

 loss = 系統成本函數

T:## tf.train.Saver() 保存訓練模型

#tf.train.Saver
w = tf.Variable([[0.5,1.0]])
x = tf.Variable([[2.0],[1.0]]) y = tf.matmul(w, x) init_op = tf.global_variables_initializer() saver = tf.train.Saver() with tf.Session() as sess: sess.run(init_op) # Do some work with the model. # Save the variables to disk. save_path = saver.save(sess, "C://tensorflow//model//test") print ("Model saved in file: ", save_path)
>>Model saved in file:  C://tensorflow//model//test

U:

V:

V:## tf.Variable(??)    建立tf變量

W:

X:

Y:

Z:

Z:## tf.zeros(shape, dtype) 建立全零陣

tf.zeros([3, 4], int32) ==> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

Z:## tf.zeros_like(tensor)   建立矩陣tensor同維的全零陣

# 'tensor' is [[1, 2, 3], [4, 5, 6]]
tf.zeros_like(tensor) ==> [[0, 0, 0], [0, 0, 0]]
相關文章
相關標籤/搜索