本紀錄是學習Coursera SQL for Data Science的第一篇筆記,前幾周都覺得很容易懂,到了第三周Join的時候真的是有點搞混了,因此特意把整個學習過程記錄下來

 
 留言
文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

今天要教大家的是Linux share folder的用法,若您擁有多台電腦,且多台電腦需要互相傳資料的時候,按照小編以往的作法即是拿著一顆萬用USB這邊插插那邊拔拔、來回奔波、長途跋涉阿,傳了很多次後實在覺得很麻煩,因此決定使用共享資料的功能,今天要使用的是Ubuntu系統的samba功能。Ubuntu實在很貼心,什麼指定都不用下就只要視窗點一點即可,參考下列說明趕緊開啟您的共享資料夾吧。

首先,隨便創建一個資料夾並點擊右鍵,之後點擊屬性窗格

點擊Local Network Share,之後再點擊Share this folder,系統即會跳出視窗要求安裝服務

點擊Install安裝Samba套件

安裝完成後系統會要求重新啟動session,之後就重新按一次剛剛流程

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

abstract


本篇論文是解決卷積網路平移不變性的問題,即便訓練出一個準確率很高的網路,但往往圖片稍微移動一下,圖片的預測就會差很多,如下圖所示,橫軸代表對角線往下移動的元素,縱軸代表該類別輸出的機率,由圖可以發現沒有經過blur pool網路的輸出特別的不穩定,但使用本篇論文所提出的blur pool解決方法後就穩定許多。

main method

下圖是作者用一維空間來解釋為什麼會有上述現象發生的原因,如下圖所示,訊號源為[0,0,1,1,0,0,1,1],經過s=2,k=2的max pool後訊號會變成[0 1 0 1],但經過一個小小的shift之後,訊號就會變成[1 1 1 1],造成上述現象產生的原因就是因為有stride的原因

下圖是作者提出的解決方法

  • 首先對原訊號做dense max(k=2,s=1)的動作
    [0 1 1 1 0 1 1 1 0]
  • 再來使用blur pool (k=3,s=2)
    每層k的元素為[1 2 1]/4
    因此訊號前面補齊周邊的1就變成了 1 0 1 1 1 0 1 1 1 0
    做blur pool(shift 0)後就變成了 0.5 1 0.5 1 0.5 1
    做blur pool(shift 1)後就變成了 0.75 0.75 0.75 0.75
    這麼做的原因就會使得輸出變的平滑,有偏移與沒有偏移所產生的結果都會很相近,如同圖上灰色虛線所表示的

因此,套用到二維的圖片後也是相同的原理,前面先做一個dense max,後面再使用blur pool,作者提供了各種不同kernel size的卷積核,分別是

  • k=2, [1,1]/2
  • k=3, [1,2,1]/4
  • k=4, [1,3,3,1]/8
  • k=5, [1,4,6,4,1]/16

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

題目

Given an integer num, return a string representing its hexadecimal representation. For negative integers, two’s complement method is used.

All the letters in the answer string should be lowercase characters, and there should not be any leading zeros in the answer except for the zero itself.

Note: You are not allowed to use any built-in library method to directly solve this problem.

Example 1:

Input: num = 26
Output: “1a”
Example 2:

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

 

由於我高階語言寫習慣了,在python中翻轉字串也就是一行的事

my_string[::-1]

但在C語言中卻不是如此,最簡單的寫法就是創建一個新的string然後再從後面慢慢地加入要的字元

 

#include <iostream>
using namespace std;

int main() {
  
  string greeting = "Hello!";

  string new_greeting;

  for(int n = greeting.length()-1; n >= 0; n--){
    new_greeting.push_back(greeting[n]);
  }
  cout<<"Original string: "<< greeting << endl;
  cout<<"New reversed string: "<< new_greeting << endl;
  
}

 

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

以往我們對神經網路的概念都只是侷限在於輸入一張圖片然後對輸出做分類的動作,就像圖左邊的概念圖一樣,假設輸入的這張圖片是貓,那麼就會根據設定給出對應的學習輸出,在學術上我們稱作label,那麼未來在給定一張網路未曾見過的圖片時,若第一顆神經元的輸出數字很大,代表網路判定這張圖片有很高的機率為貓,這就是傳統的分類機器學習,學術上稱做classification。隨著研究的不斷發展,科學家們發現網路不單單只能做分類,還能做到更進階的物件定位,即在圖上把對應的物件以一個矩形框出對應的位置,學術上稱作localization,那麼學習的輸出應該給定什麼呢?很簡單,定義一個矩形就只要四個參數就可以決定了,分別是物件座標中心(X,Y)、物件的寬(W)、物件的高(H),但是一張圖的物件數量是未知的,若我們很確定未來預測的每張圖片都只有兩個物件,那麼輸出就只要設定成8顆神經元即可

