表格模型

可用于表格数据的基础模型

嵌入


源码

emb_sz_rule

 emb_sz_rule (n_cat:int)

根据 n_cat 选择嵌入大小的经验法则

类型 详情
n_cat int 类别的基数
返回 int

经过反复试验,这条通用规则取以下两个值中的较小者

  • 一个维度空间为 600
  • 一个维度空间等于变量基数的 1.6 次方的 0.56 幂。

这为变量提供了一个很好的嵌入空间起点。对于希望深入研究这种实践的高级用户,您可以自行调整这些值。稍微调整这个通用公式以获得更好的结果是很常见的。


源码

get_emb_sz

 get_emb_sz
             (to:fastai.tabular.core.Tabular|fastai.tabular.core.TabularPa
             ndas, sz_dict:dict=None)

获取 TabularTabularPandas 中每个 cat_name 的嵌入大小,或者使用 sz_dict 手动填充嵌入大小

类型 默认值 详情
fastai.tabular.core.Tabular | fastai.tabular.core.TabularPandas
sz_dict dict {'类别名称': 大小, ...} 字典,用于覆盖默认的 emb_sz_rule
返回 list 每个类别的嵌入大小列表

源码

TabularModel

 TabularModel (emb_szs:list, n_cont:int, out_sz:int, layers:list,
               ps:float|MutableSequence=None, embed_p:float=0.0,
               y_range=None, use_bn:bool=True, bn_final:bool=False,
               bn_cont:bool=True, act_cls=ReLU(inplace=True),
               lin_first:bool=True)

用于表格数据的基础模型。

类型 默认值 详情
emb_szs list 每个分类变量的 (嵌入数量, 嵌入维度) 序列
n_cont int 连续变量数量
out_sz int 最终 LinBnDrop 层的输出数量
layers list 用于指定每个 LinBnDrop 层输入和输出大小的整数序列
ps float | collections.abc.MutableSequence LinBnDrop 的 Dropout 概率序列
embed_p float 0.0 Embedding 层的 Dropout 概率
y_range NoneType SigmoidRange 激活的下限和上限
use_bn bool True LinBnDrop 层中使用 BatchNorm1d
bn_final bool False 在最终层使用 BatchNorm1d
bn_cont bool True 在连续变量上使用 BatchNorm1d
act_cls ReLU ReLU(inplace=True) LinBnDrop 层的激活类型
lin_first bool True 线性层在 LinBnDrop 层中是第一个还是最后一个

此模型期望您的 cat(分类)变量和 cont(连续)变量分开。cat 变量经过一个 Embedding 层和可能的 Dropout 层,而 cont 变量经过可能的 BatchNorm1d 层。之后两者被连接起来,并经过一系列 LinBnDrop 层,最后是一个对应于预期输出的 Linear 层。

emb_szs = [(4,2), (17,8)]
m = TabularModel(emb_szs, n_cont=2, out_sz=2, layers=[200,100]).eval()
x_cat = torch.tensor([[2,12]]).long()
x_cont = torch.tensor([[0.7633, -0.1887]]).float()
out = m(x_cat, x_cont)

源码

tabular_config

 tabular_config (ps:float|MutableSequence=None, embed_p:float=0.0,
                 y_range=None, use_bn:bool=True, bn_final:bool=False,
                 bn_cont:bool=True, act_cls=ReLU(inplace=True),
                 lin_first:bool=True)

一个方便函数,用于轻松为 TabularModel 创建配置

类型 默认值 详情
ps float | collections.abc.MutableSequence LinBnDrop 的 Dropout 概率序列
embed_p float 0.0 Embedding 层的 Dropout 概率
y_range NoneType SigmoidRange 激活的下限和上限
use_bn bool True LinBnDrop 层中使用 BatchNorm1d
bn_final bool False 在最终层使用 BatchNorm1d
bn_cont bool True 在连续变量上使用 BatchNorm1d
act_cls ReLU ReLU(inplace=True) LinBnDrop 层的激活类型
lin_first bool True 线性层在 LinBnDrop 层中是第一个还是最后一个

任何直接设置 TabularModel 内部参数的操作都应该通过此函数进行

config = tabular_config(embed_p=0.6, use_bn=False); config