AI
记录学习AI的一些新事
Kester_
写过安卓应用,干过图像引擎,搞过数字图像,正在整计算机视觉
展开
-
论文图表中w/ w/o的意思
论文图表中w/ w/o的意思一般用在消融实验的图标中,进行对照,是一种缩写。w/ => withw/o => without原创 2021-09-01 18:06:49 · 5487 阅读 · 0 评论 -
python获取文件md5
python获取文件md5解释例子解释python 中使用 hashlib.md5 获取 md5,再通过 hexdigest 转为十六进制。如果是 Ubuntu 系统下,还可以调用 bash 的 md5sum 获得。例子import osimport hashlibdef main(): input_path = '' with open(input_path, 'rb') as f: md5 = hashlib.md5(f.read()).hexdigest() print(m原创 2021-01-27 10:21:10 · 1127 阅读 · 0 评论 -
Ubuntu上Python调用bash
import osdef main(): cmd = 'ls' ans = os.system(cmd) print(ans)if __name__ == '__main__': main() 如果找不到命令,可以在控制台找到命令的绝对路径,加入到 cmd 中,其他命令同理。whereis ls原创 2021-01-27 09:49:46 · 300 阅读 · 0 评论 -
python字典转字符串
python字典转字符串解释例子解释python 中将字典转为字符串的方式,可以使用 str;如果要将字符串转为字典,则可以使用 eval。但是有一个问题,如果你的字典里的字符串使用的是双引号,通过 str 转换后会变成单引号,这时候还有一个方案可选,使用 json.dumps,就可以保住双引号。例子声明字典 a,转换成字符串 b,再转换回字典 c;使用另一种方式转换成字符串 d,并且打印出两种转换的耗时。如果不用考虑双引号,则使用 str,毕竟比 json.dumps 快了一个数量级。impor原创 2021-01-25 19:09:00 · 26289 阅读 · 0 评论 -
Python base64转后后多出\n
Python base64转后后多出\n问题描述解决方案例子展示问题描述Python 在使用 base64.encodebytes 转换后多出\n。解决方案使用 base64.b64encode 替代。例子展示import base64def main(): str1 = 'abcdefg' btr1 = bytes(str1, encoding='utf-8') btr2 = base64.encodebytes(btr1) print(btr2)原创 2021-01-21 19:39:39 · 1611 阅读 · 1 评论 -
Python json.dumps会多出空格
Python json.dumps会多出空格问题描述解决方案例子展示问题描述Python 中使用 json.dumps 可以将字典转换成字符串,但是会默认格式化成多了对应的空格。解决方案转换成字符串后手动将空格替换掉。例子展示import jsondef main(): dict = {"a":"aa","b":"bb"} str1 = json.dumps(dict) str2 = str1.replace(" ", "") print(str1)原创 2021-01-21 19:32:40 · 1285 阅读 · 0 评论 -
Python字典转字符串双引号变成单引号
Python字典转字符串双引号变成单引号问题描述解决方案展示例子问题描述Python 上定义了字典,并且键值对使用了双引号,使用str()转换成字符串后发现双引号变成了单引号。解决方案使用 json.dumps() 将字典转成字符串,就可以保留双引号了。展示例子import jsondef main(): dict = {"a": "aa", "b": "bb"} str1 = str(dict) str2 = json.dumps(dict) print(原创 2021-01-21 19:28:20 · 10732 阅读 · 1 评论 -
Python不加载图片获取尺寸
Python不加载图片获取尺寸解释例子解释网上其他人的说法基本都不太可行,恭喜你找到了宝藏。通常在 Python 里读取尺寸时都会把整张图片加载到内存中,非常耗时,有没有办法像 Andorid 加载 Bitmap 时一样快速读取尺寸而不加载图片呢?答案是有的,使用 imagesize。例子下载pip install imagesize使用import imagesizedef main(): input_path = '' width, height = imagesize.ge原创 2021-01-20 19:57:34 · 1399 阅读 · 1 评论 -
Python图片缩放
Python图片缩放解释例子解释Python 里对图片进行缩放可以使用 PIL.Image.resize 方法。例子对最大尺寸大于 1024 的图片进行缩放from PIL import Imageimport shutildef main(): input_path = 'xxx' output_path = 'xxx' fix_size = 1024 img = Image.open(input_path) width = img.width height = img.hei原创 2021-01-20 18:04:05 · 3151 阅读 · 1 评论 -
自定义学习率调度器
自定义学习率调度器解释例子解释PyTorch 中需要在训练中依据实际情况修改学习率,就需要用到学习率调度器,而 PyTorch 自带的学习率调度器只有有限的几种可以使用,这时候就可以自定义控制学习率调度器。例子比如我现在需要前 100 个 epoch 学习率不变,之后每个 epoch 都学习率线性减少,1000 个 epoch 时减到 0:def lr_scheduler_linear(optimizer, ori_lr, cur_epoch, keep_lr_epoch, end_epoch):原创 2021-01-20 13:52:25 · 356 阅读 · 0 评论 -
PSNR和SSIM
PSNR和SSIM解释解释PSNR 全称 Peak Signal-to-Noise Ratio,峰值信噪比,与两张图片的均方误差成反比,因此两张图片差距越小,PSNR 越大。SSIM 全称 Structural SIMilarity,结构相似性,基于两张图片的亮度、对比度、结构进行比较,两张图片越相似,SSIM 越大。...原创 2021-01-20 13:00:45 · 1414 阅读 · 0 评论 -
激活函数sigmoid/tanh/relu区别
激活函数sigmoid/tanh/relu区别解释例子解释训练网络做非线性变换时,经常会使用到 sigmoid/tanh/relu 激活函数,来增加网络的表达能力,公式为:sigmoid: y = 1(1+e−x)\frac{1}{(1 + e^{-x})}(1+e−x)1y 取值 (0, 1)tanh: y = (ex−e−x)(ex+e−x)\frac{(e^{x} - e^{-x})}{(e^x + e^{-x})}(ex+e−x)(ex−e−x)y 取值 (-1, 1)relu:原创 2021-01-09 15:08:26 · 1434 阅读 · 0 评论 -
AttributeError(“‘torch.dtype‘ object has no attribute ‘type‘“,)
@[TOC](AttributeError("‘torch.dtype’ object has no attribute ‘type’",))解释开发中经常会出现类型不对的问题,这时候可以单步调试,检查一下当前出错的变量类型,根据实际情况转换到对应类型即可。当前这个问题是因为在运算的时候需要使用type字段,而当前是Tensor类型没有type字段,考虑使用 Tensor.data.cpu() 转换到cpu数据,再 numpy.asarray 转换到 numpy 数组。例子求 loss 的均值的时候原创 2021-01-09 12:05:58 · 4634 阅读 · 0 评论 -
Tensor.detach的作用是什么
Tensor.detach的作用是什么解释例子解释Tensor.detach() 的作用是阻断反向梯度传播,在生成对抗网络的训练当中,在训练判别器的时候不需要生成器进行反向梯度传播,这时候就会使用到 detach()。例子我们先生成一个张量 a,其 requires_grad = True,再通过 a 和 a.detach() 构造 b 和 c 对照实验:可以看到,c 的 requires_grad = False,c 不会反向梯度传播给 a 。...原创 2021-01-08 20:16:14 · 2384 阅读 · 0 评论 -
PyTorch中Tensor.permute作用
PyTorch中Tensor.permute作用解释例子解释将 Tensor 的维度换位置。例子我们发现,第一维和第二维的维数互换了,permute 常用于训练验证数据时维度位置不同的情况,比如训练时使用[B, C, H, W]而当前张量是[H, W, C]的话,就要先用 unsqueeze(0)加一个维度成[B, H, W, C],再 permute(0, 3, 1, 2) 变换成[B, C, H, W],要思考清楚是从哪种变换成哪种,目标类型是[B, C, H, W],而 permute 的原创 2021-01-08 15:30:50 · 3102 阅读 · 0 评论 -
torch.flatten作用是什么
torch.flatten作用是什么解释例子解释torch.flatten 作用是改变张量的维度和维数,从指定的维度开始将后面维度的维数全部展成一个维度,新的维数就是被展开的所有维度的维数的乘积。例子首先,我们先生成三维张量 b,维数分别为3, 1, 3,接着看一下从第零维开始展开和从第一维开始展开的结果:仔细对比看一下每一个大概就能懂了,前面解释时描述的“从指定的维度开始将后面维度的维数全部展成一个维度,新的维数就是被展开的所有维度的维数的乘积”。...原创 2021-01-08 14:58:45 · 1999 阅读 · 0 评论 -
正态分布随机数是什么
正态分布随机数是什么解释例子解释正态分布是一种常见的分布,而我们生成符合正态分布的随机数,或者说将域收敛到正态分布,都是指的当前某个变量的所有数合到一起符合正态分布,不要混淆成其他含义。例子已知,Python 中 torch.randn 会生成均值为 0,标准差为 1 的正态分布的随机数:此处,我们先生成维度为 3,每个维数都是 100 的张量 a,打印出它的 shape, 并计算其均值和标准差:从结果可以看到,均值非常接近 0,标准差非常接近 1,说明确实是变量 a 的所有数一起符合正态分原创 2021-01-08 14:45:15 · 5014 阅读 · 0 评论 -
squeeze和unsqueeze作用
squeeze和unsqueeze作用作用示例作用改变张量的维度,便于进行运算。如果你当前的张量shape为三维,而需要四维才能参与运算,这时候就可以添加一个维度,维数为1。示例我们首先生成一个二维张量 b,接着生成三维张量 c,四维张量d,再缩回二维张量 e。从例子中可以发现:unsqueeze(xxx) 可以在第 xxx 维插入一个维度,维数为 1 。squeeze() 可以把张量所有的维数为 1 的维度去掉。...原创 2021-01-06 13:57:34 · 403 阅读 · 0 评论 -
Ubuntu下PyCharm单步调试卡住
Ubuntu下PyCharm单步调试卡住问题描述解决方案问题描述程序可以正常运行,但是单步调试时停在断点后,按 Step Over 无反应,按 Step Into 会卡顿无法操作 PyCharm。解决方案进入“File => Settings => Build, Execution, Deployment => Debugger => Python Debugger”,勾选选中“Gevent Compatible”。...原创 2021-01-06 11:03:56 · 1616 阅读 · 5 评论 -
Ubuntu下应用卡住无法关闭
Ubuntu下应用卡住无法关闭通过命令行杀死进程通过命令行杀死进程使用 Ctrl + Alt + T 打开命令行窗口,输入“ps -aux”显示当前正在运行的进程(通过最右一列COMMAND确定),找到对应需要杀死的进程的PID(第二列),输入“sudo kill xxx”杀死对应进程,其中xxx为对应的PID。...原创 2021-01-06 10:47:33 · 1150 阅读 · 0 评论