
one 第一章
1.1 Python是什么
Python是一個簡單、易讀、易記的編程語言,而且是開源的,可以免費地自由使用。Python可以用類似英語的語法編寫程序,編譯起來也不費力,因此我們可以很輕松地使用Python。特別是對首次接觸編程的人士來說,Python是最合適不過的語言。事實上,很多高校和大專院校的計算機課程均采用Python作為入門語言。Python是最適合數據科學領域的編程語言。而且,Python具有受眾廣的優秀品質,從初學者到專業人士都在使用。因此,為了完成本書的從零開始實現深度學習的目標,Python可以說是最合適的工具。1.2? Python的安裝
Python有2.x和3.x的區別,現在使用的一般均為Python3.x。兩個常用的庫:NumPy是用于數值計算的庫,提供了很多高級的數學算法和便利的數組(矩陣)操作方法。本書中將使用這些便利的方法來有效地促進深度學習的實現。Matplotlib是用來畫圖的庫。使用Matplotlib能將實驗結果可視化,并在視覺上確認深度學習運行期間的數據。1.3Python解釋器
可以配置PyCharm進行編寫。我對PyCharm的認識大概相當于Rstudio之對于R軟件的作用。方便程序的編寫、運行調試。在PyCharm界面左下角處點擊"Python consolo"就會出來Python的交互頁面。也相當于Python解釋器的對話模型。1.3.1 基本運算
*表示乘法,/表示除法,**表示乘方(3**2是3的2次方)。另外,在Python 2.x中,整數除以整數的結果是整數,比如,7 ÷ 5的結果是1。但在Python 3.x中,整數除以整數的結果是小數(浮點數)。1.3.2 數據類型
編程中有數據類型(data type)這一概念。數據類型表示數據的性質,有整數、小數、字符串等類型。Python中的type()函數可以用來查看數據類型。1.3.3 變量
可以使用x或y等字母定義變量(variable)。此外,可以使用變量進行計算,也可以對變量賦值。Python是屬于“動態類型語言”的編程語言,所謂動態,是指變量的類型是根據情況自動決定的。“#”是注釋的意思,它后面的文字會被Python忽略。1.3.4 列表
除了單一的數值,還可以用列表(數組)匯總數據。1.3.5 字典
列表根據索引,按照0, 1, 2, ...的順序存儲值,而字典則以鍵值對的形式存儲數據。字典就像《新華字典》那樣,將單詞和它的含義對應著存儲起來。1.3.6 布爾型
Python中有bool型。bool型取True或False中的一個值。針對bool型的運算符包括and、or和not (針對數值的運算符有+、-、*、/等,根據不同的數據類型使用不同的運算符)。1.3.7 if語句
根據不同的條件選擇不同的處理分支時可以使用if/else語句。>>> hungry = True>>> if hungry:... print("I’m so hungry.")... I’m so hungry.>>> hungry = False>>> if hungry:... print("I’m so hungry.")... else:... print("I’m not hungry at all.")... print("I'm tired.")... I’m not hungry at all.I'm tired.
Python中的空白字符具有重要的意義。上面的if語句中,if hungry:下面的語句開頭有4個空白字符。它是縮進的意思,表示當前面的條件(if hungry)成立時,此處的代碼會被執行。這個縮進也可以用tab表示,Python中推薦使用空白字符。1.3.8 for 語句
進行循環處理時可以使用for語句,可以按順序訪問列表等數據集合中的各個元素。>>> for i in ["I","am","not","a","good","guy"]:... print(i)... Iamnotagoodguy
1.3.9 函數
可以將一連串的處理定義成函數 (function)。>>> def hello():... print("Hello World!")... hello()Hello World!
此外,函數可以取參數。>>> def hello(object):... print("Hello " + object + "!")...>>> hello("cat")Hello cat!
1.4? NumPy
>>> import numpy as np
Python中使用import語句來導入庫。這里的import numpy as np,直譯的話就是“將numpy作為np導入”的意思。通過寫成這樣的形式,之后NumPy相關的方法均可通過np來調用。要生成NumPy數組,需要使用np.array()方法。np.array()接收Python列表作為參數,生成NumPy數 組(numpy.ndarray)。>>> x = np.array([1.0, 2.0, 3.0])>>> print(x)[ 1. 2. 3.]>>> type(x)<class 'numpy.ndarray'>
下面是NumPy數組的算術運算的例子。>>> x = np.array([1.0, 2.0, 3.0])>>> y = np.array([2.0, 4.0, 6.0])>>> x + y # 對應元素的加法array([ 3., 6., 9.])>>> x - yarray([ -1., -2., -3.])>>> x * y # element-wise productarray([ 2., 8., 18.])>>> x / yarray([ 0.5, 0.5, 0.5])
這里需要注意的是,數組x和數組y的元素個數是相同的(兩者均是元素個數為3的一維數組)。當x和y的元素個數相同時,可以對各個元素進行算術運算。如果元素個數不同,程序就會報錯,所以元素個數保持一致非常重要。另外,“對應元素的”的英文是element-wise,比如“對應元素的乘法”就是element-wise product。NumPy數組不僅可以進行element-wise運算,也可以和單一的數值(標量)組合起來進行運算。此時,需要在NumPy數組的各個元素和標量之間進行運算。>>> x = np.array([1.0, 2.0, 3.0])>>> x / 2.0array([ 0.5, 1. , 1.5]
NumPy不僅可以生成一維數組(排成一列的數組),也可以生成多維數組。>>> A = np.array([[1, 2], [3, 4]])>>> print(A)[[1 2] [3 4]]>>> A.shape(2, 2)>>> A.dtypedtype('int64')
矩陣A的形狀可以通過shape查看,矩陣元素的數據類型可以通過dtype查看。NumPy中,形狀不同的數組之間也可以進行運算。之前的例子中,在2×2的矩陣A和標量10之間進行了乘法運算。在這個過程中,如圖1-1所示,標量10被擴展成了2 × 2的形狀,然后再與矩陣A進行乘法運算。這個巧妙的功能稱為廣播 (broadcast)。>>> A = np.array([[1, 2], [3, 4]])>>> B = np.array([10, 20])>>> A * Barray([[ 10, 40], [ 30, 80]])
1.5? Matplotlib
在深度學習的實驗中,圖形的繪制和數據的可視化非常重要。Matplotlib是用于繪制圖形的庫,使用Matplotlib可以輕松地繪制圖形和實現數據的可視化。這里,我們來介紹一下圖形的繪制方法和圖像的顯示方法。可以使用matplotlib的pyplot模塊繪制圖形。話不多說,我們來看一個繪制sin函數曲線的例子。import numpy as npimport matplotlib.pyplot as plt# 生成數據x = np.arange(0, 6, 0.1) # 以0.1為單位,生成0到6的數據y = np.sin(x)# 繪制圖形plt.plot(x, y)plt.show()
就會得到圖1-3:
import numpy as npimport matplotlib.pyplot as plt# 生成數據x = np.arange(0, 6, 0.1) # 以0.1為單位,生成0到6的數據y1 = np.sin(x)y2 = np.cos(x)# 繪制圖形plt.plot(x, y1, label="sin")plt.plot(x, y2, linestyle = "--", label="cos") # 用虛線繪制plt.xlabel("x") # x軸標簽plt.ylabel("y") # y軸標簽plt.title('sin & cos') # 標題plt.legend()plt.show()
就會得到圖1-4:
今天就到這里啦!
大家都要加油鴨!
春風不度玉門關,
我佛不渡鐵憨憨。
雕欄玉砌應猶在,
點贊完了點在看。
? - end -??
圖文源魚書
公眾號:一枝花滿樓
