2018年10月10日 星期三

小說集:海神家族


海神家族是本半自傳體小說,既然是自傳型式,不免會想探究作者背景,作者陳玉慧,是位持續投入文學和編劇創作的女性作家,出生於1957年,台中人。

作者父親是江蘇人,中國對日戰爭結束後,因緣際會來到台灣,短暫於軍中服務後,轉入公路局服務,中年捲入共諜案,出獄後隨解嚴後返鄉潮返回大陸探親,嘗盡人情冷暖後返台,從作者眼中看去,是位僅在乎自己私慾,毫無家庭觀念,不適合婚姻的失敗者。母親則因為從小失去父愛溫暖,還有操勞家計的壓力,情竇初開時便不顧家人反對和作者父親私定終身,婚後生活非常不順利卻無能為力,個性上,是作者一生想要避免的原型。

再往上一代看,外公是位皇民化台灣人,也是二戰期間首先響應台籍日本兵行列的理想份子,戰後經歷創傷症候群,更在228事件後消失。外婆是沖繩人,看似柔弱卻有堅強個性,隻身來台後,經歷各式苦難,成為一肩扛起家庭重擔的偉大女性。中間還穿插外公的弟弟延伸出三角戀情,也因為他台灣共產黨的身分,更故事更為糾結和充滿張力。

時代的動盪、複雜的環境,封閉了當時所有人的心靈,活著,若不是苟延殘喘沉默消極,就是像動物般以最自私的方式對待他人。

作者並未經歷這些,身為下一代人,當然是無辜的,但巨變後激烈的迴聲是沒有道理可言,仍是讓人震耳欲聾。頭腦清醒的人就會痛苦,心思敏感的人,對身分認同,破碎的家庭關係,感到莫大失望。作者選擇帶著苦痛的成長記憶遠離家鄉,在國外流浪漂泊半生,成為無根的人直到2009年,偶然機會盼到靈魂伴侶,促成她以文學型式探究家族歷史軌跡。

----

文章從作者自身逝去的夢,殘破的童年開始,透過回溯個人的尋根之旅,以三代女人為故事架構,完成家族的小歷史。橫跨了日治時期、國共戰爭、台灣接收後228與共諜案,各種歷史傷痕,單薄與病態的負面敘事,都成為她的養料。讓這本小說不只是家族祕辛,更牽引出時代、社會的現象

家族與國族命運交疊下,每個角色都那麼孤單,出走也成為一種不得不然,最後,作者在文章中更不斷的自我質問。為何悲劇性生命不斷被下一代複製而無法掙脫?為什麼被愛、被認同、被在乎的渴望始終不能被滿足?為什麼用盡全力去愛的人卻無法被接納?

這些宏大的問題,都是那麼難以回答。所以文章中總是不經意流露出憂傷的氛圍,和永無止境尋找失去家園的情景。

我個人對這些疑問,始終抱持著較為客觀的看法。從作者外婆隻身來台篹起,距今可能九十年吧,看似不遠,但那時的人,身份都是被安排好的,就像是蜂窩裡面的蜜蜂,完全是社會化的組織和結構,因為都被規範好了,根本沒有自由不自由的問題。

而作者父母這一代人,剛剛從前面時代轉過來,對「情愛男女」、「世代姻親」、「自我覺察」的能力很弱,加上環境劇烈變動,根本來不及思考,當然也就缺乏觀看自己處境的能力,更對家人和自我的調整非常陌生。

現代人觀照的疏離無家感與悲觀生命基調,大多是到了現代,因為社會結構改變才產生的議題。要在當時背景中尋找現代人重視的愛與關懷,無非是奢求。若能抱持中立且寬容的態度,才有機會看見那些已經逝去的肉體和曾經出現過的情感軌跡,也才能讓仍在繁衍著的我們,得到借鏡

----

相比於作者,我家族也有自身歷史。爺爺奶奶是江蘇人,一輩子不離開家鄉的人,因為對日抗戰跑到湖南生下我爸,外公外婆是距離更遙遠的河南與山東籍,也是因為戰亂,才有機會在上海相識生下我母親。若非姻緣,兩個完全不同家世的人,也不會在台灣海峽這端結婚生下了我,父母親相處方式雖然不像陳玉慧般負面,但也好不到哪去,因為這些關係,使我對這本小說特別有感應。或許哪天,我也能模仿作者,藉著書寫,解除些身上困境。

2018年10月3日 星期三

筆記:深度學習

桌前孔雀魚的尾鰭 很像某種神經網路



深度學習是人工智慧的一個分支,完整的人工智慧是假設機器具有和人類相同的思考能力,不過這個目標遠遠脫離我們想像,過於遙不可及。一般工程師會接觸到的人工智慧,僅能視為"初階"人工智慧,又分為統計為基礎的機器學習,和深度學習。

統計概念


統計中提到的評估方式,除了連續性回歸分析外,也是輔助和強化深度學習的基礎。
  1. VSM
  2. KNN分類
  3. 無母數統計
  4. 線性方程式
  5. SVM

網路文件自動分類 自己論文

線性迴歸。已知迴歸模型(y = 0.1x + 0.3)的係數(0.1)與截距(0.3)。亂術產生一組線性的數值,計算新產生數值和標準結果的差距,盡量讓這個差距縮小,經過多次的iterator,數值趨近正確。結果會是0.1和0.3。

iterator的一個重要概念就是optimizer,常見的是GradientDescent,梯度下降法,利用跨的遠近以及產生的負值,因為有很大的負向,就會快速到達正確點。參考test1.py。另外一篇對梯度下降的介紹連結
起始狀況,預測線距離很遠,斜率也完全不同

經過四十次iterator,開始接近目標值

深度學習


