首页 文章

带有Tensorflow的Keras:predict_generator抛出ResourceExhaustedError

提问于
浏览
0

Specs

Docker容器在16 GB Ram,1x GTX1070,8GB,Ubuntu 16.04.3 LTS的机器上运行 . Keras设置为使用GPU .

What I want to do

我想计算一组79726图像245x245(RGB)的卷积输出,这样我就可以通过已经训练的二次模型得到预测 . 我正在使用Keras.applications附带的VGG16模型 .

Code

model = VGG16(include_top=False)
tst_b_s = 200
test_batches = ImageDataGenerator().flow_from_directory(
    directory='test/',
    target_size=(245,245),
    batch_size=tst_b_s,
    shuffle=False,
  )
test_feats = model.predict_generator(test_batches, steps=test_batches.samples/tst_b_s, verbose=1)

Problem

预测生成器运行一段时间,然后抛出

ResourceExhaustedError:分配张量形状的OOM [200,64,245,245] [[节点:block1_conv2 / convolution = Conv2D [T = DT_FLOAT,data_format =“NHWC”,padding =“SAME”,strides = [1,1,1,1] ],use_cudnn_on_gpu = true,_device =“/ job:localhost / replica:0 / task:0 / device:GPU:0”](block1_conv1 / Relu,block1_conv2 / kernel / read)]] [[Node:block5_pool / MaxPool / _159 = _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_127_block5_pool / MaxPool“,tensor_type = DT_FLOAT,_device =”/ job:localhost / replica:0 / task:0 / device:CPU:0“]]

Update using smaller batches (10)

预测过程仍然停止,但这次出现内部错误:

InternalError:未初始化Dst张量 . [[节点:block5_pool / MaxPool / _159 = _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_127_block5_pool / MaxPool“,tensor_type = DT_FLOAT,_device =”/ job:localhost / replica:0 / task:0 / device:CPU:0“]]

没有其他使用GPU的进程 .

谢谢

1 回答

  • 0

    您使用的GPU内存过多 . 尝试使用较小的批处理大小或确保没有其他进程在同一GPU上运行 .

相关问题