我试图用预先训练的word2vec
嵌入来初始化张量流Variable
。使用大于2GB的数组初始化tensorflow变量
我有以下代码:
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))
而我收到以下错误:
ValueError: Cannot create an Operation with a NodeDef larger than 2GB.
我想分配的阵列(X
)的形状(3000000, 300)
的,其大小为3.6GB。
如果我尝试tf.convert_to_tensor(X)
,我也会遇到同样的错误。
我知道它由于数组大于2GB的事实而失败。但是,我不知道如何将大于2GB的数组分配给张量流Variable
'X.assign(地方)'必须'tf.assign(X,地点,validate_shape = FALSE)',或TensorFlow会抱怨你正在改变张量的形状。除此之外,这工作。 –
谢谢 - 通过设置占位符的形状更新了答案,在下面包含了+ mrry的评论。 – dga
欲了解更多信息,有关如何在[预加载的数据]下的文档(https://www.tensorflow.org/versions/r0.7/how_tos/reading_data/index.html#preloaded-data )以及如何使用占位符和变量来预加载MNIST训练输入的完整示例[here](https://github.com/tensorflow/tensorflow/blob/r0.7/tensorflow/examples/how_tos/reading_data/) fully_connected_preloaded_var.py) – stefano