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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB图自编码器

發(fā)布時(shí)間:2024/7/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB图自编码器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通過(guò)MATLAB來(lái)實(shí)現(xiàn)圖自編碼器,用于高光譜圖像特征的提取。

文章目錄

  • 前言
  • 一、MATLAB相關(guān)知識(shí)
  • 二、編寫算法
    • 1.圖自編碼器搭建
    • 2.可視化相關(guān)參數(shù)
  • 總結(jié)


前言

算法輸入數(shù)據(jù):

  • 圖節(jié)點(diǎn)屬性矩陣;
  • 鄰接矩陣;
  • 概率p;

W為自編碼器的隱藏表示,即訓(xùn)練參數(shù)矩陣,Z為輸入數(shù)據(jù)的重構(gòu)表示。


算法偽代碼:

一、MATLAB相關(guān)知識(shí)

1.1 創(chuàng)建單位矩陣

IN_NN? = eye(5,5),主對(duì)角線元素為1;

I = eye(5,5)

1.2 計(jì)算圖的度矩陣D
采用sum函數(shù),可以按行求和也可以按列求和;

  • sum(A,1):對(duì)矩陣A按照列求和;
  • sum(A,2):對(duì)矩陣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轉(zhuǎn)化為對(duì)稱矩陣,即鄰接矩陣I = eye(N,N)A(I == 1) = 0D = zeros(N,N)% D為度矩陣D(I == 1) = sum(A)

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

  • 點(diǎn)乘(.*):兩矩陣對(duì)應(yīng)位置的元素相乘;
  • 矩陣乘法(*) : 遵循矩陣運(yùn)算法則;
  • 矩陣乘以一個(gè)數(shù)值時(shí),兩種乘法不區(qū)分,效果一樣;

1.3 矩陣元素指數(shù)運(yùn)算

% 對(duì)矩陣S的每個(gè)元素進(jìn)行指數(shù)運(yùn)算,即相同矩陣的點(diǎn)乘 S^2

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

[x,y] = eig(A)
  • x矩陣為特征向量矩陣,每一列為一個(gè)特征向量;
  • y矩陣主對(duì)角線元素為特征值;

采用diag()函數(shù)獲取對(duì)角線元素。

diag(y)

1.5 MATLAB函數(shù)定義

定義一個(gè)函數(shù),以下是簡(jiǎn)單的規(guī)則:

  • 函數(shù)代碼塊以 function關(guān)鍵詞開(kāi)頭,后接輸出變量函數(shù)標(biāo)識(shí)符名稱圓括號(hào) ()
  • 任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)。
  • 函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串—用于存放函數(shù)說(shuō)明。
  • 函數(shù)內(nèi)容以end結(jié)束

函數(shù)需要定義在腳本文件(*.m)中運(yùn)行,不可以在命令窗口中臨時(shí)創(chuàng)建。

有多個(gè)返回值時(shí),默認(rèn)返回第一個(gè)值,若想獲取其他值,可以使用 ~過(guò)濾不需要的值;

function output = AddFunc(a,b)output = a + b; end

二、編寫算法

1.圖自編碼器搭建

使用MATLAB內(nèi)置的函數(shù)搭建一個(gè)自編碼器。

1.1 matlab 對(duì)數(shù)據(jù)集的默認(rèn)按列存儲(chǔ),因此數(shù)據(jù)的存儲(chǔ)方式為X∈Rd×N^{d×N}d×N ,其中d為特征向量的長(zhǎng)度,x為樣本數(shù)量;

1.2 可以采用 trainAutoencoder() 函數(shù)或者 train_autoencoder() 來(lái)搭建自編碼器。

  • 通過(guò)trainAutoencoder()函數(shù)來(lái)搭建自編碼器,通過(guò)predict()函數(shù)來(lái)預(yù)測(cè),對(duì)于自編碼器來(lái)說(shuō)就是重構(gòu)X;
ae = trainAutoencoder(X); X_ = predict(ae, X); % 損失函數(shù) mse_loss = mse(X-X_);

1.3 對(duì)于高光譜圖像,對(duì)數(shù)據(jù)進(jìn)行預(yù)處理;

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函數(shù)相關(guān)參數(shù)設(shè)置

  • 第一個(gè)參數(shù) X:訓(xùn)練數(shù)據(jù);

  • 第二個(gè)參數(shù) size:隱含層神經(jīng)元數(shù)量;

  • 鍵值對(duì)參數(shù)

    • ”EncoderTransferFunction” :“l(fā)ogsig”,為編碼器傳遞函數(shù);
    • “MaxEpochs” : 100,最大訓(xùn)練次數(shù);
    • “LossFunction” :“msesparse”,為均方差損失函數(shù) (默認(rèn))
    • “ShowProgressWindow” : false, 顯示訓(xùn)練窗口,默認(rèn)為顯示;
  • 輸出為一個(gè)編碼器模型;

參數(shù)設(shè)置:https://www.mathworks.com/help/deeplearning/ref/trainautoencoder.html

1.5 采用drtoolbox工具箱中的函數(shù)train_autoencoder來(lái)訓(xùn)練一個(gè)簡(jiǎn)單的自編碼器,用于數(shù)據(jù)降維。drtoolbox是一個(gè)用于數(shù)據(jù)降維的工具箱,包含很多數(shù)據(jù)降維的方法。
drtoolbox:https://blog.csdn.net/uncle_ll/article/details/60465797

train_autoencoder函數(shù)介紹:
[network, mappedX, reconX] = train_autoencoder(X, layers, noise, max_iter)

  • X:輸入數(shù)據(jù),每行為一個(gè)樣本,每列為一個(gè)特征;
  • layers:降維后特征數(shù);
  • noise:噪聲,默認(rèn)為0;
  • mat_iter:迭代次數(shù);

輸出參數(shù):

  • network:包含降維的權(quán)重矩陣和重構(gòu)的矩陣;
  • mappedX:降維后的數(shù)據(jù);
  • reconX:重構(gòu)的X;

2.可視化相關(guān)參數(shù)

2.1 可視化矩陣可以使用 imagesc() 函數(shù);


總結(jié)

搭建的自編碼都是一層隱藏層的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò),主要是學(xué)習(xí)使用相關(guān)函數(shù)的用法以及涉及到的相關(guān)的知識(shí)。

總結(jié)

以上是生活随笔為你收集整理的MATLAB图自编码器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。