当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch SimpleDeepFMNN用法及代码示例


本文简要介绍python语言中 torchrec.models.deepfm.SimpleDeepFMNN 的用法。

用法:

class torchrec.models.deepfm.SimpleDeepFMNN(num_dense_features: int, embedding_bag_collection: torchrec.modules.embedding_modules.EmbeddingBagCollection, hidden_layer_size: int, deep_fm_dimension: int)

参数

  • num_dense_features(int) -输入密集特征的数量。

  • embedding_bag_collection(torchrec.modules.embedding_modules.EmbeddingBagCollection) -用于定义 SparseArch 的嵌入包集合。

  • hidden_layer_size(int) -密集模块中使用的隐藏层大小。

  • deep_fm_dimension(int) -deep_fm 的深度交互模块中使用的输出层大小。

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

具有 DeepFM 架构的基本 resys 模块。通过学习每个特征的池化嵌入来处理稀疏特征。通过将密集特征投影到相同的嵌入空间来学习密集特征和稀疏特征之间的关系。通过本文提出的deep_fm学习那些密集和稀疏特征之间的相互作用:https://arxiv.org/pdf/1703.04247.pdf

该模块假设所有稀疏特征具有相同的嵌入维度(即每个EmbeddingBagConfig 使用相同的embedding_dim)

在整个模型的文档中使用以下符号:

  • F:稀疏特征的数量

  • D:embedding_dimension 稀疏特征

  • B:批量大小

  • num_features:密集特征的数量

例子:

B = 2
D = 8

eb1_config = EmbeddingBagConfig(
    name="t1", embedding_dim=D, num_embeddings=100, feature_names=["f1", "f3"]
)
eb2_config = EmbeddingBagConfig(
    name="t2",
    embedding_dim=D,
    num_embeddings=100,
    feature_names=["f2"],
)
ebc_config = EmbeddingBagCollectionConfig(tables=[eb1_config, eb2_config])

ebc = EmbeddingBagCollection(config=ebc_config)
sparse_nn = SimpleDeepFMNN(
    embedding_bag_collection=ebc, hidden_layer_size=20, over_embedding_dim=5
)

features = torch.rand((B, 100))

#     0       1
# 0   [1,2] [4,5]
# 1   [4,3] [2,9]
# ^
# feature
sparse_features = KeyedJaggedTensor.from_offsets_sync(
    keys=["f1", "f3"],
    values=torch.tensor([1, 2, 4, 5, 4, 3, 2, 9]),
    offsets=torch.tensor([0, 2, 4, 6, 8]),
)

logits = sparse_nn(
    dense_features=features,
    sparse_features=sparse_features,
)

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torchrec.models.deepfm.SimpleDeepFMNN。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。