30 行 JavaScript 代码助你快速创建神经网络

2024-12-31 14:37:19   小编

30 行 JavaScript 代码助你快速创建神经网络

在当今的科技领域,神经网络的应用日益广泛,从图像识别到自然语言处理,其强大的学习和预测能力令人瞩目。而对于开发者来说,能够用简洁的代码快速创建神经网络是一项极具价值的技能。本文将为您展示如何仅用 30 行 JavaScript 代码来实现这一目标。

让我们来了解一下神经网络的基本组成部分。神经网络通常由输入层、隐藏层和输出层构成,层与层之间通过权重连接。在我们的代码中,将使用简单的数学运算来模拟这些连接和计算。

以下是关键的 30 行 JavaScript 代码:

class NeuralNetwork {
  constructor(inputNodes, hiddenNodes, outputNodes) {
    this.inputNodes = inputNodes;
    this.hiddenNodes = hiddenNodes;
    this.outputNodes = outputNodes;

    this.weightsIH = new Array(hiddenNodes).fill().map(() => new Array(inputNodes).fill(0).map(() => Math.random() - 0.5));
    this.weightsHO = new Array(outputNodes).fill().map(() => new Array(hiddenNodes).fill(0).map(() => Math.random() - 0.5));

    this.biasH = new Array(hiddenNodes).fill(0).map(() => Math.random() - 0.5);
    this.biasO = new Array(outputNodes).fill(0).map(() => Math.random() - 0.5);
  }

  feedForward(inputArray) {
    let hiddenOutput = new Array(this.hiddenNodes).fill(0);
    for (let i = 0; i < this.hiddenNodes; i++) {
      let sum = 0;
      for (let j = 0; j < this.inputNodes; j++) {
        sum += inputArray[j] * this.weightsIH[i][j];
      }
      hiddenOutput[i] = this.sigmoid(sum + this.biasH[i]);
    }

    let output = new Array(this.outputNodes).fill(0);
    for (let i = 0; i < this.outputNodes; i++) {
      let sum = 0;
      for (let j = 0; j < this.hiddenNodes; j++) {
        sum += hiddenOutput[j] * this.weightsHO[i][j];
      }
      output[i] = this.sigmoid(sum + this.biasO[i]);
    }

    return output;
  }

  sigmoid(x) {
    return 1 / (1 + Math.exp(-x));
  }
}

let nn = new NeuralNetwork(2, 3, 1);
let input = [0.5, 0.8];
console.log(nn.feedForward(input));

在上述代码中,我们定义了一个NeuralNetwork类,其中包含了网络的参数初始化、前向传播计算以及激活函数sigmoid

通过这段简洁的代码,您已经迈出了创建神经网络的第一步。当然,这只是一个非常简单的示例,实际的神经网络应用可能需要更复杂的架构和优化算法。但它为您提供了一个基础,让您能够快速理解和尝试神经网络的开发。

无论是您是对机器学习充满好奇的初学者,还是希望在项目中快速应用神经网络的开发者,这 30 行代码都能为您打开一扇新的大门,激发您进一步探索和创新的热情。希望您能利用这段代码,创造出更多令人惊叹的应用和成果。

TAGS: JavaScript 代码 JavaScript 神经网络 神经网络创建 快速实现神经网络

欢迎使用万千站长工具!

Welcome to www.zzTool.com