如何自定义Keras中处理任意图像大小的损失函数?

时间:2019-05-30 18:20:35

标签: keras deep-learning conv-neural-network loss-function

我正在做一个CNN网络,该网络具有N层conv和M层conv-transpose。通过经历CNN的N + M层,目标是将每个图像(height, width, 3 color channel)转换为(height, width, nClasses),同时保持图像的任意高度和宽度。

比方说,数据集有6,000张图像,并且每个图像的高度和宽度都不同,因此输出y_pred就像一个列表,每个图像的大小都是任意的:[img1_out, img2_out, ... , img6000_out]。所有image_out都具有“ nClass”通道,但是每个通道都有其自己的原始/任意高度和宽度,这意味着y_pred的形状类似于(6000, None, None, nClasses),其中NoneNoneheightwidth的占位符,它们没有固定值。

现在,我想计算此y_predy_true之间的L2损耗,而y_true是具有与y_pred相同维度的Ground Truth数据:{ {1}}。

(6000, None, None, nClasses)

,我想将此转换为Keras后端函数,但不确定(1)张量是否可以具有任意大小? (2)当形状不固定时,如何像Keras后端函数一样将 def l2_loss(y_true, y_pred): loss = 0 n = y_true.shape[0] for j in range(n): loss = loss + np.sum((y_true - y_pred[i, :, :, :])**2) return loss/num_joints 转换为for-loop方式。

谢谢您的任何建议!

0 个答案:

没有答案