公共模块
嵌入¶
Bases: Module
允许类别特征中的不同值拥有不同的嵌入.
Source code in src/pytorch_tabular/models/common/layers/embeddings.py
Bases: Module
将分类和连续特征嵌入到一个二维张量中.
Source code in src/pytorch_tabular/models/common/layers/embeddings.py
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 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 |
|
__init__(continuous_dim, categorical_cardinality, embedding_dim, shared_embedding_strategy=None, frac_shared_embed=0.25, embedding_bias=False, batch_norm_continuous_input=False, virtual_batch_size=None, embedding_dropout=0.0, initialization=None)
¶
Args: continuous_dim: 连续特征的数量 categorical_cardinality: 分类特征的基数列表 embedding_dim: 嵌入维度 shared_embedding_strategy: 共享嵌入的策略 frac_shared_embed: 共享嵌入的比例 embedding_bias: 嵌入层是否使用偏置 batch_norm_continuous_input: 是否对连续特征使用批量归一化 embedding_dropout: 应用于嵌入的丢弃率 initialization: 嵌入层的初始化策略
Source code in src/pytorch_tabular/models/common/layers/embeddings.py
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 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 |
|
Bases: Module
接受预先编码的分类变量,并仅与连续变量连接.没有可学习的组件.
Source code in src/pytorch_tabular/models/common/layers/embeddings.py
Bases: Module
使分类特征中的不同值能够共享一些嵌入.
Source code in src/pytorch_tabular/models/common/layers/embeddings.py
门控单元¶
Bases: Module
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
Bases: Module
门控指数线性单元 (GEGLU)
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
__init__(d_model, d_ff, dropout=0.1)
¶
Args: d_model: 模型的维度 d_ff: 前馈层的维度 dropout: 丢弃概率
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
Bases: Module
ReGLU.
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
__init__(d_model, d_ff, dropout=0.1)
¶
Args: d_model: 模型的维度 d_ff: 前馈层的维度 dropout: 丢弃概率
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
Bases: Module
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
__init__(d_model, d_ff, dropout=0.1)
¶
Args: d_model: 模型的维度 d_ff: 前馈层的维度 dropout: 丢弃概率
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
Bases: Module
title: 逐位置前馈网络 (FFN) summary: 逐位置前馈网络的可重用实现文档.
逐位置前馈网络 (FFN)¶
这是 PyTorch 实现的逐位置前馈网络,用于Transformer模型. FFN由两个全连接层组成.隐藏层的维度 $d_{ff}$ 通常设置为词嵌入维度 $d_{model}$ 的四倍左右. 因此,它有时也被称为扩展-收缩网络.隐藏层有一个激活函数,通常设置为ReLU(修正线性单元)激活,即 $$\max(0, x)$$ 也就是说,FFN函数为, $$FFN(x, W_1, W_2, b_1, b_2) = \max(0, x W_1 + b_1) W_2 + b_2$$ 其中 $W_1$、$W_2$、$b_1$ 和 $b_2$ 是可学习的参数.有时也会使用GELU(高斯误差线性单元)激活代替ReLU. $$x \Phi(x)$$ 其中 $\Phi(x) = P(X \le x), X \sim \mathcal{N}(0,1)$
门控线性单元¶
这是一个支持不同变体的通用实现,包括 门控线性单元 (GLU).
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
__init__(d_model, d_ff, dropout=0.1, activation=nn.ReLU(), is_gated=False, bias1=True, bias2=True, bias_gate=True)
¶
d_model
是词嵌入中的特征数量d_ff
是前馈网络隐藏层中的特征数量dropout
是隐藏层的dropout概率is_gated
指定隐藏层是否为门控bias1
指定第一个全连接层是否应具有可学习的偏置bias2
指定第二个全连接层是否应具有可学习的偏置bias_gate
指定门控的全连接层是否应具有可学习的偏置
Source code in src/pytorch_tabular/models/common/layers/gated_units.py
软树¶
Bases: Module
Source code in src/pytorch_tabular/models/common/layers/soft_trees.py
Bases: ModuleWithInit
Source code in src/pytorch_tabular/models/common/layers/soft_trees.py
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 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 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
|
__init__(in_features, num_trees, depth=6, tree_output_dim=1, flatten_output=True, choice_function=sparsemax, bin_function=sparsemoid, initialize_response_=nn.init.normal_, initialize_selection_logits_=nn.init.uniform_, threshold_init_beta=1.0, threshold_init_cutoff=1.0)
¶
Oblivious Differentiable Sparsemax Trees. http://tinyurl.com/odst-readmore 可以将此模块替换为nn.Linear,随处使用.
:param in_features: 输入张量的特征数量 :param num_trees: 该层中的树的数量 :param tree_dim: 单棵树响应中的响应通道数量 :param depth: 每棵树中的分割数量 :param flatten_output: 如果为False,返回[..., num_trees, tree_dim], 默认返回[..., num_trees * tree_dim] :param choice_function: f(tensor, dim) -> R_simplex 计算特征权重,使得 f(tensor, dim).sum(dim) == 1 :param bin_function: f(tensor) -> R[0, 1],计算树叶子权重
:param initialize_response_: 树输出张量的就地初始化器 :param initialize_selection_logits_: 选择树特征的对数概率的就地初始化器 阈值和尺度均使用数据感知初始化(或通过.load_state_dict加载) :param threshold_init_beta: 将阈值初始化为数据点的q分位数 其中 q ~ Beta(:threshold_init_beta:, :threshold_init_beta:) 如果此参数设置为1,初始阈值将具有与数据点相同的分布 如果大于1(例如10),阈值将更接近中位数数据值 如果小于1(例如0.1),阈值将接近数据的最小/最大值.
:param threshold_init_cutoff: 阈值对数温度的初始化器,取值范围为(0, inf) 默认情况下(1.0),对数温度被初始化为使得所有二进制选择器 最终位于稀疏S形函数的线性区域.然后温度将按此参数进行缩放. 设置此值 > 1.0 将在数据点和稀疏S形函数的截止值之间产生一些余量 设置此值 < 1.0 将导致 (1 - value) 部分数据点最终位于稀疏S形函数的平坦区域 例如,threshold_init_cutoff = 0.9 将设置10%的点等于0.0或1.0 设置此值 > 1.0 将在数据点和稀疏S形函数的截止值之间产生余量 所有点将介于 (0.5 - 0.5 / threshold_init_cutoff) 和 (0.5 + 0.5 / threshold_init_cutoff) 之间
Source code in src/pytorch_tabular/models/common/layers/soft_trees.py
变换器¶
Bases: Module
Applies LayerNorm, Dropout 并加到输入上.
标准 Transformer 中的 AddNorm 操作
Source code in src/pytorch_tabular/models/common/layers/transformers.py
Bases: Module
附加用于BERT推理的[CLS]标记.
Source code in src/pytorch_tabular/models/common/layers/transformers.py
__init__(d_token, initialization)
¶
初始化 self.
Source code in src/pytorch_tabular/models/common/layers/transformers.py
Bases: Module
多头注意力块在变压器中.
Source code in src/pytorch_tabular/models/common/layers/transformers.py
Bases: Module
单个变压器编码器块.
Source code in src/pytorch_tabular/models/common/layers/transformers.py
__init__(input_embed_dim, num_heads=8, ff_hidden_multiplier=4, ff_activation='GEGLU', attn_dropout=0.1, keep_attn=True, ff_dropout=0.1, add_norm_dropout=0.1, transformer_head_dim=None)
¶
Args: input_embed_dim: 输入嵌入维度 num_heads: 注意力头数 ff_hidden_multiplier: 逐位置前馈层的隐藏维度乘数 ff_activation: 逐位置前馈层的激活函数 attn_dropout: 注意力层的dropout概率 keep_attn: 是否保留注意力权重 ff_dropout: 逐位置前馈层的dropout概率 add_norm_dropout: 残差连接的dropout概率 transformer_head_dim: 注意力头的维度.如果为None,将默认为input_embed_dim
Source code in src/pytorch_tabular/models/common/layers/transformers.py
杂项¶
Bases: Module
A wrapper for a lambda function as a PyTorch module.
Source code in src/pytorch_tabular/models/common/layers/misc.py
Bases: Module
PyTorch模块的基类,在第一个批次上具有数据感知初始化器.
Source code in src/pytorch_tabular/models/common/layers/misc.py
激活函数¶
Bases: Function
等价于lambda x: Entmax15([x, 0])
的高效优化版本.
Source code in src/pytorch_tabular/models/common/layers/activations.py
1.5-entmax:归一化稀疏变换(类似于softmax).
解决优化问题:
max_p <x, p> - H_1.5(p) 满足 p >= 0, sum(p) == 1.
其中 H_1.5(p) 是 alpha=1.5 时的 Tsallis alpha-熵.
Parameters¶
X : torch.Tensor 输入张量.
int
沿此维度应用1.5-entmax.
int 或 None
部分排序的最大元素数量.为了获得最佳性能,应略大于预期解中的非零元素数量.
如果解比 k 更稀疏,此函数将以 2*k 的计划递归调用.
如果为 None
,则从一开始就进行完全排序.
Returns¶
P : torch 张量,形状与 X 相同 投影结果,使得 P.sum(dim=dim) == 1 逐元素成立.
Source code in src/pytorch_tabular/models/common/layers/activations.py
Bases: Module