- 博客(89)
- 问答 (3)
- 收藏
- 关注
原创 __init__中的__getattr__方法
在文件中定义的方法,如果存在的话,通常用于处理包级别的属性访问。在包级别,方法在导入模块时被调用,而不是在实例化包时。当你尝试访问包中不存在的属性时,方法会被调用,给你一个机会来处理这个属性访问。
2024-01-10 17:04:25
1224
1
原创 python协程asyncio的应用,async,await,loop
1:async用于定义协程函数2:协程函数初始化得到的是协程对象,协程对象不能直接执行;3:协程对象的执行方式,要么用await执行,但是await只能出现在协程函数里面,所以它不能作为协程的启动方式,要么把协程转化为Task运行,因为Task里面含有send(类似于生成器的next,这里用next其实也行,兼容),同理,await为什么能运行协程也是因为它含有send,因为await就是yield from的平替;
2024-01-07 11:55:52
1083
原创 可迭代对象,迭代器,生成器,协程
a: 含有__iter__和__next__内置函数的类;迭代器必须同时实现这两个方法,这称之为迭代器协议;那根据这个协议,我们可以知道,迭代器一定是可迭代对象;b: __iter__内置函数要返回自身self;c: __next__方法返回下一个数据,如果没有数据了,则需要抛出一个stopIteration的异常补充:迭代器的意义:15分钟彻底搞懂迭代器、可迭代对象、生成器【python迭代器】_哔哩哔哩_bilibili。
2023-09-30 21:42:57
454
原创 C++中的导入include,头文件,extern,main函数入口及相关编译流程
1:#include就是复制粘贴2:C++编译的时候,在链接之前,各个文件之间实际上没有联系,只有到了链接的阶段,系统才会到各个cpp文件中去找需要的文件;就是复制张贴,所以,一定不能直接include源文件,也就是cpp文件,因为cpp文件中是函数的定义,一旦include了cpp文件,相当于在当前cpp文件又定义了一个相同名字的cpp文件,所以回报错,展示如下:首先,项目的结构如下:这里,我们用不到src和include,以下均以main.cpp和main2.cpp来作为讲解;其中main2.cpp内容
2023-09-16 22:44:37
4228
原创 模型训练加速,model.eval,torch.no_grad,以及torch.cuda.empty_cache
test过程中,必须设置model.eval(),其他两个可选。
2023-07-16 22:41:14
521
原创 实测:python字典迭代比列表迭代快
有一点外在因素似乎这里面字典和列表的长度不一致。再补充一点,字典的键可以直接迭代,但是value不行。可以发现,长度不一确实有影响,但是字典仍然比列表快。此时红色框部分似乎dict,速度很快;
2023-07-09 19:29:31
514
原创 字典dict的get和setdefault,以及collections的defaultdict
get:在字典的键中查找key,如果找到,则返回该key键对应的值(该值是字典中已经存在的值);setdefault: 在字典的键中查找key,如果找到,则返回该key键对应的值(该值是字典中已经存在的值);会给字典添加一个key健,并将新添加的key键的对应的默认值设为default(是键对应的值,不是键本身)。a[10]返回0,因为10不存在于a的键中,而int类型默认值是0,list默认值为:[],str默认值是:'',set默认值是:set()值,当查找的key键在字典中存在时,两者作用相同。
2023-07-09 17:37:13
533
原创 Segmentaion标签的三种表示:poly、mask、rle
参考:(1条消息) Segmentaion标签的三种表示:poly、mask、rle_Adenialzz的博客-优快云博客
2023-06-29 14:07:16
309
原创 python -m
2:sys.path添加不同,python -m xxx是把当前执行命令的路径添加到sys.path,而python xxx.py是把xxx.py的父目录添加到sys.path。python -m xxx 和 python xxx.py都相当于直接运行xxx.py文件,其__name__ == "__main__"python -m是启动python文件的一种方式,那么和直接python xxx.py有什么区别呢?.py的文件夹),则 python -m xxx等同于python -m xxx.
2023-06-19 16:19:10
3613
原创 python文件首行
bin/sh,则指示程序加载器运行程序/bin/sh,传递path/to/script作为第一个参数。在计算中,shebang是由脚本开头的字符数字符号和感叹号( #!它也被称为sha-bang , [1] [2] hashbang , [3] [4] pound-bang , [5] [6]或hash-pling。在Shebang之后,可以有一个或数个空白字符,后接解释器的绝对路径,用于指明执行这个脚本文件的解释器,如上述/usr/bin/python和/usr/bin/env python。
2023-06-19 12:36:57
1803
1
原创 张量的is_leaf参数和required_grad参数
而输入张量,比如输入的图片等等,往往is_leaf = True, 而 required_grad = False,也就是说输入张量是叶子节点,但是不对其求导,因为总部需要更新输入吧.....2:is_leaf = True表示这个张量是叶子节点,此时,对其求导,他的导数会被保留,而对于is_leaf =False的张量,就算其required_grad = True,对齐求导了,但是其导数不会被保留,也就不会用于参数更新。4:张量的.grad_fn:记录求导函数,比如乘法等等。
2023-06-14 15:54:30
314
原创 DDP分布式训练中遇到的一些问题
2:类似于layer_norm这样的操作是无需进行分布式通信的,也无法进行分布式通信,所以在DDP的时候必须把find_unused_parameters设置为True。这个时候可以在命令行前面加上TORCH_DISTRIBUTED_DEBUG=DETAIL, 这样,将找出具体时哪些参数没有接收到梯度,以此更好的调整代码。4:关于0号卡的显存为什么远高于其他卡,暂时不清楚,网上的说法,这种情况时DP才会有的,DDP应该不会出现,希望有知道的大佬能指点一下....遇到在补充..........
2023-06-11 16:27:37
1677
原创 简单记录下pylighting
3:关于train_step, val_step这些,上面实现的dataset,返回的batch,会给到这两个函数,test情况下就是返回到test_step,之后就可以实现训练了。其实之前有看到过这玩意儿,但一直做项目之类的都没用到,就没关注,今天看到篇很有意思的论文想复现一下,结果又是这玩意儿,所以简单了解了一下,说个大概吧,以后真用到了再深入研究。1:trainer有两个方式,一个是trainer.fit(), 一个是trainer.test;4:关于优化器这块没看,之后补充吧。
2023-05-17 17:23:53
218
原创 argparse和sys.argv详解
最后parser可以用parser.print_help()来查看以上信息,也可以利用python xxx.py -h来查看参数信息。就是说usage后面跟的是所有参数,这些参数是可以分成不同组的,在这个例子里面,我们只分了一个组。首先是usage:会先打印出对应的文件名(默认的,参考上面博客)后面这些参数是所有的参数;而下面的plt.trainer实际上是对参数的分组,怎么理解呢?从命令行输入的参数会被保存到sys.argv。
2023-05-17 14:48:17
405
原创 毕设word的使用
1:关于参考文献,推荐使用endnote,直接将参考文献按照endnote格式下载,然后导入到简历的文件库里面;关于endnote的安装和使用这里不加赘述;解决的方法,样式可以通过导入的方式来获取,页眉页距要单独设置,另外自定义样式需要加入样式库才能导入导出;2:word里面复制粘贴是没办法复制样式和页眉页距的,即使是按照源格式复制粘贴,也可能兆成字体,间距的不同。未完,待续~~~~~~遇到问题再来补充。
2023-05-07 20:24:21
115
原创 pytorch的c++/cuda扩展,CUDA编程
我们知道C++,C这类的编程语言是为了让计算机执行我们的指令,确切一点是让计算机的cpu执行我们的执行,现在cuda编程则是要让显卡中的计算核心执行我们的指令;所以,cuda编程其实就是编写显卡中计算核心执行指令。为了区别于.cpp,.c这样的文件,我们取.cu后缀来指明当前的代码文件是给显卡用的;我们上面说了,.cu本质上还是写给CPU的,所以核函数其实也是C++函数的一种,只不过有一个特殊的限定词"__global__",用以指明“这个C++函数,是用来调用显卡的!
2023-04-25 18:48:40
2883
原创 python通过setuptools打包与分发
重要的参数:其中scripts指各种可执行脚本(比如.sh文件等,可以直接命令行xxx.sh文件执行),它所指定的文件会被直接复制到python可执行目录(好像是/usr/bin,这不重要,感兴趣可以自查)下;
2023-04-23 18:16:07
1569
原创 pickle
字节流是由字节组成的,流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以使文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。祝学习愉快!流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。
2023-04-09 22:46:04
318
原创 Docker容器理解
文件系统是一种数据结构,用于管理计算机中的文件和目录。在计算机中,文件系统通常是操作系统的一部分,它负责解释和执行文件系统中的文件和目录,并提供对文件和目录的访问。文件系统也可以是一个独立的软件模块,它运行在操作系统之上,提供对文件和目录的访问和管理。常见的文件系统类型包括 FAT、FAT32、NTFS、ext2、ext3、ext4 等。
2023-04-08 23:12:10
694
原创 绘图matplotlib包的使用
Figure相当于一张白纸——可称做画布,Axes则是画布中的一块区域。一个Figure对象中可以包含一个或多个Axes对象,一个Axes对象中包含2个或3个Axis对象。每个Axes对象包含:一个title、一个x_label, 一个y_label对象。一个"Figure"意味着用户交互的整个窗口。两者都不需要事先创建figure,因为会默认建立自己的figure;plt.gcf则是用来获得当前活跃的figure;我们首先来说plt.plot的绘图规则,它是。生成一个figure, 严格的讲,是生成。
2023-04-04 15:46:33
353
原创 Git仓库---分布式版本控制系统
最典型的例子就是,github上我们自建了一个空仓库,并建立了一个readme文件,此时github上这个仓库默认的分支是main分支,此时,如果我们想把本地的一个仓库推到github上这个建立的仓库,往往会产生一个新的分支master,所以我们github上就出现了两个分支,一个main,一个master,此时,这两个分支是无法合并的。而当两个完全无关的支路进行合并时,两个支路实际上是没有互相的信息的,也就是说其实是不存在主次关系的,那么git把这两个分支认为是完全无关的分支,所以不让合并。
2023-04-04 14:45:23
1007
空空如也
python的数据存储问题
2021-12-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人