2017年1月7日 星期六

深度學習(1)-如何在windows安裝Theano +Keras +Tensorflow並使用GPU加速訓練神經網路


本篇文章介紹如何安裝Theano 及Keras, Tensorflow深度學習的框架在windows環境上,並快速的使用Keras的內建範例來執行人工神經網路的訓練。

     之前也有實作Tensorflow 及caffe在VM+ubuntu16.04環境安裝的經驗,甚至安裝在NVIDIA的Jetson TX1 的慘痛經驗XD(雖然後來也是有安裝成功)。各深度學習的框架各有它的優缺點,有許多文章已做過類似的分析,在此我不會對這部分著墨太多,只會敘述自己之前安裝的一些經驗來提供大家參考,特別如果是要在windows環境上使用,並且具有NVIDIA CUDA支援GPU加速運算的功能。
      雖然也很多人認為應該直接使用Linux環境會比較適合做深度學習框架的使用及學習,原因是使用Linux的人或網路資源比較多,而且Linux對於電腦硬體效能有優化。但對於Linux環境不熟的人,使用windows環境仍然有它方便性存在,而對於Python程式語言來說,其程式碼在Linux環境或windows環境做切換是很容易的,當然Theano ,Keras,Tensorflow也可以安裝在Linux環境上使用。接下來開始正式介紹如何在一般常見的筆電上建構這個環境,在一般的筆電上也可以使用GPU加速訓練人工神經網路的快感。


<圖一>為Keras 的lstm_benchmark.py 範例輸出結果




2017年1月4日 星期三

演算法(1)--蒙地卡羅法求圓周率及橢圓面積(Monte carlo)


     這篇文章介紹蒙地卡羅法(Monte carlo)求圓周率及橢圓面積,使用Python來實現並將其結果用matlibplot視覺化。

蒙地卡羅法:
不用數值計算方式來解題,而以機率(亂數)來解題的方式,稱為蒙地卡羅法。

摩洛哥王國是位於法國與義大利之間的小國,該國首都即為蒙地卡羅,以賭博聞名。
而這種以亂數解題所求得的數值不如以數值分析計算所得的結果精確,這種解題方式類似賭博,故稱蒙地卡羅法。


A.使用蒙地卡羅法求圓周率π:

    如下圖Python 程式所畫出的結果來解釋,假設正方形邊長為1,圓半徑也為1,
那麼1/4 圓的面積為 :







而正方形面積為:1x1=1

那麼產生分布於0~1 之間的亂數,應當會均勻的分布於正方形之內,如下圖綠點所示,
而分布於1/4圓內的數量假設為a ,分布於圓外的數量為b,N則是所產生的亂數總數為
N=a+b。
那麼其亂數分布數量a與N的比值應與1/4圓面積及正方形面積成正比,於是:







即可算出圓周率,如圖一,求得圓周率為3.1268,此種算法沒那麼精確,但是如果將
亂數總數N放大,理當亂數分布會越均勻,則應會越趨近於精確值,如圖二,N=100000的結果,求得圓周率為3.14708


<圖一>使用蒙地卡羅法求圓周率π,當亂數N=10000 ,圓周率π求得3.1268