主要内容

wordEmbeddingLayer

深度学习网络的词嵌入层

描述

单词嵌入层将单词索引映射到向量。

在深度学习长短期记忆(LSTM)网络中使用单词嵌入层。LSTM网络是一种循环神经网络(RNN),可以学习序列数据时间步长之间的长期依赖关系。单词嵌入层将单词索引序列映射到嵌入向量,并在训练过程中学习单词嵌入。

这一层需要深度学习工具箱™。

创建

描述

例子

= wordEmbeddingLayer (numWords创建单词嵌入层并指定嵌入维度和词汇量大小。

例子

= wordEmbeddingLayer (numWords名称,值设置可选属性使用一个或多个名称-值对。将每个属性名用单引号括起来。

属性

全部展开

字嵌入

字嵌入的维度,指定为正整数。

例子:300

模型中的字数,指定为正整数。如果训练数据中唯一单词的数量大于NumWords,然后该层将词汇表外的单词映射到相同的向量。

参数和初始化

函数初始化权重,指定为以下之一:

  • “narrow-normal”-通过从均值为0,标准差为0.01的正态分布中独立抽样来初始化权重。

  • “glorot”-使用Glorot初始化器初始化权重[1](也称为Xavier初始化器)。格洛洛特初始化器独立地从均值和方差为零的均匀分布中采样2/(numIn + numOut),在那里numIn = NumWords + 1而且numOut =尺寸

  • “他”-使用He初始化式初始化权重[2].He初始化器样本来自均值和方差为零的正态分布2 / numIn,在那里numIn = NumWords + 1

  • “正交”-初始化输入权重的QR分解给出的正交矩阵ZR对于一个随机矩阵Z从单位正态分布抽样。[3]

  • “零”-用0初始化权重。

  • “的”-用1初始化权重。

  • 函数句柄——使用自定义函数初始化权重。如果指定了函数句柄,则该函数必须为权重= func(sz),在那里深圳就是权重的大小。

时,层才初始化权重权重属性为空。

数据类型:字符|字符串|function_handle

层权重,指定为a——- - - - - -NumWords数组或————(NumWords + 1)数组。

如果权重是一个——- - - - - -NumWords数组,然后软件自动为词汇表外的输入追加一个额外的列,当使用trainNetwork函数初始化时dlnetwork对象。

对于输入整数小于或等于NumWords,层输出向量权重(:,我).否则,图层映射输出向量权重(:,NumWords + 1)

学习率和正则化

权重的学习率因子,指定为非负标量。

该软件将该因子乘以全局学习率,以确定该层权重的学习率。例如,如果WeightLearnRateFactor2,则该层权重的学习率为当前全局学习率的两倍。方法指定的设置,该软件根据设置确定全局学习率trainingOptions(深度学习工具箱)函数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

l2权重的正则化因子,指定为非负标量。

软件将这个因子乘以全局l2正则化因子的确定l2这一层权重的正则化。例如,如果WeightL2Factor2,则l2这一层权重的正则化是全局的两倍l2正则化因子。可以指定全局变量l2正则化因子使用trainingOptions(深度学习工具箱)函数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

层名,指定为字符向量或字符串标量。为数组输入时,trainNetwork(深度学习工具箱)assembleNetwork(深度学习工具箱)layerGraph(深度学习工具箱),dlnetwork(深度学习工具箱)函数自动为具有该名称的层分配名称

数据类型:字符|字符串

此属性是只读的。

该层的输入数量。该层只接受单个输入。

数据类型:

此属性是只读的。

输入层的名称。该层只接受单个输入。

数据类型:细胞

此属性是只读的。

层的输出数量。这个图层只有一个输出。

数据类型:

此属性是只读的。

输出层的名称。这个图层只有一个输出。

数据类型:细胞

例子

全部折叠

创建单词嵌入层,嵌入维度为300和5000单词。

图层= wordEmbeddingLayer(300,5000)
layer = WordEmbeddingLayer with properties: Name: " Hyperparameters维数:300 NumWords: 5000 learable Parameters权重:[]显示所有属性

在LSTM网络中包含一个词嵌入层。

inputSize = 1;embeddingDimension = 300;numWords = 5000;numHiddenUnits = 200;numClasses = 10;图层= [sequenceInputLayer(inputSize) wordEmbeddingLayer(embeddingDimension,numWords) lstmLayer(numHiddenUnits,“OutputMode”“最后一次”fullyConnectedLayer(numClasses) softmaxLayer classificationLayer
2”字嵌入层字嵌入层300维,5000个唯一单词3”LSTM LSTM, 200个隐藏单元4”全连接10全连接层5”Softmax Softmax 6”分类输出crossentropyex

要使用预训练的单词嵌入的权重初始化深度学习网络中的单词嵌入层,请使用word2vec函数提取层权重并设置“重量”对象的名称-值对wordEmbeddingLayer函数。字嵌入层需要字向量的列,因此必须对word2vec函数。

emb = fasttextwordem寝料;单词= emb.词汇;维度= emb.维度;numWords = numel(words);层= worddembeddinglayer(维度,numWords,...“重量”word2vec (emb)”)
layer = WordEmbeddingLayer with properties: Name: "超参数维度:300 NumWords: 999994可学习参数权重:[300×999994 single]显示所有属性

要从单词嵌入创建相应的单词编码,请将单词嵌入词汇表输入到wordEncoding作为单词列表的功能。

enc = worddencoding(单词)
enc = worddencoding with properties: NumWords: 999994词汇:[1×999994 string]

参考文献

格洛洛特,泽维尔,还有约书亚·本吉奥。《理解深度前馈神经网络训练的难度》在第十三届人工智能与统计国际会议论文集, 249 - 356。撒丁岛,意大利:AISTATS, 2010。

[2]何开明,张翔宇,任少卿,孙健。“深入研究整流器:在ImageNet分类上超越人类水平的性能。”在2015年IEEE计算机视觉国际会议论文集, 1026 - 1034。华盛顿:IEEE计算机视觉学会,2015。

Saxe, Andrew M., James L. McClelland, Surya Ganguli。“深度线性神经金宝搏官方网站网络中非线性学习动力学的精确解。”arXiv预打印arXiv:1312.6120(2013)。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

版本历史

在R2018b中引入