我正在做自动分割,周末我在训练一个模型,结果停电了。我已经训练了我的模型50多个小时,并使用线每5个时期保存一次我的模型
model_checkpoint = ModelCheckpoint('test_{epoch:04}.h5', monitor=observe_var, mode='auto', save_weights_only=False, save_best_only=False, period = 5)
我正在使用以下行加载保存的模型:
model = load_model('test_{epoch:04}.h5', custom_objects = {'dice_coef_loss': dice_coef_loss, 'dice_coef': dice_coef})
我已经包含了我的所有数据,这些数据将我的训练数据拆分为用于扫描的train_x
和用于标签的train_y
。当我运行线路时:
loss, dice_coef = model.evaluate(train_x, train_y, verbose=1)
我得到错误:
ResourceExhaustedError: OOM when allocating tensor with shape[32,8,128,128,128] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[node model/conv3d_1/Conv3D (defined at <ipython-input-1-4a66b6c9f26b>:275) ]]
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_distributed_function_3673]
Function call stack:
distributed_function
这基本上是内存不足。因此,您需要进行小批量评估。默认批处理大小为32,请尝试分配较小的批处理大小。
evaluate(train_x, train_y, batch_size=<batch size>)
来自keras文档
batch_size:整数或无。每次渐变更新的采样数。如果未指定,batch_size将默认为32。