深度學習與機器學習不同,出發點是仿生,模擬生物神經細胞鏈結和迴授特性(文章介紹)。雖然過程是黑盒,效果卻出奇的好。事實上,此概念早在三十年前成形,只是近幾年,因為網際網路興起,以往難以取得的訓練資料,突然隨手可能,且高效能GPU也普及,再經過AlphaGo的一戰成名,各大科技廠高調宣揚,還有媒體的推波助瀾,讓深度學習成為顯學。

深度學習的特色是效果驚人,且有一致性,對人們來說,卻有無法解釋的缺陷。費曼有句名言What I cannot create, I do not understand。大意是說我不能創造的東西,我就不瞭解。套用在深度學習上,就是,我們幾乎無法對一個模型為何能運作成功,提供完整解釋。這個連結是google提供的視覺化觀察方法(連結)。

接觸相關領域後,有兩個小心得,
一是此領域實在是飛躍性的成長,尤其是CNN和物件識別部分,實在如同百花齊放。
二是Deep learning 堆 layer 的方式,跟要處理的問題領域息息相關,背後所需要的經驗難度不亞於 feature engineering。情境一換就得重調參數。不論是模型選擇和參數調整,都牽涉許多基礎概念,不像網路或是資料庫般直觀或用簡單推論就可獲得。

以下是由基礎到進階不同的神經網路。討論前,先介紹常見範例MNIST手寫數字,內有多張圖像,且都直接轉變成一維陣列。test9.py 會自動連結網路下載mnist檔案,存入MNIST_data目錄。test10.py 透過ui界面顯示圖形檔案。

單層神經網路


 每一個圖形進來,都會轉變成784X10的權重矩陣(還要加上biases),softmax計算出來的數值,在每次iterator中,系統會自動更新weight和biases的數值(更新的方式就是梯度下降,數值就是使用的參數)。隨著iterator增加,正確率也會增加,直到沒有辦法再細微調整。其中使用了。
oftmax_cross_entropy_with_logits進行lost計算(連結)。
activate function Softmax為分類器
函數將分類器輸出的分數(Evidence)轉換為機率(Probability),然後依據機率作為預測結果的輸出,可想而知深度學習模型的輸出層會是一個 Softmax 函數。



test11.py 訓練和測試結果,準確率92%,並且會產生TensorBoard目錄。,僅單一hidden,且與一維陣列配對,即使如此抽象表現形態,MNIST表現上也有92%效果(說明)。test28.py,正確率約為89%,說明位置連結。兩者寫法不同,但是概念相似,奇特的是,就是始終有3%的差距。

雙層神經網路

以數學來解釋兩層的神經網路,可以用非線性迴歸的例子,test2.py。activate function可使用的函數如下。tf.nn.relu() tf.nn.sigmoid() tf.nn.tanh() tf.nn.elu() tf.nn.bias_add() tf.nn.crelu() tf.nn.relu6() tf.nn.softplus() tf.nn.softsign() tf.nn.dropout()

輸入參數都相同,可隨時互換使用,函數概念也不相同,這也是設計神經網路時,需要具備的知識。


套用不同activate function後,得到的結果如下。

tanh,左右的開口是向外


softplus,左右的開口是向內
relu

sigmoid,底部與tanh不同

XOR

類神經網路很大特點是,他能處理非線性的問題,例如下面xor圖就無法畫一條直線分割紅點與藍點。一個單層神經網路的的結構,如果用單層神經網路的結構只能找出一條直線或是一個超平面,無論在圖中哪個位置放處一條直線,都無法完美切割,所以不適合解決 XOR 這種非線性的問題。


多層感知機的結構包含輸入層(Input layer)、隱藏層(Hidden layer)與輸出層(Output layer),如果只是將「資料 * 權重 + 偏差值」,無論向前傳遞幾層,都只是在做線性組合(Linear Combination),線性組合不管做幾次結果都還是線性,那麼多層感知機要怎麼解決非線性的問題呢?

在資料每次經過一個節點時,都會通過一個激勵函數,激勵函數即是多層感知機能夠解決非線性問題的關鍵。通過激勵函數後,便是做了一次非線性轉換,假設隱藏層與輸出層共有 n 個節點,就是經過 n 次的非線性轉換。test26.py  連結


後續神經網路都會用TensorFlow(或Caffe)為範例,這些都是很高階應用套件,若有興趣,也可用較簡易的Java範例描寫Neural Network 參考這裡。參考編譯方式連結



MNIST
MNIST辨識改進成為雙層test30.py,說明(連結),成效不顯著,但是文章內容豐富。

Tic Tac Toe圈圈叉叉
Tic Tac Toe本質是策略步驟,並不是分類的概念,但若不管成效,也可以透過DNN訓練。方法是,feature設定為每次要下的棋局,label設定為應該要下的那個座標。形式類似csv內容。實際執行後,發現分數並不高。
test31,說明(連結  連結)。


CNN,和延伸的物體辨識,和YOLO(點擊這裡)

RNN(點擊這裡)



這邊為止以上都是屬於Supervised learning。DNN是神經網路的基本架構,CNN是架構在DNN上的應用,RNN延續DNN精神,因為加入時間因素而更豐富。
Supervised learning requires training data showing example inputs and outputs, e.g.
an image classifier is trained using along with an expected text label.
a spam classifier is trained using example emails along with a label indicating whether it is spam or not.
a house price estimator is trained using data about a house along with its price.
supervised learning is driving most of the machine learning applications in production today, so that's the best place to focus your attention for now.

----------------------

GAN

生成對抗網路Generative Adversarial Network是加入Discriminator network的概念,更進一步讓神經網路強大的方式。

Unsupervised learning does not need training data. A typical example is performing clustering on data to find similar groups. Move and product recommendation engines work this way -- they don't need to understand anything about the thing being recommended, they just need to know that people who like X and Y, also like Z.

GAN有兩個需要被訓練的model,一個是Discriminator network,另一個是Generator network。透過來回運作,Generator network就會逐漸修正自己,成為正確結果。有點像是在作夢,透過機制調整原本訓練模型。參考文章,文章1 文章2 文章3 文章4 

