快訊!我的新書今天開始可以在天瓏網路書店預購啦!歡迎大家前往訂購!

 >>>> AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題 <<<<

  • ,

    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。 官方介紹文件 V1版本: https://www.tensorflow.org/api_docs/python/tf/keras/applications/resnet V2版本: https://www.tensorflow.org/api_docs/python/tf/keras/applications/resnet_v2 好多種ResNet,有甚麼差? ResNet50, ResNet101, ResNet152 是 TensorFlow 中原始版本的 ResNet 模型,而 ResNet50V2,…

    Continue Reading…: Tensorflow裡ResNet(殘差網路)的介紹

  • ,

    PyCharm – 好用的python開發環境

    官方網站 https://www.jetbrains.com/pycharm/ 為什麼選擇PYCHARM 所有 PYTHON 工具集中在一處 提高生產力: 在 PyCharm 處理例程時節省時間。專注於更大的事情並採用以鍵盤為中心的方法來充分利用 PyCharm 的許多生產力功能。 獲得智能幫助: PyCharm 了解您的代碼的一切。依靠它實現智能代碼完成、實時錯誤檢查和快速修復、輕鬆的項目導航等等。 提升代碼質量: 編寫整潔且可維護的代碼,同時 IDE 通過 PEP8 檢查、測試協助、智能重構和大量檢查幫助您控制質量。 只需您所需要的: PyCharm 由程序員設計,為程序員而設計,旨在提供高效 Python 開發所需的所有工具。 免費的社區版本和付費的專業版本 功能比較圖 專業版的優惠方案 若為在學學生,可以獲得免費帳號 https://www.jetbrains.com/community/education/#students 若以畢業,但是電子信箱仍然可以用,則也可以用學校的信箱申請學生版本使用。 另外,對於一些電腦學院或者是初期創業者也都有提供優惠,個人使用者也有優惠(更多資訊: https://www.jetbrains.com/pycharm/buy/#discounts) 下載連結 請點此下載: https://www.jetbrains.com/pycharm/download/#section=windows 點進去右邊為免費版本,左邊為付費版本,但是可以免費使用30天

    Continue Reading…: PyCharm – 好用的python開發環境

  • ,

    TensorFlow 開發者認證計劃介紹

    TensorFlow認證計劃課程 以下為介紹網頁 https://www.tensorflow.org/certificate 在這個網頁當中,他們推薦了幾個課程 Udacity 的《TensorFlow 在深度學習中的應用簡介》課程 Coursera 的《DeepLearning.AI TensorFlow Developer 專業證書》 而我選擇了Udacity的課程(因為免費),而且可以有中文字幕 必備知識 為了順利完成考試,應試者應該了解以下知識: 機器學習和深度學習的基本原則 在TensorFlow 2.x 中構建機器學習模型 使用深度神經網絡和卷積神經網絡構建圖像識別算法、對象檢測算法、文本識別算法 使用不同形狀和大小的真實圖像可視化圖像的捲積過程,了解計算機如何“觀察”信息、繪製損失和準確率圖 探索防止過擬合的策略,包括增強和丟棄策略 在TensorFlow 中使用神經網絡解決自然語言處理問題 認證考試使用的工具 PyCharm 因此應熟悉在PyCharm中撰寫Python程式、Debug及Compiler。 此為社區版連結: https://www.jetbrains.com/pycharm/download/#section=windows 若是仍有學生的email信箱,則可以免費申請專業版: https://www.jetbrains.com/community/education/#students 認證考試的內容 雖然我們不一定要去獲得認證,但是從認證考試範圍可以了解,要學習Tensorflow有那些東西是官方認為必備的知識,以下為官方的認證說明文件: TF_Certificate_Candidate_Handbook TensorFlow開發技能 在PyCharm中寫程式Python的知識,解決Python問題,並編譯和執行Python程式。 了解如何查找有關 TensorFlow API 的信息,包括如何查找指南和…

    Continue Reading…: TensorFlow 開發者認證計劃介紹

  • 在K8S內node js紀錄log的解決方案

    千萬不要使用PM2 PM2是一個在linux裡面管理nodejs程序的好工具,它可以讓nodejs在死掉時自動控制重啟,並可於重啟次數超過時停止重啟 但是由於在K8S之中,這種管理的機制已經交由K8S去管理了,因此,若再於裡面包一層PM2,很容易出問題 可能發生的問題 pm2 一開始起來時會依你的參數去試著把 resource 給最大化,所以會一下子把 resource 吃滿,這會讓 k8s 覺得 是不是這個 pod 又很忙了,就馬上又起一個 pod 要來試著接手 pm2 會自己重啟 node process : 這會讓 k8s 不知道其實 pod 已經死了,就不會再建新的 pod 來接手 PM2其他功能的替代方案 因為PM2的部分功能與K8S重疊,不推薦使用,那關於PM2另外的文字檔log功能,則有幾種方案可解決 container 是吐到 stdout,k8s 的 cri 會寫到 host 上 自己實作log系統…

    Continue Reading…: 在K8S內node js紀錄log的解決方案

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

    交叉熵(cross-entropy)是什麼 交叉熵是一種常用的測量兩個概率分布差異的度量。它可以用來衡量預測模型的輸出結果與真實標籤之間的差異,从而作為訓練模型的損失函數。 交叉熵的计算公式如下: H(y, y_pred) = – ∑ y log(y_pred) 其中 y 和 y_pred 分别表示真實標籤的概率分布和預測模型的輸出概率分布。 交叉熵有一些特性,使它特别适用于衡量分類問題中模型的預測結果與真實標籤之間的差異: 交叉熵越小,預測模型的輸出結果就越接近真實標籤,模型的預測能力就越強。 当預測模型的輸出結果完全符合真實標籤時,交叉熵等于零。 交叉熵是一個非負數,且在模型預測結果與真實標籤完全不同時,交叉熵最大。 交叉熵相關損失函數 有以下兩種 categorical_crossentropy sparse_categorical_crossentropy 兩者都是用於計算分類問題中模型預測結果與真實標籤之間的交叉熵的損失函數。但是它們有一些重要的區別。 1、在 “categorical_crossentropy” 中,標籤必須是一個 one-hot 編碼,即對每個類別都指定一個二元(0/1)標籤。 2、在 “sparse_categorical_crossentropy” 中,標籤可以是一個整數,表示每個類別的索引。在計算交叉熵損失時,會對這些整數標籤進行單熱編碼。 如果你的標籤已經是 one-hot 編碼,則應使用 “categorical_crossentropy”。如果你的標籤是整數,則應使用 “sparse_categorical_crossentropy”。 通常情況下,使用 “sparse_categorical_crossentropy” 可能比較方便,因為標籤可以直接表示為整數,而不需要先對它們進行…

    Continue Reading…: 交叉熵相關損失函數的比較

  • ,

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

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

    Continue Reading…: 使用數據增強加強圖像辨識準確率

  • ,

    模型的權重與偏差值

    神經元的權重與偏差 在神經網絡中,權重 (weight) 和偏差 (bias) 是模型的兩個重要參數。 權重 (weight) 指的是神經網絡中的輸入層和輸出層之間的連接強度。每個神經元都有一個權重矩陣,表示與該神經元相連的輸入張量的強度。輸入張量與輸出張量之間的權重越大,該神經元對輸出的貢獻就越大。 偏差 (bias) 指的是神經網絡中的偏移量。每個神經元都有一個偏差值,表示該神經元的輸出在不考慮輸入的情況下的預設值。偏差值可以控制神經網絡的輸出範圍,並且可以用於控制模型的準確性。 在訓練神經網絡模型時,通常會使用梯度下降法來調整權重和偏差的值,以使得模型的輸出與真實值的差異最小。 設定神經元的偏差值 在訓練神經網絡模型時,通常可以自己設定神經元的偏差值。 例如,在 TensorFlow 中可以使用以下方式創建一個帶有偏差的神經元: import tensorflow as tf # 創建一個帶有偏差的神經元 neuron = tf.keras.layers.Dense(units=1, bias_initializer=tf.constant_initializer(1.0)) 上面使用了 bias_initializer 參數指定了偏差的初始值為 1.0。 使用梯度下降法調整偏差值 在訓練神經網絡模型時,通常會使用梯度下降法來調整偏差的值,以使得模型的輸出與真實值的差異最小。通常會使用 TensorFlow 的自動微分機制來計算模型的梯度,並使用梯度下降法調整偏差的值。 簡單範例 import tensorflow as…

    Continue Reading…: 模型的權重與偏差值

  • ,

    tensorflew的自動求導機制

    什麼是自動求導機制 在 TensorFlow 中,有一種特殊的張量類型叫做梯度張量,可以用於計算模型的梯度。 TensorFlow 的梯度張量是一種特殊的張量,其中包含了模型中每個變量的梯度信息。梯度張量是 TensorFlow 的自動微分機制的基礎,可以通過 TensorFlow 的自動微分機制來計算模型的梯度。 使用方法介紹 使用 GradientTape 類的方法是: 在計算圖的上下文中創建一個 GradientTape 對象。 使用 GradientTape 對象的 watch 方法監視計算圖中的變量。 執行計算圖,並在計算圖中使用 TensorFlow 的運算符操作張量。 使用 GradientTape 對象的 gradient 方法計算模型的梯度。 使用範例 在機器學習中,我們經常需要計算函數的導數。TensorFlow 提供了強大的自動求導機制來計算導數。以下程式展示了如何使用 tf. GradientTape()方法計算函數,y(x)=x^2在x=3時的導數: import tensorflow as tf x…

    Continue Reading…: tensorflew的自動求導機制

  • ,

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

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

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

  • ,

    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 中,通常會將圖片的數據型別轉換為浮點數,因為浮點數能夠提供更大的精度和更多的值域。浮點數通常用於訓練模型和進行數值運算。 例如,在進行影像辨識任務時,您可能會將圖片的像素值轉換為浮點數,以便模型能夠更好地學習圖片中的特徵。同樣地,在進行數值運算時,浮點數也能夠提供更高的精度,以便得到更精確的結果。 注意:不同的數據型別有不同的值域和精度,因此在選擇數據型別時,需要考慮您的應用程序的需求 將灰階圖片轉成黑白 使用以下方法將灰階圖片轉換為黑白圖片(類似 OpenCV 的 threshold): 我們先設定閾值(在這裡設為 128),然後將圖片中的像素值與閾值進行比較。如果像素值大於閾值,則轉換為 1(黑色);否則轉換為 0(白色)。 載入圖片 使用 tf.io.read_file 函數讀取…

    Continue Reading…: TensorFlow的圖像操作功能筆記


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

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