
pytorch
XiaoPangJix1
这个作者很懒,什么都没留下…
展开
-
pytorch 参数冻结 parameter-efficient fine-tuning
否则即便没有需要更新的参数,其layer的梯度也回传,效率低。框架:pytorch (version 1.11.0)3. 如果不传递参数的层,记得前向操作是要设置。目标:在网络中冻结部分参数进行高效训练。来找到未使用的变量。ps. 好像也可以通过在。原创 2024-08-26 21:21:26 · 494 阅读 · 0 评论 -
torch.nn.CrossEntropyLoss 中参数设置
背景知识:给定一个batch的预测分数(softmax归一化后)ppred∈RB×Cppred∈RB×C,与其真值标签(one-hot)pgt∈RB×Cpgt∈RB×C. 其中,BBB为batchsize,CCC为类别总数。那么,其中样本bbblossbpgtb∑ci1Clogpgtbcippredbcilossbpgtbc。原创 2024-01-25 14:10:45 · 1970 阅读 · 0 评论 -
pytorch dropout 置零 + 补偿性放缩
具体来说,如果有一个神经元的输出值为 x 并且你应用了 dropout 操作(设定概率 p),那么在训练期间,这个值 x 有 p 的概率会被置为 0,而有 1-p 的概率会被乘以 1 / (1 - p)。为了确保期望输出在训练和测试时保持一致,当应用 dropout 时,被保留的元素会按 (1 / (1 - p)) 进行缩放,其中 p 是 dropout 的概率。例如,假设 p=0.5,则有一半的机会让 x 变为0,而另一半的机会让 x 变为 2x(因为 1 / (1 - 0.5) = 2)。原创 2023-11-02 10:54:28 · 964 阅读 · 0 评论 -
pytorch/tensorflow 直接给张量中的某个位置的值赋值,操作不可导。
参考:https://github.com/hadjisma/VideoAlignment/blob/master/d2tw/smoothDTW.py#L44。问题:给一个tensor A中[i,j],赋值p。解决方案:通过引入一个额外的mask实现。ps: 没debug, 看起来是对的。可能会导致值覆盖,操作不可导。原创 2023-08-29 12:01:11 · 1360 阅读 · 0 评论 -
Pytorch 记录每次循环输出的结果
需求:对每次循环生成的结果,stack,在循环结束后输出。原创 2023-08-03 09:39:27 · 195 阅读 · 0 评论 -
pytorch tensor 扩充一个维度,避免使用unsqueeze()
避免使用Ps.unsqueeze(),尺度扩充后可以直接进行计算,无需多一行操作。(算是个trick?pytorch 将tensor膨胀出一个额外的维度(unsqueeze()的功能)在需要膨胀(本来不存在的维度上)用。原创 2023-07-26 13:57:26 · 175 阅读 · 0 评论 -
RuntimeError:No CUDA GPUs are available
【代码】RuntimeError:No CUDA GPUs are available。原创 2022-11-25 00:46:01 · 641 阅读 · 0 评论 -
pytorch 模型中的bn层一键转化为同步bn(syncbn)
pytorch bn2syncbn原创 2022-07-28 14:31:49 · 1238 阅读 · 0 评论 -
pytorch 统计指定维度上的元素数目 torch.size numel
对给定的tensor,获取其指定几个维度上的张量元素数目。类型时,返回该tensor的元素数目;为统计元素数目的函数,当输入为。原创 2022-07-19 18:39:55 · 1568 阅读 · 0 评论 -
pytorch 计算cosine余弦相似度
import torch.nn.functional as FF.cosin_similarity(a,b,dim=1)沿着dim维度对a,b两个tensor计算余弦相似度。由于dim属性的存在,使得a,b两个tensor可以为任意维。原创 2022-04-18 11:34:56 · 2641 阅读 · 0 评论 -
pytorch 模型去掉最后一层 或 最后几层
pytorch的模型去掉末端的n层,以n=1为例:new_model = torch.nn.Sequential( *( list(model.children())[:-1] ) )ps: 模型如何去掉任意位置的某一层?好像不支持?可能去掉之后,图就改变了,问题比较复杂。但是可以通过在load statedict时选择性的加载有需要的参数层,来间接实现这一目的。...原创 2022-04-18 09:01:59 · 5142 阅读 · 0 评论 -
pytorch L2 norm
进行L2norm,i.e., 计算范数,除以范数。torch.nn.functional.normalize(feature, p=2, dim=1)```原创 2022-03-27 16:49:15 · 2969 阅读 · 0 评论 -
pytorch 手动设置参数变量 并转到cuda上
通过nn.Parameter设置参数(参与后向,可更新,随模型保存)self.temprt_Q = torch.nn.Parameter(torch.tensor(1.).cuda(), requires_grad=True)注意⚠️:转到cuda的设置要在将tensor转成parameter之前,即:torch.tensor(1.).cuda(),而不是torch.nn.Parameter(torch.tensor(1.), requires_grad=True).cuda(),该操作会导致para原创 2022-01-11 20:13:37 · 4327 阅读 · 0 评论 -
pytorch 程序设置随机种子
设置随机种子可以控制每次程序运行时的随机性保持一致,使得结果可复现。def seed_torch(seed=1029): random.seed(seed) os.environ['PYTHONHASHSEED'] = str(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) # if you are using mu原创 2021-10-04 22:10:16 · 374 阅读 · 0 评论 -
约束多个变量相同
约束一堆数相同:len({a, b, c}) == 1利用{}unique的性质,只保留不同的数据。原创 2021-06-22 14:03:59 · 166 阅读 · 0 评论 -
打印当前日期&时间
打印当前日期&时间import datetimetime_stamp = datetime.datetime.now()print "time: " + time_stamp.strftime('%Y.%m.%d-%H:%M:%S') #strftime可以自定义时间的输出格式#输出为time_stamp 2017.02.19-14:03:20原创 2020-12-03 16:17:54 · 379 阅读 · 0 评论 -
PYTORCH torch.einsum 函数
以爱因斯坦求和的形式任意定义想要进行的矩阵乘法的操作,可以内部指定输出转置,功能多样,形式灵活。#theta_phi: nxtxg#g: nxcxgoutput = torch.einsum('ntg, ncg->nct', theta_phi, g)#output: nxcxt原创 2020-09-10 15:15:38 · 2133 阅读 · 0 评论