我们正在尝试根据给出的图片来识别车牌上的数字。 我们已经基于单个GPU训练了数据集。 是否可以在不修改模型的情况下评估多个GPU上的数据? 我们使用Tensorflow库进行培训和评估。
答案 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上的数据?是否。 您将不得不更改一些内容。