无法在Keras中实现自定义损失功能

时间:2019-03-28 14:40:12

标签: python keras conv-neural-network

我正在尝试在Keras中实现自定义损失功能。该模型需要大量时间才能编译,并且用完了内存(RAM)。

我的预测具有以下形状:(无,16、16、5),其中最后一个维度包含以下元素:

[probability, x_coordinate_of_box, y_coordinate of box, width_of_box, height_of_box]

我正在尝试实现类似于此损失功能的功能:

enter image description here

import keras.backend as K
def yoloLoss(y_true, y_pred):
  sse = 0
  l_bbox = 0
  shape = y_pred.get_shape().as_list()
  w_coord = 1
  w_box = 5
  for x in range(32):
    for i in range(shape[1]):
      for j in range(shape[2]):
          sse += (y_pred[x][i][j][0] - y_true[x][i][j][0])**2
          l_bbox +=  w_coord*((y_pred[x][i][j][1] - y_true[x][i][j][1])**2 + (y_pred[x][i][j][2] - y_true[x][i][j][2])**2) + w_box*((y_pred[x][i][j][2]**0.5 - y_true[x][i][j][2]**0.5)**2 + (y_pred[x][i][j][3]**0.5 - y_true[x][i][j][3]**0.5)**2)
  return sse + l_bbox

注意:x的范围是32,因为batch_size是32。

K.get_shape().as_list()K.int_shape()返回批处理大小为无

我希望模型使用自定义丢失,但是model.compile()步骤会继续处理并耗尽内存/ RAM。

此外,如果有人可以帮助我确定运行时的预测形状,那真是太好了!

0 个答案:

没有答案