從零構建屬于自己的GPT系列4:模型訓練3(訓練過程解讀、序列填充函數、損失計算函數、評價函數、代碼逐行解讀)

🚩🚩🚩Hugging Face 實戰系列 總目錄

有任何問題歡迎在下面留言
本篇文章的代碼運行界面均在PyCharm中進行
本篇文章配套的代碼資源已經上傳

從零構建屬于自己的GPT系列1:數據預處理
從零構建屬于自己的GPT系列2:模型訓練1
從零構建屬于自己的GPT系列3:模型訓練2
從零構建屬于自己的GPT系列4:模型訓練3

6 序列填充函數

def collate_fn(batch):input_ids = rnn_utils.pad_sequence(batch, batch_first=True, padding_value=5)labels = rnn_utils.pad_sequence(batch, batch_first=True, padding_value=-100)return input_ids, labels

7 損失計算函數

def caculate_loss(logit, target, pad_idx, smoothing=True):if smoothing:logit = logit[..., :-1, :].contiguous().view(-1, logit.size(2))target = target[..., 1:].contiguous().view(-1)eps = 0.1n_class = logit.size(-1)one_hot = torch.zeros_like(logit).scatter(1, target.view(-1, 1), 1)one_hot = one_hot * (1 - eps) + (1 - one_hot) * eps / (n_class - 1)log_prb = F.log_softmax(logit, dim=1)non_pad_mask = target.ne(pad_idx)loss = -(one_hot * log_prb).sum(dim=1)loss = loss.masked_select(non_pad_mask).mean()  # average laterelse:# loss = F.cross_entropy(predict_logit, target, ignore_index=pad_idx)logit = logit[..., :-1, :].contiguous().view(-1, logit.size(-1))labels = target[..., 1:].contiguous().view(-1)loss = F.cross_entropy(logit, labels, ignore_index=pad_idx)return loss

8 評價函數

def calculate_acc(logit, labels, ignore_index=-100):logit = logit[..., :-1, :].contiguous().view(-1, logit.size(-1))labels = labels[..., 1:].contiguous().view(-1)_, logit = logit.max(dim=-1)  # 對于每條數據,返回最大的index# 進行非運算,返回一個tensor,若labels的第i個位置為pad_id,則置為0,否則為1non_pad_mask = labels.ne(ignore_index)n_correct = logit.eq(labels).masked_select(non_pad_mask).sum().item()n_word = non_pad_mask.sum().item()return n_correct, n_word

9 訓練過程解讀

從零構建屬于自己的GPT系列1:數據預處理
從零構建屬于自己的GPT系列2:模型訓練1
從零構建屬于自己的GPT系列3:模型訓練2
從零構建屬于自己的GPT系列4:模型訓練3

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209242.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[力扣100] 10.滑動窗口的最大值

添加鏈接描述 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用單調隊列,把滑動窗口中最大的元素放在最頭quecollections.deque()nlen(nums)res[]# 初始化隊列,隊頭保存最大的數的下標,因為需要下標來…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支實現源碼分析(二)

一、前言 在本系列文章: Spring Security 6.x 系列(4)—— 基于過濾器鏈的源碼分析(一) 中著重分析了Spring Security在Spring Boot自動配置、 DefaultSecurityFilterChain和FilterChainProxy 的構造過程。 Spring …

Oauth2.0 認證

目錄 前言 1.介紹 2.Oauth2.0過程詳解 3.Oauth 整合到 Spring Boot 實踐 4.方法及配置詳解: 總結 前言 Oauth2.0 是非常流行的網絡授權表準,已經廣泛應用在全球范圍內,比較大的公司,如騰訊等都有大量的應用場景。 1.介紹 …

ARP欺騙攻擊

一.大概原理 ARP:address solution protocol 地址解析協議 ARP是一種基于局域網的TCP/IP協議,arp欺騙就是基于此協議的漏洞來達成我們的目的的,局域網中的數據傳輸并不是用ip地址傳輸的,而是靠mac地址。 我們如果出于某種目的想…

vue打包完成后出現空白頁原因及解決

vue打包完成后出現空白頁原因及解決 原因 資源路徑不對 路由模式:使用history, 此模式上線后易出現404 解決 1、vue.config.js中配置: publicPath: ./2、在后端要求做重定向 如在nginx中使用rewrite做重定向

【Fastadmin】利用 build_select 做一個樹狀下拉選擇框