程式是test18.py,算是標準範例,利用mnist資料,也就是所謂正常的圖片(不在乎label),不斷產生假資料,但是假資料會越來越接近真實。

逐漸有筆劃的感覺

GAN有"未來性",特別再挑範例研究test21,解壓縮後包括測試資料和眾多python檔案,使用pil軟體 sudo apt-get install python-pip    pip install Pillow

test21中 先執行 python main.py 會產生需要的訓練資料,並且在result中陸續看到逐漸變好的雜點移除細果。執行 python main.py --is_trained 會清除照片上的雜點。

Attention Mechanism

理論基礎(連結)。例如AlphaFold,突破突破暴力方法,用人工智慧決定蛋白質的3D結構( 連結 )。

Reinforce Learning

強化學習(reinforce learning)的概念看似類似GAN,但更適合用在和環境交互影響。可以被視為通用性AI的架構環境。

Reinforcement learning works on anything with a reward function. A reward function basically means anything with a score. A common example is AI for playing computer games -- the video frames are provided as input, the model decides which action to take, an the resulting score is used to reinforce the model. If it doesn't have a score, you can use the length of time that your character stays a live.

以遊戲的概念來看,以猜拳遊戲來看,某個動作都會有對應輸贏,就可以轉化為分類行為,類似遊戲,只要讓專家多玩幾次這個遊戲,並且紀錄他們的行為,就可以訓練模型。但這實際上並不是人類學習的方式,人類可以在無指導無專家的情況下,自學遊戲,也就是無標記。強化學習就是不需要標記數據,而是通過以往的經歷。這和心理學很像,並沒有所謂正確的行為,而是給予獎勵和懲罰。模型接受環境訊號後,輸出一個動作,然後等待環境動作,持續下去。 參考 參考文章 參考code

pip install keras==2.2.0
建立一個catch目錄,將test19 test20拷貝到這下面
步驟一 python test19.py
步驟二 python test20.py
步驟三 ffmpeg -i %03d.png output.gif -vf fps=1   將結果編成gif

CATCH遊戲出來的結果

其他項目

Transfer Learning如果在已經擁有的訓練架構上,給予新的學習目標,可以大幅減化新事物的學習難度。

優化神經網路的方法
Overfitting的處理 神經網路中,常見overfitting現象,原因是訓練資料太少就會有類似情形。處理方式如下

  1. 使用L1計算方式
  2. 使用L2計算方式
  3. 隨機移除掉部分weight,讓系統不要過份依賴一些節點
Batch Normalization:處理資料不敏感問題
外部處理數據:文章
聲音範例 NSynth,介紹
資料庫 中文資料庫WIKI 中文斷詞
以AI進行人工智慧繪圖,作者是中國清華大學學生,休學辦公司,清楚介紹這個領域的架構和演進(連結)。

生成式 Stable Diffusion XL 1.0 (連結 連結 連結)

軟體平台


市面上已有許多網路資料或實體書(只是幾乎全來自中國大陸,覺得本地人才消失這現象實在不妙)介紹深度學習。基礎語言最常見就是PYTHON。平台以Caffe和TensorFlow為大宗。和以往邏輯性程式不同,類似的平台比較偏向描述思考(解題)的方式,而非親自撰寫程式。

這些套件,都具備有基本統計和高階神經網路功能,下面的學理篇章也會盡量含括Caffe和TensorFlow兩種的範例。

  1. TensorFlow 出自Google,所以親合性、資源都有優勢。長期發展,或許會像Android獨佔開發市場。但提到獨佔,就不免培養出第二選項。
  2. Caffe 出自柏克萊,學術性高。因為高通範例是Caffe,希望投入這方案。參考書1 參考書2 參考書3
主要參考書;機器學習實作

學習文件  文件2  文件3  文件4  影片介紹  文件5

2018年10月1日 星期一

筆記:TensorFlow安裝

  • 深度學習概念(連結)
  • CNN及眾多應用(連結)
  • RNN及眾多應用(連結)
  • TensorFlow安裝(連結)
  • TensorFlow語法與使用(連結)
  • Porting AI ( QCS605 QCS603 & Android )(連結)

深度學習是少數不需要許多高階伺服器就可入門的學門(當然啦,精熟之後,還是有許多機會要利用多台機器平行進行計算,那是另外的範疇多機器訓練 )。就利用手邊PC主機,參考兩篇文件,嘗試安裝TensorFlow。 參考文件1  參考文件2

  1. MB:ASUS H170PRO/USB3.1/1151全固態
  2. CPU;INTEL I7-6700K 六代  + 酷媽120V水冷
  3. RAM:美光16G*2/DDR4/2400
  4. SSD:INTEL 600P/512G(M.2),位置是SATA3,原本是windows開機碟
  5. HD:Seagate 1TB/64M,位置是SATA4
  6. GPU:MSI GTX1070 ARMOR 8GD5
  7. POWER:振華 550W/80銅牌
  8. CASE:松聖Mavoly

OS Windows和IOS都可以安裝深度學習套件,但主流仍是採用Ubuntu

 

 

 ----最早版本16

  1. 選擇為 Ubuntu 桌面版本 16.04 LTS(支援至 2021 年 04 月) 64 位元版本,下載點
  2. ISO約1.5G,下載 Rufus 3.3 將ISO寫入USB,都維持預設,選擇剛下載的ISO,燒錄約三分鐘
  3. USB插入機殼後
  4. ASUS的BIOS UEFI,DEL進入MENU,滑鼠已可直接操作,選擇 2G的MASS STORAGE為開機硬碟,重開,進入安裝程序
  5. 起初想保留SATA3的WINDOWS,數次失敗後,決定放棄直接覆蓋
  6. 程序上,選擇繁體中文,不要安裝WIFI和MP3等

