TensorFlow 深度学习 | Layer 基础知识介绍
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖
本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】
TensorFlow 深度学习 | Layer 基础知识介绍
在深度学习的世界里,Layer(层) 是构建神经网络最重要的组成部分。无论是卷积神经网络(CNN)、循环神经网络(RNN),还是全连接网络(DNN),其核心都依赖于各种层的组合与堆叠。
本文将系统介绍 TensorFlow 中的 Layer 基础知识,并通过示例、参数表格和可视化图形,帮助你快速上手模型的构建。
🌟 一、Layer 的概念与作用
在 TensorFlow(尤其是 tf.keras
API)中,Layer 是神经网络的基本构建单元。它主要负责:
- 参数管理:权重(Weights)和偏置(Biases)存储在 Layer 内部
- 前向传播:实现输入张量到输出张量的映射逻辑
- 反向传播支持:通过自动微分计算梯度并更新参数
一个简单的类比:
- Layer 就像乐高积木,你可以把不同类型的积木拼接,最终形成一个复杂的网络结构。
📊 直观图示:Layer 与 Model 的关系
输入张量 --> [Layer1] --> [Layer2] --> ... --> [LayerN] --> 输出张量
🔹 二、常见的 TensorFlow 内置 Layer
TensorFlow 提供了大量现成的 Layer,开发者无需手动实现底层逻辑即可快速搭建模型。
1. Dense(全连接层)
from tensorflow.keras import layers
dense = layers.Dense(units=64, activation='relu')
📑 参数说明表
参数 | 说明 |
---|---|
units | 输出神经元数量,即输出维度 |
activation | 激活函数(如 'relu' , 'sigmoid' , 'softmax' 等) |
use_bias | 是否使用偏置项(默认 True ) |
kernel_initializer | 权重初始化方法(默认 glorot_uniform ) |
bias_initializer | 偏置初始化方法(默认 zeros ) |
2. Conv2D(二维卷积层)
conv = layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu')
📑 参数说明表
参数 | 说明 |
---|---|
filters | 卷积核数量(决定输出通道数) |
kernel_size | 卷积核大小(如 (3,3) ) |
strides | 步幅(默认 (1,1) ) |
padding | 填充方式('valid' 无填充,'same' 保持尺寸不变) |
activation | 激活函数 |
3. Flatten(展平层)
flatten = layers.Flatten()
功能:将高维张量展平为一维向量,常用于卷积层输出到全连接层的过渡。
4. Dropout(随机失活层)
dropout = layers.Dropout(rate=0.5)
📑 参数说明表
参数 | 说明 |
---|---|
rate | 随机失活的比例(0 |
5. BatchNormalization(批量归一化层)
bn = layers.BatchNormalization()
功能:对每一层的输入做标准化处理,加速训练并稳定模型收敛。
⚡ 三、常见激活函数对比
激活函数是 Layer 的核心组成部分,它决定了神经网络的非线性能力。
📑 常见激活函数对比表
激活函数 | 公式/输出范围 | 特点与优缺点 | 常见应用场景 |
---|---|---|---|
Sigmoid | f ( x ) = 1 1 + e − x f(x) = \frac{1}{1+e^{-x}} f(x)= |