一切准备妥当,运行训练命令时,出现下面这个错误:
Error in `python': double free or corruption (!prev)
这可能与我使用的训练机器系统版本(ubuntu14.04)较低有关,相关的库可能不能匹配较新的程序。执行下面的命令:
$ sudo apt-get install libtcmalloc-minimal4
$ export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4"
问题解决。
详细讨论可以参考这里。
如果不添加上面的库到 LD_PRELAOD
,可能还会出现下面这样的错误:
Error in `python': free(): invalid pointer: 0x00000000020663b
但是添加后,虽然可以暂时正常训练,但是在一个 epoch结束时,又出现了下面这样的错误:
src/tcmalloc.cc:277] Attempt to free invalid pointer
此时可以尝试将 utils/dataset.py
中的 Dataloader 的 drop_last 参数设置为 True。