自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 RuntimeError: PytorchStreamReader failed reading zip archive: failed finding central directory

在usr/.cache/…这个.cache用ls可能看不到,最好用。主要是之前下的东西不完整,可以清除缓存再下一次。

2023-07-28 15:56:48 189

原创 把CLIP混合的特征空间分离开来 Parts of Speech–Grounded Subspaces in Vision-Language Models

可以看到,对于文森特梵高,CLIP出来的是文森特本人的照片,混合以他的作品的色彩风格。但是经过作者模型解耦之后,去除noun的结果,就剩下adj类的特征,所以第二行出现的是文森特作品风格的类似图片。比如左图这张金鱼的照片,CLIP的一整个图片feature其实包含了三种维度的信息。从形容词上来说,可以是金色的;作者提出CLIP这种图文对训练,其实它的image feature把各种维度的feature都融合在一起了。去除adj的结果,就是只剩下noun也就是事实性的特征,所以第三行是文森特本人。

2023-05-24 12:29:36 253

原创 基于LLM,提出一个通过推理来检测目标的新任务 DetGPT: Detect What You Need via Reasoning

我现在跟机器人说:“请帮我拿一杯冷饮”,机器人看了一圈,发现没有冷饮,于是问LLM冷饮会在哪里呢?LLM告诉他可能会在冰箱里。于是机器人就走去冰箱那里查看有没有冷饮。”,但是现在有了chatgpt这种大语言模型后,我们能做的更多了,我希望能直接说出我的需求,ai来分析我的需求,然后检测可以满足需求的地方。个人觉得这个新任务挺有趣的,也很切合ai未来发展的方向,如果被录了,估计能收获不少cite。每日读报的时候看到的。港科港大上交几个人合作,提出的一个新任务。指的是以前的检测都是“

2023-05-24 11:58:30 427

原创 巨坑!如果你cuda是11.1而cuda toolkit是9.2,导致无法安装apex,同时你还没有服务器权限去换驱动

显示正常,平常运行代码也正常,说明你的cuda本来就是正常的,只不过是系统文件识别的时候没有识别正确的版本。本来很简单,重新安装一下,把两个版本对齐了就好了,但是我用的是实验室的服务器,我是没有权限去在系统上安装东西的,连apt-get都用不了。,按 i 进入编辑模式,然后在末尾加上(注意去你路径里看看有没有这些目录)gpu是3090,cuda是正常的11.1,但是。然后按 esc,输入 wq 回车,这样就保存了。,但是我没权限gedit,改用vim居然可以。最后终于解决了,其实不需要重新安装,你的。

2023-04-13 23:46:44 835

原创 做leetcode前复习

基本用法:sort(vec.beign(), vec.end());升序排列。sort会根据剩余数据的大小自动选择排序策略,无论什么情况,sort都能保证O(N*log2(N)),基本是比你手写的要好的。

2023-04-13 16:35:03 48

原创 半监督学习为什么能work?以及直推式学习是什么

核心思想就是,我们常用的归纳型学习是通过在训练集上优化并学习,但是我们的最终目标是在数据集上做得好,并不是很在乎训练集上能有多少准确度。但是他的缺点在于,不同于归纳式学习学好了之后,如果有新的数据,直接塞进模型预测就好。所以,半监督的意义是,在给未标注的数据打标签的过程中,我们实际上还是引入了新的信息:真实的数据分布。但是使用半监督,我们不断地用已有的数据,给新的未标签的数据打标签,就可以变成左边这种分类器。去知乎搜了一下,一张图简洁明了地解决了我的疑问,太有力了,所以记录一下。

2023-04-09 17:51:54 379

原创 生成式模型的发展历程

然后前面encoder生成的HxD的特征f传进来,它会把这H个特征去跟code book里一个个做比较,看它和哪个最接近,就把它换为哪一个。于是我们再训练一个模型,把这个噪声还原回最初的图片,这样的话,以后直接加一个高斯噪声,就能够做生成任务了。更简化来说,一个高斯噪声其实就只需要均值和方差,实际上实验发现,只预测均值,方差设为固定值,就已经有很不错的效果了。它能实现用语言更改图片内容(比如“把椅子上的玩具消除”),就是因为通过文本的改变,文本特征也会改变,从而最终影响到生成的图片也会改变。

