使用scipy的函數scipy.optimize.fmin_l_bfgs_b
官方說明
http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.fmin_l_bfgs_b.html
簡易使用法
http://stackoverflow.com/questions/8672005/correct-usage-of-fmin-l-bfgs-b-for-fitting-model-parameters
2016年3月27日 星期日
python multiprocessing卡住解決辦法
使用python開多個process平行運算時,可能要將最終結果放入某個list、dictionary或queue之類的回傳至主程式,這時候有機會出現子程序無法結束(terminate)的問題,不知道這是否和官方文件所說的問題一樣
https://docs.python.org/2/library/multiprocessing.html#pipes-and-queues
總之,若出現這種問題,不妨將所使用的list、dictionary或是queue改成manager版本的,用法上差不多,儘量使用class的界面來操作的話問題會比較少(例如不能使用ls=ls+[...],應該使用正常的ls.append(...)),因為manager是專門用來處理multiprocessing的module,大致上可以解決這些問題。
關於thread的簡易用法
http://puremonkey2010.blogspot.tw/2012/05/python-python.html
https://docs.python.org/2/library/multiprocessing.html#pipes-and-queues
總之,若出現這種問題,不妨將所使用的list、dictionary或是queue改成manager版本的,用法上差不多,儘量使用class的界面來操作的話問題會比較少(例如不能使用ls=ls+[...],應該使用正常的ls.append(...)),因為manager是專門用來處理multiprocessing的module,大致上可以解決這些問題。
關於thread的簡易用法
http://puremonkey2010.blogspot.tw/2012/05/python-python.html
2016年3月16日 星期三
工作站安裝Caffe
這次安裝是在實驗室的工作站上,除了環境設定和自己電腦稍有不同外,權限也較低,所以不能隨便想裝什麼就裝什麼。
首先是為什麼現在會突然想到工作站上安裝,原因是因為我自己寫了一個layer,因此要重新編譯caffe,所以才想說順便裝一下以前在工作站上沒裝成功的pycaffe。
筆記一下要如何自己寫一個layer:基本上只要在自己的layer.cpp最後加上
INSTANTIATE_CLASS(xxxLayer);
REGISTER_LAYER_CLASS(xxx);
即可,當然還要有自己的header檔,看是要自己新增一個,還是加到原本就有的裡面。
接下來是如何在工作站上安裝pycaffe。由於工作站無法自己安裝新的python module,但幸好python可以整個安裝成自己的,所以我下載了anaconda2 python,安裝完即可使用。當然還是要記得將build/CMakeCache.txt中python的路徑設定為新裝的anaconda的位置,不然他還是會找到系統原始的python。完成後,原本以為照著之前的做法,
cd build/
cmake ..
make all
就好了,結果卻發現工作站的OpenCV library有問題,不知道是版本問題還是什麼,總之這個library我一定也沒有權限可以修改,想要編譯自己的版本來安裝又太麻煩了,因此我想說能不能跳過OpenCV,因為需要使用OpenCV的檔案其實只是附加功能,而且我根本就沒有使用到這個功能。但這個cmake的設定似乎就是要嘛你根本沒裝OpenCV,他也不幫你裝相關功能,要嘛就他自己找到OpenCV就一定會安裝,就是沒有可以自己關掉的選項,最後只好放棄使用cmake,使用原始的makefile版本。基本上也不會太難,將Makefile.config.example改成Makefile.config,並且使用裡面的ANACONDA_HOME以及相關的python路徑即可,#註解記得該取消的要取消乾淨。接下來手動使用
make lib
make tools
make py
即可,example不需要編譯。
若出現缺少python module的問題,執行
cd python
for req in $(cat requirements.txt); do pip install $req; done
更新:
後來發現雖然pytest是成功的,但是shell的caffe卻不能用,而且不知道為什麼,cmake所找到的python library一直是系統的,推測可能因此有些相關的library發生衝突。總之目前還是回到原始沒有pycaffe的狀態,之後有空再研究。
有關cmake的find_package()到底會找哪些資料夾,這篇網站有介紹
https://cmake.org/Wiki/CMake:How_To_Find_Libraries#How_package_finding_works
首先是為什麼現在會突然想到工作站上安裝,原因是因為我自己寫了一個layer,因此要重新編譯caffe,所以才想說順便裝一下以前在工作站上沒裝成功的pycaffe。
筆記一下要如何自己寫一個layer:基本上只要在自己的layer.cpp最後加上
INSTANTIATE_CLASS(xxxLayer);
REGISTER_LAYER_CLASS(xxx);
即可,當然還要有自己的header檔,看是要自己新增一個,還是加到原本就有的裡面。
接下來是如何在工作站上安裝pycaffe。由於工作站無法自己安裝新的python module,但幸好python可以整個安裝成自己的,所以我下載了anaconda2 python,安裝完即可使用。當然還是要記得將build/CMakeCache.txt中python的路徑設定為新裝的anaconda的位置,不然他還是會找到系統原始的python。完成後,原本以為照著之前的做法,
cd build/
cmake ..
make all
就好了,結果卻發現工作站的OpenCV library有問題,不知道是版本問題還是什麼,總之這個library我一定也沒有權限可以修改,想要編譯自己的版本來安裝又太麻煩了,因此我想說能不能跳過OpenCV,因為需要使用OpenCV的檔案其實只是附加功能,而且我根本就沒有使用到這個功能。但這個cmake的設定似乎就是要嘛你根本沒裝OpenCV,他也不幫你裝相關功能,要嘛就他自己找到OpenCV就一定會安裝,就是沒有可以自己關掉的選項,最後只好放棄使用cmake,使用原始的makefile版本。基本上也不會太難,將Makefile.config.example改成Makefile.config,並且使用裡面的ANACONDA_HOME以及相關的python路徑即可,#註解記得該取消的要取消乾淨。接下來手動使用
make lib
make tools
make py
即可,example不需要編譯。
若出現缺少python module的問題,執行
cd python
for req in $(cat requirements.txt); do pip install $req; done
將相關python module安裝好即可。這裡我發現其實leveldb是沒有安裝成功的,因此若要使用pycaffe,應該使用lmdb或是hdf5。
更新:
後來發現雖然pytest是成功的,但是shell的caffe卻不能用,而且不知道為什麼,cmake所找到的python library一直是系統的,推測可能因此有些相關的library發生衝突。總之目前還是回到原始沒有pycaffe的狀態,之後有空再研究。
有關cmake的find_package()到底會找哪些資料夾,這篇網站有介紹
https://cmake.org/Wiki/CMake:How_To_Find_Libraries#How_package_finding_works
訂閱:
文章 (Atom)