首页 > 其他分享 >零基础 AI 入门实战(深度学习 + Pytorch)

零基础 AI 入门实战(深度学习 + Pytorch)

时间:2024-11-20 15:30:01浏览次数:1  
标签:入门 AI 模型 神经网络 学习 Pytorch self

零基础 AI 入门实战(深度学习 + Pytorch)
一、引言
在当今这个科技飞速发展的时代,人工智能(AI)已经渗透到了我们生活和工作的方方面面。深度学习作为 AI 领域中的强大技术,更是展现出了巨大的应用潜力。而 Pytorch 作为一款广受欢迎的深度学习框架,为我们实现各种 AI 应用提供了便捷的工具。对于零基础跨专业的朋友们来说,可能会觉得 AI、深度学习这些概念高深莫测,但其实只要跟着一些简单易懂的实战案例一步步来,也能快速入门并提升自己的相关技能哦。接下来,咱们就开启这趟零基础 AI 入门实战之旅吧。
二、深度学习基础概念
(一)什么是深度学习
简单来说,深度学习就是让计算机模仿人类大脑的神经网络来学习和处理数据的一种技术。想象一下,人类通过不断观察、学习各种事物来积累经验并做出判断,深度学习中的神经网络也是通过大量的数据去 “学习”,然后能够对新的数据进行分类、预测等操作。比如说,我们可以给它成千上万张猫和狗的图片,让它学习分辨哪些是猫、哪些是狗,等它学习好了,再给它一张没见过的图片,它就能判断出这是猫还是狗了。
(二)神经网络的构成
神经网络是由很多神经元组成的,就好比人类大脑是由无数个神经细胞构成一样。一个基本的神经元会接收一些输入数据,然后对这些输入进行加权计算,并通过一个激活函数产生一个输出。多个这样的神经元按照不同的层次结构组合起来,就形成了神经网络。常见的神经网络结构有多层感知机(MLP)、卷积神经网络(CNN)用于处理图像数据、循环神经网络(RNN)及其变体(比如 LSTM、GRU)适合处理序列数据等。
三、Pytorch 简介
(一)Pytorch 的特点
Pytorch 是一个开源的深度学习框架,它有很多优点,对于初学者特别友好。首先,它的编程风格非常直观,采用了 Python 语言,如果你有一点 Python 的基础,上手就会很容易,就算没有也没关系,Python 本身也是一门容易学习的编程语言。其次,Pytorch 有动态计算图,这意味着我们可以在运行过程中灵活地改变计算的流程,方便调试代码和理解模型的运行机制。另外,它有强大的社区支持,遇到问题在网上一搜,就能找到很多解决办法和别人分享的经验。
(二)安装 Pytorch
安装 Pytorch 其实并不复杂,以下是大致的步骤(以常见的 Windows 和 Linux 系统为例):
Windows 系统:
确保你的电脑已经安装好了 Python,可以去 Python 官方网站下载最新版本安装包进行安装,安装过程中记得勾选添加到系统路径选项哦,方便后续在命令行里直接使用 Python 命令。
打开命令提示符(CMD),输入以下命令来安装 Pytorch(这里假设你要安装 CPU 版本,如果有 GPU 且配置好了相应环境,可以选择安装 GPU 版本,安装命令稍有不同):
bash
复制
pip install torch torchvision torchaudio
Linux 系统:
同样先安装好 Python,一般 Linux 系统自带 Python,但可能版本较低,可以通过包管理器或者源码编译等方式更新到合适版本。
打开终端,输入以下命令安装 Pytorch(以 CPU 版本为例):
bash
复制
pip install torch torchvision torchaudio
安装过程中可能会因为网络等原因出现一些小问题,耐心多试几次或者更换一下镜像源通常就能解决啦。
四、实战案例:图像分类
(一)准备数据
我们先来做一个简单的图像分类任务,把图像分为两类,比如是花朵和动物。首先要收集相关的数据,可以从网上的一些公开数据集去下载,像 CIFAR-10、Caltech 101 等,这些数据集里已经有做好分类标注的图像了。当然,如果想自己收集一些特定的图片也可以,不过需要手动标注一下类别哦。把收集好的数据整理到对应的文件夹里,比如一个文件夹放花朵图片,另一个文件夹放动物图片。
(二)数据预处理
拿到原始数据后还不能直接用它去训练模型,需要进行一些预处理操作。在 Pytorch 里,可以使用 torchvision 这个库来帮忙。常见的预处理步骤包括调整图像大小到统一尺寸(因为神经网络输入的图像尺寸一般要求固定)、归一化图像像素值(把像素值范围从 0 - 255 映射到 0 - 1 或者其他合适的范围,有助于模型训练)等。以下是一段简单的代码示例展示如何进行数据预处理:
python
复制
import torch
import torchvision.transforms as transforms

