Computer vision 我在训练语义分割模型时得到的预测数据

Computer vision 我在训练语义分割模型时得到的预测数据,computer-vision,tensorflow,deep-learning,caffe,Computer Vision,Tensorflow,Deep Learning,Caffe,我试着用一些现有的语义分割代码对超声神经数据集进行实验 实现基于 在训练过程中,我可以捕捉每个历元的验证图。在下图中,左边是原始图像,中间是地面真相,右边是预测的(或概率图) 如下图所示,我们可以看到,对epoch0的预测完全是黑色的,然后在我看来,它开始捕捉原始图像的一些分布,然后它再次变为黑色 我只是想知道如何解释基于这些情节的训练过程,为什么经过几个训练时期后,它会回到第一个时期的结果 此外,在训练过程中,为什么预测结果倾向于再现原始图像的分布 是否可以从这些培训观察中得出一些见解 我通常

我试着用一些现有的语义分割代码对超声神经数据集进行实验

实现基于

在训练过程中,我可以捕捉每个历元的验证图。在下图中,左边是原始图像,中间是地面真相,右边是预测的(或概率图)

如下图所示,我们可以看到,对epoch0的预测完全是黑色的,然后在我看来,它开始捕捉原始图像的一些分布,然后它再次变为黑色

我只是想知道如何解释基于这些情节的训练过程,为什么经过几个训练时期后,它会回到第一个时期的结果

此外,在训练过程中,为什么预测结果倾向于再现原始图像的分布

是否可以从这些培训观察中得出一些见解

我通常按照以下步骤生成训练集。(我在本教程中使用了与创建列车数据相同的功能。 唯一的区别是我添加了一个背景通道,以使遮罩图像具有形状
(1,image\u row,image\u col,2)

加载上面生成的
npy
文件后,我对训练集的原始图像进行规范化

imgs_train = np.load(os.path.join(train_data_path,"imgs_train.npy"))
imgs_mask_train =   np.load(os.path.join(train_data_path,"imgs_mask_train.npy"))

imgs_train = imgs_train.astype('float32')
mean = np.mean(imgs_train)  # mean for data centering
std = np.std(imgs_train)  # std for data normalization
imgs_train -= mean
imgs_train /= std
我按照这个来训练模型。除了这个,我没有改变任何东西

self.learning_rate_node = tf.train.exponential_decay(learning_rate=learning_rate, 
                                                        global_step=global_step, 
                                                        decay_steps=training_iters,  
                                                    decay_rate=decay_rate, 
                                                    staircase=True)
我把它改成

global_step = global_step*self.batch_size
第0纪元 纪元4 纪元12 纪元16

降低你的学习率
base\u lr
。这似乎是你的训练偏离了方向。你是否使用了任何形式的正则化?这可能是因为梯度极大地修改了权重,尝试对权重规范使用约束。如果不看你的模型定义,很难回答。但我想说,这是错误的导致模型发散的数据类型或值范围。您的所有数据(掩码、输入)是否都在0和1之间?亲爱的,谢谢您的回复。我已经更新了原始帖子。什么是背景频道?为什么要添加它?它是全黑的吗?如果您删除它,它会工作吗?
global_step = global_step*self.batch_size