人工智能:深度学习中的卷积神经网络(CNN)实战应用

人工智能:深度学习中的卷积神经网络(CNN)实战应用

人工智能:深度学习中的卷积神经网络(CNN)实战应用

在这里插入图片描述

1.1 本章学习目标与重点

💡 学习目标:掌握卷积神经网络的核心原理、经典网络架构,以及在图像分类任务中的实战开发流程。
💡 学习重点:理解卷积层、池化层的工作机制,学会使用 TensorFlow 搭建 CNN 模型并完成训练与评估。

1.2 卷积神经网络核心原理

1.2.1 卷积层:提取图像局部特征

💡 卷积层是 CNN 的核心组件,其作用是通过卷积核对输入图像进行局部特征提取。
卷积核本质是一个小型的权重矩阵。它会按照设定的步长在图像上滑动。每滑动一次,卷积核就会与对应区域的像素值做内积运算,输出一个特征值。
这个过程可以捕捉图像的边缘、纹理等基础特征。
⚠️ 注意:卷积核的数量决定了输出特征图的通道数,数量越多,提取的特征维度越丰富。

① 定义一个 3×3 大小的卷积核,步长设为 1,填充方式为 SAME
② 对 28×28 单通道的手写数字图像进行卷积操作
③ 输出特征图的尺寸保持 28×28,通道数由卷积核数量决定

import tensorflow as tf from tensorflow.keras.layers import Conv2D # 定义卷积层 conv_layer = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), padding="SAME", input_shape=(28,28,1))# 模拟输入:1 张 28×28 单通道图像 input_image = tf.random.normal(shape=(1,28,28,1))# 执行卷积运算 output_feature = conv_layer(input_image)print("输出特征图形状:", output_feature.shape)

1.2.2 池化层:降低特征维度与防止过拟合

💡 池化层的作用是对卷积层输出的特征图进行降采样。它可以在保留关键特征的同时,减少参数数量和计算量。
常见的池化方式有两种:最大池化平均池化
最大池化选取局部区域内的最大值作为输出,能更好保留纹理特征。平均池化选取局部区域的平均值,能保留背景特征。

① 定义 2×2 大小的最大池化层,步长设为 2
② 对卷积层输出的特征图进行池化操作
③ 输出特征图的尺寸会缩小为原来的 1/2

from tensorflow.keras.layers import MaxPooling2D # 定义最大池化层 pool_layer = MaxPooling2D(pool_size=(2,2), strides=(2,2), padding="SAME")# 对卷积层输出的特征图做池化 pool_output = pool_layer(output_feature)print("池化后特征图形状:", pool_output.shape)

1.3 经典 CNN 架构——LeNet-5

💡 LeNet-5 是由 Yann LeCun 提出的经典卷积神经网络。它专门用于手写数字识别任务,奠定了现代 CNN 的基础架构。
LeNet-5 的结构分为 5 层:2 个卷积层、2 个池化层、1 个全连接层,最后通过 Softmax 输出分类结果。

1.3.1 LeNet-5 网络结构搭建

from tensorflow.keras import Sequential from tensorflow.keras.layers import Flatten, Dense # 搭建 LeNet-5 模型 lenet5 = Sequential([# 卷积层 1:6 个 5×5 卷积核,步长 1,无填充 Conv2D(filters=6, kernel_size=(5,5), strides=(1,1), padding="VALID", input_shape=(28,28,1), activation="tanh"),# 池化层 1:2×2 最大池化,步长 2 MaxPooling2D(pool_size=(2,2), strides=(2,2), padding="VALID"),# 卷积层 2:16 个 5×5 卷积核,步长 1,无填充 Conv2D(filters=16, kernel_size=(5,5), strides=(1,1), padding="VALID", activation="tanh"),# 池化层 2:2×2 最大池化,步长 2 MaxPooling2D(pool_size=(2,2), strides=(2,2), padding="VALID"),# 展平层:将特征图转为一维向量 Flatten(),# 全连接层 1:120 个神经元 Dense(units=120, activation="tanh"),# 全连接层 2:84 个神经元 Dense(units=84, activation="tanh"),# 输出层:10 个神经元对应 10 个数字类别,Softmax 激活 Dense(units=10, activation="softmax")])# 查看模型结构 lenet5.summary()

