基於最近鄰法手寫數字識別(內附python原始碼)
更多python教程請到: 菜鳥教程 https://www.piaodoo.com/
問題:
在使用mask_rcnn預測自己的資料集時,會出現下面錯誤:
ResourceExhaustedError: OOM when allocating tensor with shape[1,512,1120,1120] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc [[{{node rpn_model/rpn_conv_shared/convolution}} = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](fpn_p2/BiasAdd, rpn_conv_shared/kernel/read)]] Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.[[{{node roi_align_mask/strided_slice_17/_4277}} = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_3068_roi_align_mask/strided_slice_17", tensor_type=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"
]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
原因:
一是、因為圖片尺寸為3200*4480,圖片的尺寸太大。
二是、我使用的是TensorFlow GPU版,而我GPU的視訊記憶體只有8G,導致視訊記憶體不夠。
解決:
一是、將圖片尺寸改小,小到佔用的記憶體比視訊記憶體。
二是、不使用GPU進行預測,只使用CPU預測,因為一般CPU記憶體要大於視訊記憶體的。但裝的又是GPU版的TensorFlow,所以需要在預測程式進行更改。
程式在前兩行加入下面程式碼:
import os os.environ["CUDA_VISIBLE_DEVICES"] = ""
引號裡填的是GPU的序號,不填的時候代表不使用GPU。
以上這篇解決TensorFlow GPU版出現OOM錯誤的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援菜鳥教程www.piaodoo.com。