日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB图自编码器

發布時間:2024/7/19 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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按照行求和;
N = 5 % A為鄰接矩陣A = [1,2,3,4,5;2,3,4,5,6;3,4,5,6,7;4,5,6,7,8;5,6,7,8,9]% 將A轉化為對稱矩陣,即鄰接矩陣I = eye(N,N)A(I == 1) = 0D = zeros(N,N)% D為度矩陣D(I == 1) = sum(A)

1.3 對稱歸一化拉普拉斯矩陣 L = I - D?1/2^{- 1 / 2}?1/2AD?1/2^{- 1 / 2}?1/2

  • 點乘(.*):兩矩陣對應位置的元素相乘;
  • 矩陣乘法(*) : 遵循矩陣運算法則;
  • 矩陣乘以一個數值時,兩種乘法不區分,效果一樣;

1.3 矩陣元素指數運算

% 對矩陣S的每個元素進行指數運算,即相同矩陣的點乘 S^2

1.4 計算矩陣的特征向量和特征值
采用eig()函數計算矩陣的特征向量和特征值;

[x,y] = eig(A)
  • 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;
ae = trainAutoencoder(X); X_ = predict(ae, X); % 損失函數 mse_loss = mse(X-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图自编码器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。