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 回答
您使用的GPU内存过多 . 尝试使用较小的批处理大小或确保没有其他进程在同一GPU上运行 .