我正在使用以下设置:Fedora 26、NVIDIA GTX 970、CUDA 8.0、CUDNN 6.0 和 python 上的 tensorflow-gpu==1.3.0
我的问题是,当使用以下命令强制 dynamic_rnn 运算符在我的 gpu 上运行时:
with tf.name_scope('encoder_both_rnn'),tf.device('/gpu:0'):
_, encoder_state_final_forward = tf.nn.dynamic_rnn(self.encoder_cell_forward,input_ph,dtype=tf.float32,time_major=False,sequence_length=sequence_length,scope='encoder_rnn_forward')
_, encoder_state_final_reverse = tf.nn.dynamic_rnn(self.encoder_cell_reverse,input_reverse,dtype=tf.float32,time_major=False,sequence_length=sequence_length,scope='encoder_rnn_reverse')
调用全局变量初始化程序时收到以下错误:
InvalidArgumentError:节点“init/NoOp”:未知输入节点“^drawlog_vae_test.DrawlogVaeTest.queue_training/encoder/encoder/encoder_W_mean/Variable/Assign”
该变量是使用以下语句创建的:
self.encoder_W_mean = u.weight_variable([self.intermediate_state_size * 2,self.intermediate_state_size*2],name='encoder_W_mean')
和
def weight_variable(shape,name=None,use_lambda_init=False):
with tf.name_scope(name):
num_weights = float(reduce(lambda x,y: x*y,shape))
initial = tf.truncated_normal(shape,stddev=1) * math.sqrt(2.0/num_weights)
if use_lambda_init:
initial = lambda: np.random.normal(size=shape)
return tf.Variable(initial,dtype=tf.float32)
奇怪的是,这个变量几乎与两个 rnns 无关。有没有机会在 GPU 上运行我的 rnn?或者这只是一个奇怪的错误告诉我我不能在 GPU 上运行 rnn?