定义数据预处理的操作组合

transform = transforms.Compose([
transforms.Resize((224, 224)), # 调整图像大小为 224x224
transforms.ToTensor(), # 将图像转为张量格式,同时归一化像素值到 0-1
])
(三)构建模型
对于这个简单的图像分类任务,我们可以构建一个简单的卷积神经网络(CNN)模型。下面是一个用 Pytorch 构建的简单 CNN 模型的代码示例:
python
复制
import torch.nn as nn

class SimpleCNN(nn.Module):
def init(self):
super(SimpleCNN, self).init()
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1) # 第一个卷积层,输入通道为 3(彩色图像 RGB),输出通道为 16
self.relu = nn.ReLU() # 激活函数
self.pool = nn.MaxPool2d(2, 2) # 最大池化层
self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1) # 第二个卷积层
self.fc1 = nn.Linear(32 * 112 * 112, 128) # 全连接层,这里的输入维度根据前面卷积池化后的结果计算得出
self.fc2 = nn.Linear(128, 2) # 输出层,输出两个类别(花朵和动物)的预测概率

def forward(self, x):
    x = self.conv1(x)
    x = self.relu(x)
    x = self.pool(x)
    x = self.conv2(x)
    x = self.relu(x)
    x = self.pool(x)
    x = x.view(-1, 32 * 112 * 112)  # 展平操作,方便输入全连接层
    x = self.fc1(x)
    x = self.relu(x)
    x = self.fc2(x)
    return x

(四)训练模型
有了模型和处理好的数据后,就可以开始训练模型啦。训练过程主要包括设置好一些训练参数,比如学习率(它决定了模型每次更新参数的幅度大小,太大会导致模型训练不稳定,太小又会让训练速度很慢)、训练的轮数(也就是整个数据集反复让模型学习多少次)等,然后通过循环让模型不断地在训练数据上进行前向传播(根据输入数据得到预测结果)和反向传播(根据预测结果和真实标签的差异来调整模型的参数)。以下是一段简单的训练代码示例:
python
复制
import torch.optim as optim

创建模型实例

model = SimpleCNN()

定义损失函数,这里使用交叉熵损失函数,适合分类任务

criterion = nn.CrossEntropyLoss()

定义优化器,使用随机梯度下降(SGD)优化器,学习率设为 0.001

optimizer = optim.SGD(model.parameters(), lr=0.001)

假设我们已经把处理好的数据加载到了 data_loader 里(具体加载数据的代码这里省略,可以用 Pytorch 的 DataLoader 类来实现)

for epoch in range(10): # 训练 10 轮
running_loss = 0.0
for i, data in enumerate(data_loader, 0):
inputs, labels = data # 获取输入图像和对应的标签
optimizer.zero_grad() # 每次迭代前先把梯度清零
outputs = model(inputs) # 前向传播
loss = criterion(outputs, labels) # 计算损失
loss.backward() # 反向传播
optimizer.step() # 更新模型参数
running_loss += loss.item()
print(f'Epoch {epoch + 1}, Loss: {running_loss / len(data_loader)}')
(五)评估模型
训练好模型后,我们要看看它的效果怎么样呀,这时候就需要在一些测试数据上进行评估了。一般通过计算准确率等指标来衡量模型的好坏。以下是简单的评估代码示例:
python
复制
correct = 0
total = 0
with torch.no_grad(): # 在评估阶段不需要计算梯度,节省内存和计算资源
for data in test_loader: # 假设测试数据已经加载到 test_loader 里
images, labels = data
outputs = model(images)
_, predicted = torch.max(outputs.data, 1) # 获取预测的类别
total += labels.size(0)
correct += (predicted == labels).sum().item()

print(f'Accuracy of the model on the test images: {100 * correct / total}%')
五、总结与提升
通过这个简单的图像分类实战案例,相信零基础跨专业的朋友们对 AI 中的深度学习以及 Pytorch 框架有了一个初步的认识和实践体验啦。当然,这只是一个入门的小案例,AI 领域还有很多有趣又复杂的内容等着大家去探索呢。
可以进一步尝试不同的网络结构,比如把我们上面的简单 CNN 变得更复杂一点,增加更多的卷积层、全连接层等,看看模型的性能会不会提升。还可以尝试处理其他类型的数据,像文本数据、音频数据等,对应地学习使用不同的神经网络模型,比如用循环神经网络处理文本,用卷积神经网络处理音频的频谱图等。另外,多去学习别人优秀的项目经验,阅读相关的书籍和论文,参加一些线上线下的 AI 学习社区或者论坛,不断交流和实践,就能在 AI 这个充满魅力的领域里不断提升自己啦。希望大家都能在 AI 学习之路上收获满满哦!

