稀疏张量内存使用

时间:2019-02-12 17:59:33

标签: python tensorflow

使用包含大型稀疏矩阵的tf.while_loop时,内存不足。代码运行良好,使用较小的矩阵给出了预期的结果,但是使用较大的矩阵,则返回错误:

  

“ Dst张量未初始化”

我在其他地方发现的

表明存在内存问题

with tf.device('/gpu:0'):
    HH_ph=tf.sparse.placeholder(tf.float32)
    sp=CACTIS.convert_sparse_matrix_to_sparse_tensor(HH)
    a=tf.constant(a,shape=[np.size(a),1],dtype=tf.float32)
    i=tf.constant(0,dtype=tf.int32)
    f=tf.constant(f,dtype=tf.float32)
body = lambda i,f:(tf.add(i,1),tf.divide(tf.multiply(f,a),tf.sparse_tensor_dense_matmul(HH_ph,f)+10e-9))
cond= lambda i,f:tf.less(i,iterations)
i,f=tf.while_loop(cond,body,(i,f))
sess=tf.Session()
i,f=sess.run([i,f],feed_dict={HH_ph:sp})

唯一特别大的矩阵是HH,它是一个125000x125000稀疏矩阵,其中存储了204760876个元素。 HH.data.bytes = 819043504。 a,f和HH是已在其他地方初始化的numpy数组。在运行此代码块之前,python使用了约2 gigs的内存,但是当将问题转移到GPU时,峰值增加到了15 gigs。我是错误地使用了稀疏张量,还是while_loop做错了什么?

0 个答案:

没有答案