【问题标题】:DeepLearning4J How can I add layers dynamically to a multi layer netowrkDeepLearning4J 如何将层动态添加到多层网络
【发布时间】:2021-03-28 19:55:55
【问题描述】:

我正在尝试测试多层网络的几种组合,但网络配置生成器不允许在构建后添加或删除层。

如果有人可以给我提示,在此先感谢。

【问题讨论】:

  • 迁移学习 api 就是你要找的:github.com/eclipse/deeplearning4j-examples/tree/master/…
  • 可能我没有正确解释自己。根据输入和训练行的数量,我想创建具有特定参数的每一层。每层的配置会有所不同,神经元的数量,层数等。我不知道如何将 Builder 解耦以在 for 循环中单独执行此操作并将其再次添加到 MultiLayerNetworkConfiguration。对不起,但你给出的例子,我无法与此相关。还是非常感谢。 :/ @亚当吉布森
  • @AdamGibson 例如,我可以在 DeepNetts 中这样做: nc.neuralNet = FeedForwardNetwork.builder() .addInputLayer(d.inputs[0].length) -----> .addFullyConnectedLayers (nc.hiddenActivationType, hiddenLayers.stream().mapToInt(i -> i).toArray()) .addOutputLayer(d.outputs[0].length, nc.outputActivationType) ..... .build();如何使用 DL4J 做类似的事情?

标签: neural-network deeplearning4j


【解决方案1】:

我明白了!

这成功了 .list(layers.toArray(new DenseLayer[layers.size()]))

System.out.println("CREATING NETWORK.");
        List<Integer> hiddenLayers = NetworkSizeCalculator.getNetwork(nc.networkStructure, d.inputs[0].length, d.inputs.length);
        List<DenseLayer> layers=new ArrayList<>();
        for(int i=0;i<hiddenLayers.size();i++){
            layers.add(new DenseLayer.Builder()
                    .nIn(hiddenLayers.get(i))
                    .nOut(hiddenLayers.get(i))
                    .weightInit(WeightInit.XAVIER)
                    .activation((Activation) nc.hiddenActivationType)
                    .build());
        }

        MultiLayerConfiguration configuration = new NeuralNetConfiguration.Builder()
                .seed(randomSeed)
                .updater(t.getOptimizer())
                .activation(nc.hiddenActivationType)
                .weightInit(WeightInit.XAVIER)
                .list(layers.toArray(new DenseLayer[layers.size()]))
                .layer(hiddenLayers.size(),new OutputLayer.Builder()
                        .nIn(d.inputs[0].length)
                        .nOut(d.outputs[0].length)
                        .weightInit(WeightInit.XAVIER)
                        .activation((Activation) nc.outputActivationType)
                        .lossFunction(LossFunctions.LossFunction.MSE)
                        .build()).build();

        MultiLayerNetwork network = new MultiLayerNetwork(configuration);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 2018-04-03
    • 2017-11-18
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多