Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow:如何使用GPU培训LSTM_Python_Tensorflow_Gpu - Fatal编程技术网

Python Tensorflow:如何使用GPU培训LSTM

Python Tensorflow:如何使用GPU培训LSTM,python,tensorflow,gpu,Python,Tensorflow,Gpu,根据Tensorflow的官方网站,Tensorflow函数默认使用GPU计算 如果TensorFlow操作同时具有CPU和GPU实现,则当该操作分配给设备时,GPU设备将获得优先权 我正在用3层LSTM单元训练一个动态rnn。但在监控GPU使用情况时,我发现GPU负载为0% 我的GPU是Nvidia GTX 960 M。详细信息如下 我在谷歌上搜索了很多,但还是一无所获。我很确定我安装了支持gpu的Tensorflow版本,并且已经更新了。 我想知道是否没有用于dynamic\u rnn或

根据Tensorflow的官方网站,Tensorflow函数默认使用GPU计算

如果TensorFlow操作同时具有CPU和GPU实现,则当该操作分配给设备时,GPU设备将获得优先权

我正在用3层LSTM单元训练一个动态rnn。但在监控GPU使用情况时,我发现GPU负载为0%

我的GPU是Nvidia GTX 960 M。详细信息如下

我在谷歌上搜索了很多,但还是一无所获。我很确定我安装了支持gpu的Tensorflow版本,并且已经更新了。 我想知道是否没有用于dynamic\u rnn或LSTMCell的GPU实现?有什么办法可以实施吗

谢谢

我的代码:

import numpy as np
import tensorflow as tf
import operator

lr = 0.001
seq_length=  50
char_per_iter = 5
n_inputs = 97
n_hidden_units = 700 
n_layers = 3
keep_prob = tf.placeholder(tf.float32)
seq_length_holder = tf.placeholder(tf.int32)

str = open('C:/Users/david_000/workspace/RNN/text_generator/PandP.txt', 'r', encoding = 'utf8').read()
str = str[667:]
str = str.replace("\n", " ")
str = str.replace("‘", "'")
str = str.replace("’", "'")
str = str.replace("“", '"')
str = str.replace("”", '"')

# check if all char's are ascii 
uni = "".join(set(str))
for ch in uni:
    if ord(ch) >= 128:
        print(ch) 

x = []
for i in range(len(str)//char_per_iter):
    x.append(str[i*char_per_iter : i*char_per_iter + seq_length])

def oneHot(char):
    asc = ord(char)
    asc -= 31
    if asc < 97:
        return np.eye(97)[asc].reshape(1,1,-1)
    else:
        return np.eye(97)[0].reshape(1,1,-1)

def getOneHot(seq):
    out = []
    for char in seq:
        out.append(oneHot(char))

    return np.array(out).reshape(1, len(seq), n_inputs)

'''
 RNN
'''

# tf Graph input
xs = tf.placeholder(tf.float32, [1, None, n_inputs])
ys = tf.placeholder(tf.float32, [1, None, n_inputs])

def lstm_cell():        
    cell = tf.contrib.rnn.BasicLSTMCell(n_hidden_units)
    cell = tf.contrib.rnn.DropoutWrapper(cell, output_keep_prob = keep_prob)
    return cell

def RNN(X):

    lstm_stacked = tf.contrib.rnn.MultiRNNCell([lstm_cell() for _ in range(n_layers)]) 
    outputs, final_state = tf.nn.dynamic_rnn(lstm_stacked, X, dtype=tf.float32)
    output = tf.layers.dense(outputs, n_inputs, activation=tf.nn.softmax)
    output = tf.reshape(output, [-1, seq_length_holder, n_inputs])

    return output


pred = RNN(xs)
cost = tf.losses.sigmoid_cross_entropy(ys, pred)
optimizer = tf.train.AdamOptimizer(lr)
train_step = optimizer.minimize(cost)
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

init = tf.global_variables_initializer()
sess.run(init)

for i in range(47, len(x)):
    sess.run(train_step, feed_dict = {xs : getOneHot(x[i]), ys : getOneHot(x[i+1]), keep_prob : 0.7, seq_length_holder : seq_length})
    if i % 10 == 0:
        print(i)
它给出:

设备映射:没有已知的设备

我遵循了这个教程 一步一步,除了Anaconda,因为我用pip3安装了tensorflow。这对我不起作用

更新

我知道它为什么不起作用

出于同样的原因,我的python使用的是仅CPU版本的tensorflow,尽管我两者都有。我卸载了CPU版本并再次安装了tensorflow gpu。现在它给出了错误:

没有名为“\u pywrap\u tensorflow\u internal”的模块

我知道这与安装有关,还有很多讨论,如:


继续操作。

您是否安装了CUDA工具包?是的,我遵循了本教程,但是当我运行:sess=tf.Session(config=tf.ConfigProto(log\u device\u placement=True))时,它会说“设备映射:没有已知设备”。您是否安装了
tensorflow gpu
python包?是的,Imran。我仔细检查了一下。我安装了“pip3安装——升级tensorflow gpu”,我注意到了一些东西。我卸载了Tensorflow,并安装了Tensorflow gpu。然后python在导入时找不到tensorflow:将tensorflow作为tf导入。在lib>>站点包目录中,有tensorflow_gpu模块,但没有tensorflow模块。
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))