跳到主要內容

發表文章

C# DI 輕鬆學

C# DI 輕鬆學 C# DI 輕鬆學 DI 概念 IoC (Inversion of Control) - 控制反轉 定義:IoC 是一種設計原則,將對象的控制權從內部轉移到外部。具體而言,應用程式不再負責控制物件的建立與管理,而是將這些工作交給外部的容器或框架。 作用:通過將控制權反轉,可以讓應用程式更具彈性、更容易測試,並提高可維護性。 舉例: 傳統設計:類別 A 自行建立類別 B 的實例(new 關鍵字)。 IoC 設計:類別 A 的類別 B 由外部容器或框架提供,類別 A 不直接控制物件的建立。 DIP (Dependency Inversion Principle) - 相依反轉原則 定義:DIP 是 SOLID 原則中的一部分,主要指: 高層模組不應該依賴低層模組;兩者應依賴於抽象(介面或抽象類別),處處都介面。 抽象不應該依賴細節;細節應該依賴抽象。 目的:降低模組間的耦合性,使程式更靈活、更易於擴展。 舉例: 壞設計:類別 A 直接依賴類別 B。 好設計:類別 A 依賴於一個介面,由類別 B 實現該介面。 說明: 當使用 MSSQL 建立的 Repository 來存取資料表時,Service 類別會依賴該 Repository 類別進行資料操作。 也就是說,Service 與低層的 Repository 類別存在相依性。然而,假設有一天需要將 Repository 的實現改為使用 NoSQL 來存取資料,此時勢必需要重新改寫 Repository 的實作,而這種改變也會影響到 Service 類別的內部結構, 導致高層模組(Service)與低層模組(Repository)的耦合性過高。 為了解決這個問題,我們可以採用 DIP(依賴反轉原則) 的設計模式。在此模式下,我們會建立一個 IRepository 介面 ,定義高層模組與低層模組之間的契約。Service 類別只依賴於該介面,而不關心具體的...
最近的文章

Poetry 問題指南

  1. Poetry下任何指令都會出現No Python 問題 PS D:\雜項\python範例> poetry config --list No Python at '"C:\Users\Bryant.lin\AppData\Local\Programs\Python\Python311\python.exe'\ Ans: C:\Users\Bryant.lin\AppData\Roaming\pypoetry\venv\pyvenv.cfg 將內容python的目錄修改,就可以重新執行 home = C:\Users\Bryant.lin\AppData\Local\Programs\Python\Python313 include-system-site-packages = false version = 3.11.3 executable = C:\Users\Bryant.lin\AppData\Local\Programs\Python\Python313\python.exe command = C:\Users\Bryant.lin\AppData\Local\Programs\Python\Python313\python.exe -m venv --clear C:\Users\Bryant.lin\AppData\Roaming\pypoetry\venv

淺談機器學習原理-Nonlinear Transform

Nonlinear Transform 淺談機器學習原理-Nonlinear Transform Nonlinear Transform *通用能力 gerneralization : 就是將訓練好的模型,放到正式環境可以正常的運作,通常Linear Model的gerneralization會比較好,因為線性模型解決的問題比較單純。缺點是應用侷限比較大。 參考Chih-Chung Chang老師的範例:縣性與非線性分類範例 https://www.csie.ntu.edu.tw/~cjlin/libsvm/ 非線性問題 當如果今天假設要圈出裡面小圈圈的資料,我們就無法使用線性的模型,我們可以用非線性解像圈圈的方程式 s i g n ( − x 1 2 − x 2 2 + r ) sign(-x1^2-x2^2+r) s i g n ( − x 1 2 − x 2 2 + r ) 來解決,在演算法我們利用reduce來將不會的問題透過已知的問題來解決,所以在這個問題 我們將圈圈的方程式(非線性模型)reduce成線性模型來解決。 Reduce 方法論 我們調整圓形的方程式改為 z 0 z_0 z 0 ​ , z 1 z_1 z 1 ​ , z 2 z_2 z 2 ​ 來轉換線性方程式, { ( x n , y n ) } \{{(x_n,y_n)}\} { ( x n ​ , y n ​ ) } => { ( z n , y n ) } \{{(z_n,y_n)}\} { ( z n ​ , y n ​ ) } 在這空間資料中只要能找線,就可將不同的分類區分,圖中可以線性可以線去做分類。 透過向量方式來轉換成線性方程式 我們找到一個方式將非線性資料X透過向量轉換為Z後,希望透過線性方程式方式來學習,得到正解。 當我們Nonlinear transform轉換成線性方程式,當有新的資料進來我們無法使用invertiable(逆向工程)的方式去轉回非線...

淺談機器學習原理-Linear Model

