我正在尝试实现Lambda图层以对我的探测器应用非最大抑制,但不断收到错误:

回溯(最近一次调用最后一次):文件“test2.py”,第130行,在res = model.predict(np.random.rand(1,416,416,3),verbose = 100)文件“/ usr / local / lib / python3.5 / dist-packages / keras / engine / training.py“,第1835行,预测详细=详细,步骤=步骤)文件”/usr/local/lib/python3.5/dist-packages/keras/engine /training.py“,第1340行,在_predict_loop outs [i] [batch_start:batch_end] = batch_out ValueError:无法将形状(10,4)的输入数组广播为形状(1,4)

代码如下:

from keras import backend as K
flatten_boxes = K.reshape(boxes,shape=(SIZE*SIZE, 4))
flatten_scores = K.reshape(scores,shape=(SIZE*SIZE, ))
selected_indices = tf.image.non_max_suppression(flatten_boxes, flatten_scores, max_output_size=10, iou_threshold=0.3)

selected_boxes = K.gather(flatten_boxes, selected_indices)
selected_scores = K.gather(flatten_scores, selected_indices)`

我认为nms改变每个示例的输出形状的事实是问题,因为在这种情况下更改 max_output_size = 1 运行没有错误 . 有没有办法让keras Lambda层与nms一起工作?写一个像here这样的自定义图层会有帮助吗?非常感谢任何帮助,谢谢 .