今天老師帶領我們入門TensorFlow2.0。至于tensorflow2.0是啥嘛,詳細的可以度娘一下。我簡述一下,就是一個end-to-end machine-Learning open source plantform(端對端的開源機器學習的平臺)。學習tensorflow需要引入tensor這個概念,tensor的漢語意思就是張量。張量是數學和力學的概念,是矢量的延伸,矢量是一階張量,至于張量具體是什么大家感興趣就度娘吧,我也不是專業的數學研究人員不很懂。tensorflow1.0引入了deferred execution(延遲執行)機制,在構建階段是不執行計算操作的,因此稱為靜態圖,要想執行計算操作,需要創建Session()對象才可以執行計算操作。而在tensorflow2.0里引入了默認執行eager execution機制,無需首先創建靜態圖,可以立刻執行計算操作,并返回結果,不像1.0那樣需要創建Session對象。但是動態圖執行效率不高,不利于后期調試。但是可以在程序調試階段使用動態圖,快速建立模型、調試程序;在部署階段,采用靜態圖機制,從而提高模型的性能和部署能力。tensorflow2.0清理和整合API,將tf.keras作為構建和訓練模型的標準API。

機器學習
安裝tensorflow這個老生常談了。
pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
我們來簡單入門講講tensorflow。它可以運行在GPU、CPU、嵌入式等等平臺。你可以理解為是對numpy的二次封裝,對numpy進行加速運算。numpy只能在CPU里計算,而tensorFlow可以在CPU、GPU、TPU里計算。當tensorflow與numpy一起在CPU里計算時,它們共享同一段內存。
它的基本運算是張量,張量是由Tensor實現,每個張量都是一個Tensor對象。可以使用tf.constant() 函數來創建張量。代碼如下:
import tensorflow as tfa = tf.constant([[1,2],[3,4]])print(a)
- value:可以是數字或python列表或numpy數組
- shpae:張量的形狀
- dtype:元素數據類型
dtype:全稱是digital type漢語意思就是數字類型。這就創建了一個二維張量。
運行結果就是:
tf.Tensor([[1 2] [3 4]], shape=(2, 2), dtype=int32)
張量還可以使用Numpy方法,代碼如下:
a = tf.constant([[1,2],[3,4]])print(a.numpy)print(type(a))
那么運行結果就是:
>
使用numpy方式生成張量時需要注意以下幾點:numpy方法創建張量 使用np創建浮點數組時默認64位,而tensorflow默認時float32,但是tensorflow接受時自動轉為64位浮點。一般建議使用np創建數組時建議為float32位足以使用。但是不建議低精度兼容高精度,因為會溢出。比如int32去兼容int64可能會存在溢出。

Python
它的內置API非常多:
- cast()改變張量的數據類型,tensor支持轉變的數據類型有:string int float bool。
- tf.convert_to_tensor()函數其他數據類型轉換成tensor類型
- tf.fill()在tensor張量里自動填充某個元素,第一個參數是shape,第二個是value,根據傳入的value自動判斷數據類型
- tf.constant()也可以實現fill一樣的功能,只不過它的填充數字在前面,shape參數位于后面。
- tf.random.normal(形狀,均值,標準差,數據類型=tf.float32)這個是正態分布函數。均值即為:mean。標準差是:stddev。當mean=0,stddev=1為標準正態分布
- tf.random.truncated_normal()創建隨機數張量。截斷正態分布,基本參數一致。截斷的依據是正態分布的2倍標準差。
- tf.random.set_seed()函數。設置隨機數種子
- tf.random.uniform(shape,minval,maxval,dtype)函數。功能是均勻分布張量,它是一個左閉右開的區間。tf.random.uniform(shape,minval,maxval,dtype='int32')
- tf.random.shuffle()函數。功能是隨機打亂序列。
- tf.range()創建整數序列,是左閉右開區間。
還可以使用字典式訪問tensor對象屬性,依次取出ndim、shape、dtype屬性,代碼如下:
atfc = tf.constant([[3,5],[7,0]])print('ndim:',atfc.ndim)print('shape:',atfc.shape)print('dtype:',atfc.dtype)
總結一下:tensorflow所有的運算都是在張量之間運行的。而numpy只是作為input和output使用的。我只是列舉了常用的API,大家有興趣的可以嘗試嘗試。
我始終保持開放的態度學習python,大佬可以批評指正。python之路漫漫,吾將上下而求索。