Kerasでバッチサイズが大きいために出るエラー
動作環境
2020年7月
Google Colaboratory
Kerasで以下のようなエラーが出た場合
ResourceExhaustedError Traceback (most recent call last)
<ipython-input-20-72c6485cb5b9> in <module>()
196 validation_steps=validation_steps,
197 epochs=epochs,
--> 198 callbacks=call_backs)
199
9 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
58 ctx.ensure_initialized()
59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60 inputs, attrs, num_outputs)
61 except core._NotOkStatusException as e:
62 if name is not None:
ResourceExhaustedError: OOM when allocating tensor with shape[10,512,120,160] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[{{node gradients_1/conv2d_26/Relu_grad/ReluGrad-0-TransposeNHWCToNCHW-LayoutOptimizer}}]]
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.
[Op:__inference_keras_scratch_graph_13024]
Function call stack:
keras_scratch_graph
エラーの原因
バッチサイズが大きすぎることが原因でした。バッチサイズを小さくしましょう。学習する教師画像が大きいほど、データセットも大きくなりやすいので、そういう大きな画像を教師にする場合はよく出現します。
手っ取り早い解決コード
"""
データフレームを割ってバッチサイズを小さくする
学習画像がさらに増えて、またエラーが出るようになったらnumの数を増やせばよい
"""
num = 5
batch_size = x_train_df.shape[0] // num