GPU、更新Nvidia driver


  1. 單CPU也可運作,但有GPU的確很方便,首選NVidia的GTX和TESLA(p100),參考文章,GPU比CPU快80倍
  2. 1080ti 優於 1080 優於 1070ti 優於1070 ...依此類推
  3. $ sudo add-apt-repository -y ppa:graphics-drivers/ppa
  4. $ sudo apt-get update
  5. $ sudo apt-get install -y nvidia-367 (這是先前測試版本,不管啦,照著做,後來幾次發現,還是直接跳過好了)
  6. $ sudo apt-get install -y nvidia-384 (這是比較新的版本)
  7. reboot重新開機
  8. nvidia-smi 檢查安裝狀態 成功

安裝cuda


  1. $ wget "https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run"
  2. $ sudo chmod u+x cuda_8.0.61_375.26_linux-run
  3. $ sudo apt-get install libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev 
    (先前過程中 顯示四個.so沒有裝完 加入指令後就正常)
  4. $ sudo sh ./cuda_8.0.61_375.26_linux-run

參考下面輸入選項

Do you accept the previously read EULA? accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.77? (y)es/(n)o/(q)uit: n     非常重要 不然前面的動作全毀
Install the CUDA 8.0 Toolkit? (y)es/(n)o/(q)uit: y
Enter Toolkit Location [ default is /usr/local/cuda-8.0]: enter
Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit:y
Install the CUDA 8.0 Samples? (y)es/(n)o/(q)uit:y
Enter CUDA Samples Location [ defualt is /home/kylebai ]: enter
似乎會有一些warming訊息 不用在意
 
在最後添加export CUDA_HOME=/usr/local/cuda-8.0
注意:LPATH和LIBRARY_PATH是顯示卡安裝路徑,剛剛輸入是384 安裝不同版本 可能要更改數字。
sudo vim ~/.bashrc

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/${LD_LIBRARY_PATH:+: ${LD_LIBRARY_PATH}}
export LPATH=/usr/lib/nvidia-384:$LPATH
export LIBRARY_PATH=/usr/lib/nvidia-384:$LIBRARY_PATH

儲存離開
source ~/.bashrc
nvcc -V
可以看到CUDA的版本信息,如下所示
nvcc: NVIDIA (R) Cuda compiler driver
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61


測試CUDA
編譯sample
/home/kayjean/NVIDIA_CUDA-8.0_Samples  (安裝目錄)
make  (要先確定gcc是4.8)
make結果報錯
/usr/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status
然后用关键词lglut搜索 sudo apt-get install freeglut3 freeglut3-dev

make clean
make


執行CUDA sample
/home/kayjean/NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody
執行 ./nbody
會跳出terminal 動態顯示如煙火圖片,成功


CUDNN


專門為neural network設計架構
這裡 下載(經過一連串註冊過程  123Nvidia密 選擇 "Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0" "cuDNN v6.0 Library for Linux" 下載後位置是  /home/kayjean/下載是.tgz檔案 文件名稱是cudnn-8.0-linux-x64-v6.0.tgz)

tar -xvf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

如果有裝5.X版本 要做這些動作 目前不需要cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
# 以下的两步设置软连接时,
一定要注意自己电脑的/usr/local/cuda/lib64/下的libcudnn.so.5.1.5名字,
有的可能是libcudnn.so.5.0.5等,要依据自己的电脑上的文件来定
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 #生成软链接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软链接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接

anaconda 2

Conda是套件管理系統,可用來建立虛擬環境 如果慣用pip的人對於conda的指令一定也可以馬上上手,因為它和pip指令非常非常的相似  使用說明
使用說明2

conda是anaconda內的功能 這個模組除了conda更重要的是能夠安裝許多數學套件

在https://repo.continuum.io/archive/ 下載Anaconda2-4.4.0-Linux-x86_64.sh
sudo bash Anaconda2-4.4.0-Linux-x86_64.sh
讀完license  輸入yes
後面兩個安裝位置都選擇預設值
安裝程式會幫忙將path寫入bashrc 選擇 yes
source ~/.bashrc

目前python -v 是2.7
conda create -n tensorflow pip python=2.7
一堆訊息
選擇y
完成
conda env list
會看到tensorflow
source activate tensorflow  準備啟用
若成功 prompt就會改變

安裝TensorFlow1.4


tensorflow安裝區分成source code和binary

source code安裝 當成參考
  $ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
  安裝BAZEL

目前使用的是binary安裝,在前面已經建立好的tensorflow環境中
pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0-cp27-none-linux_x86_64.whl
會陸續出現下載的bar (大概十個)安裝完畢,確認tensorflow能夠使用的方法
打入python
直接貼上內容
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
如果看到 Hello, TensorFLow! 就代表tensorflow安装好了

exit() 離開python
利用這個指令可以看到tensorflow的安裝位置
python -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'
source deactivate 就會退出這個虛擬環境

 

----較新版本18

由同事取得18版本後,選擇清除就資料重新安裝(機器選擇短名子)。

  1. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
  2. sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
  3. sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
  4. wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
  5. sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
  6. sudo apt updatesudo add-apt-repository ppa:graphics-drivers
  7. sudo apt-get update
  8. ubuntu-drivers devices 要能看到450
  9. sudo apt-get install nvidia-driver-450 nvidia-settings
  10. sudo reboot
  11. nvidia-smi

繼續安裝加速功能CUDA和cudnn

  1. sudo apt install --no-install-recommends cuda-10-1
  2. cd /usr/local/cuda/samples/5_Simulations/nbody 用root身份make 並且執行./nbody就會看到執行的結果 確認有裝成功
  3. sudo apt install --no-install-recommends libcudnn7=7.6.5.32-1+cuda10.1
  4. sudo apt install --no-install-recommends libcudnn7-dev=7.6.5.32-1+cuda10
  5. 這是後來好像要安裝 ncvv另外安裝的sudo apt install nvidia-cuda-toolkit,不確定是否要裝
  6. nvcc -V

anaconda 

