Tensorflow元素矩阵乘法(for-loop)错误

时间:2016-10-07 07:05:50

标签: python tensorflow

我想用Tensorflow计算矩阵乘法。
但它出现错误,而numpy使用不会产生错误。
(处理以退出代码139结束(由信号11:SIGSEGV中断))

Tensorflow with CPU / GPU:出现错误:进程以退出代码139结束(由信号11中断:SIGSEGV) 使用Numpy(没有Tensorflow):它很好地发生

$

我使用的是i7-4k / 16GB ram / GTX-1070(8GB)
我需要一个带有Tensorflow的for-loop元素矩阵乘法解决方案。
(实际上,我的问题比上面的代码更复杂。因此很难使其成为矢量化)

提前谢谢!!

2 个答案:

答案 0 :(得分:0)

您粘贴的内容有一些错误。你没有正确导入numpy。

对于tensorflow,您需要创建一个会话。

with tf.Session() as sess:
    ... cpu or gpu code here...
    print(sess.run([cost]))

为numpy它内置元素明智的乘法

result = np.multiply(A,B)

使用它。您也可以在调用时将其索引到A,B

result = np.multiply(A[i,:],B[:,i])

答案 1 :(得分:0)

错误很可能是由创建一个巨大的TensorFlow图形引起的,每个最内层循环迭代至少有10个节点。使用TensorFlow的内置元素运算符可以更有效地计算这样的运算,这些运算符支持broadcasting以避免实现整个矩阵的需要。例如,您的程序可以使用两个(元素)tf.multiply()操作和tf.reduce_sum()编写:

a_dk = tf.Variable(tf.random_normal([num_doc,num_topic]))
x_uk = tf.Variable(tf.random_normal([num_user,num_topic]))
x_dk = tf.Variable(tf.random_normal([num_doc,num_topic]))

ax_dk = tf.multiply(a_dk, x_dk)

# Add extra dimensions to broadcast ax_dk along the user dimension, and
# x_uk along the docs dimension:
cost = tf.reduce_sum(tf.multiply(ax_dk[:, None, :], x_uk[None, :, :]))
相关问题