當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch DeepFM用法及代碼示例


本文簡要介紹python語言中 torchrec.modules.deepfm.DeepFM 的用法。

用法:

class torchrec.modules.deepfm.DeepFM(dense_module: torch.nn.modules.module.Module)

參數

dense_module(nn.Module) -任何可以在 DeepFM 中使用的定製模塊(例如 MLP)。該模塊的in_features必須等於元素計數。例如,輸入嵌入是 [randn(3, 2, 3), randn(3, 4, 5)],in_features 應該是:2*3+4*5。

基礎:torch.nn.modules.module.Module

這是DeepFM module

本模塊不涵蓋已發表論文的end-end 函數。相反,它僅涵蓋出版物的深層部分。它用於學習high-order 特征交互。如果要學習低階特征交互,請改用FactorizationMachine模塊,它將共享該模塊的相同嵌入輸入。

為了支持建模靈活性,我們將關鍵組件定製為:

  • 與公開論文不同,我們將輸入從原始稀疏

    特征到特征的嵌入。它允許嵌入維度和嵌入數量的靈活性,隻要所有嵌入張量具有相同的批量大小。

  • 在公開論文之上,我們允許用戶自定義隱藏層

    可以是任何模塊,不僅限於 MLP。

模塊的一般架構如下:

# 1 x 1 output
# ^
# pass into `dense_module`
# ^
# 1 x 90
# ^
# concat
# ^
# 1 x 20, 1 x 30, 1 x 40 list of embeddings

例子:

import torch
from torchrec.fb.modules.deepfm import DeepFM
from torchrec.fb.modules.mlp import LazyMLP
batch_size = 3
output_dim = 30
# the input embedding are a torch.Tensor of [batch_size, num_embeddings, embedding_dim]
input_embeddings = [
    torch.randn(batch_size, 2, 64),
    torch.randn(batch_size, 2, 32),
]
dense_module = nn.Linear(192, output_dim)
deepfm = DeepFM(dense_module=dense_module)
deep_fm_output = deepfm(embeddings=input_embeddings)

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torchrec.modules.deepfm.DeepFM。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。