Sto tentando di inizializzare un tensorflow Variable
con embeddings word2vec
pre-addestrato.Inizializzazione di tensorflow Variabile con un array maggiore di 2 GB
Ho il codice seguente:
import tensorflow as tf
from gensim import models
model = models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
X = model.syn0
embeddings = tf.Variable(tf.random_uniform(X.shape, minval=-0.1, maxval=0.1), trainable=False)
sess.run(tf.initialize_all_variables())
sess.run(embeddings.assign(X))
E sto ricevendo il seguente errore:
ValueError: Cannot create an Operation with a NodeDef larger than 2GB.
La matrice (X
) sto cercando di assegnare è di forma (3000000, 300)
e la sua dimensione è 3.6GB.
Ho ricevuto lo stesso errore se provo anche tf.convert_to_tensor(X)
.
So che non riesce a causa del fatto che la matrice è maggiore di 2 GB. Tuttavia, non so come assegnare un array maggiore di 2 GB a un tensorflow Variable
'X.assign (luogo)' ha bisogno di essere 'tf.assign (X, luogo, validate_shape = False)', o tensorflow si lamenterà che stai cambiando la forma del tensore. A parte questo, funziona. –
Grazie - ha aggiornato la risposta per includere il commento di + mrry di seguito, impostando la forma del segnaposto. – dga
per maggiori informazioni c'è una buona descrizione di come fare questo nella documentazione sotto [dati precaricati] (https://www.tensorflow.org/versions/r0.7/how_tos/reading_data/index.html#preloaded-data) e un esempio funzionante completo su come utilizzare un segnaposto e una variabile per precaricare gli input di addestramento MNIST [qui] (https://github.com/tensorflow/tensorflow/blob/r0.7/tensorflow/examples/how_tos/reading_data/ fully_connected_preloaded_var.py) – stefano