关于语义分割辅助函数的问题?
收藏
在读了BiSeNet—V2 后,发现论文在 训练 过程中,将每个阶段的特征图与标签图像用softmax+cross_entropy做损失函数调整,然后在测试过程中去掉这一部分,请问这是如何实现的?
其实就是想问训练过程中的一些操作要在测试阶段移除是怎么实现的,有什么api吗?
0
收藏
请登录后评论
测试过程只进行forward计算,也不用算loss啊
我看了下,那三部分loss是1:1:1加和在一起的。测试时,如果为了做对比的话,可以打印时分别打印三部分loss
然后,我实现的时候是这样做的,如下图所示,标红的是4个阶段的Seg Head,但在测试阶段该如何舍去呢?测试program的代码是:test_program = fluid.default_main_program().clone(for_test=True) 直接将 训练program复制。请问在测试过程 下面这4个SegHead不会也复制到测试program吗?还是像您说的,分别打印这几部分的loss,在测试阶段只关注最后的loss,不关注其他4个。
不知我的描述是否有误,还是没有弄清测试program与训练program的区别?
那个Seg Head,难道不是在网络模型的代码里加上一个判断是train还是eval的条件其实就解决了,如果是eval的情况下,就不使用
在动态图模型里就用 self.training 判断
静态图我没怎么用过(哭脸)
动态图那个我是查了文档,看了文档上链接的paddle源码找到的
留下了没有技术的眼泪
正解
静态图越来越日渐式微了
同感,还是动态图便于调试、展示。运行效率另有别的方法提升