一、一些代碼中的問題
- 將一個列表 轉(zhuǎn)化為空格隔開的字符串
第一種方法:test=['1','2','23']
print(' '.join(test))
輸出結(jié)果為:1 2 23
第二種方法:test=['1','2','23']
for x in test:
print(x,end=" ")
輸出結(jié)果為:1 2 23
文件讀寫(去查菜鳥教程)
Python3 File(文件) 方法
python:write()/writelines()的區(qū)別
python:read()/readline()/readlines()區(qū)別注意文件編碼問題:utf-8和gbk
深度學(xué)習(xí)中常用函數(shù)
- enumerate() 函數(shù)
- Numpy中常用的保存與讀取數(shù)據(jù)的方法
- python列表操作:extend()和append()
二氯哮、pytorch中一些常見操作
1渠缕、維度的變化
- 減少維度
- out=out[:,-1,:]
lstm的輸出形狀(batch,seq_len, hidden_size*2)
因為要接fc觉至,所以使用out=out[:,-1,:]育灸,將seq_len這個維度去掉了。 - squeeze()
squeeze(arg)表示第arg維的維度值為1蝇狼,則去掉該維度。否則tensor不變倡怎。
- 增加維度
unsqueeze():
unsqueeze(arg)與squeeze(arg)作用相反,表示在第arg維增加一個維度值為1的維度 -
檢驗?zāi)P褪欠裾_模型
用下面這三個逐步來檢查模型前向傳導(dǎo)的中間結(jié)果贱枣,并記錄結(jié)果的維度和代表含義
print("out:")
print(out)
print(out.size()) # 獲取向量的維數(shù)和對應(yīng)的維度
time.sleep(1000) # 休眠以便觀察
一些情況下也可用:print(x.dtype) #獲取張量里的數(shù)據(jù)類型
- 參考
pytorch的英文API文檔
pytorch常用張量維度操作
pytorch中tensor的squeeze()和unsqueeze()
pytorch中降維的騷操作:out = out[:,-1,:]
2监署、數(shù)據(jù)要求和轉(zhuǎn)換
- 對于數(shù)據(jù)的要求
- 訓(xùn)練的批量樣本數(shù)據(jù)輸入值需要是long值的Tensor數(shù)據(jù),而不是int值的Tensor數(shù)據(jù)
- 在訓(xùn)練網(wǎng)絡(luò)的過程中由于類型的沖突導(dǎo)致這種錯誤纽哥,主要是模型內(nèi)部參數(shù)和輸入類型不一致所導(dǎo)致的钠乏。主要有兩個部分需要注意到:1.自己定義的變量要設(shè)置為一種數(shù)據(jù)類型;2.網(wǎng)絡(luò)內(nèi)部的變量類型也要統(tǒng)一春塌。
- 我自己碰到的:計算cosine_similarity函數(shù)的兩個輸入?yún)?shù)必須是同一類晓避,不然會報錯簇捍。
- 參考:
三、一些關(guān)于深度學(xué)習(xí)的一些知識
1俏拱、中英文文本預(yù)處理
- 英文采用nltk分詞
大寫字母轉(zhuǎn)換成小寫字母 --> 去除標點符號 --> 分詞 --> 去除停用詞 --> 提取詞干(在英文中有很多變形暑塑,比如cleaning/cleans/cleaned等等,這些和clean都是一個意思锅必,這里我們要對其提取詞干) - 中文采用jieba分詞
去除非中文部分(如標點符號) --> 中文分詞 --> 去除停用詞 - 代碼實現(xiàn)參考:
python :中英文文本預(yù)處理
NLP入門-- 文本預(yù)處理Pre-processing - 分詞工具
- 中文分詞工具:
下面排名根據(jù) GitHub 上的 star 數(shù)排名:
Hanlp Stanford分詞 ansj分詞器 哈工大LTP KCWS分詞器 jieba(采用) IK 清華大學(xué)THULAC ICTCLAS - 英文分詞工具:
Keras Spacy Gensim NLTK(采用)
- 中文分詞工具:
2事格、得到預(yù)訓(xùn)練詞向量(跨語言詞向量)
看論文附的代碼
3、如何使用預(yù)訓(xùn)練詞向量
- 實現(xiàn)過程和原理
- 實現(xiàn)過程:先是進行一個對象初始化搞隐,然后加載預(yù)訓(xùn)練詞向量驹愚,然后把預(yù)訓(xùn)練詞向量copy進去。
- 原理:我們知道預(yù)訓(xùn)練詞向量肯定也是一個詞向量矩陣對象劣纲,這里是通過單詞獲取詞向量權(quán)重逢捺。我們要做的就是做到類似pytorch自帶的那種權(quán)重初始化,得到一個單詞-索引-權(quán)重對應(yīng)的關(guān)系癞季。預(yù)訓(xùn)練對象得到的是單詞-權(quán)重劫瞳。我們要得到的是索引-權(quán)重。
- 參考
- 文本分類算法中的相關(guān)實現(xiàn)
- tensorflow如何正確加載預(yù)訓(xùn)練詞向量
- pytorch中如何使用預(yù)訓(xùn)練詞向量
4余佛、數(shù)據(jù)集和迭代器構(gòu)建
- Iteration, Batch, Epoch
深度學(xué)習(xí) | 三個概念:Epoch, Batch, Iteration
訓(xùn)練集柠新,驗證集和測試集的作用
見西瓜書對于文本預(yù)處理、數(shù)據(jù)集的構(gòu)建辉巡、迭代器
建議可以嘗試torchtext恨憎,一步到位
torchtext入門教程,輕松玩轉(zhuǎn)文本數(shù)據(jù)處理
5郊楣、模型構(gòu)建
pytorch的英文API文檔
- [NLP] TextCNN模型原理和實現(xiàn)
- LSTM神經(jīng)網(wǎng)絡(luò)輸入輸出究竟是怎樣的憔恳?
- 常見激活函數(shù)總結(jié)
- 常見的損失函數(shù)(loss function)總結(jié)