2016-12-04 3 views
2

내 데이터에 25 개의 기능이 있다고 가정 해 보겠습니다. Keras에서는 각 입력 피쳐에 대해 Embedding 레이어를 쉽게 구현하고 나중에 병합하여 이후 레이어에 공급할 수있었습니다.tensorflow를 사용하여 임베디드 레이어 구현

tf.nn.embedding_lookupid 매개 변수를 허용합니다.이 매개 변수는 단순한 정수 또는 정수 배열 ([1,2,3, ..]) 일 수 있습니다. 그러나, 기능 입력

X = tf.split(1,in_feature_num,x) 

를 사용하여 종종 형상

x = tf.placeholder(tf.float32, [None, in_feature_num]) 

I가 자신의 기능을 분리 할 수이며, 각각의 입력은 형상이다 기능 [? 1]. 그러나 embedding_lookup은 [?, 1]의 모양을 따르지 않으며 지정된 행 길이가 없기 때문에 reshape 또는 unpack과 같은 모양으로 [?]를 사용할 수 없습니다. 그래서

, 어떻게이 같은 삽입 표현으로

[[1], 
[2], 
[3], 
    ... 
] 

같은 입력을 변환 할 수 :

는 SO 후 관련
[ 
    [....], #a vector 
    [....], #a vector 
    [....], #a vector 
    ... 
] 

은 다음과 같습니다 What does tf.nn.embedding_lookup function do?TensorFlow Embedding Lookup 그러나 그 게시물은 해결되지 않습니다 내 문제.

+0

나는 "귀하의 데이터에는 기능이 있습니다"라는 의미를 100 % 확신하지 못했습니다. 내 이해는 embeddings 귀하의 입력 데이터의 대표입니다. 그래서 그것들은 특징입니다. NN 앞에 임베디드 레이어를 추가하고 임베디드 레이어를 실제로 배우기위한 가중치를 배우거나 일반화 된 사전 교육 된 레이어를 추가 할 수 있습니다. 데이터에 대해 더 구체적으로 설명해 주시겠습니까? – roopalgarg

+0

25 가지 기능을 배치하고 각 기능마다 고유 한 임베딩 기능을 원한다고 말하고 있습니까? – mazecreator

답변

-1

나는 당신이 무슨 뜻인지 알고 있다고 생각합니다. 문제는 기능이란 무엇입니까? 숫자 일 경우 삽입 레이어가 실제로 필요하지 않습니다. 대신 완전히 연결된 레이어를 사용할 수 있습니다. 그러나 범주 형이라면 두 가지 옵션이 있다고 생각합니다 : 1. 모든 피쳐에 대해 별도의 임베딩 (연결해야하는 임베딩 레이어가 25 개로 끝나게 됨) 2. 피쳐를 단일 피쳐로 병합합니다. 먼저

+0

예, "25 개의 임베드 레이어로 끝납니다."그것이 내가 구현할 때까지 기다렸던 것입니다. 나는 케라에서 이것을하는 법을 알고 있지만, 나는 tensorflow에서 그것을하는 법을 모른다. ... –

+0

이것은 대답이 아니다 ... 그가 옵션 1을 원한다는 것이 명백하지만, 이 일을하는 법을 말해줘. –