2023-03-29 23:33:57 489

原创 vscode安装clang-format并且实际投入使用

直接pip install clang-format,下载完之后,在命令行运行clang-format,然后ctrl+C,它会报错。在报错信息中,可以找到安装的clang-format的路径。注意修改的地方有“User”、“Remote”、“Workspace”之分,别只改了本地的,没改remote的。把这个路径,按照上面那张图,官方给的命令格式,写进setting.json,然后保存。最后是这里,找到它的可执行路径,并写进setting.json。

2023-03-21 17:13:12 180

原创 C++指针与数组之间的联系

可以看到,对于用指针定义的数组,我们把指针向后移动一位,甚至可以继续访问arr[0]和arr[1],而且它们也是对应的第二位和第三位。使用new来新建对象,一定要记得delete,养成好习惯。不delete不会报错,但是不优雅。C++指针和数组基本上是等同的,这是C和C++非常强大的一点,当然也带来过许多麻烦。但是,还是上面那句话,这两个基本上是等同的。,这个arr可以理解为指向数组头元素的指针,也可以理解为数组。当然,只有指针可以“++”“–”,数组名是不行的,,那么你再执行“arr++”就会报错。

2023-03-17 19:58:03 413

原创 Vector的扩容机制

到需要扩容的时候,Vector会根据需要的大小,,然后把旧数组的元素复制进新数组。我们可以看到,。所以扩容之后,原先的迭代器会失效:插一嘴,为什么要用迭代器而不用指针。Iterator(迭代器)用于提供一种方法。第二,迭代器不是指针,它是类模板。它只是通过重载了指针的一些操作符(如“++”、“->”、“ * ”等)来模拟了指针的功能。也因此,它的功能比指针更加智能,他可以根据不同的数据类型实现不同的“++”等操作。执行后,只有第一个cout输出了结果,第二个cout没有输出,直接程序结束。

2023-03-17 12:23:31 2547

原创 构造函数和析构函数

因为C++不想Java等语言,后者对于基础类型的数据,比如int、char之类,在定义的时候就自动初始化为0或者默认值了,但是C++的话,如果你不显式地初始化你的数据,他给你的就是野值。那么我们可以将它的构造函数声明为Private,这样在试图实例化这个类的时候,它就会调用构造函数,然后Private是不能被外界访问的,所以就直接报错。前者就是在类被创造的时候,自动调用的函数,后者是在类被销毁时,自动调用的函数。我们可以想象这样的运用:像Log这样的类,我们一般只希望调用它的成员函数,比如。

2023-03-15 12:42:44 51

原创 C++中,类和结构体的区别

一般来说,平常的用法上,结构体只用来表示单纯的数据结构的集合,而不会想使用他来存一些功能复杂的内部函数(虽然它完全可以)。不过储存数据结构的集合,也可以用类就是了。C++仍然保留Struct只是为了与C兼容,基本上全都使用Class就好了。答案是基本没有区别。

2023-03-15 12:27:35 194

原创 C++中为什么使用new而不使用malloc

对于string、vector等类,如果你的构造函数没有正确执行,你初始化得到的可能是一堆奇奇怪怪的值。所以大多数情况下,都使用new,不要用malloc,除非你真的明白你在做什么。,有size个,因为初始化size个Stuff对象,每个都执行一次打印。如果调用B的话,我们不会看到打印信息,查询i的话,得到的也是0。而且查询i的话,i的值也是9810,说明。如果调用A的话,我们会看到打印出来的。“正在执行构造函数”

2023-03-14 22:14:37 309

原创 异步读取以及lambda表达式

