【问题标题】:tf.contrib.layers.embed_sequence() is for what?tf.contrib.layers.embed_sequence() 是为了什么?
【发布时间】:2016-11-24 10:59:30
【问题描述】:

我在最新的Tensorflow 示例中找到了tf.contrib.layers.embed_sequence() 函数,但它并未包含在主API 中。我不知道为什么。任何有关其工作原理的解释将不胜感激。

【问题讨论】:

    标签: tensorflow deep-learning


    【解决方案1】:

    我可以想到 tensorflow.contrib.layers.embed_sequence 有用的两个主要原因:

    1. 在构建具有多个将特征作为输入的门的神经网络模型时,通过使用tensorflow.contrib.layers.embed_sequence,您可以减少网络中的参数数量,同时保留深度。例如,它消除了 LSTM 的每个门执行其自己的特征线性投影的需要。
    2. 它允许任意输入形状,这有助于实现简单灵活。

    假设我有一个看起来像这样的数据集:

    [("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}]
    

    编码后的文本如下所示:

    features = [[1, 2, 3, 4, 5], [5, 6, 7, 8, 9]]
    

    您将此编码文本作为features 批量传递给此函数:

    features_embedded = tf.contrib.layers.embed_sequence(
        ids=features,
        vocab_size=len(vocab),
        embed_dim=EMBEDDING_SIZE,
        scope='words'
    )
    

    现在,使用索引(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]]
    

    sent2 的编码方式类似(5 x 10 矩阵)。

    希望这很清楚。

    【讨论】:

      【解决方案2】:

      来自 TF 文档:

      将符号序列映射到嵌入序列。

      ... 回报: [batch_size, doc_length, embed_dim] 的张量与嵌入序列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-21
        • 2014-07-23
        • 2016-12-14
        • 2018-03-08
        • 2010-10-30
        相关资源
        最近更新 更多