Torch-nn学习:Tabel Layer

本文介绍了Torch-nn库中的Table Layer,包括ConcatTable、ParallelTable、MapTable、SplitTable、JoinTable、NarrowTable、FlattenTable、PairwiseDistance、DotProduct、CosineDistance以及用于计算的CAddTable等操作。通过实例展示了这些模块如何处理输入数据,特别是它们在处理多输入和输出时的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ConcatTable:对每个成员模块应用相同输入。

如图:

                  +-----------+
             +----> {member1, |
+-------+    |    |           |
| input +----+---->  member2, |
+-------+    |    |           |
   or        +---->  member3} |
 {input}          +-----------+
示例:

mlp = nn.ConcatTable()
mlp:add(nn.Linear(5, 2))
mlp:add(nn.Linear(5, 3))

pred = mlp:forward(torch.randn(5))
for i, k in ipairs(pred) do print(i, k) end


2.ParallelTable:对每个成员模块应用与之对应的输入(第i个模块应用第i个输入)。

如图:

+----------+         +-----------+
| {input1, +---------> {member1, |
|          |         |           |
|  input2, +--------->  member2, |
|          |         |           |
|  input3} +--------->  member3} |
+----------+         +-----------+

mlp = nn.ParallelTable()
mlp:add(nn.Linear(10, 2))
mlp:add(nn.Linear(5, 3))

x = torch.randn(10)
y = torch.rand(5)

pred = mlp:forward{x, y}
for i, k in pairs(pred) do print(i, k) end


3.MapTable:对所有输入应用,不够的就clone。参数共享(weightbiasgradWeight and gradBias

eg:

+----------+         +-----------+
| {input1, +---------> {member,  |
|          |         |           |
|  input2, +--------->  clone,   |
|          |         |           |
|  input3} +--------->  clone}   |
+----------+         +-----------+
map = nn.MapTable()
map:add(nn.Linear(10, 3))

x1 = torch.rand(10)
x2 = torch.rand(10)
y = map:forward{x1, x2}

for i, k in pairs(y) do print(i, k) end



4.SplitTable:这个不用解释,index可以为负数

module = SplitTable(dimension, nInputDims)


                
### Embedding Look-up Table 的概念 在机器学习和自然语言处理中,嵌入查找表(Embedding Look-up Table)是一种用于将离散的输入特征映射到连续向量空间的技术。这种技术特别适用于处理文本数据中的词语或字符序列。通过这种方式,模型可以捕捉词义之间的关系,并有效地表示语料库中的词汇[^1]。 具体来说,在神经网络架构下,嵌入层通常被初始化为随机矩阵;随着训练过程推进,该矩阵会逐渐调整以更好地反映实际的语言结构特性。对于每一个可能出现在输入中的单词索引 i ,都对应着一个 d 维度的向量 e_i ∈ R^d 。当给定一个新的句子时,就可以依据其内部各位置上的 token 来访问相应的 embedding 向量[^3]。 ### 实现方式 以下是 Python 中使用 PyTorch 库创建并应用 Embedding 查找表的一个简单例子: ```python import torch from torch import nn vocab_size = 1000 # 假设字典大小为1000 embed_dim = 50 # 设定每个token对应的embedding维度为50 # 创建一个具有指定参数规模的Embedding Layer embedding_layer = nn.Embedding(vocab_size, embed_dim) input_tensor = torch.LongTensor([12]) # 输入是一个整数形式的index列表 output_embedding = embedding_layer(input_tensor) # 获取对应的embedding vector print(output_embedding.shape) # 输出形状应为torch.Size([1, 50]) ``` 这段代码展示了如何定义一个 `nn.Embedding` 层来作为我们的查找表,并且演示了怎样利用它把单个词汇 ID 转换成相应维数的 dense representation。 ### 应用场景 - **预训练语言模型**:像 BERT 这样的大型预训练模型依赖于精心设计好的 embedding 表格来进行下游任务微调前的基础理解构建工作。 - **推荐系统**:除了文字外,商品ID也可以视为一种特殊的 "word" ,因此可以用相似的方式对其进行编码以便后续分析用户行为模式等操作[^2]. - **情感分类/主题建模** :通过对评论文章里的关键词赋予恰当意义的空间坐标系从而帮助算法更精准地区分正面负面情绪倾向或是识别不同话题类别.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值