一、TorchRec里邊的輸入輸出類型

TorchRec中的輸入和輸出格式


文章目錄

  • TorchRec中的輸入和輸出格式
  • 前言
  • 一、JaggedTensor
    • 1.1 核心概念
    • 1.2 核心屬性,也就是參數
    • 1.3 關鍵操作與方法
  • 二、KeyedJaggedTensor
    • 2.1 核心概念
    • 2.2 核心屬性,也就是參數
  • 3、KeyedTensor
  • 總結


前言

  • TorchRec具有其特定的輸入輸出格式,跟Torch中的Tonsor有些不同,下邊就讓我們來了解他們。

一、JaggedTensor

  • JaggedTensor 通過長度、值和偏移量來表示稀疏特征。它之所以被稱為“jagged”,是因為它可以有效地表示可變長度序列的數據。
  • 相比之下,規范的 torch.Tensor 假設每個序列具有相同的長度,但這在真實世界數據中通常不是這種情況。
  • JaggedTensor 有助于表示此類數據而無需填充,從而使其非常高效。

1.1 核心概念

  • JaggedTensor表示一個包含多個不等長序列的2D張量,例如:
    • 用戶歷史點擊序列:[[item1, item2], [item3], [item4, item5, item6], …]
    • 文本分詞后的句子:[[tokenA, tokenB], [tokenC], …]

1.2 核心屬性,也就是參數

  • values (Tensor): 一個 1D 張量,包含每個實體的實際值,連續存儲,形狀為[total_values]
  • lengths (Optional[Tensor]): 一個整數列表,表示每個實體的元素數量,形狀為[B]
  • offsets (Optional[Tensor]): 一個整數列表,表示扁平化值張量中每個序列的起始索引。這些提供了長度的替代方案。形狀為[B+1]

演示代碼如下:

import torch
from torchrec.sparse.jagged_tensor import JaggedTensor# 方式1 - 使用lengths
values = torch.tensor([1, 2, 3, 4, 5])
lengths = torch.tensor([2, 1, 2])  # 三個序列的長度分別為2,1,2
jt = JaggedTensor(lengths=lengths, values=values)
# 意思就是有三個張量[[1, 2],[3],[4, 5]]# 方式2 - 使用offsets
values = torch.tensor([10, 20, 30, 40])
offsets = torch.tensor([1, 3])  # 兩個序列的偏移量
jt = JaggedTensor(offsets=offsets, values=values)
# 意思就是有兩個張量[[10],[20, 30, 40]]

1.3 關鍵操作與方法

  • 操作:
    • 拼接
    torchrec.sparse.jagged_ops.concat(jt1, jt2)
    
    • 分塊
    jt.split(split_size)
    
    • 聚合
    jt.sum(dim=1) 或 jt.mean(dim=1)
    
  • 方法
    • 與稠密張量互轉()
    # 轉Padded Tensor
    padded, mask = jt.to_padded_tensor(padding_value=0, max_length=5)
    # 轉Packed Tensor (類似PyTorch的PackedSequence)
    packed = jt.to_packed_tensor()
    
    • 嵌入表查詢
    # 轉Padded Tensor
    embedding_bag = torch.nn.EmbeddingBag(num_embeddings=100, embedding_dim=16)
    embeddings = embedding_bag(jt.values, offsets=jt.offsets())
    

二、KeyedJaggedTensor

  • KeyedJaggedTensor 通過引入鍵(通常是特征名稱)來標記不同的特征組(例如,用戶特征和項目特征),從而擴展了 JaggedTensor 的功能。
  • 這是 EmbeddingBagCollectionEmbeddingCollectionforward 中使用的數據類型,因為它們用于表示表中的多個特征。

2.1 核心概念

  • KeyedJaggedTensor 是用于管理多個變長特征序列的高效數據結構,核心場景包括:

    • 多特征推薦系統:同時處理用戶歷史點擊(click_ids)、搜索詞(search_ids)、收藏商品(favor_ids)等不同特征

2.2 核心屬性,也就是參數

  • keys (List[str]): 特征名稱列表,如 [“click”, “search”]
  • values (Tensor): 一個 1D 張量,所有特征值的展平拼接,連續存儲,形狀為[total_values]
  • lengths (Optional[Tensor]): 一個整數列表,表示每個特征在樣本中的長度,按 keys 順序排列
  • offsets (Optional[Tensor]): 一個整數列表,表示扁平化值張量中每個特征列的起始索引。形狀為[B+1]