因為需要UI,所以不考慮docker,就繼續沿用anaconda,下載最新版本後Anaconda3-2020.07-Linux-x86_64.sh後,python預設為3.8(2的機會越來越少了)。套件管理系統是Conda,類似pip,可用來建立虛擬環境。

  1. bash Anaconda3-2020.07-Linux-x86_64.sh 最後選擇yes
  2. source ~/.bashrc
  3. conda info  前面的指標都變成base了
  4. conda create -n tensorflow_gpu pip python=3.7 opencv  (3.8好像有問題)  設定頗久
  5. 可以透過指令看已有的虛擬環境 conda env list
  6. 若要刪除某虛擬環境的話   conda env remove -n (虛擬環境名稱)
  7. 開始虛擬環境 conda activate tensorflow_gpu
  8. 離開虛擬環境 conda deactivate

conda and tensorflow

  1. conda install -c anaconda tensorflow-gpu  這會去下載最新版本 似乎是2.1版本
  2. 測試安裝狀況 python / import tensorflow as tf / tf.__version__
  3. nvcc -V
  4. import tensorflow as tf
    a = tf.test.is_built_with_cuda() //check cuda
    b = tf.test.is_gpu_available(
        cuda_only=False,
        min_cuda_compute_capability=None
    ) //check GPU
    print(a)
    print(b)

    True
    True
    It works

2018年9月21日 星期五

慢跑記錄:平日練習

傍晚跑到夜色漸黑,沿路燈光幻影

慢跑是種只有累積,沒有奇蹟的活動。進步總是緩慢,退步則如江河日下。若不是職業的運動員,個性也不精益求精的類型,很容易就會因為無趣而放棄。再加上現在PM2.5新聞鬧得沸沸揚揚,慢跑人常被調侃為人體吸塵器,更是減低戶外運動的興趣。

對這些負面要素,自己的心態是,打定主意不一味追求進步,也不用太嚴肅以對,將跑步視為工作閒暇休閒,以開心為要。

最常跑的路線是由公司出發,經過新竹縣市交界的柯湖丘陵區上寶山水庫,接水仙路回科學園區三期回公司,環繞一圈距離十公里,提昇高約140公尺,坡度適中,車輛不多,且地處偏遠PM2.5也少,適合慢跑。傍晚時分,拋開公事,放下煩惱,跑在鄉間小路上,其樂也融融。

柯湖附近山勢呈三走向,產業道路沿低漥凹地時可見農田、小溪,也有段路線還有原始樣貌。攀上丘陵邊緣後,視野豁然寬廣,可眺望群山環繞的山谷,空山新雨過後,邊跑甚至還能欣賞雲海奇景。

根據資料,這裡最早期應該是賽夏族番社。1835年或更早前金廣福聯合武裝拓墾下,漢人驅逐原住民,建廟設屯。沿溪開墾水田耕地,不利灌溉處就種植番薯,無法利用的山坡則種竹採筍,勤勉努力下,雖然不富裕,生活倒也過得去。

隨著拓墾繼續向新竹東南方的北埔、峨眉、寶山推進,此地因為為竹塹城至各地的交通要道,各地所需之物資,即從此處開始以人力挑至墾地。小小的山谷農村逐漸成為重要轉運站,頓時人口聚集,直到竹塹往竹東道路開通後,才結束這段繁榮時期。

近代的柯湖,農業不再興盛,僅有小量稻米、香蕉、茭白筍、柚子、火龍果、竹筍等作物。務農住民群落幾處,粗略看,區分為四區,每群大概就十幾戶人家。聚落邊,大概都有小土地公廟守護著村里,柯子溪坪的福龍宮,更有著百年歷史傳承。廟旁的文字說明,初時先民驅趕土著後,在此建廟主祀三山國王,稱為「王爺廟」,並且約定,將周圍3甲多的土地全作為王爺廟的範圍,不能分有,之後多次翻建至今。

而今的柯湖,因為比鄰科學園區,也有巨大改變。為了滿足工商的水電的需要,國家在此大興土木,以土堰隄,在區域內興建寶山水庫及自來水處理廠等,大大改變了地貌。天空中,遠從峨眉鄉,由數十座電塔拉起連綿無盡的高壓纜線,將谷地和空中切割成新世代的阡陌地景。

以往的農田早已不復見,在看不見的大資本和社會制度運作下,一棟棟無塵廠房轟然矗立,辛勤的高科技(高薪)農夫們,種植出萬倍於稻米產值的七奈米矽晶,生產成手機、屏幕,餵養著新時代人們的眼睛。時代轉變,莫此為甚。

所以,當穿上跑鞋,在這段農路上揮汗前進時,不僅僅是健身與賞景,偶爾更有能夠穿梭歷史,擴展眼界的心情,這種著迷,更是鼓舞持續練習的動力。

離開公司後立刻會經過一片樹林大道

寧靜的鄉間道路

農路景

農路景

永遠記得,我問爸爸,怎麼會有這麼大的稻子啊,他那不屑的表情:筊白筍

荒原

寶山水庫 右方為洩洪漕
心海羅盤道場附近一景

拔地而起,電塔屹立
寶山水庫詳細資料

來源位置是 連結。環繞一圈約3.2,上升106公尺( 最低點161 最高點228 )。

2018年9月15日 星期六

單車漫遊:大雪山林道




大雪山林道,起點東勢林管處,終點是小雪山莊,全程50公里,海拔高度提升2400公尺,平均坡度5.2%。路面妥善率高,沿途山林景致優美,適合長途爬坡,是中部知名單車路線。

資料來源 mobile01

我喜歡騎山路時暢快感受,探索新路線更是讓人腎上腺素飆昇。參考兩篇文章mobile01單車百岳介紹,大致掌握了行程。計畫是由家中出發,一個半小時抵達東勢林管處,補充食物和飲水,再帶著兩條巧克力,就往山上騎去。

