查看原文
其他

快速学习一个算法,神经网络

程序员小寒 程序员学长
2024-09-13

大家好,我是小寒。

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

神经网络是一种由大量简单、相互连接的单元(称为“神经元”)组成的计算模型,受到人脑结构的启发。
 
每个神经元可以接收输入,对其进行处理,并产生输出。这些神经元通过称为 “权重” 的参数相互连接,权重决定了一个神经元的输出如何影响另一个神经元的激活状态。

神经网络的组成部分

神经元

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

  • 输入层:是网络接收外部数据的第一层,每个输入代表不同的特征。

  • 隐藏层:网络中一个或多个中间层,这里进行数据的转换和特征的抽象。

  • 输出层:网络的最后一层,负责产生输出,如分类的标签或者回归问题的数值预测。

权重和偏置

  • 权重:连接网络中神经元的参数,决定了输入信号在网络中传递的强度和影响。

  • 偏置:一种特殊的权重,与每层的每个神经元关联,可以调整激活函数的输入,从而控制神经元的激活方式。

激活函数

  • 激活函数为网络引入非线性,使其能够捕捉复杂的模式。

  • 常见的激活函数包括 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)
接下来,将数据集拆分为训练集和测试集。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
然后我们定义一个神经网络模型并训练。
model = models.Sequential()
model.add(layers.Dense(units=1, activation='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)
最后,我们在测试集上评估模型。

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

最后



今天的分享就到这里。如果觉得近期的文章不错,请点赞,转发安排起来。‍‍欢迎大家进高质量 python 学习群

「进群方式:加我微信,备注 “python”」



往期回顾


Fashion-MNIST 服装图片分类-Pytorch实现

python 探索性数据分析(EDA)案例分享

深度学习案例分享 | 房价预测 - PyTorch 实现

万字长文 |  面试高频算法题之动态规划系列

面试高频算法题之回溯算法(全文六千字)  

    



如果对本文有疑问可以加作者微信直接交流。

继续滑动看下一个
程序员学长
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存