tensorflow 部分函數介紹
博主主要爲了是記錄一下自己在tensorflow遇到不懂的函數,整理一下方便下次查閱,肯定有小夥伴跟我一樣會遇到一些不懂函數,希望也對tensorflow小白有幫助!
tf.convert_to_tensor
tf.convert_to_tensor(value,
dtype=None,
dtype_hint=None,
name=None)
tf.convert_to_tensor() 函數是根據指定類型dtype,將給定值value 轉換爲張量。
參數:
- value: 給定值類型具有註冊張量轉換函數的對象。
- dtype: 返回張量的可選元素類型。如果沒有指定,則從值的類型推斷類型。
- dtype_hint: 返回張量的可選元素類型,當dtype爲None時使用。在某些情況下,調用者在轉換爲張量時可能沒有考慮到dtype,因此dtype_hint可以用作軟首選項。如果不能轉換爲dtype_hint,則此參數沒有效果。
- name: 創建新張量時使用的可選名稱。
返回值:
- 一個給定值的張量
tf.train.slice_input_producer
slice_input_producer(tensor_list,
num_epochs=None,
shuffle=True,
seed=None,
capacity=32,
shared_name=None,
name=None)
tf.train.slice_input_producer() 函數是一個tensor生成器,作用是按照設定,每次從一個tensor列表中按順序或者隨機抽取出一個tensor放入一個隊列裏。該函數定義了樣本放入文件名隊列的方式(什麼是文件名隊列,在下面補充),包括迭代次數,是否亂序等,要真正將文件放入文件名隊列,還需要調用tf.train.start_queue_runners 函數來啓動執行文件名隊列填充的線程,之後計算單元纔可以把數據讀出來,否則文件名隊列爲空的,計算單元就會處於一直等待狀態,導致系統阻塞。
參數
- tensor_list:包含一系列tensor的列表,如果列表是數據和標籤對應,則表中tensor的第一維度的值必須相等,即個數必須相等,有多少個圖像,就應該有多少個對應的標籤。
- num_epochs: 可選參數,是一個整數值,代表迭代的次數,如果設置 num_epochs=None,生成器可以無限次遍歷tensor列表,如果設置爲 num_epochs=N,生成器只能遍歷tensor列表N次。
- shuffle: bool類型,設置是否打亂樣本的順序。一般情況下,如果shuffle=True,生成的樣本順序就被打亂了,在批處理的時候不需要再次打亂樣本,使用 tf.train.batch函數就可以了;如果shuffle=False,就需要在批處理時候使用 tf.train.shuffle_batch函數打亂樣本。
- seed: 可選的整數,是生成隨機數的種子,在第三個參數設置爲shuffle=True的情況下才有用。
- capacity:設置tensor列表的容量。
- shared_name:可選參數,如果設置一個‘shared_name’,則在不同的上下文環境(Session)中可以通過這個名字共享生成的tensor。
- name:可選,設置操作的名稱。
返回值
- 一個張量
什麼是文件名隊列,這裏引入tensorflow的數據讀取機制
解釋上面提到的文件名隊列:
tensorflow爲了充分利用GPU,減少GPU等待數據的空閒時間,使用了兩個線程分別執行數據讀入和數據計算。具體地說,就是開一個線程不斷地將硬盤中的圖片數據讀入到一個內存隊列中,另一個線程負責計算任務,所需數據直接從內存隊列中獲取。但是,tensorflow在內存隊列之前,還設多了一個文件名隊列,它存放的是參與訓練的文件名,要訓練n個epoch,則文件名隊列中就含有n個批次的所有文件名。 如上圖所示。
tf.random_uniform()
tf.random_uniform( shape,
minval=0,
maxval=None,
dtype=tf.float32,
seed=None,
name=None
)
tf.random_uniform()是一個隨機值函數。返回的值在 [minval, maxval) 範圍內服從均勻分佈。對於浮點數,默認範圍是 [0, 1)。對於整數, maxval 值必須明確地指定。
參數:
- shape:一維整數張量或 Python 數組.輸出張量的形狀.
- minval:dtype 類型的 0-D 張量或 Python 值;生成的隨機值範圍的下限;默認爲0.
- maxval:dtype 類型的 0-D 張量或 Python 值.要生成的隨機值範圍的上限.如果 dtype 是浮點,則默認爲1 .
- dtype:輸出的類型:float16、float32、float64、int32、orint64.
- seed:一個 Python 整數.用於爲分佈創建一個隨機種子.查看 tf.set_random_seed 行爲.
- name:操作的名稱(可選)
返回值:
- 一個填充隨機均勻值的指定形狀的張量.
tf.cumsum()
tf.cumsum(
x,
axis=0,
exclusive=False,
reverse=False,
name=None
)
tf.cumsum()函數是對輸入張量按指定維度求和。
參數:
-
x, 即我們要計算累積和的tensor。
-
axis=0, 默認是沿着x的第0維計算累積和。
-
exclusive=False, 表示輸出結果的第一元素是否與輸入的第一個元素一致。默認exclusive=False,表示輸出的第一個元素與輸入的第一個元素一致(By default, this op performs an inclusive cumsum, which means that the first element of the input is identical to the first element of the output)。這是官方文檔的解釋。當我們對一個數組arr(或其他什麼東東)進行累積求和時,我們要對累積和sum進行初始化,初始化的方式有兩種,一種是將累積和初始化爲0,即sum=0,一種是使用數組arr的第一個元素對累積和進行初始化,即sum=arr[0]。所以參數exclusive描述的是如何對累積和進行初始化。
-
reverse=False, 表示是否逆向累積求和。默認reverse=False,即正向累積求和。
返回值
- 輸入tensor按axis求和的結果
tf.reduce_min() 和 tf.reduce_max()
tf.reduce_min(or reduce_max)(
input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None
)
tf.reduce_min函數用來計算一個張量的各個維度上元素的最小值。同樣按照axis給定的維度減少input_tensor.除非 keep_dims 是true,否則張量的秩將在axis的每個條目中減少1.如果keep_dims爲true,則減小的維度將保留爲長度1。如果axis沒有條目,則縮小所有維度,並返回具有單個元素的張量.
tf.reduce_max () 函數用來計算一個張量的各個維度上元素的最大值。
參數:
- input_tensor:減少的張量.應該有數字類型.
- axis:要減小的尺寸.如果爲None(默認),則縮小所有維度.必須在[-rank(input_tensor), rank(input_tensor))範圍內.
- keep_dims:如果爲true,則保留長度爲1的縮小維度.
- name:操作的名稱(可選).
- reduction_indices:axis的廢棄的名稱.
返回:
- 該函數返回減少/增加的張量.
部分參考文章:
https://blog.csdn.net/weixin_42052460/article/details/80714379
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-m6e72huz.html
https://blog.csdn.net/yiranningjing/article/details/79451786