深度學(xué)習(xí)100問 Author:louwill Machine Learning Lab 先前筆者分享過有三AI的一篇觀點(diǎn)性文章:【觀點(diǎn)】深度學(xué)習(xí)從棄用windows開始。雖然這可能讓習(xí)慣于使用Windows的同學(xué)感到難受,但卻指出了一個(gè)不爭(zhēng)的事實(shí):要想在深度學(xué)習(xí)上搞出點(diǎn)名堂,熟練Linux開發(fā)環(huán)境是基本前提。 那作為一名深度學(xué)習(xí)算法工程師,我們的Linux應(yīng)掌握到什么程度呢?有必要像運(yùn)維工程師那樣對(duì)Linux了如指掌?雖說有點(diǎn)夸張,但做深度學(xué)習(xí)開發(fā)Linux是越熟練越好。本節(jié)就簡(jiǎn)單整理下深度學(xué)習(xí)算法工程師應(yīng)掌握的Linux基本技能點(diǎn)。 物理機(jī)or虛擬機(jī)? 使用物理機(jī)還是虛擬機(jī)?這通常是大家面臨的第一個(gè)問題。其實(shí)這根本不是什么問題,如果你喜歡命令行環(huán)境和對(duì)簡(jiǎn)潔的界面情有獨(dú)鐘,那么你大可以直接安裝Ubuntu系統(tǒng),直接使用Linux物理機(jī)。 如果你已經(jīng)習(xí)慣于windows操作系統(tǒng),作為嘗試,你可以嘗試雙系統(tǒng),當(dāng)然雙系統(tǒng)可能會(huì)比較麻煩,這時(shí)候虛擬機(jī)會(huì)是一個(gè)比較好的選擇。常用的虛擬機(jī)工具包括VMware、VirtualBox、Putty和Xshell等。 如果是入門階段而言,建議先使用虛擬機(jī),后面熟悉之后可以嘗試遷移到Linux真機(jī)上。 Linux常用命令 Linux命令無數(shù),但對(duì)于深度學(xué)習(xí)而言常用的不超過20個(gè)。主要包括:cd、ls、pwd、mkdir、touch、rm、mv、cp、find、grep、sed、awk、cat、more、less、tar、ps、chmod、wget、vim等。下面簡(jiǎn)單就這些命令做個(gè)描述。 cd cd命令應(yīng)該是最常用的了。cd用于目錄切換: cd ./documents # 切換到當(dāng)前目錄下的documents目錄 cd ../examples # 切換到上一層目錄下的examples目錄 ls ls的使用頻率大概僅次于cd了。ls命令用于查看當(dāng)前目錄下的文件和目錄。ls命令參數(shù)眾多,但常用的不多,根據(jù)需要重點(diǎn)記住一兩個(gè)即可,比如 -l、-a等等。 -l :列出項(xiàng)目明細(xì),包含文件的屬性與權(quán)限數(shù)據(jù)等 -a :列出全部的文件,包括隱藏文件(開頭為.的文件) -d :僅列出目錄本身 pwd pwd用于查看當(dāng)前路徑。這個(gè)不多說。 mkdir 用于新建目錄。
touch touch命令實(shí)際上用的并不多,其主要功能用于修改文件的時(shí)間戳或者新建一個(gè)不存在的文件。 touch ceshi.log # 創(chuàng)建一個(gè)ceshi.log文件 rm rm是linux系統(tǒng)下的刪除命令。該命令也有多個(gè)參數(shù): -d:刪除目錄 -f:強(qiáng)制刪除目錄或文件(慎用) -i:刪除之前先詢問用戶 -r:刪除目錄和目錄下的子目錄及文件 mv mv即move,表示移動(dòng)目錄或文件,也可以用于目錄和文件重命名。
cp cp即copy,表示復(fù)制文件,用法與mv類似。詳細(xì)參數(shù)可進(jìn)一步查找資料。 find find命令用于linux系統(tǒng)文件查找,比如說想查一下train.py文件在哪個(gè)文件夾下,使用如下命令即可: find / -name train.py grep/sed/awk 這三個(gè)命令號(hào)稱linux文本處理三劍客,所以放在一起介紹。在Linux中經(jīng)常需要對(duì)文本內(nèi)容進(jìn)行查找、編輯和分析,有時(shí)候簡(jiǎn)單的任務(wù)用腳本來處理過于麻煩,Linux為我們提供了簡(jiǎn)潔的命令工具。 grep命令主要用于文本內(nèi)容的查找。在正則表達(dá)式的加持下功能變得非常強(qiáng)大,其用于如下:
比如說我們要在train.py文件中查找包含data的行: grep 'data' train.py sed命令用于文本內(nèi)容的編輯。比如說我們要在train.py文件中最后一行追加一行代碼:
而awk主要用于文本內(nèi)容的分析。比如說我們要對(duì)處理的數(shù)據(jù)以報(bào)告形式呈現(xiàn)或者是按列進(jìn)行處理,這時(shí)候awk的作用就體現(xiàn)出來了。具體可進(jìn)一步查找資料和用法。總之這三個(gè)命令異常強(qiáng)大,和其他命令配合熟練使用往往能事半功倍。 cat/more/less 這三個(gè)命令均用于查看文件內(nèi)容。cat表示查看全部文件內(nèi)容,但如果有時(shí)候文件較大的時(shí)候使用cat命令會(huì)比較不好看,而more和less命令則可以支持翻頁查看的功能,其中l(wèi)ess比more還要強(qiáng)大一點(diǎn),可以支持翻頁、跳轉(zhuǎn)和查找等功能。 tar tar表示對(duì)文件進(jìn)行打包。 ps ps即為process,表示查看當(dāng)前進(jìn)程。比如說我們要查看當(dāng)前用戶的所有進(jìn)程: ps -u 用戶名 chmod chmod用于更改文件權(quán)限。 wget wget是一個(gè)文件下載工具,用于下載網(wǎng)絡(luò)上的各種資源和軟件。比如說我們要下載anaconda到本地: wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh vim vim是linux下最強(qiáng)大的編輯器,具體可參考文末給出的參考學(xué)習(xí)資料。 Shell腳本 Shell是用戶使用linux的橋梁,Shell既是一種命令語言,也是一種程序設(shè)計(jì)語言。Shell是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。而Shell腳本指的是為Shell編寫的腳本程序。 在日常的開發(fā)工作中,我們可以把Shell腳本當(dāng)作一種粘合劑,用來粘合各種開發(fā)語言。新建一個(gè)test.sh文件:
運(yùn)行test.sh: chmod +x ./test.sh #使腳本具有執(zhí)行權(quán)限 ./test.sh #執(zhí)行腳本 Shell作為一種腳本語言,也有變量、函數(shù)、輸入輸出、程序控制等語法規(guī)則。具體Shell教程可參考w3cschool: https://www./linux/linux-shell.html vim編輯器 作為世界上最強(qiáng)大文本編輯器,vim的學(xué)習(xí)曲線無比陡峭(筆者自己目前就徘徊在深入vim各種命令工具中)。首先要明確的是vim包括三種模式,搞不清楚這三種模式vim基本上學(xué)不下去的。三種模式的關(guān)系和切換如下: 關(guān)于vim的具體使用可參考陳皓(左耳朵耗子)在酷殼網(wǎng)上的教程。簡(jiǎn)明VIM練級(jí)攻略:https:///articles/5426.html vim四重境界,需要花費(fèi)大量時(shí)間不斷反復(fù)的練習(xí)才能熟能生巧。 結(jié)語 Linux作為一個(gè)系統(tǒng),功能龐大而又全面。要想很深入的掌握Linux,除了日常的積累之外,還需要更加系統(tǒng)的集中學(xué)習(xí)。這里推薦鳥叔的Linux私房菜: http://cn.linux./linux_basic/linux_basic.php 對(duì)于深度學(xué)習(xí)開發(fā)而言,掌握基礎(chǔ)的Linux技法是極為必要的。比如說如何在服務(wù)器上啟動(dòng)遠(yuǎn)程jupyter?如何使用虛擬環(huán)境?等等。關(guān)于Linux筆者就簡(jiǎn)單羅列到這里,具體還需要大家集中系統(tǒng)的進(jìn)行學(xué)習(xí)。 有學(xué)術(shù)和技術(shù)問題的同學(xué)可以加我微信進(jìn)入機(jī)器學(xué)習(xí)實(shí)驗(yàn)室讀者交流群。加微信后說明來意,最好做個(gè)簡(jiǎn)單的自我介紹,讓我有個(gè)印象,加了一言不發(fā)不如不加。 參考資料: http://cn.linux./linux_basic/linux_basic.php |
|