tf.keras实现动态多尺度训练
哇,今天真的好累,就写了个动态多尺度训练(差点又被tensorflow劝退.),下面写几个要注意的点.
要给yolo添加多尺度训练,因为tf.keras无法对dataset对象进行callback操作这也就算了,但是我没法得知dataset对象目前在生成训练数据还是测试数据,这个就很蛋疼,需要能在尽量不大改代码的同时添加多尺度训练方式,所以还得看tf.keras.callback.
我今天运行个模型,跑着跑着内存就泄漏了,我很奇怪,然后用memory_profiler分析了下内存泄漏的点.发现是skimage的resize中出现了泄漏.
论文《Lookahead Optimizer:
k steps forward, 1 step back》的tf.Keras实现.
参考自苏剑林的repo
今天在看centernet的heatmap损失函数时,发现他的损失和熵差不多,但是我用tf的实现会导致loss为Nan,因此我看了下Cross Entropy的计算优化,这里记录一下.
昨天我尝试用双cuda的方式来配置换,但是还是遇到了cuda的错误,我不懂pytorch又没办法解决。然后我浏览下issue,看到有同样的问题,大概率是由于显卡是20系列的,老版本的cuda不行,解决方式就是升级pytorch版本用新的cuda。所以我这里把配置环境重新做个记录,免得下次又来。。
有的时候我们的loss函数是一个复合函数,但是在tf.keras中,loss函数只能返回一个标量,这个时候我们如果想要观察loss中子部分的值就只能写个metric去重新计算,但是这样是很浪费计算资源的,所以最好直接将loss中的值提取至metric。
为了学习CenterNet,配置环境弄了半天。。由于我是主用tensorflow的,pytorch搞不来,只能按他的步骤来。他的环境比较老,是cuda 9.0 cudnn 7.1的,然而我早就在用cuda 10.1 cudnn 7.5了,所以我还得安装这个版本的cuda。
下面我就说下安装多个版本的cuda的注意点。