matlab 实现 stacked Autoencoder 解决图像分类问题
生活随笔
收集整理的這篇文章主要介紹了
matlab 实现 stacked Autoencoder 解决图像分类问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Train Stacked Autoencoders for Image Classification
1. 加載數據到內存
[train_x, train_y] = digitTrainCellArrayData;% 并隨機選擇顯示 100 副圖像, n = 100; idx = randi([1, size(train_x, 2)], n); for i=1:nsubplot(10, 10, i), imshow(train_x{idx(i)}); end2. 定義并訓練 autoencoder 網絡模型
簡單起見,這里僅給出一個具有一個單隱層(隱層的神經元節點數為 100)的堆棧式自編碼器,
rng('default'); num_hid1 = 100;% 因為是自編碼器,也屬于無監督學習算法,因此不需要目標值 train_y 的參與 ae1 = trainAutoencoder(train_x, num_hid1, ...'MaxEpochs', 400, ...'L2WeightRegularization', .004, ...'SparsityRegularization', 4, ...'SparsityProportion', .15, ...'ScaleData', false);定義網絡拓撲結構的過程,也是訓練的過程。
3. 過程及中間變量的可視化
- 可視化模型拓撲:view(ae1)
- 可視化學到的權值矩陣:plotWeights(ae1)
4. 訓練第二個 autoencoder
% 使用第一個自編碼器得到其對應的壓縮編碼, feat1 = encode(ae1, train_x); num_hid2 = 50; ae2 = trainAutoencoder(feat1, num_hid2, ...'MaxEpochs', 100, ...'L2WeightRegularization', .002, ...'SparsityRegularization', 4, ...'SparsityPropotion', .1, ...'ScaleData', false); view(ae2);% 使用第二個自編碼器得到其對應的壓縮編碼 feat2 = encode(ae2, feat1);5. 應用于分類問題
softnet = trainSoftmaxLayer(feat2, train_y, 'MaxEpochs', 400); view(softnet)6. 組建 stacked autoencoder
deepnet = stack(ae1, ae2, softnet); view(deepnet)轉載于:https://www.cnblogs.com/mtcnn/p/9421861.html
總結
以上是生活随笔為你收集整理的matlab 实现 stacked Autoencoder 解决图像分类问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017广东工业大学程序设计竞赛决赛--
- 下一篇: 【转】JMeter学习(六)集合点