每个神经元可以接收输入,对其进行处理,并产生输出。这些神经元通过称为 “权重” 的参数相互连接,权重决定了一个神经元的输出如何影响另一个神经元的激活状态。

大家好,我是小寒。

今天给大家介绍一个超强的算法模型,神经网络。

神经网络是一种由大量简单、相互连接的单元(称为“神经元”)组成的计算模型,受到人脑结构的启发。

每个神经元可以接收输入,对其进行处理,并产生输出。这些神经元通过称为 “权重” 的参数相互连接,权重决定了一个神经元的输出如何影响另一个神经元的激活状态。

图片图片

神经网络的组成部分

神经元

神经元是神经网络的基本单元,每个神经元接收输入,对输入进行加权求和,再通过一个激活函数生成输出。

图片图片

  • 输入层:是网络接收外部数据的第一层,每个输入代表不同的特征。
  • 隐藏层:网络中一个或多个中间层,这里进行数据的转换和特征的抽象。
  • 输出层:网络的最后一层,负责产生输出,如分类的标签或者回归问题的数值预测。

权重和偏置

  • 权重:连接网络中神经元的参数,决定了输入信号在网络中传递的强度和影响。
  • 偏置:一种特殊的权重,与每层的每个神经元关联,可以调整激活函数的输入,从而控制神经元的激活方式。

激活函数

  • 激活函数为网络引入非线性,使其能够捕捉复杂的模式。
  • 常见的激活函数包括 Sigmoid、Tanh、ReLU、Leaky ReLU和SELU。

优化器(Optimizer)

优化器用于更新网络的权重和偏置,目的是减少预测输出和实际输出之间的误差。

常用的优化算法包括梯度下降、随机梯度下降(SGD)、Adam等。

损失函数(Loss Function)

损失函数衡量网络预测结果与实际结果的差异,是训练过程中优化的目标。

常见的损失函数有均方误差(MSE)、交叉熵损失等。

建立你的第一个神经网络

让我们为一个非常基本的数据集创建一个简单的神经网络。

我们将使用 sklearn.datasets 的 make_classification 函数来生成合成的二元分类数据集。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow.keras import layers, models

X, y = make_classification(n_samples=1000, n_features=2, n_classes=2, n_clusters_per_class=1, n_redundant=0, random_state=42)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

接下来,将数据集拆分为训练集和测试集。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  • 1.

然后我们定义一个神经网络模型并训练。

model = models.Sequential()
model.add(layers.Dense(units=1, activatinotallow='sigmoid', input_shape=(2,)))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=20, batch_size=32, validation_split=0.2)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

最后,我们在测试集上评估模型。

test_loss, test_accuracy = model.evaluate(X_test, y_test)
print(f'Test Accuracy: {test_accuracy * 100:.2f}%')

Loading

作者 yinhua

发表回复