ML DL 《動手學深度學習》總結1

2021-09-25 11:55:15 字數 2102 閱讀 4508

書中使用的是mxnet作為學習框架

在mxnet中,ndarray是乙個類,也是儲存和變換資料的主要工具。建立儲存資料基本上都用到這個類。

from mxnet import nd   # 匯入首先從mxnet匯入ndarray模組

『』『常用的用法』『』

x = nd.arange(12) #建立乙個順序的行向量,[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]

x = x.reshape((3, 4)) #更改為3行4列的矩陣

『』『out:

[[ 0. 1. 2. 3.]

[ 4. 5. 6. 7.]

[ 8. 9. 10. 11.]]』『』

y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]) #建立三行四列的矩陣

nd.random.normal(0, 1, shape=(3, 4)) #均值為1, 方差為1的隨機矩陣

#常見運算

x + y

''' out :

[[ 2. 2. 6. 6.]

[ 5. 7. 9. 11.]

[12. 12. 12. 12.]]

'''nd.dot(x, y.t)

out:

[[ 18. 20. 10.]

[ 58. 60. 50.]

[ 98. 100.90.]]

#廣播機制

#當對兩個形狀不同的ndarray按

#元素運算時,可能會觸發廣播(broadcasting)機制:先適當複製元素使這兩個ndarray形狀相

#同後再按元素運算。

a = nd.arange(3).reshape((3, 1))

b = nd.arange(2).reshape((1, 2))

a + b

'''out:

[[0. 1.]

[1. 2.]

[2. 3.]]

'''#索引元素

#依據**左閉右開**指定範圍的慣例,它擷取了矩陣x中行索引為1和2的兩行。

x[1:3]

'''out:

[[ 4. 5. 6. 7.]

[ 8. 9. 10. 11.]]

'''#單個元素賦值

x[1, 2] = 9

'''[[ 0. 1. 2. 3.]

[ 4. 5. 9. 7.]

[ 8. 9. 10. 11.]]

'''#對某一行賦值

x[1:2, :] = 12

'''[[ 0. 1. 2. 3.]

[12. 12. 12. 12.]

[ 8. 9. 10. 11.]]

'''

#和numpy相互轉換

import numpy as np

p = np.ones((2, 3))

d = nd.array(p) #ndarray轉numpy

'''out:

[[1. 1. 1.]

[1. 1. 1.]]

'''d.asnumpy() # ndarray變換成numpy

和其他框架一樣的是mxnet提供了自動求梯度的函式

from mxnet import autograd, nd

#例子,對函式 y = 2x*x 求關於列向量 x 的梯度

x = nd.arange(4).reshape((4, 1))

x.attach_grad() #為了求有關變數x的梯度,我們需要先呼叫attach_grad函式來申請儲存梯度所需要的記憶體

with autograd.record():

y = 2 * nd.dot(x.t, x) #為了減少計算和記憶體開銷,預設條件下mxnet不會記錄用於求梯度的計算。我們需要呼叫record函式來要求mxnet記錄與求梯度有關的計算。

y.backward()

x.grad

『』『[[ 0.]

[ 4.]

[ 8.]

[12.]]

』『』

動手學深度學習筆記(1)

機器學習,神經網路是很多領域共同發展的成果。時至今日,絕大多數神經網路都包含以下的核心原則 深度學習從發現到發展,仍能屹立的部分原因 在機器學習的眾多研究方向中,表徵學習關注如何自動找出表示資料的合適方式,以便更好地將輸入變換為正確的輸出。深度學習是具有多級表示的表徵學習方法。在每一級 從原始資料開...

動手學深度學習

線性回歸的基本要素 模型 為了簡單起見,這裡我們假設 只取決於房屋狀況的兩個因素,即面積 平方公尺 和房齡 年 接下來我們希望探索 與這兩個因素的具體關係。線性回歸假設輸出與各個輸入之間是線性關係 price warea area wage age b price warea area wage a...

動手學深度學習打卡筆記1

資料基礎 張量和梯度 tensor 張量 可以看成是乙個多維陣列。標量是0維張量,向量是1維張量,矩陣則是2維張量。在深度學習中涉及到大量的矩陣和向量的相互計算 向量計算的速度更快 在pytorch中,torch.tensor是儲存和變換資料的主要工具。除了基本的矩陣向量 同形 的計算之外,對於不同...