相关疑难解决方法(0)

使用大于2GB的数组初始化tensorflow变量

我正在尝试Variable使用预先训练的word2vec嵌入来初始化张量流.

我有以下代码:

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))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError: Cannot create an Operation with a NodeDef larger than 2GB.
Run Code Online (Sandbox Code Playgroud)

X我试图分配的数组()是形状(3000000, 300),其大小为3.6GB.

如果我也尝试tf.convert_to_tensor(X),我会得到同样的错误.

我知道它由于阵列大于2GB而失败.但是,我不知道如何将大于2GB的数组分配给张量流Variable

tensorflow

21
推荐指数
2
解决办法
1万
查看次数

通过Keras使用大于2 Gb的数据集

TensorFlow在单个张量上长期存在2 Gb的限制。这意味着您不能一次跳过超过2 Gb的数据来训练模型。请参见使用大于2GB的数组初始化tensorflow变量在Tensorflow中使用大型数据集

这些帖子中引用的标准解决方案是使用占位符,并将其通过feed_dict传递给“会话”:

my_graph = tf.Graph()
sess = tf.Session(graph=my_graph)   
X_init = tf.placeholder(tf.float32, shape=(m_input, n_input))
X = tf.Variable(X_init)
sess.run(tf.global_variables_initializer(), feed_dict={X_init: data_for_X})
Run Code Online (Sandbox Code Playgroud)

但是,这仅在我使用“旧” API(tf.Session()等)时才有效。如今,推荐的方法是使用Keras(tensorflow.org上的所有教程都使用它)。而且,对于Keras,没有tf.Graph(),tf.Session()和run()(至少没有一个用户容易看到的)。

如何修改以上代码以与Keras配合使用?

python keras tensorflow

1
推荐指数
1
解决办法
595
查看次数

标签 统计

tensorflow ×2

keras ×1

python ×1