表格学习器

用于快速获取可训练表格数据的 Learner 函数

您可能想在此模块中使用的主函数是 tabular_learner。它会自动创建一个适合您数据的 TabularModel 并推断出正确的损失函数。有关上下文中的使用示例,请参阅表格教程

主要函数


源码

TabularLearner

 TabularLearner (dls:fastai.data.core.DataLoaders, model:Callable,
                 loss_func:Optional[Callable]=None, opt_func:fastai.optimi
                 zer.Optimizer|fastai.optimizer.OptimWrapper=<function
                 Adam>, lr:float|slice=0.001, splitter:Callable=<function
                 trainable_params>, cbs:fastai.callback.core.Callback|coll
                 ections.abc.MutableSequence|None=None, metrics:Union[Call
                 able,collections.abc.MutableSequence,NoneType]=None,
                 path:str|pathlib.Path|None=None,
                 model_dir:str|pathlib.Path='models',
                 wd:float|int|None=None, wd_bn_bias:bool=False,
                 train_bn:bool=True, moms:tuple=(0.95, 0.85, 0.95),
                 default_cbs:bool=True)

用于表格数据的 Learner

类型 默认值 详情
dls 数据加载器 包含 fastai 或 PyTorch DataLoaderDataLoaders
模型 可调用对象 用于训练或推理的 PyTorch 模型
损失函数 可选 None 损失函数。默认为 dls 中的损失函数
优化函数 fastai.optimizer.Optimizer | fastai.optimizer.OptimWrapper Adam 用于训练的优化函数
学习率 float | slice 0.001 默认学习率
分割器 可调用对象 可训练参数 将模型分割为参数组。默认为一个参数组
回调函数 fastai.callback.core.Callback | collections.abc.MutableSequence | None None 要添加到 LearnerCallback 函数
指标 Union None 在验证集上计算的 Metric 指标
路径 str | pathlib.Path | None None 保存、加载和导出模型的父目录。默认为 dlspath
模型目录 str | pathlib.Path 模型 保存和加载模型的子目录
权重衰减 float | int | None None 默认权重衰减
bn_bias_权重衰减 bool False 对归一化层和偏置参数应用权重衰减
训练 bn bool True 训练冻结的归一化层
动量 tuple (0.95, 0.85, 0.95) 调度器的默认动量
默认回调函数 bool True 包含默认的 Callback 函数

它的工作方式与普通 Learner 完全相同,唯一的区别在于它实现了一个专门用于处理单行数据的 predict 方法。


源码

tabular_learner

 tabular_learner (dls:TabularDataLoaders, layers:list=None,
                  emb_szs:list=None, config:dict=None, n_out:int=None,
                  y_range:Tuple=None, loss_func:Callable|None=None,
                  opt_func:Optimizer|OptimWrapper=<function Adam>,
                  lr:float|slice=0.001, splitter:Callable=<function
                  trainable_params>,
                  cbs:Callback|MutableSequence|None=None,
                  metrics:Callable|MutableSequence|None=None,
                  path:str|Path|None=None, model_dir:str|Path='models',
                  wd:float|int|None=None, wd_bn_bias:bool=False,
                  train_bn:bool=True, moms:tuple=(0.95, 0.85, 0.95),
                  default_cbs:bool=True)

使用 dls 获取一个 Learner,带有 metrics,并包含一个使用剩余参数创建的 TabularModel

类型 默认值 详情
dls 数据加载器 包含 fastai 或 PyTorch DataLoaderDataLoaders
list None LinBnDrop 生成的层的大小
嵌入大小 list None 所有类别特征的 n_unique, embedding_size 元组
配置 dict None 来自 tabular_config 的 TabularModel 配置参数
输出大小 int None 模型的最终输出大小
y 范围 Tuple None 最终 sigmoid 函数的低值和高值范围
损失函数 可选 None 损失函数。默认为 dls 中的损失函数
优化函数 fastai.optimizer.Optimizer | fastai.optimizer.OptimWrapper Adam 用于训练的优化函数
学习率 float | slice 0.001 默认学习率
分割器 可调用对象 可训练参数 将模型分割为参数组。默认为一个参数组
回调函数 fastai.callback.core.Callback | collections.abc.MutableSequence | None None 要添加到 LearnerCallback 函数
指标 Union None 在验证集上计算的 Metric 指标
路径 str | pathlib.Path | None None 保存、加载和导出模型的父目录。默认为 dlspath
模型目录 str | pathlib.Path 模型 保存和加载模型的子目录
权重衰减 float | int | None None 默认权重衰减
bn_bias_权重衰减 bool False 对归一化层和偏置参数应用权重衰减
训练 bn bool True 训练冻结的归一化层
动量 tuple (0.95, 0.85, 0.95) 调度器的默认动量
默认回调函数 bool True 包含默认的 Callback 函数

如果您的数据是使用 fastai 构建的,您可能不需要向 emb_szs 传递任何内容,除非您想更改库的默认设置(由 get_emb_sz 生成);n_out 也应自动推断。layers 默认为 [200,100],并与 config 一起传递给 TabularModel

使用 tabular_config 创建 config 并自定义所使用的模型。y_range 提供了便捷访问,因为此参数经常使用。

所有其他参数都传递给 Learner

path = untar_data(URLs.ADULT_SAMPLE)
df = pd.read_csv(path/'adult.csv')
cat_names = ['workclass', 'education', 'marital-status', 'occupation', 'relationship', 'race']
cont_names = ['age', 'fnlwgt', 'education-num']
procs = [Categorify, FillMissing, Normalize]
dls = TabularDataLoaders.from_df(df, path, procs=procs, cat_names=cat_names, cont_names=cont_names, 
                                 y_names="salary", valid_idx=list(range(800,1000)), bs=64)
learn = tabular_learner(dls)

源码

TabularLearner.predict

 TabularLearner.predict (row:pandas.core.series.Series)

对单个样本进行预测

类型 详情
Series 要预测的特征

我们可以将单行数据传递给 TabularLearnerpredict 方法。其输出与其他 predict 方法略有不同,因为它总会同时返回输入数据。

row, clas, probs = learn.predict(df.iloc[0])
row.show()
工作类型 教育程度 婚姻状况 职业 关系 种族 教育程度-数值_缺失 年龄 最终权重 教育程度-数值 薪资
0 私营 大专学历 已婚公民配偶 #na# 妻子 白人 False 49.0 101320.001685 12.0 <50k
clas, probs
(tensor(0), tensor([0.5264, 0.4736]))