为什么在图像数据中添加噪声失败了CNN回归学习

时间:2017-11-11 16:13:47

标签: deep-learning convolution training-data loss

我正在使用CNN回归运行对象本地化任务。我用原始数据得到了相当不错的结果。

然而,在我在增强过程中将5%的噪音添加到原始数据后,训练期间的损失值看起来没问题,但验证在训练期间波动很大。当我在训练结束后检查结果时,神经网络总是预测出一个恒定的输出。也就是说,无论输入数据如何,网络的输出都不会改变,这意味着神经网络被困在死谷中。怎么会发生这种情况,因为我在数据中添加了可变性,以及如何避免这种情况?

添加噪音的代码:

    sindex = 0;
    for n in range(n_train):
        cndata = normalized_data[n, :, :, :]
        #        plt.matshow(np.squeeze(prepped_data[sindex, :, :,:]))
        # add noise, augmentation, and shift in x and y
        for x in range(1):
            noise = np.random.normal(0, noise_sd, (xres, xres, slices))
            ishift = np.random.randint(low=1, high=(row - xres), size=2)
            prepped_data[sindex, :, :, :, 0] = cndata[ishift[0]:ishift[0] + xres, ishift[1]:ishift[1] + xres, :] + noise
            prepped_label[sindex, :] = labelData[:, n] + [-ishift[0], -ishift[1], 0, -ishift[0], -ishift[1], 0, 0]
            sindex = sindex + 1

Loss function definition:
    model.compile(optimizer=opt, loss='mean_squared_error', metrics=['accuracy', root_mean_squared_error])

RMSE definition:
    def root_mean_squared_error(y_true, y_pred):
        return K.sqrt(K.mean(K.square(y_pred - y_true), axis=-1))

这是没有噪音的原始训练曲线: enter image description here

这是添加噪音后的训练曲线: enter image description here

0 个答案:

没有答案