




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《自然語言處理技術》代碼33所示。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s13模型構建importtorchimporttorch.nnasnn#定義LSTM模型classLSTMModel(nn.Module):def__init__(self,vocab_size,embed_size,hidden_size,num_classes):super(LSTMModel,self).__init__()#定義詞嵌入層self.embedding=nn.Embedding(vocab_size,embed_size)#定義LSTM層self.lstm=nn.LSTM(embed_size,hidden_size,batch_first=True)#定義全連接層self.fc=nn.Linear(hidden_size,num_classes)defforward(self,x):#將輸入的詞語ID序列轉化為詞嵌入向量embedded=self.embedding(x)#將詞嵌入向量輸入到LSTM層中out,_=self.lstm(embedded)#將LSTM層的輸出傳入全連接層out=self.fc(out[:,-1,:])returnout#設置模型的參數vocab_size=len(vocab)#詞匯表的大小embed_size=100#詞嵌入向量的維度hidden_size=128#LSTM層的隱藏狀態的維度num_classes=2#情感分類的類別數#創建LSTM模型model=LSTMModel(vocab_size,embed_size,hidden_size,num_classes)在構建基于LSTM的情感分類模型時,使用了3個關鍵的神經網絡層,主要為詞嵌入層、LSTM層和全連接層,設置3個神經網絡層的函數及其參數說明如REF_Ref132317559\h表31所示。表STYLEREF1\s3SEQ表\*ARABIC\s11LSTM模型中的3個關鍵層函數說明函數說明參數nn.Embedding詞嵌入層。將輸入的詞語ID序列轉換為詞嵌入向量vocab_size:詞匯表大小embed_size:詞嵌入向量維度nn.LSTMLSTM層。用于處理序列數據,捕捉長期依賴關系embed_size:詞嵌入向量維度hidden_size:隱藏狀態維度batch_first:指定輸入張量的形狀中是否將批處理大小放在第一個維度nn.Linear全連接層。將LSTM層的輸出轉換為最終的類別預測hidden_size:隱藏狀態維度num_classes:情感分類類別數模型訓練針對搭建好的模型,設置模型超參數并進行訓練設置,其中,損失值設為CrossEntropyLoss、優化器設為“Adam”、每批訓練數據個數設為32、總迭代輪次設為10,如REF_Ref131514844\h代碼34所示。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s14模型訓練importtorch.optimasoptimfromtorch.utils.dataimportDataset,DataLoaderfromtorch.utils.dataimportTensorDataset,RandomSampler,DataLoader,SequentialSampler#定義自定義數據集類classSentimentDataset(Dataset):def__init__(self,data,labels):self.data=dataself.labels=labelsdef__getitem__(self,index):returnself.data[index],self.labels[index]def__len__(self):returnlen(self.data)#設置超參數batch_size=32#每次訓練的數據批次大小num_epochs=10#迭代次數#初始化數據集和數據加載器train_data=TensorDataset(torch.LongTensor(input_ids_train),torch.LongTensor(y_train))#隨機采樣器用于在訓練數據中隨機選取樣本組成一個batchtrain_sampler=RandomSampler(train_data)train_loader=DataLoader(train_data,sampler=train_sampler,batch_size=batch_size)test_data=TensorDataset(torch.LongTensor(input_ids_test),torch.LongTensor(y_test))#順序采樣器用于在測試數據中按順序選取樣本組成一個batchtest_sampler=SequentialSampler(test_data)test_loader=DataLoader(test_data,sampler=test_sampler,batch_size=batch_size)#初始化模型、損失函數和優化器model=LSTMModel(vocab_size,embed_size,hidden_size,num_classes)criterion=nn.CrossEntropyLoss()#交叉熵損失函數optimizer=optim.Adam(model.parameters(),lr=0.001)#Adam優化器#訓練模型total_step=len(train_loader)#計算總的訓練步數forepochinrange(num_epochs):fori,(data,labels)inenumerate(train_loader):#正向傳播outputs=model(data)loss=criterion(outputs,labels.squeeze())#反向傳播和優化optimizer.zero_grad()loss.backward()optimizer.step()#打印狀態信息if(i+1)%100==0:print('Epoch[{}/{}],Step[{}/{}],Loss:{:.4f}'.format(epoch+1,num_epochs,i+1,total_step,loss.item()))在訓練深度學習模型時,通常需要將數據集分成多個批次進行訓練,在此過程中使用到TensorDataset和DataLoader函數來實現對數據集的處理。TensorDataset和DataLoader函數的作用及其參數說明如REF_Ref132317590\h表32所示。表STYLEREF1\s3SEQ表\*ARABIC\s12TensorDataset和DataLoader函數的作用及其參數說明函數說明參數TensorDataset將輸入數據轉換為適合訓練的數據集格式torch.LongTensor(input_ids_train):訓練數據的輸入ID序列torch.LongTensor(y_train):訓練數據的標簽DataLoader根據指定的采樣器和批次大小創建數據加載器,用于在訓練過程中加載數據train_data:TensorDataset格式的訓練數據集train_sampler:數據采樣器batch_size:每個批次的樣本數量同時,在訓練深度學習模型時,還需要選擇一個優化器來更新模型參數。此代碼中使用到Adam優化器。Adam優化器的常用參數說明如REF_Ref132317633\h表33所示。表STYLEREF1\s3SEQ表\*ARABIC\s13Adam優化器的常用參數說明參數名稱參數說明parameters接收list,表示模型參數,用于更新模型參數,多用于優化器的初始化,無默認值lr接收float,表示學習率,又稱為步長因子,控制了權重的更新比率,較大的值更新前會有更快的初始學習,而較小的值會令訓練收斂到更好的性能。默認為1e-3運行模型訓練代碼后,訓練過程輸出結果如下。Epoch[1/10],Step[100/195],Loss:0.4767Epoch[2/10],Step[100/195],Loss:0.5186Epoch[3/10],Step[100/195],Loss:0.5767Epoch[4/10],Step[100/195],Loss:0.3618Epoch[5/10],Step[100/195],Loss:0.1925Epoch[6/10],Step[100/195],Loss:0.0633Epoch[7/10],Step[100/195],Loss:0.0628Epoch[8/10],Step[100/195],Loss:0.2164Epoch[9/10],Step[100/195],Loss:0.0051Epoch[10/10],Step[100/195],Loss:0.0053從模型訓練代碼的運行結果可以看出,模型在測試集上的損失值隨著模型訓練次數的增加,該值整體呈下降趨勢。模型測試對訓練好的模型使用測試數據進行測試,輸出模型的評價結果,如REF_Ref131514956\h代碼35所示。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s15模型測試fromsklearnimportmetrics#使用測試數據進行模型測試model.eval()predict=[]withtorch.no_grad():fordata,labelsintest_loader:outputs=model(data)_,predicted=torch.max(outputs.data,1)predict.extend(predicted.detach().numpy())#模型評價acc=metrics.accuracy_score(y_test,predict)print('測試集的準確率為:',acc)print('精確率、召回率、F1值分別為:')print(metrics.classification_report(y_test,predict))print('混淆矩陣為:')cm=metrics.confusion_matrix(y_test,predict)#混淆矩陣print(cm)在評估分類模型的性能時,混淆矩陣是一個很有用的工具。metrics.confusion_matrix函數可以計算一個分類模型的混淆矩陣,可以展示各類別之間的實際值與預測值之間的關系,該函數的常用參數說明如REF_Ref132317915\h表34所示。表STYLEREF1\s3SEQ表\*ARABIC\s14metrics.confusion_matrix函數的常用參數說明參數名稱參數說明y_true接收numpy數組或list,表示真實的類別標簽,通常是一個一維數組或列表。無默認值y_pred接收numpy數組或list,表示預測的類別標簽,通常是一個一維數組或列表。無默認值在模型測試代碼,輸出模型的評價結果如下。測試集的準確率為:0.819703799098519精確率、召回率、F1值分別為:precisionrecallf1-scoresupport00.710.770.7451310.880.850.861040accuracy0.821553macroavg0.800.810.801553weig
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45715.2-2025車輛多媒體系統和設備環視系統第2部分:環視系統的記錄方法
- 電子產品檢測技術專業教學標準(高等職業教育專科)2025修訂
- 2024-2025學年吉林省通化市梅河口五中高二下學期4月月考英語試題及答案
- 智能交通技術專業教學標準(高等職業教育專科)2025修訂
- 2025年中國卷巾紙巾行業市場全景分析及前景機遇研判報告
- 稅務師考試東奧課件下載
- 稅務師考試2021課件
- 2025年中國站式減壓器行業市場發展前景及發展趨勢與投資戰略研究報告
- 中國潔凈環境測試儀組合套件儀器箱行業市場調查研究及投資前景展望報告
- 智能控制器培訓課件
- 自主招生試題及答案網
- 2025年高考江蘇卷物理真題(解析版)
- 2025年重慶市中考化學試卷真題(含標準答案)
- 2024年北京市初中學業水平考試語文試卷及答案
- 電力行業電力運行維護與故障處理知識題庫
- 科學技術普及法解讀
- 西山煤電招聘筆試題庫2025
- 醫院院感每月培訓管理規范
- T-SCSTA001-2025《四川省好住房評價標準》
- 廣西常見中草藥知到智慧樹期末考試答案題庫2025年廣西中醫藥大學
- 嶺南建筑介紹課件
評論
0/150
提交評論