我想用Tensorflow计算矩阵乘法。
但它出现错误,而numpy使用不会产生错误。
(处理以退出代码139结束(由信号11:SIGSEGV中断))
Tensorflow with CPU / GPU:出现错误:进程以退出代码139结束(由信号11中断:SIGSEGV) 使用Numpy(没有Tensorflow):它很好地发生
$
我使用的是i7-4k / 16GB ram / GTX-1070(8GB)
我需要一个带有Tensorflow的for-loop元素矩阵乘法解决方案。
(实际上,我的问题比上面的代码更复杂。因此很难使其成为矢量化)
提前谢谢!!
答案 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, :, :]))