Python基础知识
- 工具和资源:PyTorch、Zotero、谷歌学术、Github、B站、ChatGPT等。
深度学习基本知识
张量维度表示:
- (N, C, H, W):表示数据张量的形状,其中N是批量大小,C是通道数(如RGB图像中的3个通道),H是高度,W是宽度。
- (h, w, c):表示图像数据的形状,h是高度,w是宽度,c是通道数。
- (B, N, C):表示批量处理的数据,其中B是批量大小,N是样本数量,C是通道数。
张量维度转换:
- 如何在3D和4D张量之间进行转换。通过
rearrange
函数可以实现这种转换。 - 例如,将形状为(B, H*W, C)的3D张量转换为(B, C, H, W)的4D张量时,需要提供高度H和宽度W的信息。
torch.shape和torch.size():
output.shape
返回张量的形状元组。output.size()
返回一个torch.Size
对象,可以用于类似的操作。
np.reshape和torch.reshape:
np.reshape
用于改变NumPy数组的形状。torch.reshape
用于改变PyTorch张量的形状,类似于NumPy的用法。
torch.rand()和torch.randn()的区别:
torch.rand()
生成从均匀分布[0, 1)中抽取的随机数。torch.randn()
生成从标准正态分布中抽取的随机数。
模型训练与评估
训练模型:
- 训练过程中详细的步骤,如数据预处理、模型定义、损失函数计算、反向传播和参数更新。
- 损失函数:以交叉熵损失为例,如何计算模型的损失。
- 反向传播:通过链式法则计算损失对模型参数的梯度,并更新参数以最小化损失。
评估指标:
- TP(True Positive):正确预测为正类的样本数。
- FP(False Positive):错误预测为正类的样本数。
- TN(True Negative):正确预测为负类的样本数。
- FN(False Negative):错误预测为负类的样本数。
- Recall(召回率):TP / (TP + FN)。
- IoU(Intersection over Union):用于目标检测,表示预测框与实际框的交集与并集的比例。
- Accuracy(准确率):正确预测样本数 / 总样本数。
- F1 Score:精确率和召回率的调和平均数。
训练可视化:
- 使用TensorBoardX记录和可视化训练过程中的损失、准确率等指标。
数据预处理
reshape()、resize()和squeeze():
- reshape():用于改变张量的形状。
- resize():用于调整张量的大小。
- squeeze():用于删除张量中大小为1的维度。
unsqueeze():
- 用于在指定位置增加一个新的维度。例如
x.unsqueeze(0)
会在第0维前增加一个新维度。
transforms.Compose():
- 用于将多个数据变换操作组合在一起。例如,将图像缩放、裁剪、转换为张量等操作组合。
模型结构和模块缝合
U-Net、ResNet、ResNeXt、ResNeSt:
- 这些网络结构的组成部分及其在实际中的应用。
- U-Net:用于图像分割,包含卷积层、上采样和跳跃连接。
- ResNet:引入了残差块,以解决深层网络的梯度消失问题。
- ResNeXt和ResNeSt:在ResNet的基础上进一步改进,引入了更多的并行卷积路径和注意力机制。
Transformer:
- 编码器(Encoder)和解码器(Decoder)的结构及其工作原理。
- 注意力机制:包括自注意力和多头注意力。
- Vision Transformer (ViT):将Transformer应用于计算机视觉任务的结构和示例。
其他实用技巧
优化器:
- 不同优化器的使用,如SGD和Adam。
- SGD(随机梯度下降):适用于简单的优化任务。
- Adam(自适应矩估计):结合了动量和自适应学习率的优势,适用于更复杂的优化任务。
超参数调整:
- 学习率 、迭代次数 、批量大小等参数的设置和调整方法。
- 正则化参数:如L1和L2正则化,用于防止模型过拟合。
设备选择:
- 使用
torch.device
选择在GPU或CPU上执行操作,通过torch.cuda.is_available()
检查CUDA是否可用。