如果以前在单个GPU上训练数据,是否可以在多个GPU上进行评估(检测)?

时间:2018-08-07 08:10:23

标签: python tensorflow

我们正在尝试根据给出的图片来识别车牌上的数字。 我们已经基于单个GPU训练了数据集。 是否可以在不修改模型的情况下评估多个GPU上的数据? 我们使用Tensorflow库进行培训和评估。

1 个答案:

答案 0 :(得分:1)

没有任何代码确实很难帮助您。 我可以给你一个见识。 要从GPU传递到多GPU,您必须:

1)根据GPU的数量分割数据(注意大小,它必须为矩阵)

2)在每个gpu上构建一个类似于以下图形的循环:

with tf.variable_scope(tf.get_variable_scope()) as outer_scope:
            for i in enumerate(range(nb_of_GPU)):
                name = 'tower_{}'.format(i)
                with tf.device("/gpu:"+str(i)), tf.name_scope(name):
                    logits = self.build_graph(splitted_inputs[i])
                    batch_loss = self.compute_loss(logits, splitted_labels[i])
                    batch_acc = self.compute_acc(logits, splitted_labels[i])
                    losses.append(batch_loss)
                    accs.append(batch_acc)
                    tf.summary.scalar("loss", batch_loss)
                    gradient = optimizer.compute_gradients(batch_loss)
                    tower_grads.append(gradient)
                    outer_scope.reuse_variables()
        avergage_grads = average_gradients(tower_grads)
        train_op = optimizer.apply_gradients(avergage_grads)

您还必须更改输入占位符的大小。

所以您问题的答案是否可以在不修改模型的情况下评估多个GPU上的数据?。 您将不得不更改一些内容。