也就是执行到C的时候,C直接返回了,然后继续执行DE;(比如asio的asyn_read_some,就是在执行到它时,马上就会返回,让主程序执行后面的命令。但是它自己却挂在后台,等候buffer中有东西可以读了,它再去执行自己的作用,再去读)所谓同步,就是正常的程序逻辑,ABCDE,假如C是一个耗时的IO操作,系统就会在执行到C的时候,等候C完成。这样的话,只要是支持+运算的数据,都可以直接用这个函数了。当然,这是最经典的一种异步的例子,异步还有很多各种应用场景,总之只要不是同步的,就都是异步的。

2023-03-14 17:08:30 961

原创 vscode C++ 显示找不到文件

这种情况,直接给他加一个这个参数就好了。

2023-03-13 22:22:31 3869

原创 二分法心得

这里注意,如果整个数组里就不存在target,target是一个很大的数,那么最终left=len,访问溢出了。首先,我们建议左右区间全部用闭区间。这时外面的框架不变,还是闭区间,还是一样的循环结束条件。但是里面的搜索条件变了。比如搜索左边界的话,我们的。其他两个条件不变,还是在寻找target。所以他们最终会找不到target,最后一次是。,也就是左边界的位置,返回left即可。,这时我们需要往左收缩区间,也就是。进入while循环,结束条件是。注意计算mid时,不要用。访问右边界是一样的原理。

2023-02-13 16:08:39 381

原创 按照官网命令安装pytorch,但是调用不了

这个是官网的指令,调用完之后,确实下载了pytorch和torchvision,但是进入python后再import torch,还是会显示没有torch这个module。最后我的做法是直接用whl来安装。下载对应的whl文件即可。

2023-02-12 20:01:30 479

原创 写对比学习损失函数有感(关于速度差异、出现nan的情况)

首先分母不能为0,第二分子也不能为0(否则log(0)一样会出问题),所以最好对分子分母都加一个很小的值,比如1e-8。结论:如果用torch.zeros创建数组,还往cuda里放的话,速度会非常慢。结论:在赋值方面np略逊于原生数组,但是没有数量级上的差距。最耗时的,还是创建数组的过程。,这个时候就要小心分母,如果分母是0的话,loss就会变成nan。torch.tensor的数组,以及F.cos的相似度:774。2、使用交叉熵,因为有一个log函数,要注意内部。np的数组,以及np的相似度:686。

2022-09-23 20:12:25 1081

原创 关于pytorch损失函数的梯度计算

今天想实现一个idea:对同一批数据,采用两次计算。第一次就用正常的交叉熵,第二次针对第一次的情况,对gt作出改变,再做一遍交叉熵。要想写同一批数据训练两次,还要引入控制变量,来控制哪一次是正常计算,哪一次是改变计算,太麻烦了。于是想到,我直接在算loss的时候,就算两遍,把两遍加起来,是不是就是等效的?最终去复习了pytorch的梯度机制,确定是差不多的。当然训练两次的话,第一次正常的结束后,模型就已经优化了,第二次改变的训练,用的是优化后的模型;而在loss里计算两次,用的都是优化前的模型。

2022-09-13 01:18:34 1605

原创 ImportError: libc10_cuda.so: cannot open shared object file: No such file or directory

如果为False的话,就按工程要求重装一下(一般install.md会给)。大概率是环境出了问题。

2022-09-09 01:00:31 11837 4

原创 交叉熵损失的推导(贝叶斯公式、极大似然估计)

1

2022-08-22 18:01:57 232

原创 DEEP NEAREST CLASS MEAN CLASSIFIERS

我还特意去摘要确认了一下,他们就是针对普通的NCM更新原型困难的痛点,加了一个动量更新的机制。后面勉强提出来对动量更新的两个“改进”,也没什么用,所以我都懒得写。2017年的Prototypical Networks(用于小样本学习),虽然是直接基于NCM分类器来学习deep representation的,但是他们的方法很难扩展到大规模的分类。2017年的icarl,虽然用了NCM分类器,但是他们的特征是基于softmax分类器学出来的。对于深度特征表示的学习,难点就在于随着学习的进行,uy的更新。

2022-08-20 12:07:07 723 2

