FG模块
详细API文档: Feature Generator
创建FG
标准用法
fg = build_fg(
fg_conf_path,
mc_conf_path=mc_conf_path,
)
# 单独添加label字段
fg.add_label("label")
# 单独添加sample id字段
fg.add_id("id")
IO中做Hash操作
某些场景下,需要将Hash处理放到IO中进行,需加上hash_in_io=True参数
fg = build_fg(
fg_conf_path,
mc_conf_path=mc_conf_path,
hash_in_io=True,
)
# 单独添加label字段
fg.add_label("label")
# 单独添加sample id字段
fg.add_id("id")
原始数据中已经做过Hash处理
某些场景下,训练数据已经将string类型特征在数据源处理阶段已经做过hash(没有hash bucketize)时,需加上already_hashed=True参数
fg = build_fg(
fg_conf_path,
mc_conf_path=mc_conf_path,
already_hashed=True,
)
# 单独添加label字段
fg.add_label("label")
# 单独添加sample id字段
fg.add_id("id")
为Dataset添加特征
# dataset = ... 定义dataset
# fg = ... 定义FG
# 无需手动调用varlen_feature/fixedlen_feature
# 直接通过fg添加特征
fg.add_io_features(dataset)
创建Sparse Model
from recis.nn.modules.models import RecISModel
class MyModel(nn.Module):
def __init__(self, fg: FG):
# 创建 sparse model,包括FeatureEngine和EmbeddingEngine
self.sparse_arch = RecISModel.from_fg(fg)
# ...
def forward(self, samples):
# 输入为dataset输出结果,key为特征名,value为tensor的dict
samples, ids, labels = self.sparse_arch(samples)
"""
3个输出
1. samples: 经过特征转换和特征查找后,根据mc concat聚合之后的block embedding
2. ids: dict,key为调用add_id时的名字,value为对应的值
3. labels: dict, key为调用add_label时的名字,value为对应的值
"""
# ...
# fg = ... 定义FG
# model = MyModel(fg)