网站首页 > 技术文章 正文
深度学习听着挺吓人,好像得是天才才能搞懂。其实不然,只要你有Python基础,就能轻松上手。深度学习就像搭积木,一层一层堆叠神经网络,让机器学会思考。今天我带你从零开始,用最简单的方式理解深度学习的核心概念。
环境搭建:工欲善其事
搞深度学习,PyTorch是标配。装起来贼简单:
# 安装PyTorch
pip install torch torchvision
# 测试安装是否成功
import torch
print(torch.cuda.is_available()) # 看看能不能用GPU
温馨提示:没GPU也不要慌,CPU也能跑,就是慢点。想省事直接用Google Colab,啥环境都帮你配好了。
张量:深度学习的基本积木
张量说白了就是多维数组,跟numpy的array差不多:
import torch
# 创建张量
x = torch.tensor([[1, 2], [3, 4]])
y = torch.zeros(2, 2) # 全是0的2x2张量
z = torch.randn(2, 2) # 随机生成的2x2张量
# 基本运算
result = x + y # 加法
product = torch.matmul(x, y) # 矩阵乘法
神经网络:照着葫芦画瓢
写个最简单的神经网络,认识手写数字:
import torch.nn as nn
class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.flatten = nn.Flatten()
self.layer1 = nn.Linear(784, 128)
self.relu = nn.ReLU()
self.layer2 = nn.Linear(128, 10)
def forward(self, x):
x = self.flatten(x)
x = self.layer1(x)
x = self.relu(x)
x = self.layer2(x)
return x
model = SimpleNet()
就这么几行代码,就能识别数字了,是不是很神奇?
训练模型:像教小孩认字
训练模型就像教小孩认字,要不停地练习和纠正:
import torch.optim as optim
# 准备数据
from torchvision import datasets, transforms
train_data = datasets.MNIST('data', train=True, download=True,
transform=transforms.ToTensor())
# 训练循环
optimizer = optim.SGD(model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()
for epoch in range(3):
for data, target in train_data:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
温馨提示:学习率(lr)设太大模型容易学不会,设太小训练太慢,0.01是个不错的起点。
实战案例:老大爷相机
整个简单的图像分类器,识别照片里是猫还是狗:
class PetClassifier(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(3, 16, 3)
self.pool = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(16 * 14 * 14, 2)
def forward(self, x):
x = self.pool(torch.relu(self.conv1(x)))
x = x.view(-1, 16 * 14 * 14)
x = self.fc1(x)
return x
# 使用模型
model = PetClassifier()
img = torch.randn(1, 3, 28, 28) # 假装这是张照片
prediction = model(img)
深度学习没啥神秘的,说到底就是找规律。机器通过大量练习,慢慢学会分辨图像的特征。
写深度学习代码有几个坑得注意:
- 数据维度要搞对,不然运行时报错找半天
- GPU内存别用太狠,显卡也是要休息的
- 记得保存模型,训练一天结果没保存太惨了
- 多打印中间结果,不然出错都不知道错哪了
代码写完了,调参调到头发掉光。不过只要掌握这些基础概念,啥模型都能搞定。深度学习就是这样,入门简单,精通很难。
想玩转深度学习,基础挺重要:线性代数得懂一点,Python得溜一点,最好能整台带显卡的电脑。不过没这些也别怕,慢慢来,从简单的开始,代码敲着敲着就熟练了。
猜你喜欢
- 2025-01-12 人生苦短我用Python,Python基础教程,让你从入门到熟悉
- 2025-01-12 这样使用python中pip,让我节省了开发时间
- 2025-01-12 python常见的数据类型有哪些?
- 2025-01-12 大神!30分钟入门Python
- 2025-01-12 详细介绍一下Python中如何对字符串进行操作?
- 2025-01-12 Python基础-Python面向对象编程
- 2025-01-12 Python一百天:教你如何封神
- 2025-01-12 这是我见过最好的Python教程:十分钟带你认识Python
- 2025-01-12 最完整的Python动画教程,7天零基础入门Python
- 2025-01-12 Python程序员的圣经:《Python编程快速上手:让繁琐工作自动化》
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)