跳到主要內容

發表文章

ASP.NET Core Middleware

Middleware Middleware 微軟在net core開始使用OWIN[1],使用Host/Server/Middleware/Application 分層架構,讓服務可以不侷限在IIS上面,將前端Request / Response 是由 Middleware 方式處理。 介紹 中介軟體 是介於作業系統及其中執行應用 程式 之間的 軟體 ,讓通訊及資料管理得以進行。中介軟體為組成應用程式管線的軟體,用以處理要求與回應。 每個元件:[2] 可選擇是否要將要求傳送到管線中的下一個元件。 可以下一個元件的前後執行工作。 Middleware由多個管線所組成,會一個個串接相連,先由Request由上往下執行,Response會再回傳回來. 官方圖式說明 方法 Middleware使用IApplicationBuilder擴充方法,串接Request/Respone Run Run最後一個呼叫,不會有next(),後面還有pipe也不會執行,以下範例只會出現Hellow World不會有執行第二段的Run public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (HttpContext context) => { await context.Response.WriteAsync("Hellow World"); }); //不會執行 app.Run(async (HttpContext context) => { await context.Response.WriteAsync("Hellow World2"); }); } Use Use用來自訂Middleware的方法並多個要求委派鏈結在一起,只要透過next()就可以直接呼叫下一個middleware.他的呼叫方式有點像遞迴的方式呼叫.如果執行中出現next()調至下...

ASP.NET Core 專案目錄

