MATLAB图自编码器
通過MATLAB來實現圖自編碼器,用于高光譜圖像特征的提取。
文章目錄
- 前言
- 一、MATLAB相關知識
- 二、編寫算法
- 1.圖自編碼器搭建
- 2.可視化相關參數
- 總結
前言
算法輸入數據:
- 圖節點屬性矩陣;
- 鄰接矩陣;
- 概率p;
W為自編碼器的隱藏表示,即訓練參數矩陣,Z為輸入數據的重構表示。
算法偽代碼:
一、MATLAB相關知識
1.1 創建單位矩陣IN_NN? = eye(5,5),主對角線元素為1;
I = eye(5,5)1.2 計算圖的度矩陣D
采用sum函數,可以按行求和也可以按列求和;
- sum(A,1):對矩陣A按照列求和;
- sum(A,2):對矩陣A按照行求和;
1.3 對稱歸一化拉普拉斯矩陣 L = I - D?1/2^{- 1 / 2}?1/2AD?1/2^{- 1 / 2}?1/2
- 點乘(.*):兩矩陣對應位置的元素相乘;
- 矩陣乘法(*) : 遵循矩陣運算法則;
- 矩陣乘以一個數值時,兩種乘法不區分,效果一樣;
1.3 矩陣元素指數運算
% 對矩陣S的每個元素進行指數運算,即相同矩陣的點乘 S^21.4 計算矩陣的特征向量和特征值
采用eig()函數計算矩陣的特征向量和特征值;
- x矩陣為特征向量矩陣,每一列為一個特征向量;
- y矩陣主對角線元素為特征值;
采用diag()函數獲取對角線元素。
diag(y)1.5 MATLAB函數定義
定義一個函數,以下是簡單的規則:
- 函數代碼塊以 function關鍵詞開頭,后接輸出變量和函數標識符名稱和圓括號 ()。
- 任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用于定義參數。
- 函數的第一行語句可以選擇性地使用文檔字符串—用于存放函數說明。
- 函數內容以end結束。
函數需要定義在腳本文件(*.m)中運行,不可以在命令窗口中臨時創建。
有多個返回值時,默認返回第一個值,若想獲取其他值,可以使用 ~過濾不需要的值;
function output = AddFunc(a,b)output = a + b; end二、編寫算法
1.圖自編碼器搭建
使用MATLAB內置的函數搭建一個自編碼器。
1.1 matlab 對數據集的默認按列存儲,因此數據的存儲方式為X∈Rd×N^{d×N}d×N ,其中d為特征向量的長度,x為樣本數量;
1.2 可以采用 trainAutoencoder() 函數或者 train_autoencoder() 來搭建自編碼器。
- 通過trainAutoencoder()函數來搭建自編碼器,通過predict()函數來預測,對于自編碼器來說就是重構X;
1.3 對于高光譜圖像,對數據進行預處理;
load('SalinasA_gt.mat') load('SalinasA_corrected.mat') [width,height,band] = size(salinasA_corrected); X = reshape(salinasA_corrected,width * height ,band); X_ = X'; plot(X(1,:)); hold on; plot(X_(:,1)); hold off;1.4 trainAutoencoder函數相關參數設置
-
第一個參數 X:訓練數據;
-
第二個參數 size:隱含層神經元數量;
-
鍵值對參數
- ”EncoderTransferFunction” :“logsig”,為編碼器傳遞函數;
- “MaxEpochs” : 100,最大訓練次數;
- “LossFunction” :“msesparse”,為均方差損失函數 (默認)
- “ShowProgressWindow” : false, 顯示訓練窗口,默認為顯示;
-
輸出為一個編碼器模型;
參數設置:https://www.mathworks.com/help/deeplearning/ref/trainautoencoder.html
1.5 采用drtoolbox工具箱中的函數train_autoencoder來訓練一個簡單的自編碼器,用于數據降維。drtoolbox是一個用于數據降維的工具箱,包含很多數據降維的方法。
drtoolbox:https://blog.csdn.net/uncle_ll/article/details/60465797
train_autoencoder函數介紹:
[network, mappedX, reconX] = train_autoencoder(X, layers, noise, max_iter)
- X:輸入數據,每行為一個樣本,每列為一個特征;
- layers:降維后特征數;
- noise:噪聲,默認為0;
- mat_iter:迭代次數;
輸出參數:
- network:包含降維的權重矩陣和重構的矩陣;
- mappedX:降維后的數據;
- reconX:重構的X;
2.可視化相關參數
2.1 可視化矩陣可以使用 imagesc() 函數;
總結
搭建的自編碼都是一層隱藏層的簡單神經網絡,主要是學習使用相關函數的用法以及涉及到的相關的知識。總結
以上是生活随笔為你收集整理的MATLAB图自编码器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库高级知识——mysql架构介绍(一
- 下一篇: 计算机网络(二十六)-IP数据报分片