Python 在Keras中实现自定义损失函数时遇到问题
我正在尝试在Keras中实现一个自定义损失函数。该模型需要花费大量时间进行编译,并且内存(RAM)不足 我的预测有形状:(无,16,16,5),其中最后一个维度有元素:Python 在Keras中实现自定义损失函数时遇到问题,python,keras,conv-neural-network,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] 我正在尝试实现一个类似于此损失函数的函数: 注:x在32范围内,因为批次大小为32 K.get_shape().as_list()或K.int_shape(
[probability, x_coordinate_of_box, y_coordinate of box, width_of_box, height_of_box]
我正在尝试实现一个类似于此损失函数的函数:
注:x在32范围内,因为批次大小为32
K.get_shape().as_list()
或K.int_shape()
将批大小返回为无
我希望模型使用自定义丢失,但是model.compile()
步骤会继续处理,并耗尽内存/RAM
另外,如果有人能帮助我在运行时得到预测的形状,那将是非常棒的
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