【Pytorch 深度學習筆記】用 Tensors 表示現實世界的資訊
【Pytorch 深度學習筆記】用 Tensors 表示現實世界的資訊 哈囉大家好我是 LukeTseng,感謝您點進本篇筆記,該篇筆記主要配合讀本 《Deep Learning with pytorch》 進行學習,另外透過網路資料作為輔助。本系列筆記是我本人奠基深度學習基礎知識的開始,若文章有誤煩請各位指正,謝謝! 本篇為 《Deep Learning with pytorch》 這本書第四章 Real-world data representation using tensors 的相關筆記。 處理影像 一張彩色照片是如何用數字表示的? 用張量表示。假設有張 800×600 像素的照片: 每個像素有 3 個顏色通道(Channel):RGB。 整張照片可以表示為形狀為 (3, 800, 600) 的張量。 第一個維度:3 個顏色 Channel。 第二、三個維度:圖片的寬和高。 由於書中範例是使用 imageio Module,但我比較習慣用 PIL,所以以下是 PIL 的範例: 有一張向日葵的圖片我拿來當範例(文章的圖片是壓縮過的,下載原檔執行程式才會是正確結果...
網路常見軟體、協定(FTP、TELNET 等)
網路常見軟體、協定(FTP、TELNET 等) Hello Guys, I’m LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ FTP(File Transfer Protocol) FTP(File Transfer Protocol)直接翻譯就是檔案傳輸協定,專門用來在兩台電腦之間上傳和下載檔案。 假設你在學校寫好程式作業,想傳到家裡的電腦繼續改,就可以用 FTP。 FTP 使用明文傳輸,意思就是資料沒有加密。因此現代比較少單獨使用 FTP,反而搭配 SSH 使用 SFTP(Secure FTP)來加密傳輸。 而 FTP 採用主從式(Client-Server)架構,也就是客戶端對到一台伺服端。有一台主機作為 FTP 伺服器(用來儲存檔案),客戶端則用電腦(用戶端)連線並操作這台伺服器。 接下來 FTP 雙通道設計不像 HTTP 只用一個連線,FTP 同時開啟兩個 TCP 連線: 控制通道(po...
ip address、mac address 的原理
ip address、mac address 的原理 Hello Guys, I’m LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! IP 位址(Internet Protocol Address) IP 位址(Internet Protocol Address)是網路層的邏輯位址(Logical Address),用於網際網路上識別和定位設備。 這個 IP 位址基本上可以想像成是你家的地址,這樣想就好。 而邏輯位址是什麼呢?邏輯位址(Logical Address)在電腦網路和作業系統領域裡,泛指「軟體層級」所使用的、非直接對應硬體的位址。 Image Source:https://medium.com/@lagom247/網路架構-tcp-ip-四層架構-osi七層架構-e2c92c9cdc32 如圖,邏輯位址所在的地方就在網路層(Network Layer)的部分,而在 TCP/IP 架構裡面是網路互連層(Internet Layer)。 與...
什麼是梯度(Gradient)
什麼是梯度(Gradient) 大家好我是 LukeTseng!近期學習機器學習跟深度學習時,遇到一些不懂的名詞,於是我就想將這些名詞各別製作一個筆記彙整起來,以便我日後學習、複習再次閱覽。如果文章有誤煩請各位協助指出,謝謝您點入本篇文章!接下來讓我們開始吧。 Loss Function(損失函數) 損失函數顧名思義就是告訴你這個模型他跑出來的預測數值,與實際數值有多差,若損失函數出來的數值越小,表示這個模型預測數值與實際數值相近(越小越好就對了)。 這邊假設有一個損失函數長這樣子: $$L(x) = (x - a)^2$$ 當中 $x$ 是輸入值,為模型的參數值,而 $a$ 為目標值(ground truth)。 在訓練模型的時候,要怎麼知道輸入值 x 該怎麼調整?這時候就需要梯度(gradient)的概念了。 梯度(gradient) 這邊假設 a = 0,則這樣子 $L(x)$ 就等於 $L(x) = x^2$ 。 而所謂的梯度在一維情況,也就是只有一元的變數時,他就是所謂的切線斜率,也就是函數的變化方向跟速度。 在機器學習中最常見的優化方法就屬 Gradient desc...
Windows PC 電腦 / 筆電在打字時滑鼠鼠標不見?調整 1 功能解決!
Windows PC 電腦 / 筆電在打字時滑鼠鼠標不見?調整 1 功能解決! 大家好我 LukeTseng 啦!近期換了一台新筆電,發現在閱讀文章時怎麼有時候鼠標會莫名的不見,查閱相關資料後,才知道原理是這個問題! 步驟 1:開啟滑鼠內容 按下鍵盤上的 windows 鍵加上 r,開啟「執行」,輸入 control mouse 並按下 enter。 步驟 2:進入指標設定 步驟 3:關閉「打字時隱藏指標」 將以下的選項「打字時隱藏指標」給關閉即可! 簡短的教學就在此結束,感謝您的觀看~記得隨手按顆愛心或是追蹤我唷。
【C++】競程筆記(DP:Top Down & Bottom up)
【C++】競程筆記(DP:Top Down & Bottom up) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 Stack overflow Stack overflow 是一個 IT 論壇,然後在程式當中也會發生這種情形XD,有時候說 Stack overflow 也是一個雙關語。 至於 Stack overflow 是什麼呢?字面上意思就是堆疊溢位,是指程式使用過多的記憶體時導致呼叫堆疊產生的溢位。通常最常見的原因就是因為函式呼叫中使用到遞迴,導致遞迴過深。 遞迴的原理就是使用到了 stack 這個資料結構,每次呼叫會把值堆入堆疊,直到終止條件再將這些值一個一個拿出來。 94 . [Tutorial] 別離太遠 Problem Source:https://oj.ntucpc.org/problems/94 這題可以體會一下什麼叫做 stack overflow。 題目沒有給你 N = 1 跟 N = 2 的情況,但這兩個情況很簡單,稍微推算一下就可以知道方法數了。 N = 1:由於只有一個,所以方法數是 1。 N = 2:有 1 跟 2,...
【Pytorch 深度學習筆記】神經網路的基礎知識與建立神經網路
【Pytorch 深度學習筆記】神經網路的基礎知識與建立神經網路 哈囉大家好我是 LukeTseng,感謝您點進本篇筆記,該篇筆記主要配合讀本 《Deep Learning with pytorch》 進行學習,另外透過網路資料作為輔助。本系列筆記是我本人奠基深度學習基礎知識的開始,若文章有誤煩請各位指正,謝謝! 神經網路(Neural Network, NN)是什麼? 神經網路(Neural Network,簡稱 NN),也稱為類神經網路或人工神經網路(Artificial Neural Network, ANN),是一種模仿人類大腦神經系統運作的計算模型,透過類似「人腦分層結構」中的互連節點或神經元(neuron),來學習、分析並預測各類數據。它使用數學模型來模擬大腦神經元的運作,由大量神經元組成,經由外部輸入資料後,神經網路會調整內部參數來獲得學習結果。 在這邊把神經網路稱作是類神經網路會比較好一些,因為在 AI 的世界中,所建構的神經網路其實是一種非線性的統計模型,他是一個去模仿人類神經網路的東西,所以叫做類神經網路比較沒啥毛病 XD。 神經網路最大的功用是從資料中自...
【Pytorch 深度學習筆記】搞懂什麼是深度學習以及 Pytorch 的基礎
【Pytorch 深度學習筆記】搞懂什麼是深度學習以及 Pytorch 的基礎 哈囉大家好我是 LukeTseng,感謝您點進本篇筆記,該篇筆記主要配合讀本 《Deep Learning with pytorch》 進行學習,另外透過網路資料作為輔助。本系列筆記是我本人奠基深度學習基礎知識的開始,若文章有誤煩請各位指正,謝謝! 深度學習(Deep Learning, DL)是什麼? 深度學習(Deep Learning)是機器學習的一個分支,是一種以人工神經網路為架構、對資料進行表徵學習的演算法。比較通俗一點的說法是說,深度學習可以透過模仿人類大腦的神經網路,讓機器能像人腦一樣進行學習。 至於「深度」這個詞指的是在網路中使用了多層結構,這些多層結構能夠處理更複雜的特徵和模式。 機器學習 vs 深度學習 《Deep Learning with pytorch》這本書中提到深度學習的變革,以及為什麼需要深度學習。 過去機器學習使用的傳統方法高度依賴於特徵工程(feature engineering)這個技術,也就是人工輸入資料的轉換方式,以利於下游演算法產生正確結果。(以下 goog...
【C++】競程筆記(DP:動態規劃)
【C++】競程筆記(DP:動態規劃) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 什麼是動態規劃(DP, Dynamic Programmnig) 動態規劃(Dynamic Programming, DP)是一種解決複雜問題的演算法技巧,核心概念是將大問題拆解成小問題,然後把小問題的答案給存起來,避免重複計算。 DP 的核心精神就是「空間換時間」的概念,會用到記憶法(memoization)的概念去記下小問題。 舉個栗子,在刷題的時候,如果每次遇到相同的計算題,都要重算一遍會很浪費時間,不如把答案記在草稿紙上,在有需要的時候再拿起來複習一下就好了。 爬樓梯問題 爬樓梯問題是每個初學 DP 的人都會遇到的第一道問題。 Problem link : https://oj.ntucpc.org/problems/17 Description : 小明現在需要爬 $N$ 階的樓梯,他可以一次爬一階或兩階,請問他有幾種方法? 舉例來說,假設小明需要爬三階的樓梯,那他有以下三種爬法: 每次都只爬一階,也就是依序爬上第一階、第二階再到第三階。 先爬第一階後,直接一口氣...
【Python 筆記】Matplotlib Pyplot 套件應用(下)
【Python 筆記】Matplotlib Pyplot 套件應用(下) 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 繪製長條圖以及橫條圖 plt.bar():繪製長條圖。 plt.barh():繪製橫條圖。其中 h 是 horizontal 的意思。 plt.bar() 的語法如下: 12plt.bar(x, height, width=0.8, bottom=None, align='center', color=None, edgecolor=None, linewidth=None, label=None, alpha=None) x: x 軸的座標位置(可以是數字或類別) height: 長條的高度(數值大小) width: 長條的寬度,預設為 0.8(範圍 0~1) bottom: 長條的起始位置,預設為 0(y 軸起始座標) align: 對齊方式,‘center’(中心對齊)或 ‘edge’(邊緣對齊) color: 長條的顏色 ed...
【Python 筆記】Matplotlib Pyplot 套件應用(中)
【Python 筆記】Matplotlib Pyplot 套件應用(中) 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 解決中文顯示問題 要直接使用系統內建的中文字體,加入以下這一行即可: 1plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # Windows 微軟正黑體 使用標楷體可將 Microsoft JhengHei 填入 DFKai-sb。 在 colab 上執行可能會出錯,而在 Jupyter Notebook 就沒什麼問題,因為 Jupyter Notebook 是在電腦本機上執行的,可以隨時抓到字體庫。 透過以下範例可試試看顯示結果是否正確: 123456789101112import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft JhengHei...
【Python 筆記】Matplotlib Pyplot 套件應用(上)
【Python 筆記】Matplotlib Pyplot 套件應用(上) 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 Matplotlib 是啥? Matplotlib 是 Python 中最熱門的 2D 繪圖函式庫,是由 John D. Hunter 這個人開發的。然後這個人他原本其實是一個美國的生物神經學家,後來為了可視化癲癇患者的腦電圖數據,因而製作了這個 Matplotlib 出來。 Matplotlib 這個名稱其實是 MATLAB + Plot + Library 的簡稱,因為它使用類似 MATLAB 的語法和樣式來繪圖。 這個套件可以繪製各種圖表,有折線圖、直方圖、圓餅圖、散點圖、長條圖等等,還能跟其他 Python 資料處理函式庫如 NumPy、Pandas 有很高的兼容性,可以互相搭配使用。 總之這就是一個數據分析可視化的繪圖函式庫,正因為他熱門,正是因為它非常強大,所以才要學這東西。 安裝 Matplotlib 使用以下指令安裝,如果已在 colab 或是 Anacond...
【Python 筆記】JSON 格式讀寫
【Python 筆記】JSON 格式讀寫 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 JSON 是啥? JSON 全名是 JavaScript Object Notation,這是一種輕量級的資料交換格式,以純文字方式儲存和傳輸資料。雖然名字有 javascript,但他完全獨立於這個程式語言,幾乎所有現代程式語言都支援 JSON 格式。 JSON 的語法很簡單,與 Python 中的字典相似,同樣是採用鍵值對(key-value)的方式組織資料。 JSON 由兩個主要結構組成: 物件(Object)使用大括號 {} 包起來,含鍵值對。 陣列(Array)使用中括號 [] 包裹,含有序的值列表。 JSON 的資料型態 JSON 支援六種資料型態,分為簡單型態和複雜型態: 簡單型態: 字串(string):必須用雙引號包裹,如 "name": "LukeTseng"。 數字(Number):可為整數或浮點數,如 "a...
【Python 筆記】csv 套件使用
【Python 筆記】csv 套件使用 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 什麼是 csv csv 的全名是 comma-separated values,逗號分隔數值。 csv 是一種純文字檔案格式,用逗號來分隔不同的資料欄位,每一行代表一筆記錄,常用於儲存和交換表格資料。 .csv 檔案如同用記事本就能打開的 Excel 表格,因為格式簡單、通用性高,幾乎所有試算表軟體和資料庫都能讀取。 而一般常見的 .csv 格式大概長像下面這樣: 123name,age,departmentJohn Smith,30,AccountingJane Doe,25,IT 第一行是標題列(欄位名稱),後面的每一行代表一筆資料記錄。 Python csv 套件 csv 是 python 早就內建在裡面的一個套件,所以不用特地安裝,只需要在程式碼中打下這一行指令去引入 csv 即可: 12import csv# 或是 from csv import * 在做 csv 檔案操作的時候,需要應用到檔案處理...
【Python 筆記】檔案處理(File handling)
【Python 筆記】檔案處理(File handling) 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 簡介 檔案處理是程式人必備的技能,主要是因為它能讓資料持久化,讓資訊存留在硬碟上,而非程式執行期間的記憶體中。也可以方便讀取或寫入資料檔,如設定檔、日誌(log)、或用戶資料。最重要的是自動化流程,例如可結合 .csv 套件將讀入的檔案寫入 .csv 中產生報表等等。 基本概念如下: 開檔(open):使用 open() 函數打開檔案。 讀寫(read / write):對檔案內容進行操作。 關檔(close):確保所有操作完成並釋放系統資源。 open() 方法 使用 open() 之後,若沒有後續動作要執行,務必一定要搭配 close() 方法關閉檔案,不然你讓檔案一直在那邊開著浪費記憶體。 open() 基本語法: 1open(file, mode='r') open 基本上是接收兩個參數,file 是檔名,而 mode 則是模式,可選擇讀(r)還是寫(w)...







