原创 python中的多繼承理解

  在python的多繼承中,父類的初始化順序遵循所謂方法解析順序(Method Resolution Order,MRO)的機制。python使用C3線性化算法來確定多繼承類的MRO:   1. 目標:創建一個一致的線性繼承順序,同時保持

原创 python 遞歸比較兩個文件夾

  以下 import filecmp, os def compare_folders(folder1, folder2): dcmp = filecmp.dircmp(folder1, folder2) for nam

原创 通過squid將本地作爲代理讓不可聯網的遠端服務器聯網

  一種方法 https://unix.stackexchange.com/questions/116191/give-server-access-to-internet-via-client-connecting-by-ssh   以上方

原创 python模塊導入規則(相對導入和絕對導入)

  python模塊可以相對導入和絕對導入,但這兩者是不能替換使用的。本文主要討論工作目錄下模塊之間的導入規則。其中相對導入前面有一個'.',表示從該腳本所在目錄開始索引,而絕對導入前面沒有'.',表示從根目錄開始索引。首先明確一點,pyt

原创 pytorch的四個hook函數

  訓練神經網絡模型有時需要觀察模型內部模塊的輸入輸出,或是期望在不修改原始模塊結構的情況下調整中間模塊的輸出,pytorch可以用hook回調函數來實現這一功能。主要使用四個hook註冊函數:register_forward_hook、r

原创 奇異值分解,逆,左逆,右逆與僞逆

  奇異值分解(Singular Value Decomposition, SVD)可以被看做是方陣特徵值分解的推廣,適用於任意形狀的矩陣。   對於矩陣$A\in \R^{m\times n}$,不失一般性,假設$m\geq n$,奇異值

原创 Transformers包使用記錄

  Transformers是著名的深度學習預訓練模型集成庫,包含NLP模型最多,CV等其他領域也有,支持預訓練模型的快速使用和魔改,並且模型可以快速在不同的深度學習框架間(Pytorch/Tensorflow/Jax)無縫轉移。以下記錄基

原创 win10中Docker安裝、構建鏡像、創建容器、Vscode連接實例

  Docker方便一鍵構建項目所需的運行環境:首先構建鏡像(Image)。然後鏡像實例化成爲容器(Container),構成項目的運行環境。最後Vscode連接容器,方便我們在本地進行開發。下面以一個簡單的例子介紹在win10中實現:Do

原创 python argparse變量到class變量的轉換代碼

  github上的項目總喜歡使用argparse + bash來運行,這對於快速運行一個項目來說可能有好處,但在debug的時候是很難受的。因爲我們需要在.sh文件中修改傳入參數,並且不能使用jupyter。   以下是把parser轉換

原创 子/次模 (Submodular)、超模 (Supermodular)和模(Modular)函數

定義   子模 (Submodular)、超模 (Supermodular)和模(Modular)函數是組合優化中用到的集合函數概念。函數定義域爲某個有限集$\Omega$的冪集$2^\Omega$,值域通常爲$R$,即$f:2^\Omeg

原创 期望誤差和經驗誤差的關係——期望誤差上界

  機器學習希望最小化模型的期望(泛化)誤差$L$,即模型在整個數據分佈上的平均誤差。然而我們只能在訓練集上最小化經驗誤差$\hat{L}$,我們期望通過最小化經驗誤差來最小化泛化誤差。但是訓練數據和數據真實分佈之間是有差異的,又根據奧卡姆

原创 正定核的充分必要條件

  核技巧使用核函數直接計算兩個向量映射到高維後的內積,從而避免了高維映射這一步。本文用矩陣的概念介紹核函數$K(x,y)$的充分必要條件:對稱(半)正定。   對稱正定看起來像是矩陣的條件。實際上,對於函數$K(x,y):\R^n\tim

原创 平行座標可視化

  參考自《數據挖掘概念與技術》。   對於有$m$個特徵,$n$個樣本的數據,平行座標可視化圖中,橫軸均勻列出$m$個特徵,每個特徵生成一個縱軸,其中每個樣本就表示爲穿越這些縱軸的折線。實現代碼如下: import numpy as n

原创 $\Beta$分佈推導與可視化

$\Gamma$函數   $\Gamma$函數(Gamma函數)是階乘函數在實數和複數域的擴展。對於正整數$n$,階乘函數表示爲$n! = 1 \times 2 \times ... \times n$。然而,這個定義僅適用於正整數。Gam

原创 ADMM——交替方向乘子法

  ADMM(Alternating Direction Method of Multipliers,交替方向乘子法)是一種優化算法,主要用於解決分佈式、大規模和非光滑的凸優化問題。ADMM通過將原始問題分解爲多個易於處理的子問題來實現優化