调试yolov3代码如何进入 Lambda中的yolo_loss函数

调试yolov3代码如何进入 Lambda中的yolo_loss函数

参考文献:https://www.jianshu.com/p/6f8c86ac1fef
所用的yolov3代码: https://github.com/qqwweee/keras-yolo3 ,解压之后用pycharm打开。
理解代码一个很好的方法是调试程序,看看函数之间的调用关系以及各变量的变化。
在调试train.py代码时,在model_loss = Lambda(yolo_loss, output_shape=(1,), name=‘yolo_loss’,
arguments={‘anchors’: anchors, ‘num_classes’: num_classes, ‘ignore_thresh’: 0.5})(
[*model_body.output, *y_true])处,无法进入到Lambda函数内的yolo_loss函数内继续进行调试,经过一番探索,成功进入到yolo_loss函数内。主要有两种方法:

一、手动找到yolo_loss函数,然后右击Run to Cursor

(1)打开train.py,在model_loss处设置断点,右击Debug ‘train’,开始调试
(2)按住Ctrl键,鼠标点击yolo_loss函数名,跳转到yolo_loss函数定义的地方,鼠标放置在函数体的第一行,即num_layers = len(anchors)//3 # default setting,然后右击Run to Cursor,即可进入到yolo_loss函数内继续进行调试,需要注意的是鼠标不要放置在def yolo_loss(args, anchors, num_classes, ignore_thresh=.5, print_loss=False):处右击Run to Cursor,因为不成功。
在这里插入图片描述

二、顺序调试

(1)打开train.py,在model_loss处设置断点,右击Debug 'train',开始调试,如图1所示。

在这里插入图片描述
图1
在这里插入图片描述
图2
图2中,①处是函数之间的调用关系,便于厘清关系,②处是各变量的具体信息。

(2)Step Into(F7) : 高亮行下移一行
在这里插入图片描述
(3)Step Into(F7) : 在MainThread处可以得知此时跳转到interfaces.py:29行的wrapper函数处。
wrapper, interfaces.py:29 if object_type == ‘class’:
在这里插入图片描述
(4)Step Out(Shift + F8): 跳转回model_loss处
在这里插入图片描述
(5)Step Into(F7) : 高亮行下移一行
在这里插入图片描述
(6)Step Into(F7) : 跳转到base_layer.py:808行的out()函数
在这里插入图片描述
(7)Step Out(Shift + F8): 跳转回model_loss处
(8)Step Into(F7) :跳转到base_layer.py:407行的__call__函数内
在这里插入图片描述
(9)光标移动到__call__, base_layer.py:457 output = self.call(inputs, **kwargs) ,右击Run to Cursor
(10) Step Into(F7) :跳转到core.py:684行的call函数内 arguments = self.arguments
在这里插入图片描述
(11)光标移动到 call, core.py:687 return self.function(inputs, **arguments),右击Run to Cursor
(12)Step Into(F7) :跳转到model.py:371行的yolo_loss函数内
在这里插入图片描述
(13)现在就进入到了yolo_loss()中了,接下来可以继续调试,理解yolo_loss代码及原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值