相关疑难解决方法(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函数api,手动设置权重到层

在 keras Sequential 模型中,可以直接使用set_weights方法设置权重。

model.layers[n].set_weights([your_wight])
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用功能 API 为图层设置权重,我将面临问题。

这是代码片段:

emb = Embedding(max_words, embedding_dim, input_length=maxlen)(merge_ip)
         #skipping some lines
         .
         .
emb.set_weights([some_weight_matrix])
Run Code Online (Sandbox Code Playgroud)

这是抛出错误

AttributeError: 'Tensor' object has no attribute 'set_weights'
Run Code Online (Sandbox Code Playgroud)

我认为因为emb是一个 Tensor 对象。

我想知道如何在我的模型中正确设置 wight

python neural-network keras tensorflow

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

标签 统计

tensorflow ×2

keras ×1

neural-network ×1

python ×1