Я пытаюсь создать нейронную сеть (с ml5. js), которая может оценить, является ли движение правильным или неправильным как проект. Я сократил код, пытаясь найти то, что пошло не так, пока у меня не было этого. Потеря, как только я начинаю тренироваться, всегда равна нулю. Погуглив вокруг, я попытался изменить потерю модели, скорость обучения, функцию активации, и я изменил ввод на строго 1 и 0, но я не могу понять, что я делаю неправильно.
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="utf-8">
</head>
<body id="body">
<script src="https://cdn.jsdelivr.net/npm/p5@1.0.0/lib/p5.js"></script>
<script src="https://unpkg.com/ml5@0.4.3/dist/ml5.min.js"></script>
<button id="startTheTraining">Train</button>
<br><button id="addTrainingData">Add Training Data</button>
<script>
let trainingData = [1,1,1,1,0,0,0,0,0];
let nn;
let nn_options;
nn_options = {
debug: true,
inputs: 9,
outputs: 1,
modelLoss: 'meanSquaredError',
optimizer: 'adam',
learningRate: 0.02,
task: 'regression',
layers: [
ml5.tf.layers.dense({
units: 9,
inputShape: [9],
activation: 'relu',
}),
ml5.tf.layers.dense({
units: 100,
activation: 'relu',
}),
ml5.tf.layers.dense({
units: 100,
activation: 'relu',
}),
ml5.tf.layers.dense({
units: 1,
activation: 'softmax',
})
]
};
function setup() {
nn = ml5.neuralNetwork(nn_options);
noLoop();
}
function fetchGameAndTrain() {
createTrainingData();
nn.normalizeData();
console.log("Finished adding training data.");
console.log(nn);
}
document.getElementById("addTrainingData").addEventListener("click", fetchGameAndTrain);
function createTrainingData() {
for(let i = 0; i < 10; i++){
nn.addData(trainingData, [0]);
}
}
function finishedTraining() {
console.log('Training has been finished!');
let testArr = trainingData;
nn.predict(testArr, gotResults);
}
document.getElementById("startTheTraining").addEventListener("click", startTraining);
function startTraining() {
const trainingOptions = {
batchSize: 128,
epochs: 100
}
nn.train(trainingOptions, whileTraining, finishedTraining);
}
function whileTraining(epoch, loss) {
console.log(loss);
}
function gotResults(error, results) {
if (error) {
console.error(error);
return;
}
console.log(results);
}
</script>
</body>
</html>