use*_*017 4 deep-learning tensorflow
我tf.contrib.layers.embed_sequence()在最新的Tensorflow例子中找到了函数,但它没有包含在主API中.我不知道为什么.任何关于它是如何工作的解释将不胜感激.
pva*_*rma 16
我可以想到两个tensorflow.contrib.layers.embed_sequence有用的主要原因:
tensorflow.contrib.layers.embed_sequence,您可以在保留深度的同时减少网络中的参数数量.例如,它消除了LSTM的每个门执行其自己的特征线性投影的需要.让我们说我有一个看起来像这样的数据集:
[("garbage piles in the city","Garbage"),
("city is clogged with vehicles","Traffic")]
我想把每个元组的第一个元素作为一系列单词.这些词需要嵌入矢量形式.作为第一步,它们应该被转换为索引或数字.例如,在这种情况下,词汇表将是:
vocab = [{'garbage':1},
{'piles':2},
{'in':3},
{'the':4},
{'city':5},
{'is':6},
{'clogged':7},
{'with':8},
{'vehicles':9}]
Run Code Online (Sandbox Code Playgroud)
编码后的文本如下所示:
features = [[1, 2, 3, 4, 5], [5, 6, 7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)
您将此编码文本features批量传递给此函数:
features_embedded = tf.contrib.layers.embed_sequence(
ids=features,
vocab_size=len(vocab),
embed_dim=EMBEDDING_SIZE,
scope='words'
)
Run Code Online (Sandbox Code Playgroud)
现在,使用索引(1到5)表示的每个单词都嵌入到大小的向量中EMBEDDING_SIZE.
如果批量大小为2(即一批中的2个序列)并且EMBEDDING_SIZE为10,则输出将是形状矩阵(2, 5, 10)
样本输出:
[[[0.1, 0.3, 0.4, 0.2, 0.5, 0.2, 0.2, 0.2, 0.4, 0.1], # garbage
[0.1, 0.3, 0.4, 0.2, 0.5, 0.2, 0.1, 0.2, 0.4, 0.1], # piles
[0.1, 0.3, 0.4, 0.2, 0.5, 0.2, 0.4, 0.2, 0.4, 0.1], # in
[0.1, 0.3, 0.4, 0.2, 0.5, 0.3, 0.1, 0.2, 0.4, 0.1], # the
[0.1, 0.3, 0.4, 0.2, 0.5, 0.2, 0.1, 0.2, 0.4, 0.6]], # city
[sent2]]
Run Code Online (Sandbox Code Playgroud)
sent2 类似地编码(5×10矩阵).
希望这很清楚.
| 归档时间: |
|
| 查看次数: |
3810 次 |
| 最近记录: |