很快地離開東勢街區,移動到丘陵邊緣,由這谷坑沿著山脈向上延伸看去,就是崇高的大雪山。今天因為是颱風來襲前幾天,水氣被捲走剩得不多,艷陽高掛加上爬坡,讓太陽眼鏡成為額頭汗珠的分水嶺,或左或右,從兩側滴落。

放眼山谷中,盡是千篇一律的栽種地,眼下四週滿山遍野的檳榔和水果樹,標誌著這裡的產業生態。連當地人或許也感受到這份無趣,地名居然有「七公里」、「九公里」等制式稱呼,讓人大開眼界。

滿山檳榔樹
人定勝天 的甜柿果林

隨著地勢越高,通過「十一公里」之後,道路也越過山背正式進入山區。山區路況不錯,往來車輛又少,對單車來說是很友善的道路,尤其特別的是,沿路全無人煙,先前在新竹山區常常見到原住民部落,在同屬山地的大雪山林道中,絲毫沒有蹤影。直到15公里附近,才有育才巷的指標,通往大雪山社區。此處海拔和氣候適合竹林生長,冬筍是該區主要經濟來源,道路穿行於竹林間,好似跨過任意門進到日本嵐山。

16K竹林

16公里的大棟派出所,是許多車友假日休閒時選擇起騎的地點,在此補足滿滿的冰水後,進入艱難路段。腳下不斷踩著,腦袋卻空空的,看看風景,想些無聊的問題,例如要不要換彎把公路車?要不要換工作?要不要減肥?昨晚看的小說,到底想表達什麼?還有如果我現在死掉,世界會有什麼不同嗎?

我從騎單車和慢跑學會最重要的一件事,再大的痛苦,都會有盡頭。無盡的陡坡在里程27公里附近終於趨緩,笑意在我臉上漫開。這附近因為腹地寬闊,也是橫嶺山、鳶嘴山、稍來山的登山口,假日時車水馬龍,門庭若市。

橫嶺山隧道,假日塞車瓶頸

海拔高度接近2000公尺,林相轉為衫樹林,不時有霧氣飄來,雖然仍在持續踩踏,身體卻越來越寒冷,(回來後研究,類似山區路線,最好在車衣下多穿件運動內衣)。至35公里森林遊樂區收費站,門票平日價150元,補充"熱"水(前一小時還是猛灌冰水)後,再騎7公里到遊客中心。

遊客中心帝雉寶寶 和我裝扮相速度 百分之八十。大雪山是賞鳥勝地,還舉辦過國際賞鳥大賽。

因為想要一次封頂,繼續向上騎,8公里後,抵達小雪山莊,這裡地勢開闊,可遠眺山谷間雲氣湧動聚生,附近又有神木和高山池,無奈雷聲隆隆,開始飄雨,草草拍照就急轉下山。一般下坡是快意追風,但我太相信氣象局,托大沒風衣又下雨狀況下,冷到不行。還好門口大哥送我個塑膠袋,剪破三個洞就是現成風衣,才平安回到東勢。
林道旁巨樹,很好奇牠怎麼能在伐木時期中倖存?

對大雪山林道印象
  1. 路線狀況好,沒有邊坡和施工問題,也不致於迷路。
  2. 林相單純舒適,中間竹林段則是太美,會不斷吸引我停下拍照。
  3. 單純乾脆的上昇和下降,沒有上上下下折磨人的路段。
  4. 每天傍晚都會起霧,務必攜帶風衣,也因為霧區視線不良,建議提早下山。

小小插曲
  1. 秋冬季節,可能得準備運動內衣或長袖車衣。
  2. 回程可在十公里左右購買新鮮牛奶高接梨和甜柿。
  3. 回家立刻將鳶嘴山排入一探究竟名單。
  4. 大雪山森林遊樂區,週六日有公車行駛,每日兩班,起點東勢,終點小雪山莊。另外,今日在小雪山莊詢問計程車下山費用約一千元(可再議價)。

2018年9月12日 星期三

慢跑記錄:跑上觀霧

跑上雪霸國家公園
失心瘋報名十一月初的合歡山馬拉松,報名後就思考著如何練習。最直接練習方式是實際上合歡山練跑。不過,直接打魔王,太過刺激,且路途遙遠不實際。較可行方案是,從住家附近新竹山區尋找練習目標。

路線選擇上,希望是長且緩的上坡,高度越高越好,交通方便尤佳。先跳出的想法是尖石鄉宇老觀景台,那兒優點是坡度陡,易到達,缺點是路上車輛多且海拔高度僅1500公尺。

再考量觀霧,雖然坡度較緩,且入山車程遠,但考量最高點達2100公尺,且有幾次單車上山經驗(連結),路線都熟悉,完成機率相對高。想像著自己成功跑步上國家公園的景象,嘴角就會微微上揚,就這麼決定跑上觀霧。

計畫上,竹東到觀霧,距離53公里,水平高度落差二千公尺。若以中間點清泉為界區分前後段,前段坡度緩人口密集,後段坡度陡少有人煙。

第一次起跑,就從竹東河濱公園開始,並沒有設定終點。這段坡度和緩,多部落。當天陰沉沉的,適合跑步,在上坪之前車輛較多但不會危險。大約3.5小時後,跑到桃山隧道,距離已有25公里,水平高度落差710公尺,看天色變差決定搭乘公車下山。

記錄幾件與慢跑無關事項。
  • 依照地圖資訊,由竹東河濱公園至軟橋,沿著頭前溪有條便道,實際探索,只見荒煙漫草一片,只能折返回縣道。
  • 清晨,在竹東下公館水公司附近,驚見幾位婦人在水溝邊搗衣,好像穿越回民國初年,視為奇觀。
  • 跑進上坪村,赫然看見博幼基金會學習站,深受感動。想像著來這當志工的可能性。
  • 這段路有許多果園與民宅,景致沒有想像的好,然而偶爾細細品味這段路程,還是有許多令人驚喜之處。
