我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材

Machine Learning

  • ,

    讓OpenCV支持GPU

    OpenCV CUDA https://opencv.org/platforms/cuda/ 現代 GPU 加速器已經變得強大且功能強大,足以執行通用計算 (GPGPU)。這是一個發展非常迅速的領域,引起了開發計算密集型應用程序的科學家、研究人員和工程師的極大興趣。儘管在 GPU 上重新實現算法存在困難,但許多人這樣做是為了檢查它們的速度。為了支持這些努力,許多高級語言和工具已經可用,例如 CUDA、OpenCL、C++ AMP、調試器、分析器等。 計算機視覺的重要組成部分是圖像處理,這是圖形加速器最初設計的領域。其他部分也假定大規模並行計算並且通常自然映射到 GPU 架構。因此,實現所有這些優勢並在圖形處理器上加速 OpenCV 具有挑戰性,但非常有益。 目標 在 GPU 上為開發者提供方便的計算機視覺框架,與當前 CPU 功能保持概念上的一致性。 使用 GPU 實現最佳性能(針對現代架構調整的高效內核、優化的數據流,如異步執行、複製重疊、零複製)…

  • ,

    在python裡面使用GPU 3 – 開發GPU程式

    GPU運算與CPU運算的不同 下面是GPU 和CPU 之間的一些主要區別: 運算單元:GPU 通常具有數百甚至數千個運算單元,而CPU 通常只有幾十個運算單元。 並行運算能力:由於GPU 具有更多的運算單元,它能夠同時處理更多的數據,因此在並行運算方面具有優勢。 計算能力:在單位時間內,GPU 的計算能力通常要高於CPU。 功耗:由於GPU 具有更多的運算單元,它的功耗通常比CPU 高。 用途:GPU 專門用於圖形處理,通常用於遊戲、視頻播放和圖形設計等任務。而CPU 則是計算機的中央處理器,負責處理各種計算任務。 指定使用的GPU 在程式中使用 GPU 時,需要在執行模型訓練或推理時將運算放在 GPU 上。您可以使用 TensorFlow 的…

  • ,

    機器學習所需的前置知識

    前置知識介紹 學習機器學習的前置知識包括: 數學基礎:學習機器學習需要具備良好的數學基礎,尤其是線性代數、微積分和概率論的基礎知識。 編程基礎:學習機器學習需要具備編程能力,至少應該熟悉一種編程語言,如 Python、C++ 或 Java。 算法基礎:了解常用的算法和數據結構,如排序算法、搜索算法、哈希表和二叉樹,將有助於學習機器學習中的算法。 機器學習基礎:了解機器學習的基本概念,如訓練集、測試集、模型和過擬合,有助於加深對機器學習的理解。 心理學基礎:了解心理學基礎知識,如信息加工理論和注意力機制,可以幫助我們更好地理解機器學習的應用。 當然,機器學習是一門涉及多個領域的學科,學習時可能還需要具備其他領域的知識,如統計學、計算機科學和人工智能等。 此外,學習機器學習時還需要具備一定的學習能力和探究精神,能夠獨立思考問題並尋找解決方案。建議您先了解機器學習的基本概念,並通過實踐來加深理解。可以嘗試解決一些練手的機器學習問題,或者參加一些在線的機器學習課程或比賽,來提升自己的機器學習能力。 微積分 微積分是計算數學的一個分支,主要研究連續的函數的求積、導數、極限的概念。在機器學習中,微積分的概念有助於我們理解和掌握梯度下降 (gradient descent) 算法,以及訓練神經網路的過程。 線性代數 線性代數是計算數學的一個分支,主要研究向量和矩陣的概念。在機器學習中,線性代數的概念有助於我們理解和掌握神經網路的運算過程,以及從數據中學習到有用信息的方法。 在線性代數中,還有許多其他概念,例如: 線性相關:多個向量是線性相關的,當且僅當它們可以由其他向量的線性組合表示。 基:向量空間的基是一组向量,它们的线性组合可以表示向量空间中的任何向量。 秩:向量空間的秩是指最多可以由多少个向量的线性无关组合表示出来。 線性無關:多個向量是線性無關的,當且僅當它們不能由其他向量的線性組合表示。 內積:向量的內積是指兩個向量的點積,可以用來度量兩個向量之間的夾角。…

  • ,

    在python裡面使用GPU 2 – 安裝正確的套件

    前置作業 使用 GPU 來加速 Python 程式的運算需要: 電腦必須要有適合的 GPU 及相關驅動程式。 必須安裝支援 GPU 的 Python 程式庫,例如 TensorFlow、PyTorch 或 CuPy。 在使用這些程式庫時將運算指定給 GPU 執行 安裝Tensorflow GPU版本的函式庫 在上面幾步驟都安裝好之後,要確認自己所使用的函式庫是支援GPU的,一般來說,所有的函式庫都會分為【支持GPU版本】或者【針對CPU版本】。 所以要先確定自己所下載的函式庫是支持GPU的。如果你的環境之前已經安裝過CPU版本的該函式庫,建議新增另一個虛擬環境,讓新專案的函式庫能夠完全與CPU版本的程式分開 這邊是使用pip安裝tensorflow套件的流程:https://www.tensorflow.org/install/pip?hl=zh-tw…

  • ,

    在python裡面使用GPU 1 – 選擇適合的GPU

    選擇適用的GPU 在python裡面要使用GPU做運算,需要去呼叫GPU操作的方法來操作目標對象。 所以,能不能支持GPU運算,和套件本身有沒有開發針對該GPU操作的模組版本,是最為相關的。 對於python常用的模組,最廣泛有提供GPU操作版本的是針對nVidia裡的CUDA 深度神經網絡 (cuDNN) – cuDNN庫的支持。 nVidia cuDNN介紹 以下為官網的介紹 NVIDIA CUDA® 深度神經網絡庫 (cuDNN) 是一個 GPU 加速的深度神經網絡原語庫。cuDNN 為標準例程提供高度調整的實現,例如前向和反向卷積、池化、歸一化和激活層。 全球的深度學習研究人員和框架開發人員都依賴 cuDNN 來實現高性能 GPU 加速。它使他們能夠專注於訓練神經網絡和開發軟件應用程序,而不是將時間花在低級 GPU…

  • ,

    使用conda管理python版本和函式庫

    在CMD裡面使用conda 指出 Windows 命令提示符無法識別 conda 命令。這通常是因為您的系統沒有安裝 Anaconda 或 Miniconda 環境管理器,或者沒有將 Anaconda 或 Miniconda 的安裝路徑添加到系統的環境變量中。 將 Anaconda 的安裝路徑添加到系統的環境變量中 如果您的系統上沒有安裝,請前往 Anaconda 網站下載並安裝最新版本:https://www.anaconda.com/products/individual 錯誤訊息:’conda’ is not recognized as…

  • ,

    了解python載入模組的位置

    載入模組方式 一般來說,我們在專案裡面會使用import來載入現有模組 import cv2 了解會從哪些路徑載入-在command line內 1.取得global的site-packages路徑 python –m site 2.取得該使用者的library路徑(per-user) python -m site –user-site 了解會從哪些路徑載入-在Python程式碼內 那麼,這個cv2的預設位置在哪邊呢?會從哪裡載入呢? 想要了解這個問題,可以在py檔案裏面使用下列程式碼來印出會再入的library位置 import sys from os.path import dirname print(sys.path)…

  • ,

    深度學習模型-MLP、CNN與 RNN

    常見的深度學習模型 三種深度學習模型,包含:• MIP:多層感知器( Multilayer Perceptron)• CNN :卷積神經網路(Convolutional Neural Network )• RNN:循環神經網路(Recurrent Neural Netw ork) MLP、CNN與RNN的差異 多層感知器(簡稱 MLP)就是一個全連接網路。在某些文獻裡,它被稱為深度前饋(feedforward)網路或前饋神經網路。從目標應用來認識這些網路有助於我們理解這些進階深度學習模型的設計原理。MIP 常用於簡易的算術與線性迴歸問題。不過,MLP 在處理順序型與多維度資料樣式上的效能不是太好。它在先天設計上很難去記得順序型資料的樣式,並且需要相當大量的參數才能處理多維度資料。 RNN 很常用於順序型的輸入資料,因為其內部設計能讓網路去發掘歷史資料的相依性,這對於預測來說相當有用。 而對於圖片或影片這類多維度資料,CNN 在擷取用於分類、分割、生成或其他目的特徵圖都相當不錯。在某些狀況下,型態為1D卷積的 CNN 也可用於能接受順序型輸入資料的網路。然而在多數深度學習模型中,會把…

  • ,

    使用GrabCut抓取前景

    理論 GrabCut 算法由英國劍橋微軟研究院的 Carsten Rother、Vladimir Kolmogorov 和 Andrew Blake 設計。在他們的論文“GrabCut”:使用迭代圖切割的交互式前景提取中。需要一種算法來以最少的用戶交互進行前景提取,結果就是 GrabCut。 從用戶的角度來看它是如何工作的?最初用戶在前景區域周圍繪製一個矩形(前景區域應該完全在矩形內)。然後算法迭代地對其進行分段以獲得最佳結果。完畢。但在某些情況下,分割效果不佳,例如,它可能將一些前景區域標記為背景,反之亦然。在這種情況下,用戶需要進行精細的修飾。只需在有錯誤結果的圖像上畫一些筆劃即可。Strokes 基本上說 *“嘿,這個區域應該是前景,你將它標記為背景,在下一次迭代中更正它”* 或者它的反面是背景。然後在下一次迭代中,你會得到更好的結果。 請參見下圖。第一個球員和足球被包圍在一個藍色矩形中。然後進行一些帶有白色筆觸(表示前景)和黑色筆觸(表示背景)的最終潤色。我們得到了一個不錯的結果。 函數介紹 grabCut() 下面介紹幾個常用的參數: img – 輸入圖像 mask – 這是一個蒙版圖像,我們在其中指定哪些區域是背景、前景或可能的背景/前景等。它由以下標誌完成,cv.GC_BGD、cv.GC_FGD、cv.GC_PR_BGD、cv.GC_PR_FGD,或者簡單地通過0,1,2,3…

  • ,

    訓練模型-model.fit()的參數設定

    model.fit的參數 請見官網介紹: https://www.tensorflow.org/api_docs/python/tf/keras/Model#fit fit( x=None, y=None, batch_size=None, epochs=1, verbose=’auto’, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None, validation_batch_size=None, validation_freq=1, max_queue_size=10, workers=1, use_multiprocessing=False ) 通常label單類別最後使用softmax當作activation,多類別用sigmoid。在使用model.fit之前可用下列指令來查看模型的資訊:…


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!