C語言中文網 目錄
TensorFlow
1 TensorFlow是什么
2 TensorFlow安裝和下載
3 第一個TensorFlow程序
4 TensorFlow程序結構
5 TensorFlow常量、變量和占位符
6 TensorFlow矩陣基本操作
7 TensorFlow TensorBoard數據流圖可視化
8 TensorFlow代碼自動升級為1.0版本
9 TensorFlow XLA
10 TensorFlow指定CPU和GPU設備
11 TensorFlow與深度學習
12 TensorFlow常用Python擴展包
13 回歸算法有哪些
14 TensorFlow損失函數
15 TensorFlow優化器
16 TensorFlow csv文件讀取數據
17 TensorFlow實現簡單線性回歸
18 TensorFlow實現多元線性回歸
19 TensorFlow邏輯回歸處理MNIST數據集
20 感知機與神經網絡
21 TensorFlow常用激活函數(6種)
22 TensorFlow實現單層感知機
23 TensorFlow實現反向傳播算法
24 TensorFlow多層感知機實現MINIST分類
25 TensorFlow多層感知機函數逼近
26 TensorFlow超參數
27 TensorFlow Keras
28 CNN卷積神經網絡
29 三維卷積神經網絡預測MNIST數字
30 卷積神經網絡分類圖片
31 遷移學習
32 DeepDream網絡
33 TensorFlow實現文本情感分析
34 VGG網絡濾波器
35 VGGNet、ResNet、Inception和Xception
36 預建深度學習提取特征及實現
37 TensorFlow實現InceptionV3
38 TensorFlow WaveNet聲音合成
39 TensorFlow視頻分類(6種方法)
40 RNN循環神經網絡
41 神經機器翻譯(seq2seq RNN)
42 注意力機制(基于seq2seq RNN)
43 RNN訓練模型并生成文本
44 RNN循環神經網絡實現預測比特幣價格
45 主成分分析法(PCA)
46 k均值聚類算法
47 SOM自組織映射法
48 受限玻爾茲曼機訓練
49 推薦系統的實現(基于RBM)
50 基于DBN實現情緒檢測
51 自編碼器
52 標準自編碼器
53 稀疏自編碼器
54 去燥自編碼器
55 卷積自編碼器
56 堆疊自編碼器
57 強化學習
58 OpenAI Gym安裝和使用
59 全連接神經網絡實現玩Pac-Man游戲
60 Q learning實現Cart-Pole平衡游戲
61 DQN算法(深度Q網絡)
62 David Silver策略梯度算法
63 深度學習在移動端的應用
64 Android移動端部署TensorFlow mobile
65 iPhone移動端部署TensorFlow mobile
66 移動端優化TensorFlow代碼
67 GAN生成式對抗網絡
68 GAN生成式對抗網絡虛構MNIST圖像
69 DCGAN虛構MNIST圖像
70 DCGAN虛構名人面孔和其他數據集
71 VAE變分自編碼器
72 CapsNet膠囊網絡
73 TensorFlow分布式
74 TensorFlow GPU的安裝和使用
75 TensorFlow分布式
76 TensorFlow分布式訓練MNIST分類器
77 TensorFlow Serving運行Docker容器
78 TensorFlow分布式在谷歌云平臺運行
79 TensorFlow分布式在谷歌CloudML運行
80 TensorFlow分布式在Microsoft Azure上運行
81 TensorFlow分布式在Amazon AWS上運行
首頁 > TensorFlow 閱讀:182

SOM自組織映射法原理及(TensorFlow)實現詳解

自組織映射(SOM)網絡,也被稱為 Kohonen 網絡或者勝者獨占單元(WTU),在大腦中,不同的感官輸入以拓撲順序的方式呈現,是受人腦特征啟發而提出的一種非常特殊的神經網絡。

與其他神經網絡不同,SOM 神經元之間并不是通過權重相互連接的,相反,它們能夠影響彼此的學習。SOM 最重要的特點是神經元以拓撲方式表示所學到的輸入信息。

在 SOM 中,神經元通常放置在(一維或二維)網格的節點處,更高的維數也可以用,但實際很少使用。網格中的每個神經元都可以通過權重矩陣連接到所有輸入單元。下圖中有 3×4(12)個神經元和 7 個輸入,為了清晰只畫出了所有輸入連接到一個神經元的權重向量,在這種情況下,每個神經元將擁有 7 個權值,因此權重矩陣維數為 12×7。


 
SOM 通過競爭機制進行學習,可以認為它是 PCA 的非線性推廣,因此 SOM 可以像 PCA 一樣用于降維。

SOM工作原理

先來了解它是如何工作的,用隨機值或從輸入中隨機采樣對連接權重進行初始化,網格中的每個神經元都被賦予一個位置。數據輸入后,測量輸入向量(X)和所有神經元權向量(W)之間的距離,與輸入數據距離最小的神經元為勝者(WTU),距離度量如下:


 
其中,dj 是神經元 j 的權重與輸入 X 之間的距離,最小距離的神經元是勝者。

第二步,調整獲勝神經元及其鄰域神經元的權重,以確保如果下一次是相同的輸入,則勝者還是同一個神經元。網絡采用鄰域函數 Λ(r) 確定哪些鄰域神經元權重需要修改,通常使用高斯墨西哥帽函數作為鄰域函數,數學表達式如下:


 
其中,σ 是隨時間變化的神經元影響半徑,d 是距離獲勝神經元的距離:

 
鄰域函數的一個重要特性是它的半徑隨時間而減小,這樣剛開始時較多鄰域神經元權重被修改,但是隨著網絡的學習,最終只有少量的神經元的權重被修改(有時只有一個或沒有)。權重的改變由下式計算:


 
按照這個方法繼續處理輸入,重復執行給定的迭代次數。在迭代過程中利用一個與迭代次數相關的因子來減少學習率和影響半徑。

具體實現

  1. 首先導入必需的模塊:


     
  2. 聲明類 WTU 來執行 SOM 的功能。實例化時,參數 m×n 為二維 SOM 網格的大小,dim 為輸入數據的維數,num_interations 為迭代次數:

    該方法中還定義了計算圖和會話。

  3. 如果沒有提供 sigma 值,則采用默認值,通常是 SOM 網格最大維數的一半:


     
  4. 在計算圖中先定義權重矩陣變量和輸入,然后計算獲勝者并更新獲勝者和它近鄰神經元的權重。由于 SOM 具有拓撲映射,此處通過增加操作來獲取神經元的拓撲定位:


     
  5. 在類中定義 fit() 方法,執行默認計算圖中聲明的訓練操作,同時還計算質心網格:


     
  6. 定義一個函數來獲取二維網格中獲勝神經元的索引和位置:


     
  7. 定義一些輔助函數來執行網格中神經元的二維映射,并將輸入向量映射到二維網格中的相關神經元中:


     
  8. 現在我們的 WTU 類已經可以使用了,從 .csv 文件中讀取數據并將其標準化:


     
  9. 使用 WTU 類進行降維,并將其排列在一個拓撲圖中:


     
    最后繪圖如下:

總結

SOM 是一個計算密集型網絡,因此對于大型數據集并不實用,不過,該算法很容易理解,很容易發現輸入數據之間的相似性。因此被廣泛用于圖像分割和自然語言處理的單詞相似性映射中。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户