图像分割|机器学习|模式识别(2019-04-08~04-12)

本周计划

1.完成辅助loss代码

2.二值分割效果有所提升,现在训练 一下多值分割的效果。有两个思路,只修改class个数

还有一个想法是以二值分割为另一个分支网络的gt,但这个需要处理一下分割处理的二值图。

3.尽量读完PRML书的高斯部分。每次读英文版的都很慢。但还是要读呀。

4.卸载3号服务器上的anaconda然后重新安装



●辅助loss代码已完成。

BUG1:在Unet末尾cat了前面几层后,在计算loss的时候,出现了

RuntimeError: Given groups=1, weight[32, 576, 3, 3], so expected input[1, 544, 224, 224] to have 576 channels, but got 544 channels instead

解决尝试:打印所有weight都是什么,看多了哪些。原因竟然是自己把输出维数写错了。。

BUG2:给辅助loss设置权重的时候

RuntimeError: weight tensor should be defined either for all or no classes at /opt/conda/conda-bld/pytorch_1518243271935/work/torch/lib/THCUNN/generic/SpatialClassNLLCriterion.cu:28

解决办法:打印了一下out 和辅助loss里out_aux的shape,发现

out_shape: torch.Size([1, 12, 224, 224])

out_aux_shape: torch.Size([1, 32, 224, 224])

所以out_aux也应该经过softmax。

BUG3:对应相乘/向量相乘

解决办法:class_weight.mul(class_weight)

==>在训练之前检查了一下图片,发现GT上传错了。最近因为生病,都有点恍惚了。

训练完成后,测试。

●一边等待结果一边学习吴恩达机器学习课程。这周讲的是如何评估你的模型并改善。

第一个讲的是如何评估假设模型,确定是否欠拟合或者过拟合了。

结论就是:采用交叉验证的方法,以6:2:2进行划分数据集。

如果训练集loss很低但测试集很高就过拟合了。如果训练集loss都不低就是欠拟合。验证集的存在就是防止出现模型去拟合测试集,而无法实现真正的泛化。

其实,我觉得现实中最需要解决的是,训练集很低,测试集也很低的情况下二者怎样更低而且,错误率更低。

●结果已出,加了辅助loss效果不升反降。也可能是weight设置不合理。

鉴于二值分割效果很好,现对计划做以下调整:

1.大数据驱动训练二值(已在跑,很慢,一个epochtrain11mins,val14mins)

2.cat多个浅层,制造densenet效果的网络

3.对二值图进行加辅助的训练:结果,不知道是不是weight不合适,效果不升反降。重新调整了一下weight再训练一版。结果,效果稍有提升,但是我觉得加权重训练本身就是这个权重设置太难了,宏观调控,总不能一个值一个值的去尝试,何况有几个类别就有几个权重,这样的组合数量也是爆炸。还是不加了以后。

●4.12今天学习学校机器学习课程,并写作业。

1. 第一题要用matlab求一个样本点决策超平面的距离,我觉得求欧氏距离简单一点。然后百度了一下,求一个点到直线的距离要用到“外积”的概念,好久没用都忘记了:

    外积、又叫叉积:向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

    而点到空间直线的距离就是外积的模与空间直线方向向量的模相除。

    因此,P-点坐标;Q1, Q2线上两点坐标:d = abs(det([Q2-Q1;P-Q1]))/norm(Q2-Q1);

4.13完成作业

3.编写一个感知器算法并实现

    (1)matlab—load命令读的数据为struct类型的数据的处理方法:用“.”访问成员

    (2)matlab中将矩阵按照行打乱顺序的一个例子:

            A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]

            rowrank = randperm(size(A, 1)); % 随机打乱的数字,从1~行数打乱    

            B = A(rowrank, :)%%按照rowrank打乱矩阵的行数    

            一个可能的输出结果:

            A =  1 2 3

                    4 5 6

                    7 8 9

                    10 11 12

            B = 1 2 3

                    7 8 9

                    4 5 6

                    10 11 12

实现结果Matlab感知器算法实现(代码、结果)

你可能感兴趣的:(图像分割|机器学习|模式识别(2019-04-08~04-12))