我正在尝试训练多输出模型。我按如下方式批量加载图像,
def get_batch_features(self, idx):
return np.array([load_image(im) for im in self.im_list[idx * self.bsz: (1 + idx) * self.bsz]])
以下是我的load_image函数,其中将图像规范化为0到255之间,如下所示
def load_image(im):
return img_to_array(load_img(im, target_size=(224, 224))) / 255.
我正在加载作为4个xy坐标目标坐标的标签。
def get_batch_labels(self, idx):
return self.labels[idx * self.bsz: (idx + 1) * self.bsz,:]
如何通过将目标坐标缩放为[-1,1]来规范化目标坐标?由于无法即时缩放,因此由于模型过度拟合,即时验证会遭受巨大损失。是否可以通过任何方式在[-1,1]之间缩放目标坐标?
答案 0 :(得分:1)
假设您的目标坐标位于间隔[0,223]
中,因为这就是您的图像有多少像素,那么只需减去[-111.5,111.5]
并除以{ {1}}之后?
111.5
实际上,根据我的经验,您不需要精确地击中111.5
,只需将它们除以return (self.labels[idx * self.bsz: (idx + 1) * self.bsz,:]-111.5)/111.5
就足够了,这样它们的大小顺序正确。除此之外,您还可以计算所有标签的统计信息并将其标准化,以使它们遵循零均值/单位方差,这是一种常见策略。