代码之家  ›  专栏  ›  技术社区  ›  edkeveked

从一个模型中获取层并将其分配给另一个模型

  •  0
  • edkeveked  · 技术社区  · 7 年前

    给定使用创建的模型 tf.sequential() ,是否可以获取层并使用它们创建另一个模型 tf.model() ?

    const model = tf.sequential();
    model.add(tf.layers.dense({units: 32, inputShape: [50]}));
    model.add(tf.layers.dense({units: 4}));
    
    // get the layers
     layers
    // use the layers to create another model
    tf.model({layers})
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   edkeveked    7 年前

    获取使用创建的模型的层 tf.sequential ,需要使用该属性 layers 模型的

    const model = tf.sequential();
    
    // first layer
    model.add(tf.layers.dense({units: 32, inputShape: [50]}));
    // second layer
    model.add(tf.layers.dense({units: 4}));
    
    // get all the layers of the model
    const layers = model.layers
    
    // second model
    const model2 = tf.model({
      inputs: layers[0].input, 
      outputs: layers[1].output
    })
    
    model2.predict(tf.randomNormal([1, 50])).print()
    <html>
      <head>
        <!-- Load TensorFlow.js -->
        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.12.0"> </script>
      </head>
    
      <body>
      </body>
    </html>

    也可以使用 apply 方法

    const model = tf.sequential();
    
    // first layer
    model.add(tf.layers.dense({units: 32, inputShape: [50]}));
    // second layer
    model.add(tf.layers.dense({units: 4}));
    
    var input = tf.randomNormal([1, 50])
    var layers = model.layers
    for (var i=0; i < layers.length; i++){
        var layer = layers[i]
        var output = layer.apply(input)
        input = output
        output.print()
    }
    <HTML>
    <头部>
    &!--加载tensorflow.js-->
    <script src=“https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.12.0”></script>
    </head>
    
    <正文>
    </body>
    </html>
    推荐文章