【tensorflow學習】不懂的函數整理

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

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