当前位置: 首页 > news >正文

河北省建设信息网站十种营销方法

河北省建设信息网站,十种营销方法,ppt网站超链接怎么做,江门网站推广公司目录 基本概念 神经元模型 激活函数 网络结构 训练过程 示例 Python 案例 代码解释 基本概念 人工神经网络是一种模仿人类神经系统的计算模型,由大量的神经元(也称为节点)相互连接组成。这些神经元按照层次结构排列,通常…

目录

基本概念

神经元模型

激活函数

网络结构

训练过程

示例

Python 案例

代码解释


基本概念

人工神经网络是一种模仿人类神经系统的计算模型,由大量的神经元(也称为节点)相互连接组成。这些神经元按照层次结构排列,通常包括输入层、隐藏层和输出层。信息在网络中从输入层传递到隐藏层,再到输出层,在这个过程中,神经元之间通过加权连接进行信息传递和处理。

神经元模型

神经元是神经网络的基本计算单元,其工作原理类似于生物神经元。每个神经元接收多个输入信号,将这些输入信号乘以对应的权重,然后求和,再经过一个激活函数处理,产生输出。数学表达式为:
y = f\left(\sum_{i = 1}^{n}w_{i}x_{i}+b\right)
其中,x_i 是输入信号,w_i是对应的权重,b 是偏置,f是激活函数,y 是输出。

激活函数

激活函数的作用是引入非线性因素,使得神经网络能够学习复杂的非线性关系。常见的激活函数有:

  • Sigmoid 函数f(x)=\frac{1}{1 + e^{-x}},输出范围在(0, 1)之间,常用于二分类问题。
  • ReLU 函数f(x)=\max(0, x),计算简单,能有效缓解梯度消失问题,在深度学习中广泛应用。
  • Tanh 函数f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}},输出范围在(-1, 1)之间。
网络结构
  • 输入层:接收外部输入数据,神经元的数量通常等于输入特征的数量。
  • 隐藏层:可以有一个或多个,隐藏层中的神经元对输入数据进行特征提取和转换,层数越多,网络的表达能力越强,但也越容易过拟合。
  • 输出层:输出网络的预测结果,神经元的数量根据具体任务而定,例如二分类问题通常有 1 个输出神经元,多分类问题的输出神经元数量等于类别数。
训练过程

神经网络的训练过程主要是通过调整神经元之间的权重和偏置,使得网络的输出尽可能接近真实标签。常用的训练算法是反向传播算法(Backpropagation),其基本步骤如下:

  1. 前向传播:将输入数据传入网络,依次计算各层神经元的输出,直到得到输出层的预测结果。
  2. 计算损失:使用损失函数(如均方误差、交叉熵损失等)计算预测结果与真实标签之间的差异。
  3. 反向传播:根据损失函数的梯度,从输出层开始,逐层计算每个神经元的梯度,以确定权重和偏置的调整方向。
  4. 参数更新:使用优化算法(如随机梯度下降、Adam 等)根据计算得到的梯度更新权重和偏置。

示例

假设我们要构建一个简单的神经网络来识别手写数字(MNIST 数据集)。输入层有 784 个神经元(因为每个手写数字图像是 28x28 像素,展开后是 784 维向量),隐藏层可以设置为 128 个神经元,输出层有 10 个神经元(对应 0 - 9 这 10 个数字类别)。训练过程中,网络通过不断调整权重和偏置,学习如何从输入的图像数据中提取特征,从而准确预测图像对应的数字。

Python 案例

