21世纪之后,数学家证明了我们获取的很多数据,可以分解为空间中少数几个基的组合,且组合系数很多为0;亦或者说,大部分数据的主要内容可以由少数几个空间基组成。这就是数据的稀疏特征,是压缩感知的基础。基于这个原理诞生了数据压缩方法,检测方法。这些方法很多都基于最优化理论,在大数据处理上,相比传统的方法,比如PCA,在计算复杂度上有很大的提升。稀疏自编码是其中一种数据压缩方法。
稀疏编码的公式为:
def getloss(latent):
with tf.device('/cpu:0'):
initial = tf.random_normal([252,latent]) * 0.256
A = tf.Variable(initial)
initial = tf.random_normal([latent,252]) * 0.256
Phi = tf.Variable(initial)
IMG=tf.placeholder("float", shape=[252,252])
mu = 0.0001
sparse = tf.matmul(A,Phi)
#print(sparse.get_shape())
loss = sparse - IMG
loss = tf.reshape(loss,[252*252,-1])
A_ravel = tf.reshape(A,[latent*252,-1])
loss = 1./(252.*252.)*tf.nn.l2_loss(loss)
regloss = loss+mu*tf.reduce_mean(tf.abs(A_ravel))#L1#tf.nn.l2_loss(A_ravel)#L2
return regloss,loss,IMG,sparse
然后分别设latent为20和50,得到结果