竹東河濱公園附近水廠出水口
河邊搗衣女 就差沒唱山歌了

路邊見蝴蝶覓食



第二次路跑,由桃山隧道起,經過桃山、清泉、土場至大鹿林道15K,坡度較大,人煙更稀少。但短短20多公里,居然跑3個多小時。和前次相比,水平高度落差比較大(910公尺),速度也變慢,不過卻能感覺非常輕鬆,甚至覺得只要放慢腳步,不論多陡都可達到的錯覺。回程約有10公里是跑步下山,途中10公里因雨順搭原住民摩托車。

感謝原住民朋友 載我一程


與慢跑無關事項。
  • 原住民村鎮常見彩繪壁畫,原住民族因為沒有文字系統,部落故事或技藝大多是口耳相傳,容易遺忘,所以常用壁畫保存重要訊息。例如部落遷徙軌跡、時序慶典型式等。
  • 高山景致迷人。對我來說,跑步原本目的就是休閒賞景,土場以上視野豁然開朗,跑在山邊,隔著霞克羅溪與民督有山對望,覺得天寬地闊。
  • 山上總有許多老人在路邊或閒坐,或設攤賣自種蔬果,感覺時間悠悠,優長無盡。設身處地想,山上生活單調,刺激也少,年輕人都外流到都市,在這的生活著實無趣。
  • 接近12公里處,和路邊水蜜桃果農聊天,雖然想帶些山上霧氣培養的蔬菜,可惜不好攜帶。言談間感受到獼猴對他的水蜜桃的肆虐造成的困擾,他抱怨過去政府對獼猴的保護政策已經讓獼猴族群膨脹到無法控制,獵捕不及,又不知如何架設電網,不知如何是好。
  • 原本打算到桃山隧道口前鬼澤古道探險,在入口附近探望,覺得氣氛詭異,放棄。

村落彩繪壁畫




準備跑進山樹林


路邊賣自種蔬果貨車



累積前兩次經驗,第三次特意開車1.5小時抵達大鹿林道9K爺巴堪溪畔,此處地勢平緩方便停車,常有原住民在河邊垂釣,稍稍整理後即起跑。前五公里壓力很大,通過後就順暢許多,陸續經過15K民宿區、21K雪霸休閒農場,進入柳杉林,今日雖然艷陽高照,但在林間不覺得炎熱,直到觀霧國家公園界碑才休息。

柳杉林道,向上看
柳杉林道,向下看有特殊光影


過大鹿林道26公里後,會遇到一個叉路口,路口處會標示為樂山林道,繼續往前就會到雷達站。樂山林道比大鹿林道舒適和秀麗,非常適合踏青。6公里處,即為樂山巨木林道入口,目前是單邊封閉狀態。繼續可通行至9公里。

藍天白雲下的樂山林道

跑到樂山林道3公里時,發現舉步維艱。原本以為是天氣因素,經過缓步走和休息,還是跑不動。可能每次跑步能爬升的高度或時間是有限的,至此,3.2小時,20公里,水平高度落差1100公尺,就是目前極限。

因為沒有抵達原先設定目標,走在回程的樂山林道上,心中帶著些失落,索性進入蜜月步道休息。因為登山或當步道志工,多次來過此處,漫步在原本就很熟悉的林間步道上,卻因為身邊沒有手機和相機,且此次完全是計畫外,反而覺得異常自由和舒適。此處不再是整齊的衫樹造林,而是倒木、青苔混雜的原始林景象,深遠林間更不時傳來鳥囀,在這永恒與和諧境地流動著。與跑步感受迥然不同。

觀霧蜜月步道

途經今年初翻新營業的觀霧山莊,回想起二十年前,和老婆夜宿於此,凌晨四點出發看日出,實在是年少瘋狂。如今有通鋪也有餐廳,雖然價格是二十年前的許多倍,若要看日出,是最方便起點。

在遊客中心補充能量後,四處張望沒什麼順風車可搭,索性跑下山(17公里),霧氣在身旁漫生,是很奇特經驗。



和觀霧相比,合歡山馬拉松的難度高出許多,也促使我在十月繼續第四次訓練。這次出發點同樣在9K爺巴堪溪畔,順順跑上解說中心,經過樂山林道3K,想起上次在這就折返,今天輕鬆通過直到6K巨木林道入口處。再向前就進入軍事管制區,守護著四百億台幣的樂山雷達站,評估體力還行,繼續向前,經過9K林道,就是營區門口。

2018年9月11日 星期二

小說集:單車失竊記


單車失竊記,為作家吳明益2015年新作,距離前一本長篇小說複眼人僅四年。短短時間就完成這許多資料整理、書寫工作,還要兼顧學校教學,想到自己和作者同樣年齡卻毫無產出,兩相比較,不免沮喪(離題了啊)。

這是一個以大時代和大環境為背景,跨越近百年的故事。地點分布廣泛,台灣部分有台北西門町中華商場、高雄空軍眷村、埔里原住民村落和山區、台北圓山動物園,國外部份涉及馬來西亞和緬甸北部熱帶叢林。時間軸線前可延伸至日治後期,經過二次大戰、民國七十年左右,再至今日。

故事主線有三,一是作者父母親與自身成長的歷程,描述日治後期庶民生活和民國六十年中華商場變遷,主題圍繞著人們對時間看法。基於這個想法,延伸出與時間緊密相關的舊貨流通,全書主題幸福牌單車就是因此展開。作者提到,同樣是腳踏車,因為時間不同,就有腳踏車、自轉車、鐵馬、孔明車、單車、自行車等各種念法,另外,這些曾經是重要生財和交通工具的老車,如今卻被大量且快速遺棄,由此檢視現代人對時間觀念的看法。

二是提到二次大戰與人們的關係。有人深受鼓舞(如巴蘇亞),也有人家破人亡(比奈),不少人則是帶著哀愁終其一生(靜子),內容包括日治時期原住民歷史、馬來亞叢林戰役、日治後期台北受空襲的描寫等。

