Posts
SonarCloud - Project badges
要使用 SonarCloud 的 Project badges,可以到 SonarCloud 的 Project 頁面,點選右下角的 Get project badges 按鈕。
選取要使用的 Project badges 與 Metric。
按下 Copy 按鈕複製 Project badges 的位置。
在要放置 Project badges 的位置上將之視為圖檔放置。
放置完後續我們就可以透過該 Project badges 知道目前專案的狀況。
read morePosts
SonarCloud - Use SonarQube as a Service
SonarQube 除了自行架設外,也提供了線上的版本可供使用,開源專案可以免費使用。
透過點擊 SonarQube 網站上的 USE ONLINE 按鈕可直接連結過去。
選擇要使用的登入帳號。
登入後會看到 SonarQube 的介面,點選 Analyze new project 開啟一個新的專案。
選取專案所屬的組織。
產生後續認證要用的 Token 或是直接使用已經存在的 Token。
選取專案的主要開發語言。
選取所使用的作業系統。
設定專案的 Project key。
右側會帶出 Sonar scanner 的下載位置以及所屬作業系統下的指令下法,這邊可以按下 Copy 按鈕先將指令複製下來。
點選 Finish this tutorial 結束設定。
設定完會看到對應的專案已被建立在 SonarQube 上。
在專案程式目錄下實際調用剛剛所複製的命令,SonarQuber Scanner 即會開始分析專案程式,並將分析的結果送至 SonarQube。
分析完就可以在 SonarQube 的專案頁面看到分析的結果。
Link Continuous Inspection | SonarQube
read morePosts
Rest - Safe/Idempotent method
Rest API 的方法依其性質可以被劃分為 Safe method 或是 Idempotent method。
Safe method 也就是安全的方法,表示該方法不會對資源進行任何的修改,且其結果可以被快取。GET 與 HEAD 屬於這類方法。
Idempotent method 也就是冪等方法,表示該方法重複調用的結果都是相同的, GET、PUT、DELETE、HEAD、OPTIONS 屬於這類方法。
POST、PATCH 則兩類方法都不是。
了解 HTTP Method 屬於 Safe method 還是 Idempotent method,可讓我們清楚識別 API 應該使用哪種 HTTP method,也可以了解 HTTP method 在實作上所應該做的處理。
最後附上對應總表:
Method Safe Indempotent GET Y Y POST N N PUT N Y DELETE N Y PATCH N N HEAD Y Y OPTIONS Y Y Link 程式設計 - 簡明RESTful API設計要點 - Twincl 哪些是冪等或/且安全的方法? - RESTful 手冊 RFC 7231 - Hypertext Transfer Protocol (HTTP/1.
read morePosts
Softmax
Softmax 能將一個含任意實數的 K 維向量壓縮到另一個 K 維實向量中,使得每一個元素的範圍都在 (0, 1) 之間,並且所有元素的和為 1。
其公式為:
簡單說就是將每個數值做指數的乘冪,然後用指數乘冪的加總值去除以個別指數的乘冪值即可。
這邊實際來看個例子,假設我們有一個向量值。
[1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0] 首先取其對應的指數乘冪值。
[2.71828 ^ 1, 2.71828 ^ 2, 2.71828 ^ 3 , 2.71828 ^ 4, 2.71828 ^ 1, 2.71828 ^ 2, 2.71828 ^ 3] = [2.71828, 7.3890461584, 20.0854963915, 54.598003131, 2.71828, 7.3890461584, 20.0854963915] 將指數乘冪值加總。
2.71828 + 7.3890461584 + 20.0854963915 + 54.598003131 + 2.71828 + 7.3890461584 + 20.0854963915 = 114.983648231 將指數乘冪值除上指數乘冪值的加總,即可求得對應的 Softmax 向量。
read morePosts
One-Hot Encoding
One-Hot Encoding 是一編碼方式,使用 N 位狀態寄存器來對 N 個狀態進行編碼,常被用於機器學習中的資料前處理,特別是無序的類別資料。
像是性別資料 Male 與 Female,雖然可以用數值編碼將之編成 0 與 1 之類的數值。
Male => 0 Female => 1 但是這樣當我們以座標空間來表示這些資料時,這些無序資料距離原點的距離就會有所差異,不利於機器學習。
如果改用 One-Hot Encoding,將每個類別資料都給予一個維度來存放狀態值 (第一個 Bit 用以存放 Male 的狀態,第二個 Bit 用以存放 Female 的狀態),那這些無序資料距離原點的距離就都會一樣,無大小之分。
Male => 01 Female => 10 Link 特徵提取方法: one-hot 和 IF-IDF - 掃文資訊 One-hot - Wikipedia Why One-Hot Encode Data in Machine Learning? [資料分析&機器學習] 第2.4講:資料前處理(Msssing data, One-hot encoding, Feature Scaling)
read morePosts
TensorFlow - placeholder
TensonrFlow 的 placeholder 方法可用來指定後續運行才會帶入的值,其函式原型如下:
tf.placeholder( dtype, shape=None, name=None ) 其中 dtype 是值的型態,shape 是常數的維度。
可以直接調用 placeholder 方法並帶入指定的型態。
... a = tf.placeholder(tf.float32) ... 也可以帶入 shape 限定維度。
... b = tf.placeholder(tf.float32, shape=(2, 3)) ... 然後使用 placeholder 構成運算。
... a2 = a * a ... bPlus = b + 1 ... 最後用 feed_dict 帶入 placeholder 的值去運行即可。
... print(sess.run(a2, feed_dict={a: 2})) print(sess.run(a2, feed_dict={a: [[1, 2, 3], [4, 5, 6]]})) print(sess.run(bPlus, feed_dict={b: [[1, 2, 3], [4, 5, 6]]})) .
read morePosts
TensorFlow - Variable
TensorFlow 可以直接調用 Variable 方法並將變數值帶入以建立對應的變數。
... a = tf.Variable(2) ... 變數值也可以是一為陣列。
... b = tf.Variable([1, 2, 3, 4, 5, 6, 7]) ... 或是多維陣列。
... c = tf.Variable([[1, 2, 3], [4, 5, 6]]) ... 最重要的是要記得變數在使用時需要做初始才可使用。
... tf.initialize_all_variables().run(session = sess) ... 最後附上完整的範例程式:
import tensorflow as tf a = tf.Variable(2) b = tf.Variable([1, 2, 3, 4, 5, 6, 7]) c = tf.Variable([[1, 2, 3], [4, 5, 6]]) sess = tf.Session() tf.initialize_all_variables().run(session = sess) sess.run(a) sess.
read morePosts
Jupyter - Install Jupyter with pip
要使用 pip 安裝 Jupyter,可調用下列命令。
python -m pip install --upgrade pip python -m pip install jupyter 安裝完調用下列命令運行 Jupyter。
jupyter notebook 沒意外的話會看到 Jupyter 被正常帶出。
Link Project Jupyter | Install
read morePosts
TensorFlow - Constant
TensonrFlow 的 constant 方法可用來建置 TensorFlow 的常數,其函式原型如下:
tf.constant( value, dtype=None, shape=None, name='Const', verify_shape=False ) 其中 value 表示常數的值,dtype 是值的型態,shape 是常數的維度。
可以直接調用 constant 方法並將常數值帶入以建立對應的常數。
... a = tf.constant(2) ... 常數值也可以是一為陣列。
... b = tf.constant([1, 2, 3, 4, 5, 6, 7]) ... 或是多維陣列。
... c = tf.constant([[1, 2, 3], [4, 5, 6]]) ... 數值的型態 constant 方法會自動識別,但若有需要也可以直接透過 dtype 指定。多維陣列元素若是相同值,可以使用 shape 輔助設定,設定特定維度且特定常數值的常數。
... d = tf.constant(-1, shape = [2, 3], dtype = tf.float32) ... 最後附上完整的範例程式:
import tensorflow as tf a = tf.
read morePosts
TensorFlow - Getting started
安裝完 TensorFlow 後,可以試著撰寫個簡單的 Hello World 程式。
首先我們需將 tensorflow 匯入。
import tensorflow as tf ... 設定一個常數其內容為 “Hello World!"。
... hello = tf.constant("Hello World!") ... 再來要取得 TensorFlow 的 Session,可以把 Session 想成運行 TensorFlow 的環境。
... sess = tf.Session() ... 將要運行的部分送至 Session 中運行。
... print(sess.run(hello)) 最後記得要將 Session 關閉。
... sess.close() 完整的程式會像下面這樣:
import tensorflow as tf hello = tf.constant("Hello World!") sess = tf.Session() print(sess.run(hello)) sess.close() 運行結果如下:
也可以搭配使用 with as 寫法,這樣就不需要明確的調用 session.close()。
import tensorflow as tf hello = tf.
read more