動手學深度學習 打卡02

2021-10-02 19:29:23 字數 2828 閱讀 5974

分詞時用到了split函式:

split() 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num+1 個子字串

str

.split(

str=

"", num=string.count(

str)

)

為方便模型處理,我們需要將字串轉換為數字。因此我們需要先構建乙個字典,其中的內容將每個詞對映到乙個唯一的索引編號:

python 字典(dictionary) get() 函式返回指定鍵的值,如果值不在字典中返回預設值。

dict

=print

"value : %s"

%dict

.get(

'age'

)print

"value : %s"

%dict

.get(

'***'

,"never"

)

輸出:

value :

27value : never

分詞的常用工具:spacy和nltk。

假設序列w1,

w2,…

,w

tw_1, w_2, \ldots, w_t

w1​,w2

​,…,

wt​中的每個詞是依次生成的,我們有

p (w

1,w2

,…,w

t)=∏

t=1t

p(wt

∣w1,

…,wt

−1)=

p(w1

)p(w

2∣w1

)⋯p(

wt∣w

1w2⋯

wt−1

)p(w_1, w_2, \ldots, w_t)= \prod_^t p(w_t \mid w_1, \ldots, w_)\\= p(w_1)p(w_2 \mid w_1) \cdots p(w_t \mid w_1w_2\cdots w_)

p(w1​,

w2​,

…,wt

​)=t

=1∏t

​p(w

t​∣w

1​,…

,wt−

1​)=

p(w1

​)p(

w2​∣

w1​)

⋯p(w

t​∣w

1​w2

​⋯wt

−1​)

詞的概率可以通過該詞在訓練資料集中的相對詞頻來計算:

p ^(

w1)=

n(w1

)n

\hat p(w_1) = \frac

p^(w1​

)=nn

(w1​

)​給定 w1 情況下, w2 的條件概率可以計算為:

p ^(

w2∣w

1)=n

(w1,

w2)n

(w1)

\hat p(w_2 \mid w_1) = \frac

p^(w2​

∣w1​

)=n(

w1​)

n(w1

​,w2

​)​其中 n(w1,w2) 為語料庫中以 w1 作為第乙個詞, w2 作為第二個詞的文字的數量。

基於 n−1 階馬爾可夫鏈,我們可以將語言模型改寫為:

p (w

1,w2

,…,w

t)=∏

t=1t

p(wt

∣wt−

(n−1

),…,

wt−1

).

p(w_1, w_2, \ldots, w_t) = \prod_^t p(w_t \mid w_, \ldots, w_) .

p(w1​,

w2​,

…,wt

​)=t

=1∏t

​p(w

t​∣w

t−(n

−1)​

,…,w

t−1​

).時序資料的取樣

時序資料的乙個樣本通常包含連續的字元。假設時間步數為5,樣本序列為5個字元,即「想」「要」「有」「直」「公升」。該樣本的標籤序列為這些字元分別在訓練集中的下乙個字元,即「要」「有」「直」「公升」「機」,即 x =「想要有直公升」, y =「要有***」。有兩種方式對時序資料進行取樣,分別是隨機取樣和相鄰取樣:

在隨機取樣中,每個樣本是原始序列上任意擷取的一段序列,相鄰的兩個隨機小批量在原始序列上的位置不一定相毗鄰。

在相鄰取樣中,相鄰的兩個隨機小批量在原始序列上的位置相毗鄰。

set() 函式建立乙個無序不重複元素集,可進行關係測試,刪除重複資料,還可以計算交集、差集、並集等。

scatter_(input, dim, index, src)將src中資料根據index中的索引按照dim的方向填進input中:

>>

> z = torch.zeros(2,

4).scatter_(

1, torch.longtensor([[

2],[

3]])

,1.23

)>>

> z

0.0000

0.0000

1.2300

0.0000

0.0000

0.0000

0.0000

1.2300

[torch.floattensor of size 2x4]

動手學深度學習 打卡01

均方誤差損失函式 l i w,b 1 2 y i y i 2 l mathbf,b frac left hat y right 2,l i w b 21 y i y i 2,小批量隨機梯度下降 mini batch stochastic gradient descent w,b w,b b i b ...

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

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

動手學深度學習Pytorch版打卡記錄 2

自然語言預處理 1.分詞 對於英文,有天然的空格作為分隔符號,但是對於中文,我們需要進行分詞處理,把文章變成詞彙序列,再去重成為下面所說的詞彙表。詞彙表是文章 現過的所有的單詞的不重複列表 只出現一次 2.詞彙表 自然語言預處理,需要去掉停止詞,新增符號。核心是將所有的文字內容轉換成編號進行處理。我...