1.3.2 LeNet-5 模型编译与训练

💡 本次实战使用 MNIST 手写数字数据集。这个数据集包含 60000 张训练图像和 10000 张测试图像,每张图像都是 28×28 的灰度图。

① 加载 MNIST 数据集并进行归一化处理
② 编译模型:选择 Adam 优化器、交叉熵损失函数
③ 训练模型:设置批次大小 32,训练轮数 10 轮

from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical # 1. 加载并预处理数据(x_train, y_train),(x_test, y_test)= mnist.load_data()# 归一化:将像素值从 0-255 转为 0-1 x_train = x_train /255.0 x_test = x_test /255.0# 增加通道维度:(样本数, 28, 28) → (样本数, 28, 28, 1) x_train = tf.expand_dims(x_train, axis=-1) x_test = tf.expand_dims(x_test, axis=-1)# 标签独热编码 y_train = to_categorical(y_train, num_classes=10) y_test = to_categorical(y_test, num_classes=10)# 2. 编译模型 lenet5.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])# 3. 训练模型 history = lenet5.fit(x_train, y_train, batch_size=32, epochs=10, validation_split=0.1)# 4. 评估模型 test_loss, test_acc = lenet5.evaluate(x_test, y_test)print(f"测试集准确率:{test_acc:.4f}")

1.4 实战问题与解决方案

1.4.1 过拟合问题处理

⚠️ 问题:训练过程中,训练集准确率持续上升,但验证集准确率出现下降。这就是过拟合现象。
💡 解决方案:加入Dropout 层随机丢弃部分神经元,防止模型过度依赖某些特征。

在全连接层后加入 Dropout 层的示例代码:

from tensorflow.keras.layers import Dropout # 修改模型,加入 Dropout 层 lenet5_with_dropout = Sequential([ Conv2D(6,(5,5), strides=1, padding="VALID", input_shape=(28,28,1), activation="tanh"), MaxPooling2D((2,2), strides=2, padding="VALID"), Conv2D(16,(5,5), strides=1, padding="VALID", activation="tanh"), MaxPooling2D((2,2), strides=2, padding="VALID"), Flatten(), Dense(120, activation="tanh"), Dropout(0.2),# 丢弃 20% 的神经元 Dense(84, activation="tanh"), Dropout(0.2), Dense(10, activation="softmax")]) lenet5_with_dropout.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])

1.4.2 模型优化技巧

💡 技巧 1:使用ReLU 激活函数替换 tanh 函数。ReLU 能缓解梯度消失问题,加速模型收敛。
💡 技巧 2:使用批量归一化(BatchNormalization)。它可以使每一层的输入分布更稳定,提升训练效率。
💡 技巧 3:调整学习率。使用学习率衰减策略,在训练后期降低学习率,让模型更精准收敛。

1.5 本章总结

✅ 卷积层通过卷积核提取图像局部特征,池化层通过降采样减少参数与计算量。
✅ LeNet-5 是经典 CNN 架构,由卷积层、池化层、全连接层组成,适用于小尺寸图像分类。
✅ 实战中可通过加入 Dropout 层、使用 ReLU 激活函数等方法优化模型,提升泛化能力。

Read more

SillyTavern(酒馆)一个可以安装在电脑(和安卓手机)上的人工智能互动角色聊天/角色扮演游戏

SillyTavern(酒馆)一个可以安装在电脑(和安卓手机)上的人工智能互动角色聊天/角色扮演游戏

