- 전체 에러 문구
InvalidArgumentError (see above for traceback): slice index 0 of dimension 0 out of bounds.
[[node replica_0_1/model_2/roi_pooling_conv_1/strided_slice_1 (defined at /home/ailab/gy/homework_2/keras-frcnn-master/keras_frcnn/RoiPoolingConv.py:63) = StridedSlice[Index=DT_INT32, T=DT_FLOAT, begin_mask=0, ellipsis_mask=0, end_mask=0, new_axis_mask=0, shrink_axis_mask=7, _device="/job:localhost/replica:0/task:0/device:GPU:0"](replica_0_1/lambda_4/Slice, replica_0_1/model_2/roi_pooling_conv_1/strided_slice_1/stack, replica_0_1/model_2/roi_pooling_conv_1/strided_slice_1/stack_1, loss_1/concatenate_4_loss/strided_slice_2/stack_2)]]
[[{{node replica_1_1/model_2/dense_class_6/Reshape_1/_4063}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:1", send_device_incarnation=1, tensor_name="edge_8784_replica_1_1/model_2/dense_class_6/Reshape_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
Faster R-CNN Tensorflow에서 multi gpu를 사용하여 학습을 시도할 때 발생했던 오류입니다.
전체 모델 중 RPN 부분과 Classifier부분은 사전 학습된 모델을 로드하여 사용하고 있는데, 이때 이 모델들까지 multi_gpu_model 함수로 변환해주면 발생하는 오류입니다.
- 해결 방법
model_rpn = multi_gpu_model(model_rpn, gpus=2)
model_classifier = multi_gpu_model(model_classifier, gpus=2)
model_all = multi_gpu_model(model_all, gpus=2)
위 코드에서 사전 학습된 모델을 로드하는 부분인 model_rpn과 model_classifier를 주석 처리 해주면 됩니다!