發表文章

目前顯示的是有「python」標籤的文章

使用 pyenv 切換專案資料夾下的 local python 版本

圖片
最近在 macbook 上需要開發一些給舊系統用的 package 必須支援到 python3.6 筆電習慣使用的是 python3.12 問了一下 gpt-4o 他不建議直接透過 brew install 來安裝不同 python 版本 改採用 pyenv 來管控 以下是我的步驟 brew install pyenv # macOS # 或 sudo apt install -y build-essential libssl-dev zlib1g-dev ... # Ubuntu 安裝依賴 pyenv install 3.6.15 pyenv global 3.6.15 然後修改我的 ~/.zshrc vim ~/.zshrc 在檔案最後面加入以下設定 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" 設定完 :wq 存檔後 source ~/.zshrc 這樣的設定下,我開新的 terminal 打 python 會出現 3.6.15 這個版本 接著我也要在 pyenv 底下把 python3.12 裝回來 pyenv install 3.12 pyenv global 3.12 我還是希望系統預設的 Python 使用 3.12 版本 所以要 global 一下 裝完測試一下 接著 到我想要使用 python3.6 的專案資料夾下 透過 local 指定指定這個目錄下的 Python 版本 cd 你的專案根目錄 pyenv local 3.6.15 這樣你在專案目錄下使用 python 就會是 3.6.15 出了專案目錄後就會回到 pyhon3.12 版本 完美~~~ :D

[筆記] 使用 pygsheets 記錄實驗數據到 google sheet

圖片
  設定 Google Drive API 去 google cloud console 上建一個專案 https://console.cloud.google.com/ 接著在專案裡面搜尋 Google Drive API 接著啟用它

[Debug] 使用 Python argparse 遇到 error: unrecognized arguments

圖片
情境說明 我在  main.py  裡面定義了許多 argument 參數例如長這樣 然後我的  cmd.sh  長這樣 python main.py --model GaussianCopula \ --input_path data/train_raw.csv \ --output_dir data/ \ --num_rows 1000 \ --save_output \ --gen_dim 23 45 24 99

[筆記] Python multi-process task in Docker Container

圖片
Python multi-process task in Docker Container container setting 啟動 container 時要做一些設定 假設我的機器有個 8 核心 CPU,以及多張 GPU 要讓 container 使用全部運算資源的話可以這樣設定 docker run --gpus all --cpus 8 --cpuset-cpus 0-7 (後略...) 參數設定 --cpuset-cpus 0-7 8 核心的 cpu 編號從 0 開始到 7 如果想指定 cpu 特定某幾個核心的話可以這樣改: --cpuset-cpus 0,7  使用第一個跟最後一個核心 --cpuset-cpus 0,2,4,6  使用第 1,3,5,7 個核心 ref:  https://docs.docker.com/config/containers/resource_constraints/ python 使用 multiprocessing 查看 cpu 核心數 import multiprocessing cpus = multiprocessing.cpu_count() print (cpus) # 8 假設我們有個任務名稱叫做 sleep_task,執行每個運算時都會睡一秒 如果數據量超大,使用單個核心會等到天荒地老 import time # task 內容: 睡一秒後再做放大兩倍的運算 def sleep_task ( input_list ): res = [] for x in input_list: time.sleep( 1 ) res.append(x* 2 ) return res if __name__ == '__main__' : # Single-process start start_time = time.time() input_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ] sp_result = sleep_task(input_list) ...

[筆記] 手刻的圖片前處理步驟 Understanding Torchvision transform.Normalize

Understanding Torchvision transform.Normalize 做 Deep Learning 影像辨識實驗時最常用的 pre-train model 就是以 ImageNet 資料訓練出來的 model,此時使用 model 時的圖片前處理就要注意幾個事項: model 架構中要求的圖片長寬 (Height, Width) 讀取圖片時的 Channel 順序 RGB 或 BGR ImageNet 資料集的圖片 Channel 的平均值(mean)與標準差(std) 以下順序為 [R, G, B] Mean = [0.485, 0.456, 0.406] Std = [0.229, 0.224, 0.225] 知名的深度學習框架 pytorch 有提供一個好用的圖片處理工具 torchvision 來做各式各樣常用圖片前處理,因此可以很簡地透過 torchvision 裡的 transform 做完以上幾件事 以下範例以 Inception V3 架構為例 這個模型要求圖片輸入尺寸為 299x299 Inception V3 paper:  https://arxiv.org/abs/1512.00567v3 pytorch code: from PIL import Image from torchvision import transform height = 299 width = 299 test_transform = transforms.Compose([ transforms.Resize((height, width), interpolation= 3 ), transforms.ToTensor(), transforms.Normalize(mean=[ 0.485 , 0.456 , 0.406 ], std=[ 0.229 , 0.224 , 0.225 ]) ]) image_path = 'data/dog.jpg' # 圖片所在的路徑 image = Image.open(image_path) image = test_transform(image) 補充一個容易出錯的小重點 Pillow 跟 OpenCV...