SillyTavern 是一个可以安装在电脑(和安卓手机)上的用户界面,让您可以与文本生成的人工智能互动,并与您或社区创建的角色聊天/玩角色扮演游戏。 官网:SillyTavern/SillyTavern: LLM Frontend for Power Users. 当然可惜的是说明书是英文的:What is SillyTavern? | docs.ST.app 功能亮点‌: 1. ‌全平台适配界面‌:专为移动设备优化,操作流畅,体验友好。 2. ‌多模型兼容‌:无缝支持主流AI服务与模型,涵盖KoboldAI/CPP、Horde、NovelAI、Ooba、OpenAI、OpenRouter、Claude、Scale等,满足多样化需求。 3. ‌沉浸式交互模式‌:独创「Galgame式老婆模式」,结合动态角色互动与情感化叙事,打造个性化体验。 4. ‌Horde SD整合‌

By Ne0inhk

Mac Mini部署OpenClaw实战指南:打造7×24小时全天候AI数字管家

引言:当Mac Mini遇上OpenClaw 2026年,开源AI智能体OpenClaw已成为技术圈最炙手可热的话题——短短数月斩获超16.5万GitHub星标,社区成员突破8900人。这款原名Clawdbot/Moltbot的开源框架,能将大语言模型的推理能力转化为真实的系统操作力:管理文件、执行终端指令、调用本地应用、连接WhatsApp/Telegram/iMessage等数十种通信渠道。 而Mac Mini,特别是搭载M4芯片的最新款,凭借其极致能效、静音运行、统一内存架构三大特质,成为运行OpenClaw的公认理想宿主。本文将手把手教你将一台Mac Mini打造成全天候在线的AI数字管家,同时深入探讨安全加固、性能优化与生产级部署的最佳实践。 一、为什么是Mac Mini + OpenClaw? 1.1 OpenClaw:本地AI智能体的核心价值 OpenClaw并非简单的聊天机器人,而是一个具备系统级权限的自主执行框架: * 文件系统操作:创建、编辑、删除文件,整理目录结构 * 终端指令执行:运行Shell命令,调用系统工具 * 应用控制:操作浏览器、

By Ne0inhk
内存暴涨700%背后的惊天真相:AI正在吞噬一切!能源·隐私·绿色三大维度深度拆解

内存暴涨700%背后的惊天真相:AI正在吞噬一切!能源·隐私·绿色三大维度深度拆解

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:未来思考,本专栏结合当前国家战略和实时政治,对未来行业发展的思考 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 🔥内存暴涨700%背后的惊天真相:AI正在吞噬一切!能源·隐私·绿色三大维度深度拆解 |前言| 最近装机的小伙伴们欲哭无泪:DDR5内存价格一路狂飙,部分DRAM现货价格在过去一年暴涨近700% 。大家习惯性吐槽“厂商放火”、“产能不足”,但很少有人看到,这场涨价风暴的真正推手,是那只名为“AI”的巨兽。 当你还在为多花几百块钱买内存心疼时,国家正在西部荒漠建起一座座数据中心,科技巨头正在为“吃电怪兽”抢购每一颗芯片。2026年,大型科技公司的AI相关投资预计将达到6500亿美元,较去年增长约80% 。 今天,我们从能源供应、隐私安全、绿色AI 三个维度,结合东数西算、算电协同、

By Ne0inhk
新一代 AI 编程工具 Google Antigravity 下载与安装指南

新一代 AI 编程工具 Google Antigravity 下载与安装指南

Google Antigravity 下载与安装指南 2025 年 11 月 18 日,Google 向开发者社区投下了一颗重磅炸弹:在发布 Gemini 3 最强大语言模型的同时,同步推出了 Antigravity——一款免费的「智能体化」开发平台。 这并不是一次临时起意的突袭。早在 2025 年 7 月,Google 就斥资 24 亿美元收购了 Windsurf 团队,CEO Varun Mohan 及核心工程人才悉数加入 Google DeepMind。Antigravity 正是这次战略布局的结晶——它不只是提供代码建议,而是能自主规划、编写、测试并验证整个应用程序。这意味着,开发者可以从繁琐的语法细节中解放出来,将精力聚焦于系统架构与核心业务逻辑。 接下来,我们将详细介绍如何在 Mac、

By Ne0inhk