演示代碼如下:

import torch
from torchrec.sparse.jagged_tensor import KeyedJaggedTensor, JaggedTensor# 方式一:從多個JaggedTensor構建
# 創建兩個特征的JaggedTensor
click_jt = JaggedTensor(lengths=torch.tensor([2, 1]),values=torch.tensor([101, 202, 303])
)
search_jt = JaggedTensor(lengths=torch.tensor([1, 3]),values=torch.tensor([401, 402, 403, 404])
)# 合并為KeyedJaggedTensor
kjt = KeyedJaggedTensor.from_jagged_tensors(keys=["click", "search"],tensors=[click_jt, search_jt]
)print(kjt)
# KeyedJaggedTensor({
#    "click": JaggedTensor([[101, 202], [303]]),
#    "search": JaggedTensor([[401], [402, 403, 404]])
# })# 方式二:從原始數據直接構建
kjt = KeyedJaggedTensor(keys=["click", "search"],values=torch.tensor([101, 202, 303, 401, 402, 403, 404]),lengths=torch.tensor([2, 1, 1, 3]),  # click_lengths + search_lengthsoffsets=None  # 自動生成
)
# 跟上邊是一樣的效果

3、KeyedTensor

  • torch.Tensor 的包裝器,允許通過鍵訪問張量值。

總結

  • 本節我們學習TorchRec中的數據類型,了解他的輸入輸出格式。

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

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

相關文章

JAVA實現在H5頁面中點擊鏈接直接進入微信小程序

在普通的Html5頁面中如何實現點擊URL鏈接直接進入微信小程序,不需要掃描小程序二維碼? 網上介紹的很多方法是在小程序后臺設置Schema,不過我進入我的小程序后臺在開發設置里面 沒有找到設置小程序Schema的地方,我是通過調用API接口…

uniapp解決上架華為應用市場審核要求-監聽權限的申請

支持android平臺全局監聽權限的申請。當申請權限時,會在頁面頂部顯示申請權限的目的。主要解決上架華為應用市場審核要求:APP在調用終端權限時,應同步告知用戶申請該權限的目的。 因為如果不提示,你上架應用市場會被打打回來 Tip…

文件IO5(JPEG圖像原理與應用)

JPEG圖像原理與應用 ? 基本概念 JPEG(Joint Photographic Experts Group)指的是聯合圖像專家組,是國際標準化組織ISO制訂并于1992年發布的一種面向連續色調靜止圖像的壓縮編碼標準,所以也被稱為JPEG標準。 同樣,JP…

vue3 history路由模式刷新頁面報錯問題解決

在使用history路由模式時刷新網頁提示404錯誤,這是改怎么辦呢。 官方解決辦法 https://router.vuejs.org/zh/guide/essentials/history-mode.html

3D激光輪廓儀知識整理(待完善)

文章目錄 1.原理和應用場景1.1 相機原理1.1.1 測量原理1.1.2 相機激光器1.1.3 沙姆鏡頭1.1.4 相機標定1.1.5 中心線提取 1.2 應用場景1.2.1 測量相關應用1.2.2 缺陷檢測相關應用 2.相機參數介紹及選型介紹2.1 成像原理2.2 原始圖成像2.3 生成輪廓圖2.4 相機規格參數2.4.1 單輪廓…

w285藥店管理系統的設計與實現

🙊作者簡介:多年一線開發工作經驗,原創團隊,分享技術代碼幫助學生學習,獨立完成自己的網站項目。 代碼可以查看文章末尾??聯系方式獲取,記得注明來意哦~🌹贈送計算機畢業設計600個選題excel文…

Google Chrome Canary版官方下載及安裝教程【適用于開發者與進階用戶】

谷歌瀏覽器(Google Chrome)以其高性能、強擴展性和良好的用戶體驗深受全球用戶喜愛。在其多個版本中,Chrome Canary因具備最前沿的功能測試環境,成為開發者和技術探索者的首選。如果你希望第一時間體驗Google Chrome最新功能&…

RocketMQ深度百科全書式解析