以下是使用 Python 和 Keras 库构建一个简单的全连接神经网络来对 MNIST 手写数字进行分类的示例:

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt# 加载MNIST数据集
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()# 数据预处理
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images / 255.0
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images / 255.0# 构建神经网络模型
model = keras.Sequential([keras.layers.Dense(128, activation='relu', input_shape=(28 * 28,)),keras.layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(train_images, train_labels, epochs=5)# 评估模型
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"Test accuracy: {test_acc}")# 进行预测
predictions = model.predict(test_images)
# 显示预测结果示例
def plot_image(i, predictions_array, true_label, img):predictions_array, true_label, img = predictions_array, true_label[i], img[i]plt.grid(False)plt.xticks([])plt.yticks([])img = img.reshape(28, 28)plt.imshow(img, cmap=plt.cm.binary)predicted_label = np.argmax(predictions_array)if predicted_label == true_label:color = 'blue'else:color = 'red'plt.xlabel(f"{predicted_label} {100 * np.max(predictions_array):2.0f}% ({true_label})",color=color)def plot_value_array(i, predictions_array, true_label):predictions_array, true_label = predictions_array, true_label[i]plt.grid(False)plt.xticks(range(10))plt.yticks([])thisplot = plt.bar(range(10), predictions_array, color="#777777")plt.ylim([0, 1])predicted_label = np.argmax(predictions_array)thisplot[predicted_label].set_color('red')thisplot[true_label].set_color('blue')num_rows = 5
num_cols = 3
num_images = num_rows * num_cols
plt.figure(figsize=(2 * 2 * num_cols, 2 * num_rows))
for i in range(num_images):plt.subplot(num_rows, 2 * num_cols, 2 * i + 1)plot_image(i, predictions[i], test_labels, test_images)plt.subplot(num_rows, 2 * num_cols, 2 * i + 2)plot_value_array(i, predictions[i], test_labels)
plt.tight_layout()
plt.show()

代码解释

  1. 数据加载与预处理:使用 keras.datasets.mnist.load_data() 加载 MNIST 数据集,将图像数据从二维矩阵转换为一维向量,并将像素值归一化到 0 - 1 之间。
  2. 模型构建:使用 keras.Sequential 构建一个简单的全连接神经网络,包含一个有 128 个神经元的隐藏层(使用 ReLU 激活函数)和一个有 10 个神经元的输出层(使用 Softmax 激活函数)。
  3. 模型编译:使用 model.compile 配置模型的优化器(Adam)、损失函数(sparse_categorical_crossentropy)和评估指标(准确率)。
  4. 模型训练:使用 model.fit 对模型进行训练,设置训练轮数为 5。
  5. 模型评估:使用 model.evaluate 评估模型在测试集上的性能。
  6. 预测与可视化:使用 model.predict 对测试集进行预测,并通过绘图函数可视化预测结果。
http://www.dtcms.com/a/532003.html

相关文章:

  • qt调用摄像头进行yolo的实时检测
  • 网站备案通过什么可以备案wordpress熊掌号插件
  • IntelliJ IDEA 使用 Lombok 报错:“Lombok requires enabled annotation processing” 解决方案
  • qtmqtt: 一个开源且好用的mqtt开源客户端
  • 数据仓库——总线架构详解
  • 软件中锁机制全解析:从线程到分布式锁
  • 郴州网站设计做外墙资料的网站
  • 【Swift】LeetCode 238.除自身以外数组的乘积
  • GitLab
  • GitHub等平台形成的开源文化正在重塑继任者
  • 【区块链学习笔记】17:以太坊中的GHOST协议
  • 【SpringAI】10.结构化输出
  • 递归经典例题
  • SpringMVC入门:配置、映射与参数处理​
  • 前端笔试复盘 | 知识点总结
  • 春招准备之Java基础篇
  • 有哪几个网站可以做贸易网站备案要多少天
  • 【编程语言】Java基础语法回顾,大学期末考试速通版(选择填空、程序、实践)
  • Redis(85)Redis缓存与Memcached缓存有何区别?
  • 【iOS】自动引用计数(一)
  • 有什么免费的网站wordpress 采集器
  • 网站建设创新成果网站营销如何做
  • 设计模式-享元模式(Flyweight)
  • TMS320C6000 VLIW架构并行编程实战:加速AI边缘计算推理性能
  • 算法学习记录08——并归的应用(LeetCode[315])
  • 【机器人学中的状态估计】3.6.6 习题证明
  • Kafka生产者详解(下):数据去重(幂等性)与数据有序
  • Data Ingestion: Architectural Patterns
  • 网站建设心得体会范文郑州男科医院排行哪家最好
  • 【datawhale秋训营】动手开发RAG系统(应急安全方向) TASK02