Mac、Linux 和 Iphone 上的個人提示

隨手記錄自己在用Mac開發上隨時發現的各種Tips。 Linux 別用Bash啦用zsh! � zsh的自動補全功能各種神奇,可以補齊路徑,補齊命令,補齊參數等,再也不用按下連按Tap還有二級菜單。 kill命令不需跳轉時,只需輸入d,將列出當前session 訪問過的所有目錄,再按提示的數字即可進入相應目錄。 查找:zsh 的歷史記錄跨session,可以共享。歷史記錄支持受限查找。比如,輸入git,再按向上箭頭,會搜索用過的所有git 命令。搭配工具篇 MWeb 目前體驗最好的markdown編輯器MWeb - 專業的Markdown寫作、記筆記、靜態博客生成軟件- MWeb個人最喜歡圖片拖入功能,在此處設置好後之間拖入圖片,即可自動寫入路徑並實時預覽(我用的hexo搭的博客)� ,除此之外其他的功能也是各種方便,這只需要¥98,還在等什麼,趕快行動吧! Transserra iOS App,可以離線下載Coursera課程,殺手功能: ! ! ,看公開課實在是太方便啦!不過需要注意,不要在還有下載任務的時候開啟cellular(蜂窩網絡)下使用,本人就是這樣在月初被燒完了整個月的流量! ! ! �, 翻譯功能需要付費,不過不貴。 Iterm2 iTerm2 - macOS…

0 Comments

python 正則實用例子

本文主要關於python的正則表達式的符號與方法。 findall: 找尋所有匹配,返回所有組合的列表search: 找尋第一個匹配並返回sub: 替換符合規律的內容,並返回替換後的內容**.**:匹配除了換行符以外的任意字符1 2 3 4 a = b = re.findall( print # ['xy12'] *****:匹配前一個字符0次或者無限次1 2 3 4 a = b = re.findall( print # ['x', '', 'x',…

0 Comments

神經網絡術語大百科:優化函數、激活函數、損失函數、正則方法的簡介

簡述關於神經網絡的各種優化函數(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)、各種激活函數(Sigmoid,Tanh、Hard Sigmoid、Softplus、ReLU、ElU、PReLU、RReLU)、各種損失函數以及正則方法的簡述,並附帶代碼實現例子。 優化函數先上兩張圖激活函數沒有激活函數,神經元就只是一個線性函數,那麼無論多少層的神經元疊加是沒有意義的。而主流激活函數也隨著神經網絡、深度學習的發展迭代進化了許多次代。 Sigmoid Sigmoid是S形狀的意思,又因為它是邏輯回歸的激活函數又叫logistic函數,函數式為$值域位於0-1,那麼對於邏輯回歸,這是對於二分類的一個很自然的表達,也就是概率處處連續可導不過呢,我們觀察它的形狀,可以得出,Sigmoid函數在兩端(靠近0和1的部分)梯度很小,這也意味著,如果神經元的輸出落到了這個地方,那麼它幾乎沒什麼梯度可以傳到後面,而隨著神經網絡的層層削弱,後面的層(靠近輸入的層)沒有多少梯度能傳過來,幾乎就“學不到什麼”了。這叫做梯度消失問題,一度是阻礙神經網絡往更深的層進化的主要困難,導致深度學習專家們絞盡腦汁想了許多方法來對抗這個問題,比如“Xavier and He Initialization”,比如我們要把weight隨機初始化為如下的範圍, sigmoid的另一個問題是它不是0均值的,Sigmoid函數的輸出值恆大於0,這會導致模型訓練的收斂速度變慢。舉例來講,對,如果所有均為正數或負數,那麼其對的導數總是正數或負數,這會導致如下圖紅色箭頭所示的階梯式更新,這顯然並非一個好的優化路徑。深度學習往往需要大量時間來處理大量數據,模型的收斂速度是尤為重要的。所以,總體上來講,訓練深度學習網絡盡量使用zero-centered數據(可以經過數據預處理實現) 和zero-centered輸出。如今,sigmoid函數應用最廣泛的在於其變種softmax在多元分類中,比如手寫數字識別,經過卷積神經網絡的處理,最後我們需要網絡輸出每個預測的概率值,最後預測為某一個數字,這裡就需要用到softmax,以下是softmax的Keras代碼,注意其中一個trick, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…

0 Comments

numpy 中增加channel的方法

numpy 數組中一維怎麼轉二維和多維?簡述numpy 中增加channel的方法。在機器學習中,所有的數據都是向量和矩陣,而怎麼根據我們所要解決的問題來調整模型以及數據的格式,也就是矩陣的維度和大小是一項重要的基本功,那麼本文就具體介紹下numpy中數組的轉換,也就是增加channel的方法。 一維轉二維例如我們有一個一維的numpy array,有如下方法可以轉為二維1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 a = np.arange( a a.shape…

0 Comments

理解TSNE算法

結合t-SNE 是一種數據可視化工具,它可以將高維數據降維到2-3維以用於畫圖,局部相似性被這種embedding所保留。 t-SNE把原空間的數據點之間的距離轉換為高斯分佈概率,如果兩點在高維空間距離越近,那麼這個概率值越大。注意到高斯分佈的這個標準差$sigma_i$ 對每個點都是不同的,這也是算法的創新點之一,因為理論上空間不同位置的點的密度是不同的,條件概率如此計算, $$p_{j|i} = frac{exp{(-d(boldsymbol{x}_i, boldsymbol{x} 圖中公式是理論方式,實際是先計算條件概率再用下面公式來產生聯合分佈, $$p_{ij} = frac{p_{j|i} + p_{i|j}}{2N}.$$其中$sigma_i$ 將自動確定。這個過程可以通過設置算法的困惑性來影響。用一個長尾分佈(Student-t Distribution,簡稱為t分佈)來表示embed空間的相似性$$q_{ij} = frac{(1 + ||boldsymbol{y}_i - boldsymbol{y} 損失函數是兩個分佈之間的Kullback-Leibler divergence(KL散度) $$KL(P|Q) = sum_{i neq j} p_{ij}…

0 Comments

數據的標準化與歸一化

聊一聊Normalization and Standardization什麼是Normalization就是歸一化,是最小-最大縮放(min-max scaling)的特例,指的是將數據縮放到指定range,這個range通常是0 1或者-1 +1,直觀來講就是下圖,在數據不包含離群點時很有用, 公式則是$$ x^{(i)} $$若要縮放至-1~+1,則是$$ x' = frac{x - min}{max - min} $$代碼實現 1 2 3 4 5 6 7 8 #導入數據預處理庫from #範圍縮放標準化min_max_scaler = preprocessing.MinMaxScaler() #訓練集縮放標準化min_max_scaler.fit_transform(X_train)…

0 Comments