【发布时间】:2021-04-07 13:25:03
【问题描述】:
我尝试制作简单的感知器来预测真假,其中 1 表示真,假表示 -1。 但我的感知器无法训练自己,而是给出随机值。
这是我的类感知器:
function f(x){
//number is in negative it returns -1
if(x<0){
return -1
//number is in positive it returns 1
}else{
return 1
}
}
class Perceptron{
constructor(){
//two weights
this.weights = new Array(2)
//intitializing two random weights
for(let i = 0; i<this.weights.length; i++){
this.weights[i] = Math.random()*2-1
}
}
//prediction
guess(input){
let sum = 0;
for(let i = 0; i<input.length; i++){
sum += this.weights[i]*input[i]//sum of all product of inputs and weights
}
return f(sum)//returns -1 or 1
}
//training data
train(inputs, target){
this.lr = 0.1//learning rate
let guess = this.guess(inputs)//answer comes either 1 or -1
let err = target - guess//calc error
for(let i = 0; i<this.weights.length; i++){
this.weights[i] += err * inputs[i] * this.lr// re adjust the weights
}
}
}
export default Perceptron;
这是我的主要js:
import Perceptron from "./perceptron.js"
const brain = new Perceptron;
let data = [{
inputx: 1,
inputy: 1,
target: 1
},
{
inputx: 0,
inputy: 1,
target: -1
},
{
inputx: 1,
inputy: 0,
target: -1
},
{
inputx: 0,
inputy: 0,
target: -1
}
]
for(let i = 0; i<data.length; i++){
let inputs = [data[i].inputx, data[i].inputy]
brain.train(inputs, data[i].target)
let guess = brain.guess([1, 0])
console.log(guess)
}
感知器不会预测确切的数据,而是给出随机答案。我在这里做错了什么
【问题讨论】:
标签: javascript node.js algorithm neural-network perceptron