2017-04-03 68 views
0

我使用TensorFlow和Python實現一個簡單的有競爭力的神經網絡。缺少內核GPU與tf.int64可變

運行時代k,我需要存儲獲勝者節點的索引並將其用於時代k+1。我有一個變量類型的問題,其解決方案讓我感到困惑。

其實,我理解主要的問題,因爲我已閱讀答案this question,但我想我需要在一些地方保存在GPU上該值。

我編寫了一個簡單的例子,用於顯示我所講的:

import tensorflow as tf 
import numpy as np 

with tf.device("gpu:0"): 
    sess = tf.InteractiveSession() 

    vec = tf.Variable(tf.random_uniform([3], 0.0, 1.0, dtype=tf.float64), dtype=tf.float64, name='random_vector') 
    var1 = tf.arg_max(vec, 0) 

    var2 = tf.Variable(0, dtype=tf.int64, name='variable2') 
    var2_op = tf.assign(var2, var1) 

    sess.run(var2_op) 

比方說,在劃時代k年底,我有矢量vec,我需要存儲的索引具有最大值的位置,對應於var1。在移至時代k+1之前,我想將var1的值存儲在變量var2中。

如果我運行上面的代碼中,我得到錯誤:

無法分配設備節點「變量2」:無法滿足明確的設備規格「/設備:GPU:0」,因爲GPU的設備不支持的內核可用。

我可以提供完整的堆棧跟蹤,但我認爲這裏不需要。

所以問題是:我是否被迫使用tf.float64變量,並在每次使用時將值從/到tf.int64?你知道其他可能的解決上述問題的方法嗎?

回答