随笔分类 - 深度学习
摘要:训练过程中更新的步骤 首先以某种方式计算出epoch,每个epoch包含steps_in_epoch epoch是整个数据集被遍历的次数,有多少个epoch,数据集中的每个样本就会被遍历多少次 然后计算出total_updates,表示参数更新次数 在每一次参数更新的时候,算出来此次参数更新所涉及的
阅读全文
摘要:有时在处理数据的时候,我们在数据处理函数内部添加调试语句但是却没有输出,这可能是因为: 数据被缓存了,令overwrite_cache: true即可,这样就会重新调用数据处理函数处理数据(一般在调试的时候使用) 在使用llamafactory的时候,制作的一个数据集不要太大(也就是一个data.j
阅读全文
摘要:首先介绍一下双线性插值。现在有一个三维空间,\(z=f(x,y)\),空间中已知(也就是知道\(z\)值)有四个点\(Q_{11}(x_1,y_1)\)、\(Q_{21}(x_2,y_1)\)、\(Q_{12}(x_1,y_2)\)、\(Q_{22}(x_2,y_2)\),现在给定一个点\(P(x,
阅读全文
摘要:目录P433P434P436 P433 这里锚框一共有\(hwa\)个,是因为我们不会对每一个通道的每一个像素都生成\(a\)个锚框,对于一个位置\((h,w)\),我们只生成\(a\)个锚框,而不是生成\(ac\)个锚框 P434 这里将通道维移到最后一维是为了方便之后的交叉熵和\(L_1\)损失
阅读全文
摘要:在函数display_anchors中,之所以bbox_scale是原图的尺寸而不是特征图的尺寸,是因为在我们想要得到的是原图上的锚框,而特征图的语义非常集中,其一个像素的锚框可以对应于原图的一个比较大的锚框
阅读全文
摘要:其实锚框就可以代表真实边界框,因为锚框有两个属性:类别和偏移量。这两个属性都是字面意思。我们如果知道了一个锚框的两个属性,就可以通过偏移量得到真实边界框,而这个真实边界框的类别就是锚框的类别。所以锚框就可以代表真实边界框
阅读全文
摘要:目录P4251. 上下文背景2. conf[below_min_idx] = 1 - conf[below_min_idx] 的作用 P425 def multibox_detection(cls_probs, offset_preds, anchors, nms_threshold=0.5, po
阅读全文
摘要:目录P421P422 P421 anchors_bbox_map = torch.full((num_anchors,), -1, dtype=torch.long, device=device) max_ious, indices = torch.max(jaccard, dim=1) anc_i
阅读全文
摘要:注意,K和W是一一对应的关系,于是这里就是在说\(\forall\)X,经过卷积层K和矩阵W得到的结果是一样的;\(\forall\)Y,经过转置卷积层K和矩阵W.T得到的结果是一样的 至于那个什么反向传播,应该是他没说清楚
阅读全文
摘要:然后讲多输出通道那里,注意说的是“每个”输出通道“都有”一个三维卷积核
阅读全文
摘要:补充一下代码说明 inter_upperlefts和inter_lowerrights就是交集的左上角和右上角 None的作用是添加一个大小为1的新维度用于广播 取max和min的操作都是正确的,可以想一下
阅读全文
摘要:这个写的也太不清晰了。。。 设\(h,w\)分别表示归一化高度和归一化宽度,\(H,W\)表示输入图像的原高度和原宽度,则锚框的高度和宽度分别为\(H\times h,W\times w\) 缩放比:归一化面积,即\(hw=s^2\) 宽高比:归一化宽度和归一化高度的比例,即\(\frac{Ww}{
阅读全文
摘要:normalize = torchvision.transforms.Normalize( mean=[0.485, 0.456, 0.406], # 各通道的均值 std=[0.229, 0.224, 0.225] # 各通道的标准差 ) 均值 [0.485, 0.456, 0.406] 和 标准
阅读全文
摘要:对于代码 dataset = torchvision.datasets.CIFAR10(root="../data", train=is_train, transform=augs, download=True) 传入的参数不会改变数据集的总大小,它只是会在我们读取数据的时候,对原数据进行增广,然后
阅读全文
摘要:非常棒的问题!👏 你问的这两点: 为什么 X, y = X.to(devices[0]), y.to(devices[0]) 是必须的? net(X) 是如何决定数据在 GPU 之间分配的? 我们来一个一个详细解释。 🔍 第一个问题: 为什么 X, y = X.to(devices[0]), y
阅读全文
摘要:非常棒的问题! 你提到的这段代码中: def copy_to_cpu(x, non_blocking=False): return [y.to('cpu', non_blocking=non_blocking) for y in x] 其中的 non_blocking 参数是 PyTorch 中用于
阅读全文
摘要:预热的原因: 🧠 核心原因:GPU 的初始化和缓存机制会影响首次运行速度 1. 首次执行会有额外开销 当你第一次在一个设备(如 cuda:0)上执行一个操作时,系统会进行一些初始化工作: 加载内核(kernel); 分配内存; 编译 PTX(Parallel Thread Execution)代码
阅读全文
摘要:with可以把它看作是一个“自动开关门”的机制 with open('file.txt', 'r') as f: content = f.read() # 到这里,文件会自动关闭,不需要你手动调用 f.close() 本质上是一个上下文管理器,能够工作的关键在于对象是否实现了上下文管理协议(注意Py
阅读全文
摘要:如果在一个GPU(甚至多个GPU)上执行这些命令,那么Python解释器产生的开销可能会非常大 这是因为每个 add 函数调用都是独立发生的,Python 不会知道这三个 add 调用之间有什么联系,也不会合并它们成一个更高效的计算流程;当你把 Python 的这些小操作映射到 GPU 上执行时,每
阅读全文
摘要:在 PyTorch 中,scheduler.get_last_lr() 返回的是一个列表(list),其中包含优化器中每个参数组(parameter group)当前的学习率。例如: optimizer = torch.optim.SGD( [ {'params': model.layer1.par
阅读全文

浙公网安备 33010602011771号