应用程序报错环境:
在linux下,调用darknet训练的模型,报错:First section must be [net] or [network]:No such file or directory,并提示:"./src/utils.c:256: error: Assertion '0' failed."
如下图所示:
此段文字为防爬虫而设置的
原文为CSDN作者:三月微暖寻春笋
网上查了下,配置文件问题,如下图所示:
后来发现,更重要的是括号中的一句。因为我运行的环境是linux环境,而整套程序来自Windows,对于源码cpp来说,不可能有影响,因为一般cpp在Windows下调试的差不多了,才会移植到linux环境下调试,这不可能有问题。而图中的报错又是显示在darknet的源码文件“./src/utils.c”中报的错,是不是可能我在其他jetpack环境下编译的库才出现的问题,于是我又把darknet库重新编译了一遍,问题仍然存在。
后来我又在终端输出一些调试点,发现是在调用darknet模型时报的错,调用接口肯定没问题啊,之前一直用的,难道是模型文件问题,也不应该啊,之前也一直用这个模型。后来不知怎么的鬼使神差似得把模型文件又重新拷贝一次,这次直接从linux本地拷贝,再次运行应用程序,发现问题没有了。
啰嗦了一大堆,总结解决方案是:把模型文件从linux平台拷贝至运行环境,不要从Windows平台拷贝过去。不要把linux环境下训练的模型拷贝至Windows平台,否则模型文件就不能在linux平台用了。
打个不恰当的比喻:不要把linux平台下训练的模型去Windows平台“洗澡”。
后续思考:虽然问题解决了,但原因没有整明白。权重文件是一个二进制文件,为什么在linux环境下训练好了,把它拷贝到Windows平台,然后再拷贝至linux平台就不能用了???有大佬知道的可以在评论区告知下吗,感谢。