原创 关于softmax的dim到底计算的是哪里

如果用dim=0的softmax,那就是变换第0维的坐标,固定第1维的坐标。如果用dim=1的softmax,那就是变换第1维的坐标,固定第0维的坐标。对(0,0)和(0,1)和(0,2)做softmax;对(1,0)和(1,1)和(1,2)做softmax;对(0,0)和(1,0)做softmax;对(0,1)和(1,1)做softmax;对(0,2)和(1,2)做softmax;dim=x,就变换第x维的坐标,固定其他的坐标。比如这个(2,3)的二维tensor。...

2022-07-19 17:14:43 360

原创 RuntimeError: CUDA error: device-side assert triggered

但如果你确定你的代码是没问题的,但是还是遇到了这个报错,那么很可能只是单纯的pytorch版本不对(准确来说是pytorch1.8自带的bug,到了1.9修复了)。我的之前是1.8.1,改成1.9.1之后报错消失。网上关于这个报错的解读,大多是说代码写错了。...

2022-07-19 15:46:42 831

原创 RuntimeError: The PyDev.Debugger requires Python 3.6 onwards to be run. If you need to use an older

把扩展里面的python和pylance都回退为2021.12的版本。

2022-07-06 09:58:19 617

原创 记录HRegNet工程的环境配置问题

初始配置工作这时候刚开始配置。也就是一开始用了python3.8,对于高等级的pytorch不方便,后来换成3.9就好了。在RTX3090上,CUDA最低也要11.1,对应的pytorch也更高,所以尽量用python3.9。然后就是 MinkowskiEngine 和 pytorch3d 的安装。MinkowskiEngine 用的是这个教程:链接。编译过程遇到bug,nvcc fatal : Unsupported gpu architecture ‘compute_86‘。解决方法:在命令行

2022-05-19 21:58:52 1722 4

原创 python的拷贝机制

写leetcode的时候被这个坑了,查询并实验后终于弄清楚,特此记录。本文参考链接python的赋值操作分三种:直接赋值、浅拷贝、深拷贝直接赋值比如a = [1,2,3]b = a这时候b和a就是同一个对象的不同命名而已,指向的都是同一块内存。深拷贝import copya = [[0,0,0],[1,1,1],[2,2,2]]b = copy.deepcopy(a)b[0][1] = 5print(a)for x in a: print(id(x))for x

2022-03-24 10:58:58 641

原创 对于字符串,python单引号和双引号区别

答案是没有区别。‘Apple is red’和"Apple is red"没有任何区别。但是如果字符串里有 ’ 的话,比如’I’m a teacher’,用单引号就需要转义符号,但是用双引号就不需要"I’m a teacher"。另外一种情况同理,’ He said :“I want to swim” ',用单引号就不需要转义符。......

2022-03-23 09:42:27 833

原创 selenium使用记录

首先是大体用法。直接用代码说明。import seleniumfrom selenium import webdriverimport osimport timeuid = "1111" # 学号pwd = "1111" # 密码# 这部分用来设置运行时不显示浏览器窗口#chrome_options = Options()#chrome_options.add_argument("--headless")# 模拟浏览器进行访问browser = webdrive

2022-02-07 17:05:04 706

原创 os.makedirs 遇到 permission denied 报错

可能是umask问题。umask 0777这个命令说语法错误那就umask 0o777

2022-01-04 15:06:52 2195

原创 ImportError: libtorch_cpu.so: cannot open shared object file: No such file or directory

如果之前pytorch是1.4的话,试试:pip install -U torch==1.5注意,torchvision版本随pytorch版本而变,1.4对应torchvision=0.5.0,1.5对应torchvision=0.6.0。如果需要改torchvision的话,直接运行pip install torchvision==0.6.0也可以,因为他会自动卸载当前不符合版本的pytorch,重新安装符合它版本的pytorch。...

2022-01-02 18:35:03 8985 3

原创 fatal error: ATen/cuda/DeviceUtils.cuh: No such file or directory

