= [(4,2), (17,8)]
emb_szs = TabularModel(emb_szs, n_cont=2, out_sz=2, layers=[200,100]).eval()
m = torch.tensor([[2,12]]).long()
x_cat = torch.tensor([[0.7633, -0.1887]]).float()
x_cont = m(x_cat, x_cont) out
表格模型
可用于表格数据的基础模型
嵌入
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)
获取 Tabular
或 TabularPandas
中每个 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
层。
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
内部参数的操作都应该通过此函数进行
= tabular_config(embed_p=0.6, use_bn=False); config config