就我的论文而言,我试图在识别表结构方面修改faster-rcnn的损失函数。
目前,我正在使用Facebook的Detectron。似乎工作得很好,但我现在正在积极尝试修改损失函数。调试我的代码,我注意到这是在fast_rcnn_heads.py:75处添加损失函数的地方:
[Stress Scenarios].[Stress Scenario].[MEMBER_CAPTION]
[Snapshots].[Reference Date].&[2018-01-02T00:00:00].[Measures].[Market Value]
调试器找不到mode.net.SmoothL1Loss或SoftmaxWithLoss的任何声明或实现。 Detectron使用caffe,当我查看net_builder(用于启动model.net的文件)时,我发现它对caffe2产生了“绑定”(不知道正确的词),而caffe2本身就是一个pylib,后面带有编译的lib。
我是在错误的位置查找该丢失函数的细微调整,还是真的需要从dcaffe打开源代码,调整丢失,重新编译lib?
问候,
答案 0 :(得分:0)
您应该自己实现损失功能。修改库源代码并重新编译-不是一个好主意:)
您可以创建python函数,该函数将获取GT和预测数据并返回损失值。
您还可以创建当前使用的L1平滑或交叉熵的副本,然后在确保它们相同的情况下,可以对其进行修改。或者,您也可以实施L2损失的包装盒,而直接使用它。
有关自定义损失的更多信息,您可以在caffee文档中找到。