技术文摘
30 行 JavaScript 代码实现神经网络异或运算器的方法
2024-12-31 14:43:36 小编
30 行 JavaScript 代码实现神经网络异或运算器的方法
在人工智能和机器学习的领域中,神经网络是一种强大的工具。而异或运算作为一种基本的逻辑运算,通过神经网络来实现它可以帮助我们更好地理解神经网络的工作原理和应用。下面将介绍如何用仅仅 30 行的 JavaScript 代码来实现神经网络异或运算器。
我们需要定义神经网络的基本结构。在这个简单的示例中,我们将使用一个具有两个输入节点、两个隐藏节点和一个输出节点的神经网络。
class NeuralNetwork {
constructor() {
this.inputNodes = 2;
this.hiddenNodes = 2;
this.outputNodes = 1;
this.weightsIH = new Array(this.inputNodes * this.hiddenNodes);
this.weightsHO = new Array(this.hiddenNodes * this.outputNodes);
this.initializeWeights();
}
initializeWeights() {
for (let i = 0; i < this.weightsIH.length; i++) {
this.weightsIH[i] = Math.random() - 0.5;
}
for (let i = 0; i < this.weightsHO.length; i++) {
this.weightsHO[i] = Math.random() - 0.5;
}
}
sigmoid(x) {
return 1 / (1 + Math.exp(-x));
}
feedForward(inputs) {
let hidden = new Array(this.hiddenNodes);
for (let i = 0; i < this.hiddenNodes; i++) {
let sum = 0;
for (let j = 0; j < this.inputNodes; j++) {
sum += inputs[j] * this.weightsIH[j * this.hiddenNodes + i];
}
hidden[i] = this.sigmoid(sum);
}
let output = 0;
for (let i = 0; i < this.outputNodes; i++) {
let sum = 0;
for (let j = 0; j < this.hiddenNodes; j++) {
sum += hidden[j] * this.weightsHO[j * this.outputNodes + i];
}
output += this.sigmoid(sum);
}
return output;
}
}
接下来,我们可以使用训练数据对神经网络进行训练,以使其能够准确地执行异或运算。
let neuralNetwork = new NeuralNetwork();
let trainingData = [
{ input: [0, 0], output: 0 },
{ input: [0, 1], output: 1 },
{ input: [1, 0], output: 1 },
{ input: [1, 1], output: 0 }
];
for (let epoch = 0; epoch < 10000; epoch++) {
for (let data of trainingData) {
let output = neuralNetwork.feedForward(data.input);
let error = data.output - output;
for (let i = 0; i < neuralNetwork.weightsHO.length; i++) {
neuralNetwork.weightsHO[i] += error * neuralNetwork.hiddenNodes[i];
}
for (let i = 0; i < neuralNetwork.weightsIH.length; i++) {
neuralNetwork.weightsIH[i] += error * neuralNetwork.inputNodes[i];
}
}
}
最后,我们可以对新的输入数据进行预测,以验证神经网络是否能够正确执行异或运算。
let testInput = [0, 1];
let prediction = neuralNetwork.feedForward(testInput);
console.log("预测结果: ", prediction);
通过以上 30 行左右的 JavaScript 代码,我们成功地实现了一个能够执行异或运算的简单神经网络。这只是神经网络的一个基础示例,实际应用中的神经网络可能会更加复杂,但这个示例为我们理解和探索神经网络的工作原理提供了一个良好的起点。
希望通过这个简单的示例,您能够对神经网络的实现和应用有更深入的理解,并能够在后续的学习和开发中进一步拓展和应用相关知识。
- 前端开发的各类规范:命名、HTML、CSS 与 JS
- 漫画:解读 Linux 管道
- 新手必知的十大 CSS 编辑器
- TRTC 推动高并发与高可用实时音视频互动场景成功落地(附开发福利)
- Python 开发中的两项小常识
- Python 分析微信群聊记录的体验如何?
- TDD 为何如此不受待见?
- 4 个工具,让程序员写文档不再烦恼且事半功倍
- Julia 超越 Python 的 5 大优势:后起之秀的崛起
- 56 岁潘石屹参加全国青少年编程能力等级测试,今被 Python 困住
- 您真的需要 Kubernetes 吗?
- 几行代码实现 ML 模型,低代码机器学习 Python 库已开源
- 通俗来讲,网络爬虫究竟是什么
- IntelliJ IDEA 与 Eclipse:谁更适配 Java 工程师?
- 小姐姐动图展示 10 大 Git 命令,工作流清晰呈现