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

Machine Learning

  • ,

    Tensorflow裡Estimator介紹

    tf.estimator.Estimator 介紹 官方介紹頁面: https://www.tensorflow.org/guide/estimator tf.estimator.Estimator 與 tf.keras.Model 類似,estimator是模型級別的抽象。tf.estimator提供了一些目前仍在為 tf.keras 開發中的功能。包括: 基於參數服務器的訓練 完整的TFX集成 使用預製Estimator,能夠在比基礎TensorFlow API 高很多的概念層面上工作。您無需再擔心創建計算圖或會話,因為Estimator 會替您完成所有“基礎工作”。此外,使用預製Estimator,您只需改動較少代碼就能試驗不同的模型架構。例如,tf.estimator.DNNClassifier是一個預製Estimator 類,可基於密集的前饋神經網絡對分類模型進行訓練。 它提供了一種統一的方式來實現和使用各種不同類型的機器學習模型。它提供了一些預定義的模型類型,如線性迴歸、決策樹、KNN等,可以讓開發者更輕鬆的實現常見的機器學習模型。 主要功能 tf.estimator 是 TensorFlow 的一個高級 API,它提供了一種統一的方式來實現和使用各種不同類型的機器學習模型。它的主要用途是簡化建立、訓練和使用模型的流程,使開發人員能夠更輕鬆地實現常見的機器學習模型。 其主要功能如下:…

  • ,

    梯度下降法介紹

    梯度下降法 梯度下降法(英語:Gradient descent)是一個一階最佳化算法,通常也稱為最陡下降法,但是不該與近似積分的最陡下降法(英語:Method of steepest descent)混淆。 要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行疊代搜索。如果相反地向梯度正方向疊代進行搜索,則會接近函數的局部極大值點;這個過程則被稱為梯度上升法。 既然在變量空間的某一點處,函數沿梯度方向具有最大的變化率,那麼在優化目標函數的時候,自然是沿著負梯度方向去減小函數值,以此達到我們的優化目標。 如何沿著負梯度方向減小函數值呢?既然梯度是偏導數的集合,如下: 同時梯度和偏導數都是向量,那麼參考向量運算法則,我們在每個變量軸上減小對應變量值即可,梯度下降法可以描述如下: 描述 甚麼是梯度消失 梯度是一種數學概念,用於描述一個函數的變化率。在機器學習中,我們會使用梯度下降法來最小化損失函數。 損失函數是用來衡量模型預測結果與實際結果之間的差異的函數。通過最小化損失函數,我們可以讓模型的預測結果越來越接近實際結果。 梯度下降法是一種基於梯度的最優化算法,它會不斷計算損失函數的梯度,並根據梯度的大小和方向來更新模型的參數。當梯度越大,就意味著模型的預測結果與實際結果的差異越大,所以需要更大的步長來進行更新。當梯度越小,就意味著模型的預測結果與實際結果的差異越小,所以可以使用較小的步長來進行更新。 隨著層數的增加,梯度有可能會越來越小。這是因為在深度神經網路中,每個層的輸入都是前一層的輸出,因此如果前一層的輸出有變化,那麼這層的輸入也會有變化。如果前一層的輸出有很大的變化,那麼這層的輸入也有可能有很大的變化,導致梯度變小。而如果前一層的輸出沒有太大變化,那麼這層的輸入也不會有太大變化,梯度就不會變小。 當梯度變得非常小時,梯度下降法就無法有效地更新模型的參數、有可能陷入局部最小值,使得模型無法有效地學習。 這就是深度神經網路中的梯度消失問題。殘差網路就是為了解決這個問題而設計的。這是因為梯度下降法是通過梯度的大小和方向來決定步長的,如果梯度變得非常小,那麼步長也會變得非常小,導致更新參數的幅度非常小。 這篇文章對梯度下降法有很詳細的解釋: https://ithelp.ithome.com.tw/articles/10273302 更多關於CNN殘差學習介紹: https://zhuanlan.zhihu.com/p/31852747

  • ,

    物體偵測技術介紹

    取得圖片中可能的目標的位置資訊 要讓模型吐出圖片中目標的座標位置資訊,常用的方法是使用目標檢測 (object detection) 的模型,這些模型通常可以同時預測目標的類別 (class) 和座標位置 (bounding box)。 常用的目標檢測模型有 YOLO (You Only Look Once)、SSD (Single Shot MultiBox Detector) 以及 Faster R-CNN。在 TensorFlow 中,可以使用 TensorFlow…

  • ,

    Dense全連接層介紹

    Tensorflow的全連接層 對Tensorflow而言,全連接層的類別為: tf.keras.layers.Dense 相關介紹: https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dense 甚麼是全連接層 在 Dense 層中,每個輸入都會對每個輸出進行綜合計算,得到一個輸出值。這個綜合計算包括了對輸入和前一層輸出的矩陣乘法,以及對輸入和輸出的加權和。計算過程中,對輸入的乘法是通過對每個輸入的加權,得到的权重矩陣就是Dense層的權重矩陣。這些权重矩陣就是Dense層所學習的模型參數。 這層的經典用途就是進行分類,把特徵轉成概率,進而做出預測, 可以實現多種不同的操作, 如全連接,激活函數等,是基礎網路結構的基礎。 Dense層中通常還會有一個偏差項, 每個輸出都有一個偏差項, 該項是Dense層的一部分參數, 也會在學習過程中更新。 最后 Dense層 還會有一個激活函數, 用於對綜合計算的結果進行非線性轉換, 增加網絡的非線性表達能力。 全連接層的優點 在多數的深度學習模型中,輸出層常常使用 Dense 層,這是因為…

  • 如何使用回撥(callbacks)來觸發訓練週期的結束

    在 TensorFlow 和 Keras 中,可以使用回撥 (callbacks) 來在訓練週期結束時觸發某些操作。回撥是一個類似於函數的物件,可以在訓練過程中的特定時間點被調用。 其中一種回撥叫做 ModelCheckpoint,它能在訓練的某個時間點保存模型的權重。另一種叫做 EarlyStopping,它能在訓練達到一定的準確率後停止訓練。 要在訓練週期結束時觸發回撥,需要在調用 fit() 或者 fit_generator() 時將它們添加為參數。 範例: 這樣的程式會在訓練結束後儲存權重並在驗證損失停止改善2次後停止訓練 通常,回撥可以根據您的需求進行自定義,並結合多種回撥以實現複雜的訓練流程。

  • ,

    如何從預先訓練的模型中提取特徵

    如何從一個已經訓練好的模型(預訓練模型)中,提取出我們感興趣的資料特徵。 什麼是預訓練模型? 預訓練模型就像是一個已經受過良好教育的人,他對很多事情都有基本的認識。在機器學習中,預訓練模型是指在一個非常大且多樣的資料集上訓練過的模型。例如,一個圖像識別的預訓練模型可能已經看過數百萬張圖片,因此它對各種物體、場景都有很深的理解。 我們可以將整個預先訓練的模型看作是一個特徵提取器。 將輸入數據丟入預先訓練的模型中,然後使用模型的最後一層輸出 (通常是分類層) 作為特徵。 為什麼要提取特徵? 具體範例 使用 ImageNet 預訓練模型進行圖像分類 情境: 假設我們有一個小型的新數據集,包含貓、狗和馬的圖片,我們希望訓練一個模型來區分這三種動物。我們可以利用 ImageNet 預訓練模型來加速這個過程。ImageNet 是一个非常大的圖像數據集,包含數百萬張圖片和數千個類別。 步驟: 為什麼這麼做? 提取特徵的常見應用場景 從預訓練模型中提取特徵是一種非常有效的技術,可以幫助我們在各種機器學習任務中取得更好的效果。關鍵在於選擇適合的預訓練模型,並根據具體的任務進行適當的調整。

  • ,

    二元分類器 (binary classification) 介紹

    甚麼是二元分類器 二元分類 (binary classification) 是一種機器學習中常見的任務,其目的是從兩個不同類別中將每個數據樣本歸類為其中之一。這種分類方式只有兩個類別,因此其結果是二元的。例如,對於圖像分類問題,二元分類可能用於識別猫和狗的圖像,或者用於識別垃圾郵件和非垃圾郵件的電子郵件。 在二元分類中,我們通常使用一些算法來建立一個模型,如 logistic regression, decision tree, SVM, Random forest, neural network等 來預測每個輸入數據樣本屬於哪個類別。 當我們對新數據進行預測時,該模型將輸出預測類別 (0 或 1)。 在訓練階段,通常需要提供已經標註好類別的數據來訓練模型。並在測試階段使用該模型來預測新的數據的類別,並使用常見的度量指標來評估模型的效果如精確度, AUC-ROC, F1 score等 如果您需要分類多於兩個類別的數據,則需要使用多元分類…

  • ,

    Tensorflow裡ResNet(殘差網路)的介紹

    殘差網路ResNet 殘差網路(Residual Network,簡稱 ResNet)是一種深度卷積神經網路,它被設計用來解決深度神經網路中的梯度消失問題。 在深度神經網路中,隨著層數的增加,梯度有可能會越來越小,導致模型無法有效地學習。殘差網路通過在每一層中引入一個「殘差块」來解決這個問題。殘差块包含兩個卷積層和一個殘差路徑,殘差路徑將輸入數據直接加到輸出數據上。這樣,當殘差块的輸出數據與輸入數據相加時,梯度就不會被消失。 這邊是別人的文章介紹: https://ithelp.ithome.com.tw/articles/10264843?sc=hot 與Conv2D關鍵的不同 Conv2D就是一個提取圖片裡的特徵的方式,他是可以讓圖片也可以丟進Dense去找到共通特徵的一個關鍵,但是,Conv2D一定會需要與其他像是池化層、全連接層、輸出層等一起使用。 而殘差網路就是某個對ML非常熟的神人,所使用像是卷積層、池化層、連接層等,可有效降低梯度消失的問題的一個【已經建立好的模型】 例如: 以下為一個原始的TF模型的建立方式 ResNet使用範例 而使用ResNet非常的簡單,就使用別人已建立好的ResNet就可以了,以下範例中的 ResNet 使用了 20 個 ResidualBlock,每個 ResidualBlock 中使用了 64 個濾波器,卷積核大小為 3×3,步長為 2。…

  • ,

    PyCharm – 好用的python開發環境

    官方網站 https://www.jetbrains.com/pycharm/ 為什麼選擇PYCHARM 所有 PYTHON 工具集中在一處 提高生產力: 在 PyCharm 處理例程時節省時間。專注於更大的事情並採用以鍵盤為中心的方法來充分利用 PyCharm 的許多生產力功能。 獲得智能幫助: PyCharm 了解您的代碼的一切。依靠它實現智能代碼完成、實時錯誤檢查和快速修復、輕鬆的項目導航等等。 提升代碼質量: 編寫整潔且可維護的代碼,同時 IDE 通過 PEP8 檢查、測試協助、智能重構和大量檢查幫助您控制質量。 只需您所需要的: PyCharm 由程序員設計,為程序員而設計,旨在提供高效 Python…

  • ,

    TensorFlow 開發者認證計劃介紹

    TensorFlow認證計劃課程 以下為介紹網頁 https://www.tensorflow.org/certificate 在這個網頁當中,他們推薦了幾個課程 Udacity 的《TensorFlow 在深度學習中的應用簡介》課程 Coursera 的《DeepLearning.AI TensorFlow Developer 專業證書》 而我選擇了Udacity的課程(因為免費),而且可以有中文字幕 必備知識 為了順利完成考試,應試者應該了解以下知識: 機器學習和深度學習的基本原則 在TensorFlow 2.x 中構建機器學習模型 使用深度神經網絡和卷積神經網絡構建圖像識別算法、對象檢測算法、文本識別算法 使用不同形狀和大小的真實圖像可視化圖像的捲積過程,了解計算機如何“觀察”信息、繪製損失和準確率圖 探索防止過擬合的策略,包括增強和丟棄策略 在TensorFlow 中使用神經網絡解決自然語言處理問題 認證考試使用的工具…


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

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