EmbeddingLayer[size,n]
表示一个可训练的网络层,把位于 1 和 n 之间的整数嵌入维度为 size 的连续向量空间中.
EmbeddingLayer[size]
让 n 从上下文中推断.
EmbeddingLayer
EmbeddingLayer[size,n]
表示一个可训练的网络层,把位于 1 和 n 之间的整数嵌入维度为 size 的连续向量空间中.
EmbeddingLayer[size]
让 n 从上下文中推断.
更多信息和选项
- EmbeddingLayer 操作于单个整数或整数的 k 阶数组,分别产生向量或 k+1 阶数组.
- 指定 EmbeddingLayer[size] 会产生一个网络,当 NetEncoder[…] 产生的整数连接于它的输入时,推断 n.
- 由 EmbeddingLayer 执行的嵌入是在训练中学习的.
- 可以包含以下可选参数:
-
LearningRateMultipliers Automatic 权重的学习速率倍增器 "Weights" Automatic 维度为 n×size 的权重的初始矩阵 - 在设置为 Automatic 的情况下,当使用 NetInitialize 或 NetTrain 时,系统自动加上权重.
- 如果已经加上了权重,通过应用该层 EmbeddingLayer[…][input] 显式计算输出.
- EmbeddingLayer[…][{input1,input2,…}] 显式计算每个 inputi 的输出.
- NetExtract 可以用来从 EmbeddingLayer 对象提取权重.
- 当 NumericArray 作为输入时,输出将是 NumericArray.
- EmbeddingLayer 通常用在 NetChain、NetGraph 等中.
- EmbeddingLayer 开放下列端口,以便用于 NetGraph 等:
-
"Input" 一个整数或整数的 k 阶数组 "Output" 一个向量或 k+1 阶数组 - EmbeddingLayer[size,n,"Input"->shape] 允许指定输入的形状. shape 可能的形式为:
-
NetEncoder[…] 编码器产生一个整数或整数的数组 "Integer" 单个整数 d 长度为 d 的整数的向量 {d1,d2,…} 维度为 d1×d2×… 的整数数组 "Varying" 整数的可变长度向量 {"Varying",d2,d3,…} 一个数组的第一个维度是可变的,其余维度是 d2×d3×… - Options[EmbeddingLayer] 给出了构建层的默认选项列表. Options[EmbeddingLayer[…]] 给出了默认选项列表,以便根据某些数据对层进行运算.
- Information[EmbeddingLayer[…]] 给出关于该网络层的报告.
- Information[EmbeddingLayer[…],prop] 给出 EmbeddingLayer[…] 的属性 prop 的值. 可能的属性与 NetGraph 相同.
范例
打开所有单元 关闭所有单元基本范例 (2)
创建一个 EmbeddingLayer,将接受整数 1、2 和 3,并产生尺寸为 4 的向量:
EmbeddingLayer[4, 3]创建一个随机初始化的 EmbeddingLayer,其将接受整数 1、2 和 3,并产生尺寸为 2 的向量:
embed = NetInitialize@EmbeddingLayer[2, 3]out = embed[2]
Dimensions[out]out = embed[{1, 2, 1}];
Dimensions[out]范围 (4)
创建一个随机初始化的 EmbeddingLayer,把 1 到 10 的整数的变长度序列嵌入到长度为 2 的向量序列,该向量由最后一个维度为2的矩阵表示:
embed = NetInitialize@EmbeddingLayer[2, 10, "Input" -> "Varying"]embed[{1, 2, 3}]//MatrixFormembed[{{1, 2, 3}, {1, 2, 3, 4}, {2}}]//Map[MatrixForm]创建一个带有编码输入的 EmbeddingLayer,其中 n 推断自编码器:
embed = EmbeddingLayer[5, "Input" -> NetEncoder[{"Class", {a, b, c}}]]embed = NetInitialize[embed]embed[{a, b, a, c}]//MatrixForm创建一个 EmbeddingLayer,其输入是整数序列,表示一个字符串的字符:
encoder = NetEncoder["Characters"];
embed = NetInitialize@EmbeddingLayer[2, "Input" -> encoder]embed["ABABBC"]//MatrixForm创建一个 EmbeddingLayer,其输入是表示来自字符串的令牌的代码序列:
encoder = NetEncoder["Tokens"];
embed = NetInitialize@EmbeddingLayer[2, "Input" -> encoder]embed["how are you today"]//MatrixForm选项 (1)
"Weights" (1)
创建一个 EmbeddingLayer,其中特别指定权:
embed = EmbeddingLayer["Weights" -> {{1, 0, 1, 0}, {0, 1, 1, 0}}]embed[2]embed[1]应用 (2)
在文本处理应用中,操作于整个单词的网络使用一个嵌入把大量人类语言的词汇收敛为可管理的向量大小.
创建一条链把字符串的连续单词嵌入到大小为 10 的向量序列,使用递归层产生最终向量. 首先,使用普通英文单词创建一个编码器:
encoder = NetEncoder["Tokens"]encoder["this is a sentence"]net = NetChain[{EmbeddingLayer[5], BasicRecurrentLayer[4], SequenceLastLayer[]}, "Input" -> encoder]net = NetInitialize[net];net["this is a sentence"]net["and another sentence"]使用 NetModel 获取预先培训的 EmbeddingLayer:
net = NetModel["GloVe 50-Dimensional Word Vectors Trained on Wikipedia and Gigaword-5 Data"]把 NetEncoder 附加在网络的输入:
NetExtract[net, "Input"]net["hello world"]net["it always seems impossible until it is done"]//MatrixPlot属性和关系 (1)
在指标列表上计算已初始化的 EmbeddingLayer:
embed = NetInitialize@EmbeddingLayer[5, 2];
indices = {1, 2, 1};
embed[indices]NetExtract[embed, "Weights"][[indices]]技术笔记
相关指南
-
▪
- 神经网络层
文本
Wolfram Research (2016),EmbeddingLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/EmbeddingLayer.html (更新于 2020 年).
CMS
Wolfram 语言. 2016. "EmbeddingLayer." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/EmbeddingLayer.html.
APA
Wolfram 语言. (2016). EmbeddingLayer. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/EmbeddingLayer.html 年
BibTeX
@misc{reference.wolfram_2026_embeddinglayer, author="Wolfram Research", title="{EmbeddingLayer}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/EmbeddingLayer.html}", note=[Accessed: 07-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_embeddinglayer, organization={Wolfram Research}, title={EmbeddingLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/EmbeddingLayer.html}, note=[Accessed: 07-October-2026]}