cuda编码入门学习笔记

          在日常深度学习和科学计算中,使用图形处理器(GPU)进行加速是一个常见的做法。CUDA (Compute Unified Device Architecture) 是英伟达公司提供的用于GPU编程的平台和编程模型。同时它是一种并行计算模型,允许开发人员使用标准C语言对GPU进行编程,也就是对c语言的一种扩充写法。CUDA的核心思想是将任务分解为多个线程,并在GPU上同时执行这些线程。GPU由多个处理器和全局内存组成,每个处理器可以执行多个线程,同时访问全局内存。通过并行执行多个线程,可以大大提高计算速度。学习参考链接:https://docs.nvidia.com/cuda/cuda-c-programming-guide/

(1)CUDA编程模型

     》 学习CUDA编程模型的基础知识:

  • Grids(网格)

    • 网格是 CUDA
### 李沐《动手学深度学习》代码笔记 #### 使用 Conda 安装 PyTorch 和其他依赖项 为了高效地设置开发环境并确保兼容性,建议使用 Anaconda 而不是 pip 来管理 Python 包和虚拟环境。Anaconda 不仅捆绑了众多重要的数据科学、机器学习以及科学计算所需的工具和库,还提供了稳定可靠的包管理和环境隔离功能[^2]。 ```bash # 创建一个新的 conda 环境,并命名为 d2l-pytorch conda create --name d2l-pytorch python=3.9 # 激活该环境 conda activate d2l-pytorch # 安装 pytorch 及其相关组件 conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch # 安装 jupyter notebook 以及其他常用的数据处理库 conda install jupyter numpy pandas matplotlib scikit-learn ``` #### 关键数学概念回顾 在深入研究具体实现之前,掌握基本的线性代数知识对于理解神经网络内部运作至关重要。这部分内容涵盖了向量、矩阵及其运算规则,这些基础知识构成了大部分现代深度学习框架的核心[^3]。 例如,在定义一个多层感知机(MLP)时: ```python import torch from torch import nn class MLP(nn.Module): def __init__(self, input_size, hidden_sizes, output_size): super(MLP, self).__init__() layers = [] sizes = [input_size] + hidden_sizes for i in range(len(sizes)-1): layers.append(nn.Linear(sizes[i], sizes[i+1])) layers.append(nn.ReLU()) layers.append(nn.Linear(hidden_sizes[-1], output_size)) self.model = nn.Sequential(*layers) def forward(self, x): return self.model(x) ``` 上述代码片段展示了如何利用 `nn.Linear` 构建全连接层,并通过激活函数 ReLU 实现非线性变换。每一层接受前一层输出作为输入,并将其传递给下一层直到最终预测结果被生成。 #### 数据预处理与加载 有效的特征工程能够显著提升模型性能。书中强调了良好实践的重要性,比如标准化数值型变量或将类别标签转换成独热编码形式等操作[^1]。 ```python from sklearn.preprocessing import StandardScaler from torch.utils.data import DataLoader, TensorDataset def prepare_data(X_train, y_train, X_test=None, y_test=None, batch_size=64): scaler = StandardScaler() # 对训练集进行fit_transform X_train_scaled = scaler.fit_transform(X_train) if X_test is not None and y_test is not None: # 测试集只做transform X_test_scaled = scaler.transform(X_test) train_loader = DataLoader(TensorDataset(torch.tensor(X_train_scaled), torch.tensor(y_train)), shuffle=True, batch_size=batch_size) test_loader = DataLoader(TensorDataset(torch.tensor(X_test_scaled), torch.tensor(y_test)), shuffle=False, batch_size=batch_size) return train_loader, test_loader else: train_loader = DataLoader(TensorDataset(torch.tensor(X_train_scaled), torch.tensor(y_train)), shuffle=True, batch_size=batch_size) return train_loader ``` 此函数实现了对输入数据的缩放和平移,使得每列均值接近零且标准差等于一;同时创建了一个可以迭代访问批次样本的 `DataLoader` 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomu_347

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值