我尝试过一系列不同的Tensorflow示例,它们在CPU上工作正常但在我尝试在GPU上运行时会产生相同的错误.一个小例子就是:
import tensorflow as tf
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print sess.run(c)
Run Code Online (Sandbox Code Playgroud)
错误始终相同,CUDA_ERROR_OUT_OF_MEMORY:
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcublas.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcudnn.so.6.5 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcufft.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用tensorflow中的dropout功能:
sess=tf.InteractiveSession()
initial = tf.truncated_normal([1,4], stddev=0.1)
x = tf.Variable(initial)
keep_prob = tf.placeholder("float")
dx = tf.nn.dropout(x, keep_prob)
sess.run(tf.initialize_all_variables())
sess.run(dx, feed_dict={keep_prob: 0.5})
sess.close()
Run Code Online (Sandbox Code Playgroud)
此示例与本教程中的示例非常相似; 但是,我最终得到以下错误:
RuntimeError: min: Conversion function <function constant at 0x7efcc6e1ec80> for type <type 'object'> returned incompatible dtype: requested = float32_ref, actual = float32
Run Code Online (Sandbox Code Playgroud)
我很难理解dtype float32_ref,这似乎是问题的背景.我也尝试过指定dtype=tf.float32,但这并没有解决任何问题.
我也试过这个例子,它适用于float32:
sess=tf.Session()
x=tf.Variable(np.array([1.0,2.0,3.0,4.0]))
sess.run(x.initializer)
x=tf.cast(x,tf.float32)
prob=tf.Variable(np.array([0.5]))
sess.run(prob.initializer)
prob=tf.cast(prob,tf.float32)
dx=tf.nn.dropout(x,prob)
sess.run(dx)
sess.close()
Run Code Online (Sandbox Code Playgroud)
但是,如果我施放float64而不是float32我得到相同的错误:
RuntimeError: min: Conversion function <function constant at 0x7efcc6e1ec80> for …Run Code Online (Sandbox Code Playgroud)