我有这个顺序模型:
this.model = tf.sequential()
this.model.add(tf.layers.dense({units : 16, useBias : true, inputDim : 7})) // input
this.model.add(tf.layers.dense({units : 16, useBias : true, activation: 'sigmoid'})) // hidden
this.model.add(tf.layers.dense({units : 3, useBias : true, activation: 'sigmoid'})) // hidden 2
我为tensorflow.js检查了API,但没有关于获取神经网络的权重(内核)的信息。那么,我怎样才能获得权重然后改变它们,以应用新的权重?(对于无监督学习)
答案 0 :(得分:1)
似乎可能有一种更简单,更清洁的方式来做你想做的事,但无论如何:
调用this.model.getWeights()
将为您提供一个与图层权重和偏差相对应的变量数组。在任何这些数组元素上调用data()
将返回一个可以解析以获得权重的承诺。
我没有尝试手动设置权重,但有this.model.setWeights()
方法。
古德勒克。
答案 1 :(得分:1)
这是打印所有重量的简单方法:
for (let i = 0; i < model.getWeights().length; i++) {
console.log(model.getWeights()[i].dataSync());
}
答案 2 :(得分:0)
要访问第一个密集层的权重(内核和偏差):
const model = tf.sequential();
model.add(tf.layers.dense({units: 4, inputShape: [8]}));
model.add(tf.layers.dense({units: 4}));
model.compile({ optimizer: 'sgd', loss: 'meanSquaredError' });
// kernel:
model.layers[0].getWeights()[0].print()
// bias:
model.layers[0].getWeights()[1].print()