海思AI芯片(Hi3519A/3559A)方案學習(二十七)python3引起darknet模型轉換caffe失敗的原因分析

前言

首先申明,該問題是我的一位羣友發現的。我這裏只是把他的結論加以驗證並總結在這裏。

問題描述

在海思學習系列中,我們已經寫了一篇文章來介紹如何將darknet模型轉換成caffe model(https://blog.csdn.net/avideointerfaces/article/details/89111955)。但是因爲環境平臺的原因,尤其是python2和python3語法有些不同的原因還是會在實際轉換過程中會遇到各種各樣的問題。

下面這個問題就是由於python2和python3語法差別而引起的。首先看現象:

上面的錯誤log很容易被認爲是protobuf的原因,其實關鍵點是: Expected integer。

再看看生成的prototxt文件,裏面的pad值爲float型,如下所示。

 再看看將cfg轉換成prototxt的對應腳本代碼

後來才知道,對於python2來說,除法‘/ ’兩邊都是整數的話,其結果也是整數;而對於python3而言,無論除法兩邊爲整數還是浮點數,其結果都爲浮點數。

回到上面代碼中的紅框部分,如果上面代碼用python2來運行的話,pad參數值爲整數;反之,如果用python3來運行的話,則變成浮點數了。而caffe的prototxt中參數值是不可能爲浮點數的

要想用python3運行模型轉換腳本來避開這個坑,可以將 '/'改成 '//'。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章