<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【目標檢測】二、Fast R-CNN與SVD

      1.流程

      (1) 空間金字塔池化(spatial pyramid pooling,SPP)

       原理:

      (2)Fast-RCNN

      2.數學概念

          這么多個全連接層,必然存在計算的性能問題,讓數學家們蠢蠢欲動——基于奇異值分解(singular value decomposition,SVD)的全連接層計算加速方法。

       

          降維(dimensionality reduction)處理主要方式:

      主成分分析

      Principal Component Analysis,PCA

       下文補充

      因子分析

      Factor Analysis

      假設觀察的數據當中存在一個隱變量(latent variable),這些數據是由隱變量和噪聲的線性組合而成,如果能找到隱變量,就可以減少觀察數據當中噪聲而達到降維效果。

      獨立成分分析

      Independent Component Analysis,ICA

      假設一批數據是由多個數據源混合在一起的,這些數據源應該是相互獨立,沒有關系,若能找到有幾批數據源就可以達到降維效果。

       (1)PCA

      (以下若有誤請指正)

      解n元一次的方程,得到基礎解系是“基”,所有通解都可以用基礎解系的向量線性表出。

      假設解線性方程(n個特征列)中,初等變換后得到化簡系數的矩陣,得到了矩陣的秩r,那么n-r得到n個變量中r個受到約束后剩下的n-r個自由變量。

      可以這樣理解,基礎解系是基,由向量組成(是約束下的解的坐標系)

      求得的自由變量就是這個基的軸,形如(1,0,0),(0,1,0)這樣表示的三維坐標軸一樣,設第一個軸是(1,0,…,0),第一個軸是(0,1,…,0),第n個軸是(0,0,…,1),得到了這些軸在m維坐標系中的方向(m=r)。每一個自由變量是基的一條軸。

       

      如果能求到特征值和特征向量,再通過形如Av=λv的高維到低維映射,就能達到降維效果,即:矩陣A的數據在特征向量基中的表示。

      其中,特征值個數=矩陣的秩,一個特征值帶著一個特征向量。

      這個思路下,PCA可以這樣下手:

      找到一個基空間(其軸的數目取數據特征列數),確定從原數據的行數據映射(點乘)到基空間的數值,這個數值就是降維結果。

      而怎么確定基空間(軸的方向、長度是什么),

      從幾何上看,是希望找到一條線,它覆蓋最大差異的數據,然后再找覆蓋次大差異數據的線,以此類推。

      方差公式σ(Sigma,大寫Σ,小寫σ):

      拓展至協方差公式,從某種程度來說,方差也是x的協方差:

       協方差矩陣Σ [2],是對稱矩陣:

      PCA實現 [3]:

      from numpy import *
      def pca(dataMat, topNfeat = 999):               # shape (m, n), (t)
          meanVals = mean(dataMat, axis=0)             # 求得平均值
          # 求新空間向量(特征向量)
          meanRemoved = dataMat - meanVals
          covMat = cov(meanRemoved, rowvar=0)            # 求協方差矩陣
          eigVals, eigVects = linalg.eig(mat(covMat))       # 求協方差矩陣的特征值及特征向量,shape (1, n) , (n, n)
          eigValInd = argsort(eigVals)                # 特征值排序,shape (1, n)
          eigValInd = eigValInd[:-(topNfeat+1):-1]        # 取特征值最大的前N個,shape (1, t)
          redEigVects = eigVects[:,eigValInd]           # 特征值對應的特征向量,shape (n, t)
          # 將數據轉換到新空間
          lowDDataMat = meanRemoved @ redEigVects         # 到低維的映射,其中@是點乘運算符, shape (m,n) (n,t) -> (m,t)
          reconMat = (lowDDataMat @ redEigVects.T) + meanVals  # 數據還原 shape (m, t) (t, n) -> (m, n)
          return lowDDataMat, reconMat

       

      (2)奇異值分解(Singular Value Decomposition,SVD)

      在大量數據下的PCA計算代價是很大的,這個時候常用SVD做矩陣分解以減少計算量。

      SVD是常用的降維手段,它可以通過隱性語義索引(Latent Semantic Indexing,LSI,或者隱性語義分析Latent Semantic Analysis,LSA)應用到搜索和信息檢索、推薦引擎等。(它希望在搜索一個詞時,能把同義詞映射為同一概念)

      Σ(sigma)是一個矩陣,只有對角元素,其它元素為0。它的值就是原數據矩陣Data的奇異值,取Data的特征值開方 ,并且按從大到小的排序。

      實現的類庫:

      import numpy as np
      U, Sigma, Vt = np.linalg.svd(np.array([[1,1],[7,7]]))
      U,Sigma,Vt
      
      >>> (array([[-0.14142136, -0.98994949],
              [-0.98994949,  0.14142136]]),
       array([10.,  0.]),
       array([[-0.70710678, -0.70710678],
              [-0.70710678,  0.70710678]]))

      注,在大矩陣計算中,計算結果會有些許偏差,這和計算的具體實現相關,但數量級上是不變的,也即:

       

      作矩陣分解的話,可以嘗試還原矩陣,當然這是在小數據上的測試,證明一下分解的可行性,以及導致誤差的可能:

      import numpy as np
      data = np.array([
          [1,1,1,0,0],
          [2,2,2,0,0],
          [5,5,5,0,0],
          [1,1,0,2,2],
          [0,0,0,3,3],
          [1,1,1,0,0],
          [0,0,0,1,1]
      ])
      U, Sigma, Vt = np.linalg.svd(data)
      #print('sigma:', Sigma)
      sig3 = [[Sigma[0],0,0],[0,Sigma[1],0],[0,0,Sigma[2]]]
      sig3 = np.array(sig3)
      U[:,:3]@Sig3@Vt[:3,:] # 多個矩陣點乘,除了numpy.linalg.multi_dot和reduce的寫法,numpy(在python 3.5以后)重載了@運算符,A@B直接就是A和B的矩陣乘法。
      
      >>>array([[ 1.00000000e+00,  1.00000000e+00,  1.00000000e+00,  -2.85152832e-16, -2.94802231e-16],
        [ 2.00000000e+00,  2.00000000e+00,  2.00000000e+00,  -1.48291534e-16, -1.67590333e-16],
        [ 5.00000000e+00,  5.00000000e+00,  5.00000000e+00,   1.05859966e-16,  5.77213899e-17],
        [ 1.00000000e+00,  1.00000000e+00, -1.05947783e-15,   2.00000000e+00,  2.00000000e+00],
        [ 1.73854477e-16,  4.09482862e-16, -8.23917306e-16,   3.00000000e+00,  3.00000000e+00],
        [ 1.00000000e+00,  1.00000000e+00,  1.00000000e+00,  -6.80558595e-17, -7.77052588e-17],
        [ 4.44607724e-17,  1.29942461e-16, -2.79696374e-16,   1.00000000e+00,  1.00000000e+00]])

      還原當中的Σ只取了3項,這個3如何確定?

      一種方式:求得所有奇異值的平方和*0.9作為閾值,再逐個計算奇異值平方和累加到閾值數目為止,以此來確定矩陣Σ的大小;

      另一種方式:直接由數據情況來確定,比如說直接指定2000或3000。

       

      SVD的圖像壓縮示例:

      def imgCompress(numSV=3, thresh=0.8):
          myl = []
          for line in open('0_5.txt').readlines():
              newRow = []
              for i in range(32):
                  newRow.append(int(line[i]))
              myl.append(newRow)
          myMat = mat(myl)
          print "****original matrix******"
          printMat(myMat, thresh)
          U,Sigma,VT = la.svd(myMat)
          SigRecon = mat(zeros((numSV, numSV)))
      
          for k in range(numSV):#construct diagonal matrix from vector
              SigRecon[k,k] = Sigma[k]
      
          reconMat = U[:,:numSV]@SigRecon@VT[:numSV,:]
      
          print "****reconstructed matrix using %d singular values******" % numSV
          printMat(reconMat, thresh)

      imgTest.txt 內容:

      00000000000000110000000000000000
      00000000000011111100000000000000
      00000000000111111110000000000000
      00000000001111111111000000000000
      00000000111111111111100000000000
      00000001111111111111110000000000
      00000000111111111111111000000000
      00000000111111100001111100000000
      00000001111111000001111100000000
      00000011111100000000111100000000
      00000011111100000000111110000000
      00000011111100000000011110000000
      00000011111100000000011110000000
      00000001111110000000001111000000
      00000011111110000000001111000000
      00000011111100000000001111000000
      00000001111100000000001111000000
      00000011111100000000001111000000
      00000001111100000000001111000000
      00000001111100000000011111000000
      00000000111110000000001111100000
      00000000111110000000001111100000
      00000000111110000000001111100000
      00000000111110000000011111000000
      00000000111110000000111111000000
      00000000111111000001111110000000
      00000000011111111111111110000000
      00000000001111111111111110000000
      00000000001111111111111110000000
      00000000000111111111111000000000
      00000000000011111111110000000000
      00000000000000111111000000000000
      View Code

       

      關于SVD的推理/原理,暫且擱置。

       

      線性代數有感:

      它真的有很多性質,最后接觸已經近乎三年前了,也都忘了,不過遇到也不怕吧,它花里胡哨總歸是為了線性計算;它恁多的性質都是為了計算方便,

      此處我只追求,我能get到其型,具體計算就不深入。

       

      =======================================================================

      資料:

      [2] 協方差相關 https://zhuanlan.zhihu.com/p/37609917

      [3]Peter Harrington著《機器學習實戰》

      杜鵬、諶(chen2)明、蘇統華 編著《深度學習與目標檢測》

       

       

      posted @ 2021-07-01 01:16  Carcar019  閱讀(721)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 色www永久免费视频| av高清无码 在线播放| 97成人碰碰久久人人超级碰oo| 人妻无码| 亚洲av色一区二区三区| 国产色无码精品视频免费| 成人免费在线播放av| 人妻系列无码专区无码中出| 亚洲午夜精品国产电影在线观看| 又大又粗欧美成人网站| 国产精品一二三中文字幕| 亚洲国产日韩精品久久| 国产一二三五区不在卡| 在线看av一区二区三区 | 九九热在线精品免费视频| 人妻少妇偷人精品一区| 成人又黄又爽又色的视频| 国内极度色诱视频网站| 熟妇无码熟妇毛片| 亚洲中文字幕人妻系列| 板桥市| 精品黄色av一区二区三区| 99er热精品视频| 日本一区二区三区免费播放视频站| 亚洲精品二区在线播放| 国产精品三级中文字幕| 国产丝袜肉丝视频在线| 人妻精品久久久无码区色视| 国产日韩一区二区在线| 国产精品一区二区三区四区| 久久se精品一区精品二区国产| 一本高清码二区三区不卡| 石景山区| 一区二区中文字幕av| 亚洲Av综合日韩精品久久久| 国产成人麻豆亚洲综合无码精品| 激情亚洲内射一区二区三区| 黑人大战欲求不满人妻| 日韩精品一卡二卡三卡在线| 国产精品中文字幕综合| 精品一区二区成人精品|