2016-07-15 3 views
0

word2vec를 사용할 수 없으므로 의사 무작위 단어 (사전의 일부가 아님)에 RNN을 훈련시키고 싶다고 가정합니다. tensorflow를 사용하여 단어의 각 문자를 어떻게 표현할 수 있습니까?Tensorflow : 문자 입력이있는 RNN

답변

2

문자를 사용하는 경우 모든 ASCII 문자를 나타낼 수있는 크기 128의 핫 벡터를 사용할 수 있습니다 (모든 아스키 문자를 사용할 것 같지 않으므로 작게 사용할 수 있습니다.). 가능성의 범위가 작기 때문에 단어 벡터와 같은 것을 사용할 필요가 없습니다.

실제로 하나의 핫 인코딩을 사용하면 각 문자에 대해 학습 벡터의 종류가됩니다. 첫 번째 고밀도 레이어 (또는 rnn 레이어)에 100 개의 뉴런이 포함되어 있다고 가정 해보십시오. 그러면 128x100 매트릭스에 하나의 핫 인코딩이 곱해집니다. 값 중 하나를 제외한 모든 값이 0이 아니므로 기본적으로 해당 문자의 벡터 표현 인 행렬에서 크기 100의 단일 행을 선택합니다. 본질적으로 첫 번째 행렬은 각 문자를 나타내는 벡터의 목록 일 뿐이며 모델은 이러한 벡터 표현을 학습합니다. 하나의 핫 인코딩의 희박 성으로 인해 전체 행렬 곱셈을 수행하는 것보다 행을 검색하는 것이 더 빠릅니다. 이것은 tf.nn.embedding_lookup 또는 tf.gather 함수가 사용되는 것입니다.

관련 문제