当我使用multi gpu加载由单个训练的模型时,我收到此错误消息:
在检查点文件models_0606 / my_modle-50中找不到张量名称“test_mutli_gpu_1 / test_mutli_gpu_1 / Mean / avg”
这是关于图形代码的伪代码:
with tf.Graph().as_default():
a = tf.get_variable()
for gpu_index in range(0,4):
with tf.device('/gpu:%d' % gpu_index):
with tf.name_scope('%s_%d' % ('test_mutli_gpu', gpu_index)) as scope:
tf.get_variable_scope().reuse_variables()
loss = caculateloss()
grad = calculategard()
grads.append(grad )
grad = average_gradients(grads)
apply_gradient_op = opt.apply_gradients(grads)
variable_averages = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY)
variables_averages_op = variable_averages.apply(tf.trainable_variables())
train_op = tf.group(apply_gradient_op, variables_averages_op)
任何人都知道我是否在多gpu训练中弄乱了什么 非常感谢〜
答案 0 :(得分:0)
我找到了答案,通常会说如果您使用单GPU训练模型,则无法继续使用多GPU 训练您的模型。
loss_averages = tf.train.ExponentialMovingAverage(0.9,name =' loss') loss_averages_op = loss_averages.apply(loss + [total_loss])
在我的caculateloss()函数中,此操作将生成一个带有关于 gpu_idx 的prename的变量 或者你可以对cifair_multi_train.py进行一些测试