【问题标题】:Reading recustructed vector from autoencoder in DL4J从 DL4J 中的自动编码器读取重构向量
【发布时间】:2018-07-13 07:40:26
【问题描述】:

我的目标是拥有一个自动编码网络,我可以在其中训练身份函数,然后进行前向传递以重建输入。

为此,我尝试使用VariationalAutoencoder,例如类似:

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
                .seed(77147718)
                .trainingWorkspaceMode(WorkspaceMode.NONE)
                .gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)
                .gradientNormalizationThreshold(1.0)
                .optimizationAlgo(OptimizationAlgorithm.CONJUGATE_GRADIENT)
                .list()
                .layer(0, new VariationalAutoencoder.Builder()
                        .activation(Activation.LEAKYRELU)
                        .nIn(100).nOut(15)
                        .encoderLayerSizes(120, 60, 30)
                        .decoderLayerSizes(30, 60, 120)
                        .pzxActivationFunction(Activation.IDENTITY)
                        .reconstructionDistribution(new BernoulliReconstructionDistribution(Activation.SIGMOID.getActivationFunction()))
                        .build())
                .pretrain(true).backprop(false)
                .build();

但是,VariationalAutoencoder 似乎是为训练(并提供)从输入到编码版本的映射而设计的,即在上述示例配置中,大小为 100 的向量到大小为 15 的向量。

但是,我对编码版本不是特别感兴趣,但想训练一个 100 向量到自身的映射。然后,我想通过它运行另外 100 个向量并取回它们的重建版本。

但即使查看VariationalAutoencoder(或AutoEncoder)的API,我也不知道该怎么做。或者这些层不是为这种“端到端使用”而设计的,我必须手动构建一个自动编码网络?

【问题讨论】:

    标签: autoencoder deeplearning4j dl4j


    【解决方案1】:

    您可以了解如何使用 VAE 层提取平均重建from the variational example

    有两种方法可以从变分层获得重建。标准是generateAtMeanGivenZ,它将从图层中抽取样本并为您提供平均值。如果您想要原始样本,您可以使用generateRandomGivenZ。有关所有其他方法,请参阅 the javadoc page

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 2023-03-12
      • 2023-03-04
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2020-07-30
      相关资源
      最近更新 更多