标签:入门,AI,模型,神经网络,学习,Pytorch,self
From: https://www.cnblogs.com/kkd123/p/18558495

相关文章

  • AI智能分析视频分析网关周界入侵算法详解
    随着科技的迅猛发展和安全需求的不断提升,智能监控系统正逐渐成为维护公共安全的重要手段。其中,视频分析网关作为这一系统的核心组成部分,凭借其先进的视频处理和智能分析功能,正在有效提升安防监控的效率和准确性。本文将深入探讨AI智能分析视频分析网关的工作原理、相较传统监控方......
  • Djourney新手入门基础:AI摄影+AI设计+AI绘画——AIGC作图的探索之旅
    Djourney新手入门基础:AI摄影+AI设计+AI绘画——AIGC作图的探索之旅随着人工智能技术的飞速发展,AIGC(ArtificialIntelligenceforGenerativeContent)技术正在重塑我们的创作方式,特别是在摄影、设计和绘画领域。Djourney作为一款集成了AI技术的强大作图工具,为创意者提供了无限可能......
  • 智能绘画Midjourney AIGC在设计领域中的应用从入门到精通
    智能绘画MidjourneyAIGC在设计领域中的应用:从入门到精通引言随着人工智能技术的飞速发展,AIGC(ArtificialIntelligenceforGenerativeContent)技术正逐步渗透到各个创作领域,特别是在设计行业中引发了革命性的变革。Midjourney作为AI绘画技术的代表,以其强大的图片生成能力和多样......
  • AI大模型系统实战:挑战与应用多领域,人工智能大模型的实际应用场景
    AI大模型系统实战:挑战与应用多领域随着人工智能技术的飞速发展,AI大模型系统已成为技术革新的重要驱动力。这些大型预训练模型,如GPT、BERT等,通过大规模无监督学习积累了丰富的知识,并在自然语言处理、图像识别、智能推荐等多个领域展现出巨大的应用潜力。本文将深入探讨AI大模型系......
  • 程序员的 AI 启蒙课:ChatGPT+ Copilot开发Vue3 仿简书项目 90%代码AI生成
    程序员的AI启蒙课:ChatGPT+Copilot开发Vue3仿简书项目,90%代码AI生成在人工智能(AI)技术日新月异的今天,程序员们迎来了前所未有的机遇与挑战。特别是随着ChatGPT和GitHubCopilot等智能编程助手的兴起,软件开发的方式正在发生深刻变革。本文将带领大家踏上一场AI辅助......
  • nginx 普通用户使用80端口启动nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (13
    介绍当我们用普通用户执行启动nginx时,无法启动成功,报错nginx:[emerg]bind()to0.0.0.0:80failed(13:Permissiondenied)报错原因大家都知道默认情况下linux的1024以下端口是只有root用户才有权限占用,于是我们的tomcat,apache,nginx等等程序如果想要用普通用户来占用80端......
  • RTSP播放器EasyPlayer.js播放器分辨率高的视频在设置container的宽高较小时,会出现锯齿
    流媒体播放器的核心技术及发展趋势展现了其在未来数字生活中的无限潜力。随着技术的不断进步和市场的持续发展,流媒体播放器将在内容创新、用户体验优化以及跨平台互通等方面取得新的突破。对于从业者而言,把握这些趋势并积极应对挑战将是实现成功的关键。EasyPlayer播放器属于一......
  • 大咖面对面 | IAICC嘉宾莅临瑞云科技参观交流
    ​11月14日,首届IAICC国际人工智能及创意大会举办前夕,数字王国联合创始人Dr. Scott Ross、电影《狮子王》导演Robert Minkoff、Blender首席运营官Francesco Siddi、ACGGIT首席技术官崔潇(只剩一瓶辣椒酱)等十余位行业大咖到访瑞云科技。会上,瑞云科技团队对公司发展历程、业......
  • 基于yolov10的草莓成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:yolov10,草莓成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python】_哔哩哔哩_bilibili(一)简介基于yolov10的草莓成熟度检测系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的......
  • [SAS 扩展器]入门级12 Gb/s SX03-0B00-00/SX04-0B00-00 和 采用SAS-4技术SX06-0B00-02
    为数据密集型应用程序启用海量存储基础设施。SAS扩展器允许服务器、控制器卡和外部存储连接到大量驱动器。DataBolt技术聚合了SATA存储设备的带宽,以提供更高的系统性能。SX03-0B00-00入门级12Gb/sSAS35x36RSAS扩展器SX04-0B00-00入门级12Gb/sSAS35x28RSAS扩展器S......