【问题标题】:Slow tensorflow training and evaluation on GPUGPU 上的慢速 tensorflow 训练和评估
【发布时间】:2017-08-01 18:10:23
【问题描述】:

所以我正在做一些研究,并且有很多关于两个人一起在房间周围移动的物体的速度和加速度数据。之前,我已经成功地使用 LSTM 和 RNN 训练了一个时间序列预测神经网络,以预测物体的速度将是未来一个时间步长。

在训练这个 NN 之后,我对其进行了扩充,以使用预测以及之前的数据来预测未来的另一个时间步长,等等一定数量的时间步长。我已经包含了这个样子的图形,NN_explanation。本质上,我使用先前的数据(大小为 N 个时间步长由 M 个输入)来预测一个步骤,然后将此预测添加到输入的末尾,并删除输入的第一个时间步长(以保持大小 N x M)然后为下一个时间步再次训练,直到我有 P 个未来预测来与测量数据进行比较。

这是我的变量

x = tf.placeholder(tf.float32,[None, n_steps, n_inputs])
y = tf.placeholder(tf.float32,[None, n_outputs])
W = {'hidden': tf.Variable(tf.random_normal([n_inputs, n_nodes])),
'output': tf.Variable(tf.random_normal([n_nodes,n_outputs]))}
bias = {'hidden': tf.Variable(tf.random_normal([n_nodes],mean= 1.0)),
'output': tf.Variable(tf.random_normal([n_outputs]))

这是我的模型

def model(x,y,W,bias):
x = tf.transpose(x,[1,0,2])
x = tf.reshape(x,[-1,n_inputs])
x = tf.nn.relu(tf.matmul(x,W['hidden']) + bias['hidden'])
x = tf.split(x,n_steps,0)
cells = []
for _ in xrange(n_layers):
    lstm_cell = rnn.BasicLSTMCell(n_nodes, forget_bias = 1.0, state_is_tuple = True)
    cells.append(lstm_cell)
lstm_cells = rnn.MultiRNNCell(cells,state_is_tuple = True)
outputs,states = rnn.static_rnn(lstm_cells, x, dtype = tf.float32)
output = outputs[-1]
return tf.matmul(output, W['output') + bias['output']

所以我有两个问题:

1] 当我训练这个 NN 时,我使用的是 TitanX GPU,它比我的 CPU 花费的时间更长。我在某处读到这可能是由于 LSTM 单元的性质。这是真的?如果是这样,有什么方法可以让这个网络的训练在我的 GPU 上更快,或者我只是坚持它很慢。

2] 训练完成后,我想用真实数据实时运行预测。不幸的是,即使使用sess.run(prediction,feed_dict) 一次也需要 0.05 秒。如果我想获得的不仅仅是一个未来的预测步骤,比如说 10 个未来的预测步骤,那么运行一个循环来获得 10 个预测将需要 0.5 秒,这对我的应用程序来说是不现实的。评估需要这么长时间是有原因的吗?我尝试减少时间步数(n_steps),以及未来要预测的步数,这似乎减少了预测所需的时间。但我觉得这只会影响训练时间,因为在评估时,NN 已经训练了所有内容,应该只是通过 GPU 填充数字。有什么想法吗?

【问题讨论】:

    标签: python tensorflow gpu evaluation


    【解决方案1】:

    关于问题 1: 并非所有 NN 都能从使用 GPU 中受益。在可以并行化大量乘法的情况下,GPU 是很好的选择。因此,他们非常擅长运行卷积神经网络。然而,当谈到 RNN 时,CPU 是你最好的选择。如果您有资源,您可以使用 Google Cloud ML-Engine 并在 CPU 集群上运行它。

    关于问题 2: TensorFlow 在使用 sess.run() 时开销很大。但是,我认为在上一个版本中,他们引入了一些将网络转换为可执行文件的功能。不过需要更好的意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多