【发布时间】:2016-10-07 07:05:50
【问题描述】:
我想用 Tensorflow 计算矩阵乘法。
但是它发生了错误,而 numpy 的使用不会出错。
(进程以退出代码 139 结束(被信号 11:SIGSEGV 中断))
带有 CPU / GPU 的 Tensorflow:发生错误:进程以退出代码 139 完成(被信号 11:SIGSEGV 中断) 使用 Numpy(没有 Tensorflow):效果很好
import tensorflow as tf
mport numpy as np
num_doc = 1000 #10000
num_topic = 10
num_user = 20 #8000
cost = 0
#### Tensorflow with CPU ####
with tf.device('/cpu:0'):
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]))
for u in range(num_user):
print u
for d in range(num_doc):
for k in range(num_topic):
cost = cost + a_dk[d,k] * x_uk[u,k] * x_dk[d,k]
#### Tensorflow with GPU ####
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]))
for u in range(num_user):
print u
for d in range(num_doc):
for k in range(num_topic):
cost = cost + a_dk[d,k] * x_uk[u,k] * x_dk[d,k]
#### Numpy ####
a_dk = np.random.randn(num_doc, num_topic)
x_uk = np.random.randn(num_user, num_topic)
x_dk = np.random.randn(num_doc, num_topic)
for u in range(num_user):
print u
for d in range(num_doc):
for k in range(num_topic):
cost = cost + a_dk[d,k] * x_uk[u,k] * x_dk[d,k]
我使用了 i7-4k / 16GB ram / GTX-1070(8GB)
我需要一个使用 Tensorflow 的 for-loop elementwise 矩阵乘法解决方案。
(其实我的问题比上面的代码更复杂,所以很难向量化)
提前谢谢你!!
【问题讨论】:
-
请添加更多详细信息,您到底想要什么?为什么你把它标记为 c++,你想要 c++ 中基于 for 循环的解决方案吗?如果你在 python 中需要帮助,请将其标记为 python。
标签: python tensorflow