tf.argmax, tf.equal, tf.cast, tf.truncated_normal, tensorflow.placeholder的用法

1. tf.argmax()函數

tf.argmax可以認爲就是np.argmax。tensorflow使用numpy實現的這個API。 
  簡單的說,tf.argmax就是返回最大的那個數值所在的下標。tf.argmax(array,axis)

    當axis=1時返回每列最大值的下標,當axis=0時返回每行最大值的下班。

2. tf.equal()函數

tf.equal(A,B)是對比這兩個矩陣或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩陣維度和A是一樣的

A = [[1,3,4,5,6]]  
B = [[1,3,4,3,2]]
 
 
with tf.Session() as sess:  
    print(sess.run(tf.equal(A, B)))
    
[[ True  True  True False False]]

3. tf.cast()函數

tf.cast(x, dtype)將x的數據格式轉化成dtype.

a = tf.Variable([1,0,0,1,1])
b = tf.cast(a,dtype=tf.bool)
sess = tf.Session()
 
 
a = tf.Variable([1,0,0,1,1])
b = tf.cast(a,dtype=tf.bool)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(b))
 
[ True False False  True  True]

4. tf.truncated_normal()

tf.truncated_normal(shape, mean, stddev):shape表示生成張量的維度,mean是均值,stddev是標準差。這個函數產生正太分佈,均值和標準差自己設定。這是一個截斷的產生正太分佈的函數,就是說產生正太分佈的值如果與均值的差值大於兩倍的標準差,那就重新生成。和一般的正太分佈的產生隨機數據比起來,這個函數產生的隨機數與均值的差距不會超過兩倍的標準差,但是一般的別的函數是可能的。

import tensorflow as tf;  
import numpy as np;  
import matplotlib.pyplot as plt;  
 
c = tf.truncated_normal(shape=[10,10], mean=0, stddev=1)  
 
with tf.Session() as sess:  
    print(sess.run(c))
    
[[ 0.56077307  1.74287605 -0.15655719  0.87136668 -0.4219175   0.94079614
  -1.31186545  1.94287431  0.70748854  1.15509737]
 [ 0.32469562 -0.91890186 -0.44398952  1.25986481 -1.07295966  0.21889997
   0.19389877 -1.22909117  1.34865403  0.87812191]
 [-0.83542323 -0.05598836 -1.05256093 -1.16475403 -0.17121609 -0.55075479
  -0.37847248  0.14151201  0.36596569  0.55171227]
 [ 0.45216689  0.12429248 -0.4333829  -0.00368057 -0.20933141  0.5465408
   1.06096387  1.47238612 -1.99268937  1.28203201]
 [ 0.36932501  0.30012983  1.94679129  0.59601396 -0.16721351 -0.42786792
   0.917597   -1.6504811  -0.81060582 -0.35126168]
 [-1.48954999 -0.42889833  0.31517059  1.00009787  0.26073182  1.26285052
  -1.80997884  0.51399821 -0.27673215  0.15389352]
 [ 0.8669793  -0.28650126  1.39484227 -0.4041909  -1.70028269  0.58513969
   0.75772232 -0.47386578 -0.34529254 -0.71658897]
 [ 0.74709773 -0.0835886   1.14453304  0.70367438  0.07037418 -0.15808868
   0.23158503 -0.67268801  0.55869597  0.12777361]
 [-0.52604282  0.64181858 -0.04147881  0.78596973  0.69087744  0.56500375
  -1.12409449 -0.42864376  0.30804652  1.33116138]
 [-1.36940789 -0.4526186  -0.87445366  0.19748467 -0.06541829 -0.2672275
   0.63084471  0.76155263  0.83874393  0.91775542]]

5. tensorflow.placeholder()

tensorflow.placeholder(),placeholder是佔位符的意思,在tensorflow中類似於函數參數,在執行的時候再賦具體的值。

參數含義: 
dtype:數據類型。常用的是tf.float32,tf.float64等數值類型 
shape:數據形狀。默認是None,就是一維值,也可以是多維,比如[2,3], [None, 3]表示列是3,行不定 
name:名稱。
placeholder,中文意思是佔位符,在tensorflow中類似於函數參數,運行時必須傳入值。

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

import tensorflow as tf
import numpy as np

# 定義placeholder
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)

# 定義乘法運算
output = tf.multiply(input1, input2)

# 通過session執行乘法運行
with tf.Session() as sess:
    # 執行時要傳入placeholder的值
    print sess.run(output, feed_dict = {input1:[7.], input2: [2.]})


執行結果如下:

[ 14.]

還有如下的使用規則: 

x = tf.placeholder(tf.float32, shape=(88, 88))  
y = tf.matmul(x, x)  

with tf.Session() as sess:  
  print(sess.run(y))  # ERROR: . you must feed a value for #placerholder

  rand_array = np.random.rand(88, 88)  
  print(sess.run(y, feed_dict={x: rand_array}))  # Right 

6. tf.sparse_placeholder

x = tf.sparse_placeholder(tf.float32)
y = tf.sparse_reduce_sum(x)

with tf.Session() as sess:
  print(sess.run(y))  # ERROR: will fail because x was not fed.

  indices = np.array([[3, 2, 0], [4, 5, 1]], dtype=np.int64)
  values = np.array([1.0, 2.0], dtype=np.float32)
  shape = np.array([7, 9, 2], dtype=np.int64)
  print(sess.run(y, feed_dict={
    x: tf.SparseTensorValue(indices, values, shape)}))  # Will succeed.
  print(sess.run(y, feed_dict={
    x: (indices, values, shape)}))  # Will succeed.

  sp = tf.SparseTensor(indices=indices, values=values, dense_shape=shape)
  sp_value = sp.eval(session=sess)
  print(sess.run(y, feed_dict={x: sp_value}))  # Will succeed

函數參數:

  • dtype:張量中要提供的 values 元素的類型.
  • shape:要提供的張量的形狀(可選).如果未指定形狀,則可以提供任何形狀的稀疏張量.
  • name:前綴操作的名稱(可選).

函數返回值:

tf.sparse_placeholder 函數返回一個可以用作提供值的句柄的 SparseTensor,但不能直接計算.

可能引發的異常:

  • RuntimeError:如果 eager 執行已啓用,則引發該異常.

7. tf.random_uniform()

tf.random_uniform((4, 4), minval=low,maxval=high,dtype=tf.float32)))返回4*4的矩陣,產生於low和high之間,產生的值是均勻分佈的。

例如:

import tensorflow as tf
import numpy as np
 
with tf.Session() as sess:
    print(sess.run(tf.random_uniform(
        (4, 4), minval=-0.5,
        maxval=0.5,dtype=tf.float32)))
輸出:
[[ 0.23706067  0.42579055  0.16444612  0.12134457]
 [ 0.14245582  0.32224071 -0.3107301   0.29911542]
 [-0.03472292 -0.37411058 -0.22680879  0.21656895]
 [-0.37798405  0.31725729 -0.17690742 -0.02995324]]

轉自:

https://blog.csdn.net/zhuzuwei/article/details/78983562 

https://www.jianshu.com/p/195e4da1dde7

https://www.w3cschool.cn/tensorflow_python/tensorflow_python-zj1v2ll2.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章