为什么无监督模型需要实现nn.diag?

时间:2015-09-24 05:39:31

标签: deep-learning torch unsupervised-learning

我正在努力学习深度学习。

在火炬教程中,

https://github.com/torch/tutorials/blob/master/2_supervised/2_model.lua

https://github.com/torch/tutorials/blob/master/3_unsupervised/2_models.lua

监督模式

-- Simple 2-layer neural network, with tanh hidden units
model = nn.Sequential()
model:add(nn.Reshape(ninputs))
model:add(nn.Linear(ninputs,nhiddens))
model:add(nn.Tanh())
model:add(nn.Linear(nhiddens,noutputs))

无监督模式

-- encoder
encoder = nn.Sequential()
encoder:add(nn.Linear(inputSize,outputSize))
encoder:add(nn.Tanh())
encoder:add(nn.Diag(outputSize))
-- decoder
decoder = nn.Sequential()
decoder:add(nn.Linear(outputSize,inputSize))
-- complete model
module = unsup.AutoEncoder(encoder, decoder, params.beta)

为什么无监督模型需要实现nn.Diag?

提前致谢。

1 个答案:

答案 0 :(得分:0)

实际上,它是通过可学习的矢量(矩阵的对角线)进行缩放。这在论文Learning Fast Approximations of Sparse Coding的3.1节中提到。它乘以tanh并一起形成非线性。