zoukankan      html  css  js  c++  java
  • 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:n
        subplot(10, 10, i), imshow(train_x{idx(i)});
    end

    2. 定义并训练 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)
  • 相关阅读:
    文件操作
    苹果越狱
    猫的期幻之旅-20130114
    js传url中文参数乱码问题
    JS三元
    SQL同列合并
    数据库引擎介绍innodb和myisam
    数据库优化
    gleez 下分页功能优化
    kohana安装总结
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421860.html
Copyright © 2011-2022 走看看