单机多GPU训练报错

Posted dan-baishucaizi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单机多GPU训练报错相关的知识,希望对你有一定的参考价值。

问题一

  在keras中使用多个GPU训练模型时,出现错误 AttributeError: ‘_TfDeviceCaptureOp‘ object has no attribute ‘_set_device_from_string‘ , 根据错误提示是‘_TfDeviceCaptureOp‘对象没有属性‘_set_device_from_string‘

解决措施:经过思考,我觉得我的tensorflow版本可能有问题,所以将tensorflow从1.14.0版本降到1.12.0版本,此问题得到解决。但是又出现了问题二。

问题二

  Can‘t concatenate scalars (use tf.stack instead) for ‘yolo_loss_1/concat‘ (op: ‘ConcatV2‘) with input shapes: [], [], [] 。报错信息提示两个对象不能拼合。

解决措施:第一次看见一脸懵逼,后来看代码发现是调用 model = multi_gpu_model(model, gpus=2) 出错,这里的model对象是有问题的,它应该是网络架构,不应该包含其他,而我在调用时写在了模型文件加载之后,所以我调整了代码将这段代码改为:model_body = multi_gpu_model(model_body, gpus=2) ,这里传入的model_body是keras的 Model 对象

 

以上是关于单机多GPU训练报错的主要内容,如果未能解决你的问题,请参考以下文章

单机多GPU训练模型入门指南(torch.nn.DataParallel)

单机多GPU训练模型入门指南(torch.nn.DataParallel)

tensorflow 单机多GPU训练时间比单卡更慢/没有很大时间上提升

TensorFlow分布式部署单机多卡

Pytorch Multi-GPU原理与实现(单机多卡)

Pytorch使用分布式训练,单机多卡