我正在做一个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)
,其中None
和None
是height
和width
的占位符,它们没有固定值。
现在,我想计算此y_pred
和y_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
方式。
谢谢您的任何建议!