三則是描繪自然,例如馬來西亞和緬甸的熱戴森林、象群的遷徙(台北圓山動物園變遷)、蝴蝶工藝(台灣補蝶和蝶畫歷史)。都是栩栩如生。

主題複雜,登場角色自然也就多了起來,為了方便閱讀,我還簡單整理出各個角色彼此關係如下。


爸爸 抓蝴蝶 日本技師 爸爸 鯊魚 山下奉文 日本戰役指揮官 爸爸 1905年出生 主角媽媽空襲結束後順手牽單車,被連累受水刑 生了九個小孩
阿雲 媽媽 埔里做蝴蝶手工 未婚懷孕,騎著單車離開埔里到 一郎 紅毛猩猩 瑪象 圓山動物園 靜子 穆班長 海邊給車 林旺大象 同行有十幾隻象 比奈 緬甸原住克倫人 馴象人 死於叢林 巴蘇亞 阿巴斯父親 埔里鄒族人 參加台灣銀輪部隊培訓 參加日本緬甸北部戰爭 老鄒 岡山二高村 肩上有白頭翁 潛入水下 有銀輪改裝單車日丸,被阿巴斯騎去馬來西亞,經過叢林,移師在海灘 爸爸 日本學飛機生產 中華商場西裝 商場拆遷後消失 媽媽 小時候受到空襲朋友當場死亡
薩賓娜Sabina Annie朋友 兒子 城城 Annie 阿巴斯女友 阿巴斯 甘少奇 咖啡店鏡子之家 嚮往成為戰地記者 馬來西亞兩次 小夏 骨董車藏家 阿布 保全轉行成舊貨商家,網路拍賣 身旁有綠鬃蜥 五位姊姊 準備送出五姊時,火車站門口丟第一台單車 主角 八歲時,看台北橋小兒科失去第三台(二手車),失而復得 特莉莎 女朋友 哥哥 考上好高中時,看榜遺失第二台單車

這許多角色,在不同主題中各自出現,背負著獨立的故事,如果把每個角色拿出來當成短篇小說,都有其探討的空間。作家將看似紛雜的角色結合在同一個故事框架,就是功力了。吳明益特別以骨董單車這種早被時代遺忘的物品當成中介,將其交織串連出廣大又深刻的故事網路,更藉此呼應了書名。

----

如此眾多主題、角色的小說非常多,比較質樸的如蕭紅的呼蘭河傳或莫言的蛙。帶些魔幻寫實主義風格的就更多了,如馬奎斯的百年孤寂或莫言的生死疲勞。他們都將大時代和大時代中的小人物和戰爭和怪力亂神的元素很好的融合成為一體。描述著大環境如何廣泛影響著當時的每一個人。

綜觀全書,「單車失竊記」的基調是灰暗、悲觀與絕望的。書中出現的所有角色,看似各有特色,原來都被一個龐大的時代所掌握。他們不是沒有掙扎過,每一個人都曾經進行不同形式的掙扎,只不過到了小說結尾處,好像他們所有的掙扎都是徒勞。探究原因,吳明益總結為,「那是一個你無法好好哀悼,無法好好愛的時代」,而這也就是全書宗旨。

這裡不得不讚嘆吳明益的寫作能力,為了呼應「無法哀悼和愛」的精神,他對空襲、原始森林、戰爭、捕蝶、象遷徙、收購舊貨、殺戮獅虎的描述,都極盡深刻和哀傷。層層疊疊架構出死亡的聖殿。為了要創造出類似真正存在的世界,還用學術研究般扎實的精神,蒐集彙整許多資料,用細致的筆觸,詳實描繪身處場景。看小說時,我腦中不時想到山難畫面,想著那些在冰天雪地中等待不會來到的救援,最終餓死冷死的悲涼畫面。以這標準來看,小說想要表達的目的是成功的。
天空下起了黑雨,不,仔細一看,就知道那是某些物事背焚燬所化成的顆粒狀的黑霧,那個阻擋了陽光的照射,讓周遭看起來蒙上一層黑紗。那並不是真正的雨,只是看起來如此像雨。
不知道為什麼,那歌聲好像隨著呼吸進入了騎在腳車上的她的身體。然後她掉了眼淚。就好像不斷往地底深處挖終究會冒出地熱,就像溪底的魚游過時,水面會出現一陣小小的漩渦,她的眼淚對多數人來說都沒有意義,甚至連對她自己也沒有意義,而她一輩子都在也想不起當時流淚的原因。
沒有人知道我父親對此事的看法,因為我父親一生從來不表示任何看法...彷彿他已經回顧自己人生這回事賣給了誰,一切都與他無關了似的。
----

雖然小說的目的本來就不是要彰顯樂觀與積極,且大時代小說的目的,僅是讓這一代的讀者和上一代的讀者,相互間有個通道。作者自己也提到。
走在這個世界跟另外一個世界之間的鋼索上一樣,覺得自己部屬於這個經驗的世界,但也沒有真正到另一個世界,但是可以看到這一頭,轉過去也可以朦朦朧朧地看到另一頭。
但我好奇,是什麼原因讓作者覺得,那是個「無法哀悼和愛」的時代呢?因為被殖民被剝削壓迫、戰爭戰敗嗎?若是如此,另一方面,殖民者、和戰爭勝利方,社會就因此充滿著愛嗎?更有甚者,比起以往迷惘困惑,看不到自已出路的舊時代,現在的我們,有從困境中走出來嗎?我們有走出不一樣的格局,自許已經躊躇滿志面對世界了嗎?

最後,關於時代性,類似單車失竊記,有時代縱深的小說,對我這種四十歲以上的人,的確提供了深刻思考的空間。但對於當代都市年輕人來說,類似主題,雖然能夠帶來足夠的震撼,但並不能產生感同身受的共鳴。期待作者能創造更多貼近現代的作品,感動現代人。