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