?一、核心架構與設計哲學? ?1. 設計目標? ?海量消息堆積?:單機支持百萬級消息堆積,適合大數據場景(如日志采集)。?嚴格順序性?:通過隊列分區(Queue)和消費鎖機制保證局部順序。?事務…

每日一題(小白)暴力娛樂篇19

樣例: 6 1 1 4 5 1 4 輸出: 56 66 52 44 54 64 分析題意可以得知,就是接收一串數字,將數字按照下標每次向右移動一位(末尾循環到第一位),每次移動玩計算一下下標和數字的乘積且累加。 ①接收…

如何應對“最后時刻任務堆積”(鼓包現象)

應對“最后時刻任務堆積”(鼓包現象)的方法包括:合理規劃項目時間表、強化進度跟蹤管理、明確任務優先級、有效的資源配置、提升團隊溝通效率。其中,強化進度跟蹤管理尤為關鍵。根據項目管理協會(PMI)的調查…

19C-19.3環境-impdp導入到view時卡死

幫客戶導入一個用戶時,發現VIEW部分無法進行下去 Processing object type SCHEMA_EXPORT/TABLE/IDENTITY_COLUMN Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION Processing object type SCH…

一、簡單的 Django 服務

一、配置虛擬環境 1.1 創建一個文件夾在導航欄輸入cmd打開 1.2 安裝依賴兩個庫 pip install virtualenv virtualenvwrapper-win -i https://pypi.tuna.tsinghua.edu.cn/simple驗證是否安裝成功 virtualenv --version pip show virtualenvwrapper-win 1.3 創建虛擬環境 mkvi…

道路運輸安全員崗位事項有哪些?

道路運輸安全員的崗位事項主要包括以下幾個方面: 安全制度與計劃 參與制定和完善道路運輸企業的安全管理制度、安全操作規程等,確保各項安全工作有章可循。協助制定年度安全工作計劃和目標,并負責組織實施和監督執行情況,定期對…

瀟灑浪: Dify 上傳自定義文件去除內容校驗 File validation failed for file: re.json

Dify上傳文件 添加其他文件類型如 my.myselfsuffix 上傳成功 執行報錯 File validation failed for file: re.json 解決辦法 Notepad 搜索dify源碼 注釋掉,重啟容器 或者直接在容器中修改重啟

工作記錄 2015-08-24

工作記錄 2015-08-24 序號 工作 相關人員 1 更新76.19的D:\FNEHRRD,更新的差不多了,還在測試中。具體情況見附件。 郝 識別引擎監控 Ps (iCDA LOG :剔除了204篇ASG_BLANK之后的結果): LOG_File 20150823.txt BLANK_CDA/ALL 102/947 (10.8%) TIME…

Robot---SPLITTER行星探測機器人

1 背景 先給各位讀者朋友普及一個航天小知識,截止到目前為止,登陸火星的火星車有哪些?結果比較令人吃驚:當前只有美國和中國登陸過火星。 “勇氣”號(Spirit):2004年1月4日,美國國家…

Python asyncio

一些Pre關鍵概念 asyncio 本質上還是單進程單線程的Python程序; 建立event_loop 概念,上面event_loop 可以理解為大腦,下面是若干個可執行的Task; Task 沒有控制權,沒有辦法控制event_loop 執行某個Task,只…

Dify什么?Dify 零門檻打造專屬 AI 應用

Dify 是一個專注于簡化大語言模型(LLM)應用開發的開源平臺,旨在幫助用戶通過可視化界面和模塊化工具快速構建、部署和管理 AI 驅動的應用程序。以下是其核心特點: 主要功能 可視化編排 提供直觀的界面,無需深入編碼即…

Hierarchical Reinforcement Learning for Course Recommendation in MOOCs論文閱讀

論文1簡介 標題:Hierarchical Reinforcement Learning for Course Recommendation in MOOCs 作者:Jing Zhang, Bowen Hao, Bo Chen, Cuiping Li, Hong Chen, Jimeng Sun 單位: 中國人民大學教育部數據工程與知識工程重點實驗室、 中國人民大學信息學院…

零基礎學Git

大家好!最近跟著網上的課程看了一下git的課,淺淺地學了一下,以下內容為作為一個小白初識git的學習歷程和學習筆記!!! 1.Git概述 1.1什么是Git? 分布式版本控制系統(DVCS)&#x…