编程速记
文章平均质量分 76
Leeyegy
人生很长,余生很短。
展开
-
编程速记(41):PyTorch篇&Tensorflow篇-CUDA out of memory & 指定model/data运行GPU
一、简述场景简述:文件需要加载多个不同的模型同时运行从而导致cuda OOM,这些模型有的是用tf代码写的,有的是用PyTorch写的。二、尝试过的失败方案对于PyTorch而言,使用多GPU训练方案也许是一种可行的方案。net = torch.nn.DataParallel(model, device_ids=[xxx])但是由于也涉及到tf的model,因此这样并不能解决问题,运行起来依旧会报CUDA oom。三、解决方案1.调小batch_size可以尝试将batch_size直原创 2020-08-02 17:56:31 · 566 阅读 · 0 评论 -
编程速记(40):PyTorch篇-to()转换数据类型
一、简述本篇blog将介绍基于to()的简便的数据类型转换的方法。很多时候,我们需要将tensor A转换成与tensor B同一类型,这一需求利用to可以简单完成。to()的另外一种用法是将数据或模型向GPU或者CPU迁移。二、Demo import torch A = torch.rand(1, 7, 7) B = torch.rand(1, 7, 7) A.to(B)...原创 2020-07-29 19:38:29 · 1098 阅读 · 0 评论 -
编程速记(39):Matlab篇-提取图像高频/低频信息-基于DCT
一、简述希望通过离散余弦变换获取某张图片的高频/低频信息二、Demo转灰图处理方式RGB = imread('autumn.tif');I = rgb2gray(RGB);J = dct2(I);figureimshow(log(abs(J)),[])colormap(gca,jet(64))colorbarJ(abs(J) < 10) = 0;K = idct2...原创 2020-04-13 11:34:19 · 7286 阅读 · 5 评论 -
编程速记(38):Python篇-argparse传递参数类型为list
一、需求希望传递一个list作为参数二、demo定义argsimport argparseparser = argparse.ArgumentParser(description=' ')parser.add_argument('--gamma_r', type=float, nargs='+',default=[100,8.7,0.7], help='for ddid ')...原创 2020-04-11 13:41:51 · 6614 阅读 · 0 评论 -
编程速记(37):Python篇-断言assert
一、用法assert condition , "error info"原创 2020-03-19 17:35:36 · 148 阅读 · 0 评论 -
编程速记(36):Python篇-*args与**kwargs
一、简述*args和**kwargs通常出现在函数形参中。这两者是对变长参数的两种描述。*args针对的是非关键字参数**kwargs针对的是关键字参数二、实验代码demodef test(a, *args, **kwargs): print a print args print kwargsif __name__ == "__main__": ...原创 2020-03-19 17:12:52 · 246 阅读 · 0 评论 -
编程速记(35):Pytorch篇-.item()与.data的区别
一、结论.data返回的是一个tensor而.item()返回的是一个具体的数值。注意:对于元素不止一个的tensor列表,使用item()会报错二、实验代码demoimport torch a = torch.ones([1,3])print(a)print(a.data)print(a.data[0,1])print(a.data[0,1].item())# print...原创 2020-03-19 17:09:43 · 9399 阅读 · 0 评论 -
编程速记(34):Git篇-如何放弃本地修改-commit your changes or stash them before you can merge
一、场景描述使用git pull之后遇到报错:error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.javaPlease, commit your changes or stash them before you can merge.Aborting一般是...原创 2020-03-19 11:42:11 · 195 阅读 · 0 评论 -
编程速记(33):Matlab&Python篇-np.roll&np.fft.fft2
一、简述本文对Matlab与Python之间的几个函数转换进行说明。主要包括:快速傅里叶变换 fft2 (Matlab) -> np.fft.fft2数组滚动 circshift(Matlab) -> np.roll事实上,对于三维数组,Matlab会将其分解其多个二维数组进行处理,而Python并不会这样(主要是针对图像处理过程中可能涉及到三维数组)二、快速傅里叶变换 ...原创 2020-03-18 19:11:55 · 2004 阅读 · 0 评论 -
编程速记(32):Python篇-读取图片&保存图片
一、简述本篇blog将介绍基于opencv库进行图片读取和保存的简要操作和需要注意的点。二、图片读取import cv2img = cv2.imread(filename)默认情况下,是读取的彩色图片三通道。如果是灰色图片,也会返回三通道的值,但是三通道对应的位置的元素值是一样的。如果希望灰色图片返回的单通道数值,那么需要给定参数:flags=cv2.IMREAD_GRAYSCALE...原创 2020-03-18 13:21:22 · 398 阅读 · 0 评论 -
编程速记(31):np.dot的理解
一、简述如果是两个一维数组,那么np.dot返回的是两个数组的内积(逐元素对应相乘最后求和)。如果是两个二维数组,那么np.dot返回的是矩阵乘法的结果。二、参考:https://www.cnblogs.com/luhuan/p/7925790.html...原创 2020-03-16 19:30:16 · 426 阅读 · 0 评论 -
编程速记(30):Python篇-矩阵乘法与除法&逐元素乘除
一、需求实现矩阵乘法与除法。本篇blog主要是针对基于numpy实现的矩阵乘法与除法。二、矩阵乘法方式一:np.dot定义两个多维数组,满足矩阵乘法规则,直接调用即可。# np.dot import numpy as np a = np.ones([2,3])b = np.zeros([3,5])print(np.dot(a,b))方式二:基于np.matimpo...原创 2020-03-16 19:25:12 · 11609 阅读 · 0 评论 -
编程速记(29): Pytorch篇-torch.size()转list
如题:直接使用list函数。例如:noisy_code = linear_code - torch.normal(means=0, std=args.noise_dev, out=list(linear_code.size()))原创 2020-03-09 17:47:50 · 5254 阅读 · 0 评论 -
编程速记(28): Pytorch篇-纠错AttributeError: cannot assign module before Module.__init__() call
一、出错原因调用了自定义的类,但是 在自定义的类的__init__函数下面没有写super( XXX, self ).init() ——主要出现在基于nn.Module自定义网络模块的时候。二、解决方案...原创 2020-03-09 17:03:38 · 988 阅读 · 0 评论 -
编程速记(27): Pytorch篇-纠错'Res_rec' object has no attribute '_parameters'——基于nn.Module的网络的搭建
一、报错:‘Res_rec’ object has no attribute ‘_parameters’二、纠错前代码class Res_com(nn.Module): def __init__(self, n_com=3, b_com=6, d_com=2, com_disable=False): def make(n, b, d): f1...原创 2020-03-09 16:59:48 · 4892 阅读 · 0 评论 -
编程速记(26): Tensorflow篇-模型的恢复与保存-tf.saver
一、需求1.每次找到文件夹中保存的最后一次epoch的次数2.如果1.存在,那么将模型恢复到该epoch的参数3.每跑完一个epoch,保存模型参数二、demo准备工作1.定义一个保存epoch的文件夹路径save_dir2.定义保存模型的文件名pattern,比如:epoch-300.例如:如果当前是第10个epoch,则参数保存为model_10.pthtf.sav...原创 2020-03-06 16:07:32 · 432 阅读 · 0 评论 -
编程速记(25):Pytorch篇-张量(Tensor)复制
张量复制方式op是否共享内存是否保留在计算图中参与梯度计算tensor.clone()新创建内存是tensor.detach()共享内存否tensor.clone().detach()新创建内存否说明是否新建内存意味着:假定A和B共享内存,那么对A或B的改变将反馈到A和B。因为变量名只是一个对数据的引用,数据改变了,那么A和B自然都变了...原创 2019-12-23 12:48:05 · 830 阅读 · 0 评论 -
编程速记(24):Pytorch篇-自定义loss
一、democlass MyLoss(nn.Module): def __init__(self): super(MyLoss, self).__init__() print '1' def forward(self, pred, truth): return torch.mean(torch.mean((pred-truth)*...原创 2019-12-13 15:43:56 · 241 阅读 · 0 评论 -
编程速记(25):Pytorch篇-点乘与np.dot
一、描述numpy中的点乘np.dot是数学意义上的向量内积,而Pytorch中tensor之间的点乘与之对比没有求和的过程原创 2019-12-12 21:55:55 · 883 阅读 · 0 评论 -
编程速记(23):终端篇-Ubuntu 中终端报错太长解决办法
一、场景描述在ubuntu终端中,如果程序报错行数过多,将无法看全。如果是使用tee命令的话,也只包含有程序正常的输出,而不会包含出错信息二、解决方案script -f output.txt之后终端的输出将都保存到该文件中如果希望取消该模式,按ctrl+d...原创 2019-12-10 19:53:35 · 367 阅读 · 0 评论 -
编程速记(22):Pytorch篇-模型保存与恢复&正则表达式的应用&glob.glob
一、需求1.每次找到文件夹中保存的最后一次epoch的次数2.如果1.存在,那么将模型恢复到该epoch的参数3.每跑完一个epoch,保存模型参数二、demo准备工作1.定义一个保存epoch的文件夹路径save_dir2.定义保存模型的文件名pattern,比如:model_epoch.pth例如:如果当前是第10个epoch,则参数保存为model_10.pth实...原创 2019-12-07 10:56:18 · 633 阅读 · 1 评论 -
编程速记(21):Shell语法篇-字符串中$的使用与反斜杠
一、场景描述在bash文件中,希望将某个程序的输出保存到一个文件,文件名字为attack_$attack_method$method.txt在这个场景中,涉及到多个变量的取值,而且在字符串中我们也需要显式指出一个变量到哪里为止。例如在上例中的变量名到底是attack呢?还是attack_method呢?这个时候我们就需要使用反斜杠来隔开变量名与一般字符了。二、demoattack=FGSM...原创 2019-12-01 16:51:08 · 656 阅读 · 0 评论 -
编程速记(20):Python篇-基于skimage包进行图像加噪
一、skimage.util.random_noise用法可以实现的噪声类型包括:高斯白噪声、泊松噪声、椒盐噪声、盐噪声、椒噪声、乘性噪声等等。具体用法文档如下介绍:random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs) Function to add random noise of various t...原创 2019-11-30 15:26:46 · 1903 阅读 · 0 评论 -
编程速记(19):Git篇-忽略提交 .gitignore
一、场景描述很多时候,或者是因为项目中存在大文件无法成功提交到远程仓库(比如数据集),或者有某些不希望提交的文件等,就需要使用git的忽略提交二、编写.gitignore文件2.1.语法匹配目录使用功能斜杠"/"开头通配多个字符使用星号“*”通配单个字符使用问号“?”包含单个字符的匹配列表使用方括号:[]注意:git对于.gitignore配置文件是按行从...原创 2019-11-30 13:12:21 · 235 阅读 · 0 评论 -
编程速记(18):Python篇-引入上级目录中模块
demo例如希望引入当前main.py的上级目录中的utils文件夹下所有py文件一种错误的做法是:from ../utils import *正确的做法是:import syssys.path.append("../")from utils import *因为python的import默认只会处理同级以及下级目录,如果希望搜索到上级目录,就需要利用sys.path.appe...原创 2019-11-29 15:26:28 · 290 阅读 · 0 评论 -
编程速记(17):numpy篇-对np.array做阈值限定
一、场景描述如果我们希望对一个np.array做阈值限制,即令大于某一个数的元素赋值为a,否则则赋值为b二、demoimport numpy as np a = np.asarray([1,2,3])print(a>1)a[a>1] = 0print(a)运行结果[False True True][1 0 0][Finished in 0.5s]...原创 2019-11-26 21:52:18 · 5850 阅读 · 1 评论 -
编程速记(16):Python篇-返回文件所在路径的前缀目录-os.path.dirname
一、场景描述很多时候,我们希望获得某一个文件的前缀文件夹路径,这个时候就可以使用os.path.dirname()二、demo一般情况print(os.path.dirname("/data/xxx/demo.py"))返回值:/data/xxx注:如果传入的是一个文件夹的路径,那么就会去掉最后一级,返回前面所有的前缀文件夹路径利用__file__返回当前执行文件的前缀文件夹...原创 2019-11-26 20:33:28 · 828 阅读 · 0 评论 -
编程速记(15):Python篇-assert断言的应用
一、场景描述我们希望检测一类条件,如果条件不满足就中断程序运行,并且可以给出错误信息描述。一类简单的解决方案就是采用断言。二、Demoassert condition, "error info"例如:assert os.path.isfile(args.resume), 'Error: no checkpoint directory found!' # 断言的作用...原创 2019-11-26 20:26:08 · 665 阅读 · 0 评论 -
编程速记(14):图像处理篇-彩色图片的通道位置
一、场景描述在Python的处理场景中,彩色图像的表示方法的通道位置是有区别的,有的是[Channel,Height,width],而有的则是[Height,width,Channel]。在具体的应用中要注意转换二、记录场景类型Pytorch网络输入[C,H,W]skimage处理图像(比如imread、imsave、compare_ssim等)[H,W,C]...原创 2019-11-26 15:02:49 · 196 阅读 · 0 评论 -
编程速记(13):Python篇-基于argparse包传递命令行参数
一、场景描述假定我们为model定义了以下设置在服务器的环境下,一个常见的操作是希望设置其中的变量不同的值来run该程序,再进一步分析这个变量对于我们的model的性能的影响。如果我们希望同时对某一程序run不同的进程并使用到不同的操作,那么使用argparse包就变得很有必要了。二、demopython main.py --test_batch_size 200 --sigma 2...原创 2019-11-26 02:16:00 · 151 阅读 · 0 评论 -
编程速记(12):保存日志-保存print()函数输出的训练过程
一、场景描述很多时候,利用服务器run model的时候,我们会选择逐epoch打印一些数据信息(比如loss)以便分析模型训练情况。这个时候,保存这些训练日志就变得很重要了。尤其是在ubuntu服务器上利用tmux进行分屏操作的时候,翻页查看中断输出变得不很方便,这个时候,就可以考虑将日志保存到文件中。二、基于linux系统tee命令的实现python 要执行的文件名.py | tee ...原创 2019-11-26 01:56:31 · 373 阅读 · 0 评论 -
编程速记(11):Python篇-图像读取-skimage.io.imsave&imread
一、图像类型与通道channel图像类型通道数灰度图像1彩色图像3(RGB)经过测试,经过x.png格式应该是RGBA四通道,但是使用imread读取出来的矩阵仍然是三通道。测试代码如下:# 四十三:skimage.io.imread读取图像from skimage.io import imreadimport numpy as npa = imrea...原创 2019-11-25 18:05:24 · 4188 阅读 · 0 评论 -
编程速记(10):Pytorch篇-detach()与tensor转numpy
报错原因分析涉及到梯度传播的tensor变量不能够直接numpy()转numpy,需要使用:var.detach().numpy()原创 2019-11-25 16:55:44 · 5218 阅读 · 1 评论 -
编程速记(9):Python篇-字典与JSON字符串的相关操作
一、创建字典dic = dict() # 创建空字典二、字典插入元素dic.update(key=value)注:比较头疼的是key在这里只能是常量而不能是变量三、获取字典key的数量len(dic.keys())四、遍历字典for key in dic: print(dic[key])五、字典转JSON字符串import jsonjson_Str = jso...原创 2019-11-21 19:59:22 · 144 阅读 · 0 评论 -
编程速记(8):Python篇-获取文件夹下指定文件后缀名的文件名
basic:os.listdir() & str.endswith()def get_list_img(data_dir): files = os.listdir(data_dir) basic_path = data_dir for i in files: if i.endswith(".png"): print(i)原创 2019-11-21 14:50:48 · 123 阅读 · 0 评论 -
编程速记(7):Pytorch篇-报错:Invalid device ids - 多GPU并行
报错invalid device ids场景在运行多GPU的pytorch程序时,报该错误原因因为pytorch 默认是只有cuda 0 是可见的。可以运行下面代码:import torchprint(torch.cuda.device_count())会发现服务器上明明有多张显卡,但是返回值为1.这是因为:pytorch默认只有cuda0可见解决方案假定要执行的文件名...原创 2019-11-19 20:03:03 · 516 阅读 · 0 评论 -
编程速记(6):Anaconda篇-conda虚拟环境重命名
说明anaconda没有专门用来重命名的机制,一般采用下面的步骤进行重命名解决方案step one. 克隆conda create -n newname --clone oldnamestep two. 删除就环境conda remove -n oldname --all...原创 2019-11-19 17:22:23 · 804 阅读 · 0 评论 -
编程速记(5):Pytorch篇-Tensor类型转换
Summary主要包括以下三种途径:1.使用独立的函数;2.使用torch.type()函数;3.使用type_as(tesnor)将张量转换为给定类型的张量。具体参考博客:https://blog.csdn.net/jningwei/article/details/79849600...转载 2019-11-18 21:39:12 · 162 阅读 · 0 评论 -
编程速记(4):Pytorch篇-搭建神经网络-卷积/池化/全连接层参数的计算-以CIFAR10数据集为例
文章目录背景计算公式参考博客背景利用Pytorch从头开始搭建一个神经网络需要涉及到卷积层到池化层以及全连接层参数的计算。本文以CIFAR10数据集为例介绍参数的计算过程(主要涉及到torch.nn.Conv2d、torch.nn.Linear、torch.nn.functional.maxpool2d)下面是用来处理CIFAR10数据集的一个简单的神经网络#input:[batch_...原创 2019-11-18 20:06:13 · 1216 阅读 · 0 评论 -
编程速记(3):Pytorch篇-PIL Image与Tensor之间的格式转换-CIFAR10数据集
一、报错input {} float32 type is not supported.二、场景 # 首先获取源数据 transform = transforms.Compose([transforms.ToTensor()]) trainset = CIFAR10(root="./data",train=True,download=True,transform = ...原创 2019-11-15 23:52:41 · 2093 阅读 · 0 评论