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

TensorFlow

  • 交叉熵相關損失函數的比較

    交叉熵(cross-entropy)是什麼 交叉熵是一種常用的測量兩個概率分布差異的度量。它可以用來衡量預測模型的輸出結果與真實標籤之間的差異,从而作為訓練模型的損失函數。 交叉熵的计算公式如下: H(y, y_pred) = – ∑ y log(y_pred) 其中 y 和 y_pred 分别表示真實標籤的概率分布和預測模型的輸出概率分布。 交叉熵有一些特性,使它特别适用于衡量分類問題中模型的預測結果與真實標籤之間的差異: 交叉熵越小,預測模型的輸出結果就越接近真實標籤,模型的預測能力就越強。 当預測模型的輸出結果完全符合真實標籤時,交叉熵等于零。 交叉熵是一個非負數,且在模型預測結果與真實標籤完全不同時,交叉熵最大。 交叉熵相關損失函數 有以下兩種 categorical_crossentropy sparse_categorical_crossentropy 兩者都是用於計算分類問題中模型預測結果與真實標籤之間的交叉熵的損失函數。但是它們有一些重要的區別。 1、在…

  • ,

    使用數據增強加強圖像辨識準確率

    數據增強 數據增強(Data Augmentation)是一種在不增加真實數據的情況下,通過對現有數據進行變化來增加數據集大小的方法。 請參見: https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/image/ImageDataGenerator 常見的數據增強技術包括: 尺度變換: 對圖像進行放大或縮小。 旋轉: 對圖像進行旋轉。 平移: 對圖像進行平移。 剪裁: 對圖像進行剪裁。 翻轉: 對圖像進行水平或垂直翻轉。 調整亮度: 對圖像的亮度進行調整。 調整對比度: 對圖像的對比度進行調整。 通過使用這些技術,可以從現有的數據集中生成新的數據,以增加數據集的大小 使用數據增強的範例 – 使用ImageDataGenerator 以下為一個簡單範例…

  • ,

    模型的權重與偏差值

    偏差值的功能 偏差值 在神經網絡中扮演著一個非常重要的角色,它就像是一個額外的參數,讓模型能夠更靈活地擬合數據。 偏差值與權重的關係 神經元的權重與偏差 在神經網絡中,權重 (weight) 和偏差 (bias) 是模型的兩個重要參數。 權重 (weight) 指的是神經網絡中的輸入層和輸出層之間的連接強度。每個神經元都有一個權重矩陣,表示與該神經元相連的輸入張量的強度。輸入張量與輸出張量之間的權重越大,該神經元對輸出的貢獻就越大。 偏差 (bias) 指的是神經網絡中的偏移量。每個神經元都有一個偏差值,表示該神經元的輸出在不考慮輸入的情況下的預設值。偏差值可以控制神經網絡的輸出範圍,並且可以用於控制模型的準確性。 在訓練神經網絡模型時,通常會使用梯度下降法來調整權重和偏差的值,以使得模型的輸出與真實值的差異最小。 設定神經元的偏差值 在訓練神經網絡模型時,通常可以自己設定神經元的偏差值。 例如,在 TensorFlow 中可以使用以下方式創建一個帶有偏差的神經元: 上面使用了 bias_initializer 參數指定了偏差的初始值為…

  • ,

    tensorflew的自動求導機制

    什麼是自動求導機制 在 TensorFlow 中,有一種特殊的張量類型叫做梯度張量,可以用於計算模型的梯度。 TensorFlow 的梯度張量是一種特殊的張量,其中包含了模型中每個變量的梯度信息。梯度張量是 TensorFlow 的自動微分機制的基礎,可以通過 TensorFlow 的自動微分機制來計算模型的梯度。 使用方法介紹 使用 GradientTape 類的方法是: 在計算圖的上下文中創建一個 GradientTape 對象。 使用 GradientTape 對象的 watch 方法監視計算圖中的變量。 執行計算圖,並在計算圖中使用 TensorFlow 的運算符操作張量。…

  • ,

    使用model.summary()輸出參數Param計算過程

    使用方式 使用keras構建深度學習模型,我們會通過model.summary()輸出模型各層的參數狀況,如下: 輸出範例 參數意義 在這個輸出中,Total params 表示模型的總參數數量,可以用來反推模型的大小。請注意,模型的大小不僅僅是參數數量的函數,還可能受到訓練資料的大小、訓練次數等因素的影響。 Param就是參數的意思,也就是每層神經元的權重(w)個數。 怎麼算出來的?Param = (輸入維度+1) * 輸出的神經元個數,但是每個神經元都要考慮到有一個Bias,所以要再加上1。

  • ,

    TensorFlow的圖像操作功能筆記

    為什麼要盡量使用Tensorflow的圖像操作功能 因為Tensorflow對GPU的支援度高,盡量完全使用Tensorflow內建的圖像操作功能對圖像做操作,可以避免資料在GPU和CPU之間轉換。 將資料集轉為dataset 可以使用 TensorFlow 的 tf.data.Dataset API 將訓練圖像和標籤轉換為數據集。 首先,需要將訓練圖像和標籤轉換為 TensorFlow 張量: 然後,使用 tf.data.Dataset.from_tensor_slices 方法將張量轉換為數據集: 使用 tf.data.Dataset 中的方法對數據集進行轉換和操作,例如混淆、重新排列和批次化。例如,要將數據集混淆並分成小批次 將BGR的tensor物件轉為灰階 可以使用rgb_to_grayscale將 BGR 格式的圖片轉換為灰階: 在 TensorFlow 中,通常會將圖片的數據型別轉換為浮點數,因為浮點數能夠提供更大的精度和更多的值域。浮點數通常用於訓練模型和進行數值運算。…

  • ,

    限制在Tensorflow跑模型時使用的GPU的記憶體上限?

    使用tensorflow-gpu結果耗一大堆MEMORY是為什麼 使用 TensorFlow GPU 版本會耗費較多的記憶體,這是正常的。因為 GPU 設備有自己的內存,我們可以使用 GPU 設備加速計算。但是,這意味著 GPU 設備的內存也必須足夠大,以便容納計算所需的資料。 如果GPU的記憶體不夠大,則tensorflow會改將原本要放在GPU的記憶體內的資料放到CPU的記憶體裡面,若是CPU的記憶體也不足夠大,則很有可能會導致程式死掉(因為記憶體不足夠) 改善方案 可考慮的改善方向有以下三點: 模型太大,超出了 GPU 設備的內存限制=>可以考慮使用更大的 GPU 設備或對模型進行優化,以減少模型的大小。(請參見: 如何縮小Tensorflow運算模型時使用的記憶體大小) 程式碼中存在記憶體泄漏。請檢查程式碼,確保正確釋放不再使用的記憶體。 GPU 設備的驅動程序版本過舊或損壞 其他方法 請參考這篇文章:…

  • ,

    如何縮小Tensorflow運算模型時使用的記憶體大小

    使用剪枝法 剪枝是一種常用的方法,用於縮小深度學習模型的大小。在剪枝過程中,可以刪除模型中不重要的權重,以縮小模型的大小。 以下是使用 TensorFlow 2.x 的簡單範例,說明如何在深度學習模型中進行剪枝: 訓練過程中使用正則化 正則化是一種常用的方法,用於防止過擬合,並縮小模型的大小。在 TensorFlow 中,您可以使用 tf.keras.regularizers 中的正則化函數,如 tf.keras.regularizers.l1 或 tf.keras.regularizers.l2,在網絡層中使用正則化。 使用較小的資料集進行訓練 如果資料集較大,則模型也會較大。因此,可以使用較小的資料集來訓練模型,以縮小模型的大小。 使用較少的運算計算。您可以使用較少的運算計算來縮小模型的大小。 例如,可以使用 1×1 卷積層來替代全卷積層預設值的3×3,或使用矩陣乘法來代替多重迴圈。 以下是使用 TensorFlow 2.x 的簡單範例,說明如何使用…

  • ,

    tensorflow和keras版本之間不兼容的錯誤

    更多資訊請見: https://stackoverflow.com/questions/72255562/cannot-import-name-dtensor-from-tensorflow-compat-v2-experimental 編譯器的錯誤訊息 ImportError: cannot import name ‘dtensor’ from ‘tensorflow.compat.v2.experimental’ (C:\Users\user\.conda\envs\py392\lib\site-packages\tensorflow\_api\v2\compat\v2\experimental\__init__.py) stackoverflow提出的解決方法 tensorflow這可能是由於您和您的keras版本之間不兼容造成的。特別是我在tensorflow和keras中看到了這一點tensorflow==2.6.0,keras==2.9.0但如果其他版本也會導致這種情況,我也不會感到驚訝。 通過以下方式更新您的tensorflow版本: 或通過以下方式降級您的keras版本: 我的方法 重新建立一個新的tensorflow環境 參考這篇文章: 使用conda管理python版本和函式庫 用一個新的函式庫來跑tensorflow 並下載正確的套件,在最下方有一個列表: https://www.tensorflow.org/install/pip?hl=zh-tw#package-location conda create -n…

  • ,

    使用GPU跑tensorflow的除錯流程

    最簡單的範例 這邊的程式碼是官網教學裡的一個簡單範例: https://www.tensorflow.org/tutorials/keras/classification?hl=zh-tw 使用GPU建模 經過了前三章的教學之後,應該已經設定好了Tensorflow的GPU環境 1. 在python裡面使用GPU 1 – 選擇適合的GPU 2. 在python裡面使用GPU 2 – 安裝正確的套件 3. 在python裡面使用GPU 3 – 開發GPU程式 接著就要嘗試使用GPU來建模,並評估和原本的效能有多大差異,現在就可以將上面的程式碼COPY下來,然後在有GPU的環境嚇跑看看 TensorFlow版本過舊的錯誤 AttributeError: module ‘tensorflow.python.util.dispatch’…


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

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