問題一:
在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 對象。