Windows系統下的踩坑記錄

2021-10-06 17:03:30 字數 2172 閱讀 9953

【主要目的】使用tensorflow_model_optimization這一官方發布的模型優化工具對已訓練好的模型進行網路壓縮。

【在win下的tensorflow配置】

目前anaconda擁有的環境:py36,py354,tf12(之前用的)

py354,tf12:cuda8.0,cudnn5.1.10

啟用anaconda環境:activate 環境名

退出anaconda環境:conda deactivate

建立新環境:conda create -n tf114 python=3.6

檢視conda環境:conda info -e

安裝tensorflow1.14版本:pip install tensorflow==1.14.0

在tensorflow1.14版本下,所需要的各個包都有版本要求,其中numpy採用1.16.4,h5py採用2.8.0rc1,(這兩個包沒有提示版本,只會在import的時候報錯。)加上其他一些零零碎碎有提示版本的包,終於安裝成功tensorflow1.14版本了。

同時也順利安裝好tensorflow_model_optimization庫了,至此環境以及全部搭建完畢,剩下就是如何處理另一版本的模型的問題了。

【問題】在載入模型時會顯示keras load_model raise valueerror: unknown layer: gatedconvlstm2d

主要原因是:這乙個網路層是自定義層,沒有辦法直接載入。

但同時由於該層的函式定義與tf1.2和python2.7又息息相關,很難修改為tf1.14和python3.6的版本。故對此的解決方法是在訓練時不適用該自定義層(因為課題中實際上使用該層和使用keras自帶的convlstm2d沒有區別!還是不能偷懶使用別人的定義函式呀x)

【問題】可能會遭遇載入模型時python2.7與python3.6或許會產生不相容現象,導致無法正確載入模型。(目前還沒解決上一問題,這個還未知會否發生)

萬一出現這一現象…基本就是gg了,趁早找到別的方法能夠做網路壓縮的。

【問題】把gatedconvlstm2d層去掉之後,再次嘗試載入模型。發生錯誤 typeerror: ('keyword argument not understood:', 'implementation')

在網路層都對得上的同時…又有了版本對不上的問題…(應該是因為我重新安裝了tensorflow,因為之前修改init檔案忘記備份了…)網上的說法是由於keras和tensorflow內建的keras版本不一致。檢視得知目前keras版本是2.0.2-tf(這個是儲存模型的版本)tensorflow1.14帶的keras版本是2.2.5

沒辦法,由於預設庫版本不一致,於是對keras進行降低版本。

pip install keras==2.0.2

檢視模型所使用的keras版本

f = h5py.file('s3d_model_s.h5', 'r')

print(f.attrs.get('keras_version'))

【問題】在進行keras降低版本之後,報錯為:typeerror: __init__() got an unexpected keyword argument 'dtype'

(真的好煩噢!版本不一樣就真的超級超級超級超級麻煩!!!為什麼優化工具只支援新版本啊!不給老版本tensorflow玩家一點餘地的嗎!)這個問題是由於python版本不一致,原本使用的python2.7版本。但是!windows是不支援python2.7了!至此該途徑徹底走不通了。

【end】這一系列問題暫時告一段落,以失敗告終。由於訓練時使用的是python2.7+tensorflow1.2.0的版本,希望能使用tensorflow自帶的keras優化工具進行網路的壓縮,但是該優化工具只更新於tensorflow1.14,於是在windows上搭建環境,,python3.6+tensorflow1.14,但由於python版本不一致(而且也沒聽說過tensorflow1.14可以搭python2.7的…),windows上不支援py2.7.於是這一計畫告一段落。不能奢望能夠使用準備好的優化工具了,接下來則需要另行尋找keras的網路壓縮方法,或者是剪枝後的再訓練方法。

linux下electron踩坑記錄

在寫 匯入模組的時候,路徑一定要區分大小。比如新建檔案的時候conversationlist.vue 是這樣的,但是在匯入的時候使用conversationlist在win平台編譯的時候不會報錯,但是在linux下就會報錯。所以在開發的過程中一定要注意 規範,嚴格區分大小寫。在模組中使用remote...

windows服務踩的坑

最近寫了乙個windows服務 有一些bug最後終於解決了還是寫點經驗把。第一點.版本問題,因為是小白,第一次寫windows服務,選擇的是.net4.6.1的目標框架,因為我的電腦是windows10 在這裡onstart是我程式的主入口,其實我最開始用的是task這個多執行緒的,只不過因為伺服器...

ubuntu 下安裝docker 踩坑記錄

ubuntu 下安裝docker 踩坑記錄 setp 0 移除舊版本docker sudo apt get remove docker docker engine docker.io step 1 安裝必要的一些系統工具 2 安裝gpg證書 寫入軟體源資訊 sudo add apt reposito...