iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 18

從0開始學習Python---程式除錯與異常處理

  • 分享至 

  • xImage
  •  

程式除錯與異常處理

程式異常-除數為 0 的錯誤

當我們試圖用數字除以 0 時程式會報錯,這是因為數學上除以 0 是沒有意義的。這在處理大量數據時很常見,尤其是在機器學習模型訓練時,數據處理會出現不預期的「零」值。

https://ithelp.ithome.com.tw/upload/images/20240918/20168994o5qan4ESBc.pnghttps://ithelp.ithome.com.tw/upload/images/20240918/20168994L570ECiVbi.png

這個例題中使用 tryexcept 來捕捉錯誤。

  • try 區塊中進行除法運算。
  • except 區塊中處理錯誤,能避免程式崩潰。這也對 AI 訓練過程中特別重要,能保證程式遇到問題時仍能繼續執行。
  • except ZeroDivisionError:這裡的意思是「當發生 ZeroDivisionError(除以 0 的錯誤)時,執行下面的程式碼」。
  • print("不能用 0 來做除數哦~"):當程式偵測到 ZeroDivisionError 時,這行會執行並輸出錯誤訊息,提醒使用者不能用 0 來做除法。

撰寫異常處理程序 try - except - else

在 AI 模型開發中,數據的處理可能會遇到多種異常狀況,比如文件格式不正確或資料缺失。學會如何處理這些異常,可以讓程式不會因為小錯誤就中斷。
try - except - else 是進一步的異常處理技巧,同樣的,當 try 區塊中的程式碼沒有報錯時,else 區塊的程式碼才會執行,非常適合用來處理當運算成功後要執行的後續步驟。

https://ithelp.ithome.com.tw/upload/images/20240918/20168994lYWdXWKPcU.pnghttps://ithelp.ithome.com.tw/upload/images/20240918/20168994Y78cNTTf7Z.png

這個例題使用了兩個 except 來分別捕捉不同的錯誤,而多層次的異常處理在 AI 程式中很常見,因為 AI 會涉及多重數據檢查與輸入。

  • ValueError :用來處理輸入不是數字的情況。
  • ZeroDivisionError :處理除以 0 的問題。
  • else:當輸入數字無誤且不會除以 0 時,else 區塊中的運算結果會顯示出來。這在 AI 程式設計中有助於控制流程,在數據正確時進行後續的模型訓練或分析。

多組異常處理程序

在 AI 程式中可能會遇到各種不同的錯誤,這時設計多組異常處理程序可以有條理的管理不同類型的錯誤,讓程式更整潔、維護起來就會更容易。

https://ithelp.ithome.com.tw/upload/images/20240918/20168994wMeY3eAuBZ.pnghttps://ithelp.ithome.com.tw/upload/images/20240918/20168994Szh6bgu1PD.png

這裡的 except 可以一次捕捉多個異常類型,並將錯誤信息存儲在變數 v 中,同樣也是為了確保在遇到異常情況時程式不會突然中斷。


程式日誌模組 logging

日誌記錄在 AI 中十分重要,因為 AI 模型訓練過程可能需要多次嘗試,記錄每次訓練的過程有助於找出問題所在。

https://ithelp.ithome.com.tw/upload/images/20240918/20168994hBV5PakcAq.pnghttps://ithelp.ithome.com.tw/upload/images/20240918/20168994rGLJdIzL6G.png

使用 logging 模組來記錄資訊和錯誤, 可以清楚知道程式在哪個環節發生了問題,這在訓練 AI 模型時,能幫助我們找到哪一步出了錯、並且記錄每次執行的詳細情況。


總結

今天學習的異常處理和除錯技巧,對於未來的 AI 開發至關重要~因為 AI 涉及大量的數據處理和計算,程式出錯的機率也會因此增加。因為學習除錯技巧能夠處理多種不同的錯誤,我也發覺到如此可以撰寫出更具彈性的程式。

明天會進行更詳細的實作,並且不再是簡單的數學計算><要做的是模擬一個簡單的AI聊天系統,使用者會輸入一些資料,而 AI 根據不同的情況回應。結合今天學到的程式除錯與異常處理,會和在現實生活中的 AI 助手、客服機器人等應用更貼近、更有共鳴!


上一篇
從0開始學習Python---AI 中的模組
下一篇
從0開始學習Python---簡易 AI 聊天系統
系列文
從0開始學習Python-為未來學習AI奠定基礎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言