在编译apex的时候,遇到以下报错。查询百度无果,查询谷歌一次得到结果。还是那句话,有问题找谷歌,别找百度。具体原因:缺少CUDA头文件CUDAGraphsUtils.cuh。而这个文件是从torch==1.8.0a后开始加入的,所以如果你的pytorch版本是1.7、1.6、1.5什么的那肯定没有。解决方法就是回滚apex的版本。apex不是软件,回滚需要通过git操作来进行:git reset --hard 3fe10b5597ba14a748ebb271a6ab97c09c5701ac

2022-01-02 17:53:14 3857 10

原创 linux非root用户安装tmux

严格按照教程来,编译源码1、解码tar.gz:tar -xzvf xxx.tar.gz关于tar解压其他格式或者更详细的记录见链接2、在安装ncurses的时候可能会报错_1196.c:843:15: error: expected ‘)’ before ‘int’只需要在第一步先export CPPFLAGS="-P"然后再进行 ./configure 等等步骤即可。...

2021-12-29 20:27:18 366

原创 gym.error.UnregisteredEnv: No registered env with id: Pong-v0

添加链接描述严格按教程里一步步做就可以解决。虽然要安装vs很麻烦,但是最后重启后确实解决了。

2021-12-15 11:39:58 2078

原创 动态神经网络讲座笔记

神经网络可以early exitinglayer skipping。用一个门控单元,决定要不要计算下一个模块。0就跳过,输出等于输入,1就算。或者直接整一个policy network,直接输出一个序列,决定哪些block能算哪些不能。注意,上述两种都有一个关键点,就是这些东西是依赖于输入的。这就是和dropout的最大区分点,后者只是随机,不依赖于输入。上述思想拓展,可以变为决定每个节点都有不同的channel(若干channel被门控静音),或者直接整一个supernet,用动态路由去决定数据怎

2021-12-08 14:33:40 452

原创 Idea记录

本文是记录文,用来记录在阅读论文路上遇见的各种idea。

2021-12-08 13:48:42 54

原创 prompt综述(截至2021.12.1)

prompt的意义:以前使用预训练模型都是Pre-train,Fine-tune的模式,这种模式的缺点就是当存在多个下游任务时,需要在上游复制多个模型,因为fine-tune后它们的参数因任务不同而不同。如果有10个下游任务就要存储并训练10个上游模型,这样就很占空间和资源。prompt采用Pre-trian,Prompt-tune的方式,上游的预训练模型不变,让下游的任务去适配上游。节省了空间和资源。prompt的结构:prompt包含两部分:template和verbalizer。temp

2021-12-08 13:46:12 3763 1

原创 服务器跑代码的时候,报错RuntimeError: cuda runtime error (3) :initialization error at /opt/conda/...

完整报错:RuntimeError: cuda runtime error (3) : initialization error at /opt/conda/conda-bld/pytorch_1579022027550/work/aten/src/THC/THCGeneral.cpp:50THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1579022027550/work/aten/src/THC/THCGeneral.cpp line=50 e

2021-12-05 17:47:28 3074 1

原创 使用VSCode连接远程服务器

大部分步骤按照这个攻略即可坑1: config文件应该这样写:原攻略缺少端口以及私钥。坑2: 如果连接后显示“拒绝连接”,从而连接失败。可以尝试用管理员打开VSCode后,再去连接。成功连接画面如图:左侧的文件一开始是没有的,需要用open folder自己去打开。打开的是服务器上的文件目录。...

2021-11-30 17:56:54 480

原创 nn.Embedding(num_embeddings=vocab_size, embedding_dim=embed_dim)

这个函数的作用是,对你的词表产生一个嵌入表,这个嵌入只保证唯一性,不保证相关性(所以和word2vec还是有区别的)。self.embedding = nn.Embedding(num_embeddings=vocab_size, embedding_dim=embed_dim)是他的定义式。其中num_embeddings定义了词表的长度,embedding_dim定义了嵌入的长度。在使用时,直接调用:embedding = self.embedding(input)这里的 input 应为

2021-11-19 11:29:43 2545

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除