Tensorflow - tf.nn.embedding_lookup使用

  • 原型:tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True, max_norm=None)
  • In fact tf.nn.embedding_lookup role is to find the vector under're looking for embedding data in the corresponding row.
  • Simply look through the code, ids 1 line or several lines include:
    # -*- coding= utf-8 -*-
    import tensorflow as tf
    import numpy as np
    
    a = [[0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3], [4.1, 4.2, 4.3]]
    a = np.asarray(a)
    idx1 = tf.Variable([0, 2, 3, 1], tf.int32)
    idx2 = tf.Variable([[0, 2, 3, 1], [4, 0, 2, 2]], tf.int32)
    out1 = tf.nn.embedding_lookup(a, idx1)
    out2 = tf.nn.embedding_lookup(a, idx2)
    init = tf.global_variables_initializer()
    
    with tf.Session() as sess:
        sess.run(init)
        print sess.run(out1)
        print out1
        print '=================='
        print sess.run(out2)
        print out2
  • Output:
    [[ 0.1  0.2  0.3]
     [ 2.1  2.2  2.3]
     [ 3.1  3.2  3.3]
     [ 1.1  1.2  1.3]]
    Tensor("embedding_lookup:0", shape=(4, 3), dtype=float64)
    ==================
    [[[ 0.1  0.2  0.3]
      [ 2.1  2.2  2.3]
      [ 3.1  3.2  3.3]
      [ 1.1  1.2  1.3]]
    
     [[ 4.1  4.2  4.3]
      [ 0.1  0.2  0.3]
      [ 2.1  2.2  2.3]
      [ 2.1  2.2  2.3]]]
    Tensor("embedding_lookup_1:0", shape=(2, 4, 3), dtype=float64)

     

  • Dimensions discussion : In looking at the corresponding vector index spliced in embedding data in're looking for. It is always part ids + dimensions except the first dimension of the embedding dimension spliced portion. Obviously, we can obtain, IDS is the value which must be less than or equal embedding a reduced largest dimension of.

 

Reference article : https://www.jianshu.com/p/ad88a0afa98f

Guess you like

Origin www.cnblogs.com/Jesee/p/11445560.html