但實際情況可不是這樣,每張圖片的物件數量不定,怎麼解決這個問題呢?科學家想出一個很棒的辦法,即利用特定設計的default box來做回歸學習,學術上也稱作anchor,假設anchor的位置和物件真實的位置(ground truth)很接近,那麼就會把學習偵測此物件的工作交由給此anchor學習,如此的動作在學術上稱做Bounding-Box regression

既然要把某個真實物件的座標(ground truth)交由特定的anchor學習,聰明的科學家們就設定出一套定義兩者之間的轉換公式,讓網路學習並定出相對定的label,在學術上稱做encode,而對於已經學習好的網路,拿到輸出並解析出在圖上真正位置稱為decode

encode

論文上的encode 公式定義如下

底下是各個參數對應名稱:
cx:代表物體中心的x座標
g:代表ground truth box
d:代表defaut box
i:是default box的索引
j:是ground truth box的索引
g^jcx:代表ground truth box中心點的x座標和defaut box中心點x座標相減並除以defaut box的寬
g^jcy:代表ground truth box中心點的y座標和defaut box中心點y座標相減並除以defaut box的高
g^jw:將ground truth box的寬除以defaut box的寬並取log
g^jh:將ground truth box的高除以defaut box的高並取log
m:是個集合,由四個元素組成,分別是cx,cy,w,h
lim:代表由網路預測出第i個defaut box的值

別被複雜的公式嚇跑了,其實白話文來說就是:
g^jcx= (ground truth中心點座標X-anchor中心點座標X)/anchor的寬
g^jcy= (ground truth中心點座標Y-anchor中心點座標Y)/anchor的高
g^jw= log(ground truth的寬/anchor的寬)
g^jh= log(ground truth的高/anchor的高)

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

SSD:Single shot multibox detector

本文大部分的圖都是截自以下投影片,這是一家俄國新創深度學習公司的投影片,所以裡面的字體、講解都是俄文,不過投影片的圖就足夠讓我們清楚的了解SSD的整個原理,因此本文選擇以此投影片做為媒介講解。

SSD: Single Shot MultiBox Detector (How it works)

abstract:

SSD是當今最快的object detection算法,兼具了YOLO的速度與FasterRCNN的準度,本篇論文的最大特點是改進了YOLO只用最後一層來檢測目標而SSD運用多層feature map來做檢測,既兼顧大目標物體檢測亦提升小目標物體檢測的精度。本論文將YOLO在PASCAL VOC 2007 test的檢測精度由63.4%提升到74.3%,速度也從45FPS進展到59FPS(論文中闡述與圖中不同),此外,如果採用512*512的大圖片訓練的話,精度甚至可高達81.6%。

Main:

下面圖解說明YOLO與SSD的不同點:
YOLO 是以最後一層全連接層來做box regression的動作,而SSD是結合各層的卷積網路來做box regression
YOLO:

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

最近Andrew Ng開了一堂深度學習的課,非常適合初學者學習,裡面有一系列課程,分別為
1.Neural Networks and Deep Learning
2.Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
3.Structuring Machine Learning Projects
4.Convolutional Neural Networks
5.Sequence Models

小編上了其中一堂,裡面非常詳細的講解object detection的由來以及YOLO的運作原理,上完這堂課令我茅塞頓開,許多以前懵懵懂懂的概念經過這堂課的洗禮後就清楚許多了,且coursera的教學方式本身我就非常的喜歡,上課時不只教學而已,課堂後也都會有小考試測試您對這章節所講述的概念有無理解,且還會有程式實作的作業,寫完作業後馬上就可以上傳伺服器來打分數,非常有效率。底下附上課程的連結:
https://www.coursera.org/learn/convolutional-neural-networks?specialization=deep-learning

小編這堂課上的是第四堂,主要講解的是深度學習中的主流網路-卷積神經網路,底下將整理一些小編在這堂課學習到的內容

1.classification:

下圖是一個CNN非常典型的例子,輸入一张圖片後來分辨圖片的種類,這是小編剛接觸深度學習時最初知道的概念,以為網路的功用即是做物件分類罷了。但慢慢學習之後才知道網路無所不能,只要丟入適當的input與output,網路甚至能告訴你物件在圖片中的位置並把它框出來,這類網路在學術界中稱為object detection model。

2.sliding window detection

早先最開始的概念是訓練各種不同大小的網路,然後在圖片上以滑動窗格的方式來尋找物體,如下圖所示,紅色的框框代表三個input size不同的CNN網路,藉由不同大小的框框分別在圖上滑動來預測物體,只要網路的信心大於一定值則可推斷框框所停的位置有極大的機率出現物體,因此我們就可以得知物體的位置並把框框畫出來。

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

正常上傳github 有兩種方式

 
 留言
文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

小編最近買了一張nvidia-3070ti顯卡回來,一裝機馬上就想測測看GPU有沒有問題,上網找了一下有一套軟體GPU_burn 專門做燒機測試,也提供docker版本,若不知道如何安裝nvidia-docker 的可以參考小編之前的文章
快速安裝深度學習系統 Ubuntu20.04 tensorflow 2.7.0 docker

 
 留言
文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()