zoukankan      html  css  js  c++  java
  • Sparse autoencoder implementation 稀疏自编码器实现

    任务:在这个问题中,你将实现稀疏自编码器算法,并且展示它怎么发现边缘是自然图像的一个好的表示。

          在文件 sparseae_exercise.zip中,我们已经提供了一些Matlab中的初始代码,你应该将你的代码写在文件中的”YOUR CODE HERE“下面。你必须完成以下文件:samplesIMAGES.m, sparseAutoencoderCost.m, computeNumericalGradient.m.在train.m中的开始代码展示了这些函数是怎样被使用的。

          明确地,在这个练习中你将实现一个稀疏自编码器,用8×8的图像块,使用L-BFGS最优化算法训练的。

    第一步:产生训练集合

          第一步是去产生一个训练集合。为了得到一个单一的训练样例x,随机从100张图片中选取一张,然后从选择的图像中随机采样一个8×8图像块,并且将图像块转化到一个64维的向量中去产生一个训练样本x in Re^{64}.

          完成在samplesIMAGES.m中的代码,你的代码将会采样10000个图像块并且将它们连接成一个64×10000的矩阵。

          为了保证你的实现是对的,运行train.m中的Step 1,这个应该会产生一个来自数据库的具有200个块的随机样本图表。

          实现窍门:当我们运行我们实现的sampleImages()时,花费时间会低于5秒。如果你的实现超过30秒,可能是因为你在每次选择一个随机图片时,意外地复制了整个512×512图像。通过复制一个512×512像素的图像10000次,这个可能会是你的实现很低效。要保证每次你想要切出一个8×8的图像块时,并没有复制了整幅图像。

    第二步:稀疏自编码对象

    执行代码去计算稀疏自编码代价函数Jsparse(W,b)以及Jsparse 对于不同参数的导数,使用sigmoid函数作为激活函数,

    f(z) = frac{1}{{1+e^{-z}}}

    完成在sparseAutoencoderCost.m中的代码

    稀疏自编码器具有参数:矩阵W^{(1)} in Re^{s_1	imes s_2}W^{(2)} in Re^{s_2	imes s_3}向量b^{(1)} in Re^{s_2}b^{(2)} in Re^{s_3}。然而,为了方便表述,我们将会将这些参数都放在一个很长的参数向量θ中,具有s1s2 + s2s3 + s2 + s3个参数。转化(W(1),W(2),b(1),b(2))和θ的代码已经被放在启示代码中了。

    实现技巧:对象Jsparse(W,b) 包含三项,the squared error term平方误差项,the weight decay term权重衰减项和the sparsity penalty稀疏惩罚项。你可以以自己想用的方式来实现这个,但是为了便于调试,你可以首先计算平方误差项的代价函数和导数计算(反向传播),这个相当于设置λ=ß=0;并且在下一章中实现梯度检验算法要首先验证这个代码是正确的

  • 相关阅读:
    单细胞分析实录(13): inferCNV结合UPhyloplot2分析肿瘤进化
    单细胞分析实录(12): 如何推断肿瘤细胞
    单细胞分析实录(11): inferCNV的基本用法
    用网络图展示富集分析
    R绘图(6): 拯救初学者——发表级绘图全能包ggpubr
    R绘图(5): 一文学会桑基图的画法
    db2备份与还原
    SAP R/3系统的启动和关闭
    重启sap过程
    DB2重启数据库实例
  • 原文地址:https://www.cnblogs.com/rong86/p/3519774.html
Copyright © 2011-2022 走看看