配置¶
核心配置¶
数据配置.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
target
|
Optional[List[str]]
|
目标列名称的字符串列表.对于SSL任务以外的所有任务都是必需的. |
None
|
continuous_cols
|
List
|
数值字段的列名称.默认为 [] |
list()
|
categorical_cols
|
List
|
需要特殊处理的分类字段的列名称.默认为 [] |
list()
|
date_columns
|
List
|
(列名, 频率, 格式) 元组形式的日期字段.例如,名为 introduction_date 且频率为 "2023-12" 的月度字段应有一个条目 ('intro_date','M','%Y-%m') |
list()
|
encode_date_columns
|
bool
|
是否对从日期派生的变量进行编码 |
True
|
validation_split
|
Optional[float]
|
保留为验证集的训练行百分比.仅在未单独提供验证数据时使用 |
0.2
|
continuous_feature_transform
|
Optional[str]
|
是否在建模前对特征进行变换.默认关闭.可选值为: [ |
None
|
normalize_continuous_features
|
bool
|
是否对输入特征(连续)进行归一化 |
True
|
quantile_noise
|
int
|
未实现.如果指定,将在数据上拟合 QuantileTransformer,并添加标准差为 :quantile_noise: * data.std 的高斯噪声;这将使离散值更易分离.请注意,此变换不会对结果数据应用高斯噪声,噪声仅用于 QuantileTransformer |
0
|
num_workers
|
Optional[int]
|
用于数据加载的工作线程数.对于 Windows 系统始终设置为 0 |
0
|
pin_memory
|
bool
|
是否为数据加载固定内存 |
True
|
handle_unknown_categories
|
bool
|
是否将分类列中的未知或新值处理为未知 |
True
|
handle_missing_values
|
bool
|
是否将分类列中的缺失值处理为未知 |
True
|
Source code in src/pytorch_tabular/config/config.py
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
|
基础模型配置.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
task
|
str
|
指定问题是回归还是分类. |
required |
head
|
Optional[str]
|
模型使用的头部.应为 |
'LinearHead'
|
head_config
|
Optional[Dict]
|
定义头部的配置字典.如果留空,将初始化为默认的线性头部. |
lambda: {'layers': ''}()
|
embedding_dims
|
Optional[List]
|
每个分类列的嵌入维度列表,格式为 (基数, 嵌入维度).如果留空,将根据分类列的基数推断,规则为 min(50, (x + 1) // 2). |
None
|
embedding_dropout
|
float
|
应用于分类嵌入的丢弃率.默认为 0.0. |
0.0
|
batch_norm_continuous_input
|
bool
|
如果为 True,将通过 BatchNorm 层对连续层进行归一化. |
True
|
virtual_batch_size
|
Optional[int]
|
如果不为 None,所有 BatchNorm 将被转换为 GhostBatchNorm,并指定虚拟批量大小.默认为 None. |
None
|
learning_rate
|
float
|
模型的学习率.默认为 1e-3. |
0.001
|
loss
|
Optional[str]
|
应用的损失函数.默认情况下,回归为 MSELoss,分类为 CrossEntropyLoss.除非你确定自己在做什么,否则请保持为 MSELoss 或 L1Loss 用于回归,CrossEntropyLoss 用于分类. |
None
|
metrics
|
Optional[List[str]]
|
训练期间需要跟踪的指标列表.指标应为 |
None
|
metrics_prob_input
|
Optional[bool]
|
配置中定义的分类指标的强制参数.定义指标函数的输入是概率还是类别.长度应与指标数量相同.默认为 None. |
None
|
metrics_params
|
Optional[List]
|
传递给指标函数的参数. |
None
|
target_range
|
Optional[List]
|
限制输出变量的范围.当前忽略多目标回归.通常用于回归问题.如果留空,将不应用任何限制. |
None
|
seed
|
int
|
用于可重复性的种子.默认为 42. |
42
|
Source code in src/pytorch_tabular/config/config.py
706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 |
|
基础 SSLModel 配置.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
encoder_config
|
Optional[ModelConfig]
|
用于模型的编码器的配置.应为 PyTorch Tabular 中定义的模型配置之一. |
None
|
decoder_config
|
Optional[ModelConfig]
|
用于模型的解码器的配置.应为 PyTorch Tabular 中定义的模型配置之一.默认为 nn.Identity. |
None
|
embedding_dims
|
Optional[List]
|
每个分类列的嵌入维度,以元组列表 (基数, 嵌入维度) 的形式表示.如果留空,将根据分类列的基数推断,使用规则 min(50, (x + 1) // 2). |
None
|
embedding_dropout
|
float
|
应用于分类嵌入的 dropout.默认为 0.1. |
0.1
|
batch_norm_continuous_input
|
bool
|
如果为 True,我们将通过 BatchNorm 层对连续层进行归一化. |
True
|
virtual_batch_size
|
Optional[int]
|
如果不为 None,所有 BatchNorm 将被转换为具有指定虚拟批量大小的 GhostBatchNorm.默认为 None. |
None
|
learning_rate
|
float
|
模型的学习率.默认为 1e-3. |
0.001
|
seed
|
int
|
用于可重复性的种子.默认为 42. |
42
|
Source code in src/pytorch_tabular/config/config.py
895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 |
|
训练器配置.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
batch_size
|
int
|
每个训练批次中的样本数量 |
64
|
data_aware_init_batch_size
|
int
|
数据感知初始化时每个训练批次中的样本数量, 适用时默认值为2000 |
2000
|
fast_dev_run
|
bool
|
如果设置为 |
False
|
max_epochs
|
int
|
要运行的最大周期数 |
10
|
min_epochs
|
Optional[int]
|
强制训练至少这些周期数.默认值为1 |
1
|
max_time
|
Optional[int]
|
经过此时间后停止训练.默认禁用(None) |
None
|
accelerator
|
Optional[str]
|
用于训练的加速器.可以是以下之一:
'cpu','gpu','tpu','ipu', 'mps', 'auto'.默认为'auto'.
可选值为:[ |
'auto'
|
devices
|
Optional[int]
|
用于训练的设备数量(整数).-1表示使用所有可用设备. 默认情况下,使用所有可用设备(-1) |
-1
|
devices_list
|
Optional[List[int]]
|
用于训练的设备列表(列表).如果指定,
优先于 |
None
|
accumulate_grad_batches
|
int
|
每k个批次或按字典设置累积梯度.训练器 也会在最后一个不可整除的步骤数上调用optimizer.step(). |
1
|
auto_lr_find
|
bool
|
在调用trainer.tune()时运行学习率查找算法, 以找到最佳初始学习率. |
False
|
auto_select_gpus
|
bool
|
如果启用且 |
True
|
check_val_every_n_epoch
|
int
|
每n个训练周期检查一次验证. |
1
|
gradient_clip_val
|
float
|
梯度裁剪值 |
0.0
|
overfit_batches
|
float
|
使用训练集的此部分数据.如果不为零,将使用相同的 训练集进行验证和测试.如果训练数据加载器的shuffle=True,Lightning 将自动禁用它.对于快速调试或故意过拟合很有用. |
0.0
|
deterministic
|
bool
|
如果为真,启用cudnn.deterministic.可能会使系统变慢,但 确保可重复性. |
False
|
profiler
|
Optional[str]
|
在训练期间分析各个步骤并协助识别
瓶颈.可以是None、simple或advanced、pytorch.可选值为:
[ |
None
|
early_stopping
|
Optional[str]
|
需要监控的损失/指标以进行早停.如果 为None,则不会进行早停 |
'valid_loss'
|
early_stopping_min_delta
|
float
|
早停中损失/指标的最小变化量, 符合改进条件 |
0.001
|
early_stopping_mode
|
str
|
损失/指标应优化的方向.可选值为:
[ |
'min'
|
early_stopping_patience
|
int
|
在损失/指标没有进一步改善之前等待的周期数 |
3
|
early_stopping_kwargs
|
Optional[Dict]
|
早停回调的额外关键字参数. 有关更多详细信息,请参阅PyTorch Lightning EarlyStopping回调的文档. |
lambda: {}()
|
checkpoints
|
Optional[str]
|
需要监控的损失/指标以进行检查点保存.如果为None, 则不会进行检查点保存 |
'valid_loss'
|
checkpoints_path
|
str
|
保存模型的路径 |
'saved_models'
|
checkpoints_every_n_epochs
|
int
|
检查点之间的训练步数 |
1
|
checkpoints_name
|
Optional[str]
|
保存模型的名称.如果留空,
首先会查找experiment_config中的 |
None
|
checkpoints_mode
|
str
|
损失/指标应优化的方向 |
'min'
|
checkpoints_save_top_k
|
int
|
保存的最佳模型数量 |
1
|
checkpoints_kwargs
|
Optional[Dict]
|
检查点回调的额外关键字参数. 有关更多详细信息,请参阅PyTorch Lightning ModelCheckpoint回调的文档. |
lambda: {}()
|
load_best
|
bool
|
标志以加载训练期间保存的最佳模型 |
True
|
track_grad_norm
|
int
|
在日志记录器中跟踪和记录梯度范数.默认值-1表示不跟踪. 1表示L1范数,2表示L2范数,依此类推. |
-1
|
progress_bar
|
str
|
进度条类型.可以是以下之一: |
'rich'
|
precision
|
int
|
模型的精度.可以是以下之一: |
32
|
seed
|
int
|
随机数生成器的种子.默认为42 |
42
|
trainer_kwargs
|
Dict[str, Any]
|
传递给PyTorch Lightning Trainer的额外关键字参数.请参阅 https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.trainer.html#pytorch_lightning.trainer.Trainer |
dict()
|
Source code in src/pytorch_tabular/config/config.py
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
|
实验配置.使用 WandB 和 Tensorboard 进行实验跟踪.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
project_name
|
str
|
所有运行日志所属的项目名称.对于 Tensorboard,这定义了日志保存的文件夹, 对于 W&B,这定义了项目名称. |
MISSING
|
run_name
|
Optional[str]
|
运行的名称;用于识别该运行的特定标识符.如果留空,将自动生成一个名称. |
None
|
exp_watch
|
Optional[str]
|
所需的日志记录级别.可以是 |
None
|
log_target
|
str
|
确定日志记录发生的位置 - Tensorboard 或 W&B.可选值为:[ |
'tensorboard'
|
log_logits
|
bool
|
开启此选项以在 W&B 中将 logits 记录为直方图. |
False
|
exp_log_freq
|
int
|
记录梯度和参数的步数间隔. |
100
|
Source code in src/pytorch_tabular/config/config.py
优化器和学习率调度器配置.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
optimizer
|
str
|
来自 torch.optim 的标准优化器之一, 或提供完整的 Python 路径,例如 "torch_optimizer.RAdam". |
'Adam'
|
optimizer_params
|
Dict
|
优化器的参数.如果留空,将使用默认参数. |
lambda: {}()
|
lr_scheduler
|
Optional[str]
|
要使用的学习率调度器的名称,如果有的话,来自
torch.optim.lr_scheduler.如果为 None,将不使用任何调度器.默认为 |
None
|
lr_scheduler_params
|
Optional[Dict]
|
学习率调度器的参数.如果留空,将使用默认参数. |
lambda: {}()
|
lr_scheduler_monitor_metric
|
Optional[str]
|
与 ReduceLROnPlateau 一起使用,其中平台是基于此指标决定的. |
'valid_loss'
|
Source code in src/pytorch_tabular/config/config.py
Source code in src/pytorch_tabular/config/config.py
__init__(exp_version_manager='.pt_tmp/exp_version_manager.yml')
¶
管理基于名称的实验版本.它是一个简单的基于字典(yaml)的查找. 主要目的是在运行训练而不更改实验名称时避免保存模型的覆盖.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
exp_version_manager
|
(str, 可选)
|
作为版本控制的yml文件的路径. 默认为 ".pt_tmp/exp_version_manager.yml". |
'.pt_tmp/exp_version_manager.yml'
|
Source code in src/pytorch_tabular/config/config.py
头部配置¶
除了这些核心类之外,我们还有用于头部的配置类
线性头配置的模型类;作为模板和文档使用.模型接受字典作为输入,但如果存在本模型类中不存在的键,则会抛出异常.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
layers
|
str
|
分类/回归头中层数和单元数的连字符分隔字符串. 例如:32-64-32.默认情况下,仅从输入维度映射到输出维度. |
''
|
activation
|
str
|
分类头中的激活类型.默认激活类型类似于PyTorch中的ReLU、TanH、LeakyReLU等. 参考:https://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity |
'ReLU'
|
dropout
|
float
|
分类元素被置零的概率. |
0.0
|
use_batch_norm
|
bool
|
标志,用于在每个线性层+DropOut后添加BatchNorm层. |
False
|
initialization
|
str
|
线性层的初始化方案.默认为 |
'kaiming'
|
Source code in src/pytorch_tabular/models/common/heads/config.py
混合密度网络头配置.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
num_gaussian
|
int
|
混合模型中高斯分布的数量.默认为1 |
1
|
sigma_bias_flag
|
bool
|
是否在sigma层中包含偏置项.默认为False |
False
|
mu_bias_init
|
Optional[List]
|
将mu层的偏置参数初始化为预定义的聚类中心.应为一个与混合模型中高斯数量相同长度的列表.强烈建议设置此参数以对抗模式崩溃.默认为None |
None
|
weight_regularization
|
Optional[int]
|
是否对MDN层应用L1或L2范数.默认为L2.可选值为: [ |
2
|
lambda_sigma
|
Optional[float]
|
sigma层权重正则化的正则化常数.默认为0.1 |
0.1
|
lambda_pi
|
Optional[float]
|
pi层权重正则化的正则化常数.默认为0.1 |
0.1
|
lambda_mu
|
Optional[float]
|
mu层权重正则化的正则化常数.默认为0 |
0
|
softmax_temperature
|
Optional[float]
|
用于混合系数gumbel softmax的温度.小于1的值会导致多个成分之间的过渡更尖锐.默认为1 |
1
|
n_samples
|
int
|
从后验分布中抽取样本以获得预测的数量.默认为100 |
100
|
central_tendency
|
str
|
用于获取点预测的度量方法.默认为均值.可选值为: [ |
'mean'
|
speedup_training
|
bool
|
开启此参数将取消训练期间的采样,从而加快训练速度,但也会使您无法查看训练指标.默认为False |
False
|
log_debug_plot
|
bool
|
开启此参数将绘制mu、sigma和pi层的直方图,以及logits(如果在实验配置中开启了log_logits).默认为False |
False
|
input_dim
|
int
|
输入到头部的维度.这将在从 |
None
|
Source code in src/pytorch_tabular/models/common/heads/config.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
|