在正式學習tensorflow2.0之前需要有一定的python基礎,對numpy,matplotlib等庫有基本的了解,筆者還是AI小白,通過寫博客來記錄自己的學習過程,同時對所學的東西進行總結。主要學習資料西安科技大學:神經網絡與深度學習——TensorFlow2.0實戰,北京大學:人工智能實踐Tensorflow筆記。博客從tf常用的庫開始,需要學習python基礎的朋友推薦菜鳥教程
TensorFlow2.0學習筆記(1)——Numpy科學計算庫
1.多為數組的形狀(Shape)
描述數組的維度,以及各維度內部元素個數
一維數組 shape:(5,)
描述某位同學5門課程的成績:
二維數組 shape:(30,5)
描述某個班30位同學5門課成績:
三維數組 shape:(10,30,5)
描述某個學校10個班30位同學5門課成績:
四維數組 shape:(5,10,30,5)
描述某個地區5所學校10個班30位同學5門課成績:
五維數組 shape:(4,5,10,30,5)
描述某個某個國家4個地區5所學校10個班30位同學5門課成績:
更高維以此類推
2.創建Nump
安裝Numpy庫
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
導入Numpy庫
import numpy as np
import numpy import * #可直接調用庫,但不推薦,容易和其他包沖突
創建數組
m = np.array([[[4, 5, 8, 3],[3, 6, 9, 0],[8, 4, 5, 6]],
[[4, 5, 8, 3],[3, 6, 9, 0],[8, 4, 2, 1]]])
# 數組屬性
m.ndim #3 維度
m.shape #(2,3,4) 形狀
m.size #24 元素的總個數
m.dtype #int32 數據類型
m.itemsize #4 每個元素的字節數
創建特殊的數組
# np.arrange(start=0,stop,num=1,dtype) 前閉后開,不包含結束值
n=np.arange(4) #array([0, 1, 2, 3])
a=np.arange(0,2,0.3) #array([0., 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])
np.ones((3,2),dtype =np.int64) #array([[1,1],[1, 1],[1, 1]],dtype = int64)
np.eye((2, 3)) #array([[1., 0., 0.], [0., 1., 0.]])創建一個單位矩陣
# np.logspace(stat,stop,num,base,dtype)參數:起始指數,結束指數,基,元素數據類型,包含結束值
np.logspace(1, 5, 5, base=2) #array([2., 4., 8, 16, 32])
3.數組計算
需要了解幾個常見的數組數據處理函數
# 數組元素切片
a = np.array([0,1,2,3]) #一維數組
print(a[:3]) #array([0,1,2]) 輸出前三個數
b = np.array([[0,1,2,3],[3,4,5,6],[6,7,8,9]]) #二維數組
print(b[:2]) #array([[0,1,2,3],[3,4,5,6]]) 輸出前兩行
# 改變數組的形狀
c = np.arange(12)
d = c.reshape(3,4)
print(d) #array([[0,1,2,3],[4,5,6,7],[8,9,10,11]]) 不改變當前數組,按照shape創建新的數組
c.reshape(-1,1)
print(c) #array([[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11]])
c.resize(3,4)
print(c) #array([[0,1,2,3],[4,5,6,7],[8,9,10,11]]) 改變當前數組,按照shape創建新的數組
數組間的運算
1.數組間的元素運算
a = np.arange(4)
print(np.sum(a)) #6
print(np.sqrt(a)) #array([0. ,1. ,1.41421356, 1.73205081])
數組的軸和秩
數組的堆疊運算
x = np.array([1,2,3])
y = np.array([4,5,6])
print(np.stack((x,y),axis = 0)) #array([1,2,3],[4,5,6])
print(np.stack((x,y),axis = 1)) #array([1,4],[2,5],[3,6])
a = np.arrange(12).reshape(3,4) #a = ([0,1,2,3],[4,5,6,7],[8,9,10,11])
print(np.sum(b,axis=0)) #array([12,15,18,21])
print(np.sum(b,axis=1)) #array([6,22,38])
2.數組加減法,對應元素相加減(進行運算的數組長度要一致)
a = np.ones([3,3])
b = np.eye([3,3])
print(a+b) #array([[2,1,1],[1,2,1],[1,1,2]])
3.一維數組可以和多維數組相加,相加時將會將一維數組擴展至多維
a = np.array([1,2,3])
b = np.array([1,1,1],[2,2,2])
print(a+b) #array([2,3,4],[3,4,5])
print(b**2) #array([1,1,1],[4,4,4])
SUMMARIZE:數組間的四則運算,是對應元素加減乘除;
當數組中元素的數據類型不同時,精度低的數據類型會轉換成精度高的數據類型,然后再運算
矩陣運算
1.矩陣乘法,按矩陣相乘的規則運算
A = np.array([[1,2],[2,3]])
B = np.array([[4,2,1],[1,5,2]])
print(np.matmul(A,B)) #array([6,12,5],[11,19,8])
2.轉置和求逆
#轉置
print(np.transpose(A)) #array([1,2],[2,3])
#求逆
print(np.linalg.inv(A)) #array([-3,2],[2,-1])