当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Tensorflow.js tf.layers addWeight()用法及代码示例


Tensorflow.js是由Google开发的开源库,用于在浏览器或节点环境中运行机器学习模型以及深度学习神经网络。

.addWeight() 函数用于向所述层添加权重变量。

用法:

addWeight(name, shape, dtype?, initializer?, 
               regularizer?, trainable?, constraint?)

参数:

  • name:它是权重的新变量的声明名称,类型为字符串。
  • shape:这是重量的规定形状。它的类型为 (null | number)[]。
  • dtype:它是重量的规定数据类型。它是可选的,可以是 float32、int32、bool、complex64 或 string 类型。
  • initializer:它是声明的初始化程序实例。它是可选的,属于 tf.initializers.Initializer 类型。
  • regularizer:它是规定的正则化器实例。它是可选的,属于Regularizer 类型。
  • trainable:它通过假设层本身是类似可训练的来说明是否应该通过反向传播来指示权重。它是可选的并且是布尔类型的。
  • constraint:它是一个可选的可训练对象,属于 tf.constraints.Constraint 类型。

返回值:它返回 LayerVariable。



范例1:

Javascript


// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units:2, inputShape:[1]}));
  
// Calling addWeight() method
const res = model.layers[0].addWeight('wt_var', 
        [1, 5], 'int32', tf.initializers.ones());
  
// Printing output
console.log(res);
model.layers[0].getWeights()[0].print();

输出:

{
  "dtype":"int32",
  "shape":[
    1,
    5
  ],
  "id":1582,
  "originalName":"wt_var",
  "name":"wt_var_2",
  "trainable_":true,
  "constraint":null,
  "val":{
    "kept":false,
    "isDisposedInternal":false,
    "shape":[
      1,
      5
    ],
    "dtype":"int32",
    "size":5,
    "strides":[
      5
    ],
    "dataId":{
      "id":2452
    },
    "id":2747,
    "rankType":"2",
    "trainable":true,
    "name":"wt_var_2"
  }
}
Tensor
     [[0.139703, 0.9717236],]

这里使用 getWeights() 方法打印指定层的权重。

范例2:

Javascript


// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Creating a model
const model = tf.sequential();
  
// Adding a layer
model.add(tf.layers.dense({units:2, inputShape:[1]}));
model.add(tf.layers.dense({units:3}));
  
// Calling addWeight() method
const res1 = model.layers[0].addWeight('w_v', 
    [1.2, 1.3], 'float32', tf.initializers.zeros(), true);
  
const res2 = model.layers[1].addWeight('wv', 
    ["a", "b"], 'int32', tf.initializers.ones(), false);
  
// Printing outputs
console.log(res1);
console.log(res2);
model.layers[0].getWeights()[0].print();
model.layers[1].getWeights()[0].print();

输出:

{
  "dtype":"float32",
  "shape":[
    1.2,
    1.3
  ],
  "id":7,
  "originalName":"w_v",
  "name":"w_v",
  "trainable_":true,
  "constraint":null,
  "val":{
    "kept":false,
    "isDisposedInternal":false,
    "shape":[
      1.2,
      1.3
    ],
    "dtype":"float32",
    "size":1.56,
    "strides":[
      1.3
    ],
    "dataId":{
      "id":4
    },
    "id":9,
    "rankType":"2",
    "trainable":true,
    "name":"w_v"
  }
}
{
  "dtype":"int32",
  "shape":[
    "a",
    "b"
  ],
  "id":8,
  "originalName":"wv",
  "name":"wv",
  "trainable_":true,
  "constraint":null,
  "val":{
    "kept":false,
    "isDisposedInternal":false,
    "shape":[
      "a",
      "b"
    ],
    "dtype":"int32",
    "size":null,
    "strides":[
      "b"
    ],
    "dataId":{
      "id":5
    },
    "id":11,
    "rankType":"2",
    "trainable":true,
    "name":"wv"
  }
}
Tensor
     [[0.835237, 0.960075],]
Tensor
    [[0.4747705 , -0.6734858, 1.1417971],
     [-0.8185477, 0.1940626 , -0.98313 ]]

这里, tf.initializers.zeros() 方法用于生成初始化为零的张量, tf.initializers.ones() 方法用于生成初始化为 1 的张量。

参考: https://js.tensorflow.org/api/latest/#tf.layers.Layer.addWeight




相关用法


注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 Tensorflow.js tf.layers addWeight() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。