반응형
with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
name="W")
self.embedded_chars = tf.nn.embedding_lookup(W, self.input_x)
self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
아무도 Word2vec 또는 GloVe 사전 훈련 된 단어 임베딩의 결과를 무작위 대신 사용하는 방법을 알고 있습니까?
해결 방법
W = tf.constant(embedding, name="W")
이것은 가장 쉬운 방법이지만 tf.constant ()
의 값이 메모리에 여러 번 저장되기 때문에 메모리 효율성이 떨어집니다. 임베딩
은 매우 클 수 있으므로 장난감 예제에만이 접근 방식을 사용해야합니다.
W = tf.Variable(tf.constant(0.0, shape=[vocab_size, embedding_dim]),
trainable=False, name="W")
embedding_placeholder = tf.placeholder(tf.float32, [vocab_size, embedding_dim])
embedding_init = W.assign(embedding_placeholder)
# ...
sess = tf.Session()
sess.run(embedding_init, feed_dict={embedding_placeholder: embedding})
이렇게하면 그래프에 embedding
사본이 저장되는 것을 방지 할 수 있지만, 한 번에 메모리에 매트릭스 사본 2 개를 보관할 수있는 충분한 메모리가 필요합니다 (하나는 NumPy 배열 용이고 다른 하나는 tf .Variable
). 학습 중에 임베딩 행렬을 상수로 유지한다고 가정 했으므로 W
는 trainable = False
로 생성됩니다.
W = tf.Variable(...)
embedding_saver = tf.train.Saver({"name_of_variable_in_other_model": W})
# ...
sess = tf.Session()
embedding_saver.restore(sess, "checkpoint_filename.ckpt")
참조 페이지 https://stackoverflow.com/questions/35687678
반응형
'파이썬' 카테고리의 다른 글
파이썬 MySQL 데이터베이스에서 Python 3.5.1을 사용하는 방법 (0) | 2020.11.09 |
---|---|
파이썬은 텍스트 파일에 줄 단위로 쓰기 (0) | 2020.11.08 |
파이썬 Python : Seaborn 막대 플롯에서 백분율 플로팅 (0) | 2020.11.08 |
파이썬 URL로 링크를 따르는 Python 기계화 및 nr 매개 변수는 무엇입니까? (0) | 2020.11.08 |
파이썬 Pip 설치-Python 2.7-Windows 7 (0) | 2020.11.08 |
댓글