本文是自己的一些随笔,记录一些比较关键的,以后可以用到的知识点。
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
:默认为1shuffle
:是否打乱数据,默认为Falsenum_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 许可协议。转载请注明出处!