tensorflow--embedding_lookup 및 embeddinglookup_sparse

9386 단어 tensorflow
tf.nn.embedding_lookup ( tensor, id )
작용: 한 장의 색인에 대응하는 요소 응용 장면을 선택한다: embedding, 원-hot 인코딩에 해당한다.
사용자\과일
사과.
• 바나나
딸기.
망고
수박.
파파야
용과
user1
1
0
0
0
0
0
0
user2
0
0
0
1
0
0
0
user3
0
0
0
0
0
0
1
import tensorflow as tf
import numpy as np

p = tf.Variable(np.arange(21).reshape(7,3))
u = tf.nn.embedding_lookup(p, ids=[0, 3, 6])
with tf.Session() as s:
  s.run(tf.global_variables_initializer())
  print(s.run(t))
  
# [[ 0  1  2]    --- p
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]
#  [12 13 14]
#  [15 16 17]
#  [18 19 20]]
  
# [[ 0  1  2]   ---user1
#  [ 9 10 11]   ---user2
#  [18 19 20]]  ---user3

tf.nn.embedding_lookup_sparse(params, sp_ids)
작용: 한 장량 안의 여러 색인에 대응하는 요소의 평균값을 선택하여 응용 장면: embedding, 여러 번 원-hot을 한 후에 평균값을 얻는 것과 같다.
사용자\과일
사과.
• 바나나
딸기.
망고
수박.
파파야
용과
user1
1
1
1
0
0
0
0
user2
1
0
0
1
0
0
0
user3
0
0
0
0
1
1
1
import tensorflow as tf
import numpy as np

p = tf.Variable(np.arange(21).reshape(7,3), dtype=tf.float32)
gs = tf.SparseTensor(indices=[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1]], values=[0,1,2,6,0,3,4,5], dense_shape=(3,3))
embedded_tags = tf.nn.embedding_lookup_sparse(p, sp_ids=tags, sp_weights=None)

with tf.Session() as s:
  s.run([tf.global_variables_initializer(), tf.tables_initializer()])
  print(s.run([embedded_tags]))
  
#[[ 3. ,  4. ,  5. ],    ---user1
# [ 9. , 10. , 11. ],    ---user2
# [13.5, 14.5, 15.5]]    ---user3

예컨대user1:([0 1 2] + [3 4 5] + [6 7 8])/3 = [3, 4, 5]
관련 참고: 시스템이 깊이 있는 학습에 부딪히는 것을 추천합니다(4) - 다수치 이산 특징의embedding 솔루션

좋은 웹페이지 즐겨찾기