Я пытаюсь сделать поэлементное сложение для весов двух разных моделей.
Я разработал следующий алгоритм:
async function getWeights(url){
return new Promise(async function(resolve, reject){
const model = await tf.loadLayersModel(url);
resolve(model.layers[0].getWeights);
});
}
async function aggregate(){
return new Promise(function (resolve, reject){
weights.push(getWeights('file://./mymodel/modelReceived.json'));
weights.push(getWeights('file://./mymodel/model.json'));
let averageLayer = tf.layers.average();
console.log(weights.length);
const average = averageLayer.apply([weights[0], weights[1]]);
model.layers[0].setWeights[average];
resolve(model);
});
}
async function returnValue(){
var model = await aggregate();
console.log(model);
}
returnValue();
Однако, Я получаю эту ошибку:
(node:20468) UnhandledPromiseRejectionWarning: Error: A merge layer should be called on an Array of at least 2 inputs. Got 1 input(s).
Я создал модели со следующим кодом:
const modelOne = tf.sequential();
modelOne.add(tf.layers.dense({units: 100, activation: 'relu', inputShape: [50]}));
modelOne.compile({optimizer: 'sgd', loss: 'meanSquaredError', metrics: ['accuracy']});
Может кто-нибудь объяснить мне ошибку? Есть ли альтернативные способы сделать дополнение?