Linear Regession 淺談機器學習原理-Linear Model Linear Regession 需要預測數值,輸出為實數的數值,我們就稱為它是regession的任務。 範例:Netflix百萬獎金比賽,有100萬筆的rating資料與480K的使用者給17.7k的電影來評分,預測使用者評分電影的星星*數量。 (1) 定義問題是否需要使用ML : 預測使用者評分電影的星星*數量,算是一個複雜的問題。且知道評分結果為1~5星,可以知道這是一個regression的任務 (2) 收集資料 : Netflix有100萬筆的rating資料與 (3) 定義模型 :假設它是regession問題,我們可以知道hypothesis: h(x) = w T ∗ x w^T *x w T ∗ x 的方程式。我們可以與分類Perceptron的公式來比較。 Linear Regession :用來找到最接近實際目標值,也就是最小誤差error的值 (4) 測量誤差 : squared error : ( 預測值 − 真實的值 ) 2 (預測值-真實的值)^2 ( 預測值 − 真實的值 ) 2 ,我們算出誤差值後,如何得到最小的誤差min(Error(x)) 理想化的誤差值 我們可以假設誤差接近於0值為球體的位置,是在曲線的最下方也就是偏微分等於0的位置,我們要找的讓W偏微分等於零。 Statistics vs Machine Learning Statistics: 統計比較著重在數學的推論 Machine Learning: 機器學習比較著重在資料計算,統計工具對機器學習領域是很有幫助 Logistic Regression 邏輯回歸 需要預測機率,輸出為小數點,我們就稱為它Logistic Regression任務。資料輸出為+1,-1的值,可以預測為機率發生,可以由公式可以知道x在發生+1的機率是多少。範例: 疾病預測、鐵達尼的死完的機率 機...

淺談機器學習原理-概念

機器學習 淺談機器學習原理筆記-- 機器學習 Learing : 人類學習是透過各種觀察(observatoins)去學到能力 , 輸入:觀察、輸出:能力 Machine Learning : 機器是透過各種資料的方式來學習到能力 ,輸入:資料、輸出:功能 範例: 使用股票資料來預測投資的方向。 總結: 我們希望機器可以像人一樣,透過學習就可以獲得技能,機器學習就像在解決一個任務(Y)透過資料(X)和找到一個方程式(F)來求出接近任務的解。Y = F(X) ,常用的範例:語音辨識、天氣預測、股票預測、圖片辨識、機器玩遊戲。簡單說機器學習利用資料與合適的模型來解決一個複雜的問題,通常這個問題無法使用簡單程式來解決。 Artifical Intelligence(AI) Machine Learning(ML) 說明 希望模擬人的智慧行為 透過資料學習來改善整體效能 範例 資料、演算法 資料、演算法 集合關係 AI AI的子集合 機器學習先決條件 : 解析問題的複雜度,是否真的需要建立模型來解決 必須有資料並需要處理 從資料中建立模型(Hypothesis) 選擇測量誤差的方法,模型得到的解與現實結果的誤差 建立模型到正式環境(沒有學習過的資料),也可以達到正確解 範例: KDD 2010 出題系統可以根據過去的練習,去調整出題的難度=> binary classifiation 機器學習過程 問題公式 上圖表視輸入、輸出、資料和Hypothesis(模型)、f 現實世界答案 Step 0 : 定義問題是否需要使用ML (1) 先理解這個問題是否需要透過ML來處理,如果可以使用if-else或是簡單邏輯判斷來解決,表示問題簡單,不需要使用ML來解決。ML通常解決比較複雜的問題,像股票預測是否可以使用ML來預測未來趨勢。 (2) 是否有資料跟結果有關聯...

Vector Search and Embeddings 向量搜尋與生成嵌入

參加Google Cloud AI Study Jam 2024 - 生成式 AI 培訓計劃 參加Google Cloud AI Study Jam 2024 - 生成式 AI 培訓計劃 網站: https://rsvp.withgoogle.com/events/csj-tw-2024 指定學習教材 Path 3: Advanced: Generative AI for Developers Learning Path (12 堂課程) Vector Search and Embeddings Search 搜尋 每天都會有搜尋的需求,例如要找某個產品的資料、想要旅遊行程。在企業上想要用影像搜尋、自然語言搜尋、推薦工具來管理內部資訊等等。在企業內部搜尋相關文件、找出必要的主題內容專家(SME)或跨團隊探索使用範例。向量搜尋是著重於語意相似度(Semantic similarity)的技術,可以用於上面情境。 Vector Search and Embeddings (1) 向量搜尋如何工作 Encode:將輸入資料(文字、圖片、聲音、影像、編碼等等)使用embeding模型來將資料轉成向量格式, Index:然後建立索引,以向量的方式可以更快速與更廣的方式搜尋 Search:在向量空間上搜尋類似的資訊 (2)向量搜尋運作的方式 Build: 會將Meta資料透過embeding模型產生向量並建立索引後,儲存在向量資料庫(Vector Space)中 Query: 先把搜尋的句子透過embeding模型產生向量來跟向量資料庫(Vector Space)進行搜尋 (3)向量資料庫的挑戰 問題 技術 編碼 如何建立多模態的資料(文字、圖片、聲音、影像、編碼)來語意表示 Embeddings 建立索引與搜尋 ...

Vue 3.0 -5 slot

摘要 Vue 3.0 -5 slot 摘要 slot用來將組件定義插槽使用,可將組件的插槽內容 ,由上層元件(呼叫層)所決定顯示的內容,分為三種 (1) 默認插槽: 默認組件插入的位置 (2) 具名插槽:插入具名的插槽 (3) 作用域插槽:由父組件來決定顯示的樣式 例如:提供圖片使用可以命名為useImage; 默認插槽 我們利用slot將商品內容,可以根據我們需要擺放資料格式來擺放 這是商品的圖卡,支援文字、圖片、影像,將 slot顯示內容 檔案路徑: slot\Category.vue <template> < div class = "category" > < h2 > {{ title}} </ h2 > < slot > </ slot > </ div > </template> < script setup lang = "ts" name = "category" > defineProps ([ "title" ]) </ script > < style scoped > .category { background-color : aqua; border-radius : 10px ; box-shadow : 0 0 10px ; padding : 10px ; margin : 0px 10px 0px 10px ; width : 200px ; height : 300px ; } h2 { background-color :...