本文是自己的一些随笔,记录一些比较关键的,以后可以用到的知识点。
python中使用参数
| 1 | from argparse import ArgumentParser | 
python处理 json
| 1 | import json | 
python中arg和*kwargs的区别
这两个是python中的可变参数。*args 表示任意多个无名参数,它是一个tuple;**kwargs 表示任意多个关键字参数,它是一个dict。当 arg、args、*wkargs 同时使用时,必须按照该顺序,否则会报错。
| 1 | def foo(*args, **kwargs): | 
以上代码的输出为:
| 1 | args = (1, 2, 3, 4) | 
python中NiBabel模块的使用
NiBabel模块可以对常见的医学和神经影像文件格式进行读写,比如.nii.gz格式的文件。
| 1 | # 用pip install nibabel来安装 | 
python中的generator
generator是一个特殊的函数,它与普通函数相比有以下区别:
- generator函数包含一个以上的yield声明,用yield来返回值;
- generator函数被调用的时候,会返回一个iterator对象,但是函数并不会立即开始执行;
- __iter__()和__next__()方法被自动实现,所以可以使用next()函数对返回的此iterator对象进行迭代,也可直接使用for循环来迭代;
- 一旦一个generator 执行到yield语句,generator函数暂停,程序控制流被转移到调用方;
- 在对generator的连续调用之间,generator的本地变量和状态会被保存;
- 最终,generator函数终止,再调用generator会引发StopIteration异常;
generator函数中也允许使用return,但是return 后不允许有返回值。return和yield的区别在于,return声明彻底结束一个函数,而yield声明是暂停函数,保存它的所有状态,并且后续被调用后会继续执行。
| 1 | L = [x * x for x in range(10)] #返回的是列表 | 
TFRecords文件的读取和生成
TFRecords是一种tensorflow的内定标准文件格式,其实质是二进制文件。TFRecords文件方便复制和移动,能够很好的利用内存,无需单独标记文件,适用于大量数据的顺序读取,是tensorflow“从文件里读取数据”的一种官方推荐方法。
1. TFRecords文件的生成
| 1 | #生成TFRecord Writer,path是输出的路径,options是文件保存的压缩格式,有三种可选: | 
2. TFRecords文件的读取
| 1 | # 生成文件队列,file_list是包含多个精确到文件名路径的列表 | 
torch.utils.data.DataLoader
参考文章:Pytorch笔记05-自定义数据读取方式 torch.utils.data.Dataset与Dataloader。
torch.utils.data.DataLoader(dataset, batch_size, suffle, num_workers, drop_last)
- dataset:用来加载数据的数据集
- batch_size:默认为1
- shuffle:是否打乱数据,默认为False
- num_workers:子进程数,默认为0,即只有主进程
- drop_last:如果数据集大小不能被batch size整除,则去除最后一组不完整的batch,默认为False
需要注意的两点是,这种方式的返回值自动转变成torch.Tensor类型,比如下面的例子中我在Dataset类中返回的是numpy数组,但是在取数据集的数据时得到的却是torch.Tensor类型。第二就是当在DataLoader中设置了batch_size参数后,会自动帮你增加batch对应的维度,如果自己手动添加的话就重复了。
例子:
| 1 | import glob | 
python知识点
- 当有函数嵌套时,外层函数的返回值往往是内层函数,并且在内层函数只可以在外层函数里访问
- 通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”
其他知识点
- Dice 损失类似于交并比,有两个mask,记为X和Y,其Dice损失为$Dice=2\times\frac{X\cap Y}{|X|+|Y|}$
- WinEdt 中 Tex 编译的快捷键为 ctrl+shift+P,当出现报错信息时 l.30 中字母 l 后面的即出错的行数,输入 e 可以定位到对应的行,输入 Enter 查看下一个错误信息,输入 s 忽略所有报错信息。
- 变形场(deformation field)是指能使流体在运动中发生形状变化,尤其是伸展(收缩)和切变的速度场。
- 用 nvidia-smi命令查看显卡使用情况,watch -n 1 nvidia-smi动态查看显卡使用情况
- ubuntu查看版本信息:lsb_release -a,查看 CUDA 版本nvcc --version或cat /usr/local/cuda/version.txt
- linux 编辑环境变量 vi ~/.bashrc,使环境变量生效source ~/.bashrc,查看环境变量中的 PATH 等echo $PATH
- 远程连接服务器离线跑代码:首先用 sudo apt-get install screen安装 screen用screen -S screen名创建一个 screen,然后运行程序即可,这样就可以关掉连接服务器的软件了。输入screen -ls即可查看现有的 screen,输入screen -r 编号.screen名就可以重新连接到 screen。当意外退出时,用screen -D -r 编号.screen名重新连接到screen。需要彻底关闭 screen 时可以使用kill screen编号即可。在screen界面中,按Ctrl+A然后按Esc键可以用键盘上的方向键和PageUp/PageDown键进行翻页,按Ctrl+C退出。
- free -h查看linux系统内存大小
- unzip 压缩文件名.zip在linux下解压.zip格式的压缩文件
- IDEA中快捷输入:- psvm+Enter:public static void main(){}
- sout:System.out.println();
- Ctrl+J:代码补全提示
- Ctrl+insert:快速生成getter和setter方法
 
- sudo kill -9 PID:根据PID杀掉- nvidia-smi命令显示的正在占用显存的进程
- 在vim编辑器下按Ctrl+S会锁定屏幕,此时可以用Ctrl+Q解除锁定
- 本文作者: 俎志昂
- 本文链接: zuzhiang.cn/2020/02/21/notes/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
 
		 
                    