什麼是梯度(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 descent(梯度下...
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 overflowStack 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)這個技術,也就是人工輸入資料的轉換方式,以利於下游演算法產生正確結果。(以下 google ...
【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: 長條的顏色 edge...
【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 或是 Anaconda 環...
【Python 筆記】csv 套件使用
【Python 筆記】csv 套件使用感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 什麼是 csvcsv 的全名是 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 筆記】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):可為整數或浮點數,如 "age&q...
【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)。 而...
【C++ 筆記】bitset 容器,C++ 二進位運算的絕佳利器
【C++ 筆記】bitset 容器,C++ 二進位運算的絕佳利器很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 什麼是 bitset?std::bitset<N> 是 C++ STL(位於標頭檔 <bitset>)中,一個用來表示固定長度為 $N$ 位元(bits)的位元序列(bit sequence)的類別模版。 假設 $N = 16$ ,那就表示有 16 位元,數字 1 就會表示成 “0000000000000001”。 bitset 也是 C++ 當中的一種容器,這個容器能夠做到單獨、有效的去操作每一個位元,也能解決位元運算、實現二進位表示法的工具,這也是為什麼需要用到它的原因。 使用 bitsetbitset 在使用之前需要引入標頭檔 <bitset>,另外以下是其基本語法: 1bitset<n> name; 其中 n 是固定的位元數,而 ...
Linux chmod、chgrp、chown 權限管理筆記
Linux chmod、chgrp、chown 權限管理筆記感謝您點進本篇文章,我是 LukeTseng,近期接觸到 Linux 系統,時常需要面對黑色終端機,有些時候想做到一些操作,卻也不知道那個指令叫什麼,我也沒有好好奠基 Linux 的基礎指令,所以特此製作本篇文章!希望能解決到你我的痛點! 若本篇文章某處有誤,敬請告知,感謝! Linux 檔案、目錄權限Linux 的檔案權限分為三個層級: 擁有者(Owner/User, u):檔案的所有者。 群組(Group, g):與檔案擁有者同群組的使用者。 其他人(Others, o):系統上其他所有使用者。 每個層級可以設定三種權限: r(read, 讀取):數字值為 4,可以查看檔案內容或列出目錄內容。 w(write, 寫入):數字值為 2,可以修改檔案或在目錄中新增 / 刪除檔案。 x(execute, 執行):數字值為 1,可以執行檔案或進入目錄。 當在輸入 ls -l 時,會列出像以下這些東西: 其中 drwxr-xr-x 就是檔案或目錄的權限,可以分成三個部分來看: 12d rwx r-x r-x1 234...
那些你不能不會的 Linux 基礎指令!(下)
那些你不能不會的 Linux 基礎指令!(下)感謝您點進本篇文章,我是 LukeTseng,近期接觸到 Linux 系統,時常需要面對黑色終端機,有些時候想做到一些操作,卻也不知道那個指令叫什麼,我也沒有好好奠基 Linux 的基礎指令,所以特此製作本篇文章!希望能解決到你我的痛點! 若本篇文章某處有誤,敬請告知,感謝! 萬用字元(Wildcard)最常見的就是 * 跟 ? 這兩個字元。 * 代表「任意長度的任意字元」,可以是 0 個、1 個或多個字元。 範例如下: ls *:列出目前目錄下所有非隱藏檔案。 以下是 ls * 跟 ls 的差別: ls *.txt:列出所有副檔名為 .txt 的檔案(如 a.txt、b.txt)。 ls a*:列出所有以 a 開頭的檔案(如 apple、a.txt)。 ls *a*:列出所有檔名裡面有包含 a 這個字元的檔案。 下圖中使用 ls *a* 就找到 abcdefg、alphafile … 以及 snap 目錄底下的 firmware-updater 跟 snapd-desktop-integration 檔案。 ...







