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

【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(4)

机器学习(Machine Learning)

简要声明

基于吴恩达教授(Andrew Ng)课程视频
BiliBili课程资源


文章目录

  • 机器学习(Machine Learning)
    • 简要声明
  • 构建神经网络:从基础架构到实际应用
    • 一、引言
    • 二、构建神经网络架构
      • (一)简单神经网络架构示例
      • (二)数字分类模型架构
    • 三、构建神经网络的关键要点
      • (一)层的选择与设计策略
      • (二)激活函数的应用场景
      • (三)数据预处理的核心操作


构建神经网络:从基础架构到实际应用

一、引言

在上一篇博客中,我们初步掌握了 TensorFlow 在深度学习神经网络中的基础代码实现,对简单模型的搭建和核心概念有了基础认知。本篇将深入探索如何构建更复杂、更具实际应用价值的神经网络架构,并结合具体案例,逐步掌握其在不同场景下的实践技巧。

二、构建神经网络架构

(一)简单神经网络架构示例

我们从一个直观的案例入手,解读 “Building a neural network architecture” 图中的网络结构:

在这里插入图片描述

  • 网络结构解析:这是一个两层神经网络,输入层接收特征向量 x ⃗ \vec{x} x ,第一层包含 3 个神经元,采用 sigmoid 激活函数,能将线性输入转换为非线性输出;第二层仅有 1 个神经元,同样使用 sigmoid 函数,用于输出最终预测概率。使用 TensorFlow 的 Sequential 模型可轻松实现该结构:
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Densemodel = Sequential([Dense(units=3, activation="sigmoid"),Dense(units=1, activation="sigmoid")
])
  • 数据准备要点:输入数据 x 是形状为 4 x 2 的 numpy 数组,意味着包含 4 个样本,每个样本具有 2 个特征;目标数据 y 则是对应的标签数据,同样以 numpy 数组形式呈现。例如:
x = np.array([[200.0, 17.0],[120.0, 5.0],[425.0, 20.0],[212.0, 18.0]])
y = np.array([1, 0, 0, 1])
  • 模型训练与预测流程:尽管图中 model.compile(...) 部分未详细展开,但我们知道这一步至关重要,需配置优化器、损失函数等关键参数。通过 model.fit(x, y) 进行模型训练,使其学习输入特征与目标标签的映射关系。训练完成后,使用 model.predict(x_new) 即可对新数据进行预测。

(二)数字分类模型架构

接下来分析 “Digit classification model” 图中的复杂神经网络架构:

在这里插入图片描述

  • 网络深度与设计:该网络包含三层,第一层 25 个神经元用于初步特征提取,第二层 15 个神经元进一步提炼特征,第三层单神经元输出最终预测结果,每层均采用 sigmoid 激活函数。我们可以分步定义各层,再组合成 Sequential 模型:
layer_1 = Dense(units=25, activation="sigmoid")
layer_2 = Dense(units=15, activation="sigmoid")
layer_3 = Dense(units=1, activation="sigmoid")model = Sequential([layer_1, layer_2, layer_3])
  • 数据特征与标签:输入数据 x 是代表数字图像特征的 numpy 数组(如像素值等),由于图像数据维度较高,这里仅展示部分数据结构;目标数据 y 则是对应数字标签,例如:
x = np.array([[0..., 245,..., 17],[0..., 200,..., 184]])
y = np.array([1, 0])
  • 完整训练预测链路:与简单模型类似,先通过 model.compile(...) 配置训练参数,再使用 model.fit(x, y) 完成训练,最终利用训练好的模型对新图像数据进行预测。

三、构建神经网络的关键要点

(一)层的选择与设计策略

在神经网络构建中,层的选择直接决定模型性能:

  • 全连接层(Dense):适用于多种数据类型,其神经元全连接特性使其能捕捉全局特征关系,但计算复杂度较高。

  • 卷积层(Conv):专为图像数据设计,通过卷积核自动提取局部特征,大幅减少参数数量,有效避免过拟合,是计算机视觉领域的核心层。

  • 循环层(RNN 及变体 LSTM、GRU):擅长处理序列数据,如时间序列、文本等,能记忆历史信息,捕捉长距离依赖关系。

(二)激活函数的应用场景

激活函数是赋予神经网络非线性能力的关键:

  • sigmoid 函数:将输出压缩至 (0, 1) 区间,常用于二分类问题的输出层,但存在梯度消失问题,不适用于深层网络。

  • ReLU 函数:以 f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x) 为核心逻辑,有效缓解梯度消失,加速训练,是隐藏层的常用选择。

  • tanh 函数:输出值域为 (-1, 1),相比 sigmoid 有更好的中心化效果,在某些特定场景表现优异。

(三)数据预处理的核心操作

高质量的数据是模型训练的基础:

  • 归一化处理:将图像像素值从 [0, 255] 归一化到 [0, 1],或使用标准化方法将数据转换为均值为 0、方差为 1 的分布,可提升模型稳定性与收敛速度。

  • 维度校验:确保输入数据维度与模型要求一致,如图像数据需注意通道数、尺寸等维度信息,避免因维度错误导致训练失败。


continue…

相关文章:

  • Web前端开发:JavaScript的使用
  • Claude 4 系列 Opus 4 与 Sonnet 4正式发布:Claude 4新特性都有哪些?
  • 树 Part 10
  • nginx 的反向代理 负载均衡 动静分离 重写
  • 利用条件编译实现RTT可控的调试输出
  • 精准核验,实时响应-身份证实名认证接口-身份证二要素核验
  • TCP为什么是三次握手,而不是二次?
  • Solana 数据实时访问的三大工具对比:哪种最适合你的应用?
  • PHP实现签名类
  • 外卖跑腿小程序评价系统框架搭建
  • 嵌入式鸿蒙openharmony应用开发环境搭建与工程创建实现
  • android studio第一次编译apk,用时6分钟
  • HarmonyOS NEXT 使用 relationalStore 实现数据库操作
  • 鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面
  • 一键生成专业流程图:Draw.io与AI结合的高效绘图指南
  • 蓝桥杯2025.5.23每日一题-儿童数
  • DAY 34 GPU训练及类的call方法
  • 如果教材这样讲---开关电源的拓扑结构
  • FTP Bounce Attack:原理、影响与防御
  • DL00912-基于自监督深度聚类的高光谱目标检测含数据集
  • 外贸狼/北京朝阳区优化
  • 点击网络网站/优化师和运营区别
  • wordpress建站镜像/提交网址给百度
  • 做网站要不要花钱做店长/长春seo招聘
  • 制作网站公司年收入多少/新手做外贸怎么入门
  • 经营网站建设/产品网络营销分析