ASP.NET Core 專案目錄   目錄 作用 wwwroot; 靜態資料夾 Properties/launchSettings.json 透過dotnet run 啟動 Program.cs 程式進入點啟動 appsettins.json; 環環境參數 MVC View 檢視 Model 模型 controller 控制器 WebApp Razor 前端html產生工具 Web Api controllers 控制器 Blazor Pages 頁面 Pages/_Host.cshtml 首頁 Pages/*.razor razor頁面 Shared 共用元件資料夾 Data 資料儲存類別所在資料夾 gPRC Protos Protocol Buffer File Pages/_Host.cshtml 首頁 Service 服務類別

PythonAI-卷積神經網路CNN

卷積神經網路 (1) 介紹: 神經網路三大天王NN、CNN和RNN,本文章介紹卷積神經網路(Convolutional Neural Network,CNN),發明CNN目前為Facebook AI首席科學家被稱為CNN之父,CNN的發明把所有的圖型辨識的演算法幹掉,目前沒有可以比他更準確。當我們利用CNN來訓練辨識貓,CNN會自己找到它有關於貓的特徵,自己去識別. (2)CNN運作方式 2.1 CNN運作架構 將貓咪像素圖作為輸入神經元,經過Convolution Layer和Pooling Layer擷取圖形特徵值與處理圖形 會先將貓咪圖片轉成一小格一小格的Filter,這些Filter是用來擷取貓身上的特徵值, 2.2 Convolution Layer卷積層 我們會將圖片輸入像素(Pixel)當作輸入的神經元,每個神經元會乘上相同的權重向量(Weight Array),向量的乘法是做內積,所以由圖片可以看到,將3X3的像素乘以3X3權重值:2*1+1*0+2*1+1*0+4*1+1*0+3*1+1*0+3*1=14. 由左到右,上到下以3X3的區塊遞移計算,最後可以得到一個完整的特徵圖(Feature Map) 我們通常會使用多組Filters(6X6或8X8)去計算出Feature Map,這樣結果會得到原貓咪圖的資料量大很多,如何把這些圖簡化,後來使用一個方法稱為Pooling layer 2.3 Pooling Layer池化層 Pooling Layer層主要的目的是將Filter所得到的Feature Map做簡化,最常用的方法稱為Max-Pooling Layer,將Feature Map以2X2的區塊投票選出最大的值,表示為該區域的特徵值 參考 第5.1講: 卷積神經網絡介紹(Convolutional Neural Network)

Python AI-手寫辨識

Python AI-手寫辨識 類神經網路-手寫辨識 手寫辨識 (1) 問題定義 將輸入手寫數字圖片,經由類神經網路訓練後,可以辨識手寫圖片得到一個正確的答案,例如讓電腦辨識上面圖片手寫數字0-9,都可以認得.在了解問題後,需要先知道輸入的資料格式,例如圖片為NxN的矩陣向量. 輸入:輸入的資料格式有很多種,例如數字圖片為矩陣向量 模型:NN 輸出:輸出的方式,神經網路輸出不一定跟輸入同值,手寫數字輸入為1,輸出有可能是1.1或是1.5等等,所以輸出必須經過轉換成真實世界的數字. (2)定義函式 輸出會有兩個問題: A.輸出利用one-hot encoding來表示,就是N個狀態會對應N的結果,例如:輸出結果為1,表示[0,1,0,0,0,0,0,0,0,0] B.輸出結果不能超過1,我們通常會利用 Softmax函数 來進行輸出的處理. (3) 準備訓練/測試資料 在這邊需要從輸入去定義那些要當作訓練與測試資料,我們手寫資料使用MNIST 資料庫來訓練使用,MNIST共有70,000筆手寫資料,60,000筆為訓練資料,10,000為測試資料. (4)建構類神經網路模型 開始建構我們的神經網路模型,首先決定好28x28的像素(這邊不用擔心如何將圖片轉成矩陣),模型使用SGD的方式進行學習,輸出是一個10為的陣列來表示. 輸入:手寫數字圖片(28x28=784) 模型:SGD 輸出:數字(one hard encoding) (5)學習 首先介紹SGD(Stochastic Gradient Descent) 的學習方式,因為蕾神經網路需要訓練很多次才會提高準確度,SGD最大的好處就是當每次重新學習的會將訓練資料打散,來防止機器學習將答案死背下來. (6)實作開發 下面程式碼有完整的說明,這邊就不多說明了,當開始執行程式時就會進行資料訓練. 由訓練結果最後acc=0.9447,表示準確率可以到達94%,我們再由實際測試可以看出該圖為7的圖示,由神經網路判斷為7,跟我們人類判斷相同,我們可以知道由訓練的結果可看得到不錯的準確度. 執行神經網路遇到不少問題,請參考下面連結,是筆者所整理的問題集,請多多指教 https://programdoubledragon.bl...

Python AI-問題集

Python AI-問題集 問題集 Jupyter Notebook執行ipywidgets會出現kernel死掉的錯誤發生(The kernel appears to have died) 解決方法 (1) 根據log檔來判斷問題: 例如:log訊息出現OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. (2) 根據問題關鍵字找出問題所在: 利用google查詢所遭遇到的問題,例如我把上面的問題上google查詢可以找到這篇的解法 https://blog.csdn.net/bingjianIT/article/details/86182096 (3)實作解法: 我實作下面解法後,就可以順利執行手寫辨識的程式. //在Python宣告時加入 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" 參考 https://blog.csdn.net/bingjianIT/article/details/86182096

Python AI-安裝Anacoda Python

Python AI-安裝Anacoda Python 安裝Anaconda Python 環境安裝 (1) 下載Anaconda套件 官網: https://www.anaconda.com/ 套件下載: 下載網址 *MAC版本安裝 請下載3.7版的來進行安裝 安裝畫面: (2) 安裝深度學習套件 本次需要的範例 tensorflow numpy keras pandas 需要打開mac的終端機(terminal),需要將上面的套件安裝,首先測試conda指令是否可以執行 ##> conda 輸入安裝的指令,會請您輸入管理員的密碼,通過後可以進行安裝 ##>sudo conda install tensorflow ##>password ##>sudo conda install keras *測試 步驟一、首先在Document建立一個資料夾名為AI_Study,執行jupyter來進行測試 ##>cd ~/Document ##>mkdir AI_Study ##>cd AI_Study ##>jupyter notebook 步驟二、 出現jupyter的IDE後,我們新增一個腳本,並選擇Python 3來開發 測試方式為import karas套件後,執行Run看是否有發生錯誤,吾表示安裝成功 參考 http://moocs.nccu.edu.tw/media/23054

Python AI-簡介

Python AI-簡介 人工智慧技術簡介 人工智慧主要的核心概念為深度學習,然而要懂深度學習必須要會神經網路,神經網路由這三種核心技術所組成,後面的文章會陸續介紹類神經網路是如何學習? NN CNN RNN 人工智慧如何解決問題 人工智慧利用深度學習來學習而得到答案,利用數學的角度來解釋就是如果所有的問題都可以轉換成函式來表示,那深度學習就是找到那個函式來解決問題 AI可以解決的問題 目前深度學習可以大多應用這些問題. 預測,例如:下禮拜天氣預測、球員明年的打擊率 對話 圖片分類 自動駕駛 ####參考 backpropagation