1.效果展示 系統crud生成的下拉分類有些不是很好看,并且選擇困難,看不出級差,效果如下: 經過 build_select 加工后的效果,美觀好看,并添加上搜索功能: 2. 首先需要寫一個樹狀圖的數據格式 protected $datalist []; pu…

前沿科技與醫藥領域碰撞,《AI制藥方法與實踐》課程重磅上線

藥物發現是生物學、化學、醫學、藥學等基礎研究與工業轉化的重要窗口。近年來,AI技術的發展,為高投入、高失敗率的制藥行業帶來了全新機遇,或將徹底改變傳統制藥的研究范式。為了幫助更多人了解并掌握這一前沿技術,百度飛槳聯合清…

LeedCode刷題---滑動窗口問題

顧得泉:個人主頁 個人專欄:《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛,年薪百萬! 一、長度最小的子數組 題目鏈接:長度最小的子數組 題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。…

29 水仙花數

題目描述 所謂水仙花數,是指一個n位的正整數,其各位數字的n次方和等于該數本身。 例如153是水仙花數,153是一個3位數,并且1531^35^33^3. 輸入描述 第一行輸入一個整數n,表示一個n位的正整數。n在3到7之間,…

uniapp各種小程序分享 share - 主要流程 - 微信、抖音、快手、qq

參考 小程序環境 分享 | uni-app官網uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代碼,分享到微信朋友圈示例代碼,uni.share 在App端各社交平臺分享配置說明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…

MCS-51系列與AT89C5x系列單片機的介紹與AT系列的命名規則

MCS-51系列與AT89C5x系列單片機 主要涉及MCS-51系列與AT89C5x系列單片機的介紹與AT系列單片機的命名規則 文章目錄 MCS-51系列與AT89C5x系列單片機一、 MCS-51系列單片機二、AT89C5x系列單片機2.1 AT89C5x/AT89S5x系列單片機的特點2.2 AT89系列單片機的型號說明2.2.1 前綴2.2.2…

數組區段的最大最小值

題干 本題要求實現一個函數,找出數組中一部分數據的最大值和最小值。 題目保證沒有無效數據。 函數接口定義: void sublistMaxMin ( int* from, int* to, int* max, int* min ); 其中 from和to都是用戶傳入的參數,分別存放數組部分數據的起…

深度綁定的二維碼

南京西祠 500 萬股股份被以 1 元價格掛牌轉讓。 唏噓不已,就像現在的孩子們都知道玩抖音,我們那個時代,西祠胡同就是互聯網的代名詞。在一個叫做西祠胡同的地方,住著一群村里的年輕人,他們痛并快樂著,渴望…

節省時間,提高效率:深入解析MyBatis Plus

1. MyBatis Plus 概述 將Mybatis 通用Mapper PageHelper 升級成 MyBatis Plus 1.1 簡介 官網:https://baomidou.com/ 參考教程:https://baomidou.com/pages/24112f/ MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具&#…

QT之常用按鈕組件

QT之常用按鈕組件 導入圖標 布局 顯示選中 實驗結果 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_push…

mybatis 的快速入門以及基于spring boot整合mybatis(一)

MyBatis基礎 MyBatis是一款非常優秀的持久層框架,用于簡化JDBC的開發 準備工作: 1,創建sprong boot工程,引入mybatis相關依賴2,準備數據庫表User,實體類User3, 配置MyBatis(在applic…

前端打包環境配置步驟

獲取node安裝包并解壓 獲取node安裝包 wget https://npmmirror.com/mirrors/node/v16.14.0/node-v16.14.0-linux-x64.tar.xz 解壓 tar -xvf node-v16.14.0-linux-x64.tar.xz 創建軟鏈接 sudo ln -s 此文件夾的絕對路徑/bin/node /usr/local/bin/node,具體執行如下…

實現手機掃碼——掃描識別路由器參數

有個應用是批量自動檢測無線路由器,檢測前需要自動登錄路由器的管理界面進行設置,如設置wifi參數、連接模式,或者恢復出廠設置等。進入管理界面的登錄用戶名是admin,密碼則各不相同。此外也需要知道路由器的MAC地址,因…

【已解決】Win7虛擬機安裝VMtools報錯

在做以前的實驗的時候發現要用到Win7虛擬機,于是就安裝了一個Win7的虛擬機,但是發現屏幕太小,而且來回復制文本、復制文件太不方便了,索性就安裝了VMtools,發現還安裝不成– 情況1 報錯:本程序需要您將此…