- 博客(51)
- 收藏
- 关注
原创 论文图表中w/ w/o的意思
论文图表中w/ w/o的意思一般用在消融实验的图标中,进行对照,是一种缩写。w/ => withw/o => without
2021-09-01 18:06:49 5659
原创 图像分割学习笔记
图像分割学习笔记全局信息和局部信息局部信息提取位置:浅层网络中提取局部信息特点:物体的几何信息比较丰富,对应的感受野较小目的:有助于分割尺寸较小的目标,有利于提高分割的精细程度全局信息提取位置:深层网络中提取全局信息特点:物体的空间信息比较丰富,对应的感受野较大目的:有助于分割尺寸较大的目标,有利于提高分割的准确程度比较语义分割面临着语义和位置信息不可兼得的问题。全局信息解决的是“是什么”,而局部信息解决的是“在哪里”。在下采样结构中,一般认为前三层依然是浅层跳跃融合结构将浅层特征
2021-08-29 22:53:49 439
原创 人工神经网络中为什么ReLU好过tanh和sigmoid
人工神经网络中为什么ReLU好过tanh和sigmoidtanh和sigmoid是饱和激活函数,在x不断增大或减小后,y会越来越接近于一个固定值,像sigmoid就会接近0或1,这时梯度就会非常小,难以学习。而ReLu是非饱和激活函数,大于0的部分始终有不错的梯度,小于0的部分置0也增加了稀疏性,降低过拟合。...
2021-08-22 23:49:01 518
原创 为什么引入非线性激活函数
为什么引入非线性激活函数多个线性层叠加起来也是一个线性层,而非线性层的引入可以提升模型的特征提取能力,只要非线性激活函数足够多,几乎可以逼近任意函数,这对于学习一个数据集的概率分布非常重要。...
2021-08-22 23:44:03 736
原创 极大似然估计与最大后验概率估计(MLE与MAP)
极大似然估计与最大后验概率估计(MLE与MAP)对于概率看法不同而存在着两个不同的派别,频率学派和贝叶斯派。频率学派认为世界是确定的,在数据量大的情况下,采用极大似然估计可以很好地还原模型的真实情况。贝叶斯派认为世界是不确定的,基于观测数据的方式不同或者假设不同,推导得到参数也会不相同,在先验概率准确的情况下,最大后验概率估计得到的结果效果会很好。...
2021-08-22 23:25:03 251
原创 hashmap冲突的解决方法
hashmap冲突的解决方法哈希函数的hash冲突通常有四种解决方案:开放地址法,当前key被占领了就找下一个位置,下一个位置的定位方案有线性探测再散列、平方探测再散列、随机探测再散列。链地址法,hash相同的放在一个新的叫同义词链的链表里,链表头指针放到value位置。再哈希,运用多个哈希函数,一个的哈希值冲突就用下一个。建立公共溢出区,将哈希表分为基本表和溢出表,凡是是基本表发生冲突的,放入溢出表中。hashmap采用的是链地址法。...
2021-08-22 23:14:42 1098
原创 链表与数组的优缺点
链表与数组的优缺点数组的优点· 随机查找速度快。数组的缺点· 内存要求高,需要连续的内存空间;· 增删的速度慢;· 数组大小固定,动态扩展性差,而且可能浪费内存。链表的优点· 内存要求低,不需要连续的内存空间;· 增删的速度快。· 数组大小不固定,动态扩展性强,内存利用率高;链表的缺点· 随机查找速度慢。...
2021-08-22 22:36:14 278
原创 对L1,L2正则化的理解
对L1,L2正则化的理解L1,L2都可以通过约束参数降低剧烈波动来防止过拟合。而L1正则化可以产生稀疏模型,进而可以用于特征选择,所以L1适用于特征之间有关联的情况。L2让所有特征的系数都缩小,但不会减为0,它会使优化求解稳定快速,所以L2适用于特征之间没有关联的情况。...
2021-08-21 00:07:47 193
原创 对网络模型压缩有什么了解
对网络模型压缩有什么了解网络模型压缩方法通常有剪枝、量化、蒸馏。剪枝分为非结构化剪枝和结构化剪枝,非结构化剪枝指将部分不重要的参数置0,在一般的硬件设备中其实并不能加速,因为即使是0仍然要参与运算,结构化剪枝指将部分不重要的通道去掉,可以直接减少运算量,一般在判别模型中权重越低重要性也越低,可以优先作为被剪枝的通道,但是在生成模型中,权重低不代表重要性低,可能权重低的通道会影响细节部分,因此常规的剪枝方式也不适用于生成模型。量化是将精度转换为存储空间更小的精度,从32位单精度转换为8位整型,可以将占用
2021-08-20 23:52:07 186
原创 怎么看待对抗攻击深度学习模型
怎么看待对抗攻击深度学习模型对抗攻击与对抗防御,就像网络攻防一样永远不会休止,互相促进发展。深度学习模型的复杂性和黑盒性决定了永远无法覆盖100%的场景,换句话说,泛化能力是有限的,而如果有一个方式找到了泛化能力之外的内容,那么当前的模型便不再安全,在普通应用场景中还好,但是如果涉及到安防等领域,就是大问题了,本质上对抗攻击深度学习模型的发展也会促进对抗防御深度学习模型的发展,以及促进这个领域不断提升泛化能力。...
2021-08-19 22:51:33 297
原创 池化层的作用
池化层的作用在卷积神经网络中常常会在相邻的卷积层中间加入池化层,池化层可以有效缩小参数矩阵的尺寸,从而减少参数数量,所以加入池化层可以加快计算速度和防止过拟合。列举一下的话可以有:完成下采样去除冗余信息,对特征进行压缩,降低网络复杂度实现非线性扩大感受野池化一般有最大池化和平均池化,最大池化适用于过滤掉比较多无用信息的场景,比如网络浅层通常会比较多无用信息;而平均池化适用于整体都是有用信息时取一个平均,比如网络深层一般都是重要信息。在 PyTorch 中还有一个自适应池化(既有最大也有平均
2021-08-19 22:40:43 2474
原创 卷积层相比全连接层的优点
卷积层相比全连接层的优点参数计算量更小。全连接层每一个节点都要与下一层的每一个节点全部连接,每一个连接都有参数参与运算;而卷积层参数只与卷积核大小以及输出特征图的通道数相关。卷积层通过权值共享和稀疏连接来保证单层卷积中训练参数少。...
2021-08-19 22:19:14 2873
原创 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 1190
原创 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 333
原创 python字典转字符串
python字典转字符串解释例子解释python 中将字典转为字符串的方式,可以使用 str;如果要将字符串转为字典,则可以使用 eval。但是有一个问题,如果你的字典里的字符串使用的是双引号,通过 str 转换后会变成单引号,这时候还有一个方案可选,使用 json.dumps,就可以保住双引号。例子声明字典 a,转换成字符串 b,再转换回字典 c;使用另一种方式转换成字符串 d,并且打印出两种转换的耗时。如果不用考虑双引号,则使用 str,毕竟比 json.dumps 快了一个数量级。impor
2021-01-25 19:09:00 26500
原创 vim: symbol lookup error: /lib/x86_64-linux-gnu/libgtk-3.so.0: undefined symbol: g_mount_operation_s
vim: symbol lookup error: /lib/x86_64-linux-gnu/libgtk-3.so.0: undefined symbol: g_mount_operation_set_is_tcrypt_hidden_volume问题解决问题直接 pip install vim 后发现 vim 不能正常使用,会报以下错误:vim: symbol lookup error: /lib/x86_64-linux-gnu/libgtk-3.so.0: undefined symbol:
2021-01-25 14:59:22 2822 1
原创 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 1646 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 1345
原创 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 10924 1
原创 Ubuntu下统计文件个数
统计某文件夹下文件的个数ls -l |grep “^-”|wc -l统计某文件夹下目录的个数ls -l |grep “^d”|wc -l统计文件夹下文件的个数,包括子文件夹里的ls -lR|grep “^-”|wc -l
2021-01-21 15:42:19 345
原创 护眼色
护眼色设置首先是最温和的绿豆沙色色调(Hue):85,饱和度(Sat):123,亮度(Lum):205;RGB颜色红:199,绿:237,蓝:204;十六进制颜色:#C7EDCC或用#CCE8CF其他几种电脑窗口视力保护色:银河白 #FFFFFF RGB(255, 255, 255)杏仁黄 #FAF9DE RGB(250, 249, 222)秋叶褐 #FFF2E2 RGB(255, 242, 226)胭脂红 #FDE6E0 RGB(253, 230, 224)青草绿 #E3EDCD RG
2021-01-20 22:37:49 687
原创 2的N次方速查
2的1次方:22的2次方:42的3次方:82的4次方:162的5次方:322的6次方:642的7次方:1282的8次方:2562的9次方:5122的10次方:10242的11次方:20482的12次方:40962的13次方:81922的14次方:163842的15次方:327682的16次方:655362的17次方:1310722的18次方:2621442的19次方:5242882的20次方:10485762的21次方:20971522的22次方:41943042
2021-01-20 22:36:23 6989 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 1500 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 3227 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 409
原创 PSNR和SSIM
PSNR和SSIM解释解释PSNR 全称 Peak Signal-to-Noise Ratio,峰值信噪比,与两张图片的均方误差成反比,因此两张图片差距越小,PSNR 越大。SSIM 全称 Structural SIMilarity,结构相似性,基于两张图片的亮度、对比度、结构进行比较,两张图片越相似,SSIM 越大。...
2021-01-20 13:00:45 1506
原创 激活函数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 1463
原创 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 4780
原创 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 2461
原创 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 3241
原创 torch.flatten作用是什么
torch.flatten作用是什么解释例子解释torch.flatten 作用是改变张量的维度和维数,从指定的维度开始将后面维度的维数全部展成一个维度,新的维数就是被展开的所有维度的维数的乘积。例子首先,我们先生成三维张量 b,维数分别为3, 1, 3,接着看一下从第零维开始展开和从第一维开始展开的结果:仔细对比看一下每一个大概就能懂了,前面解释时描述的“从指定的维度开始将后面维度的维数全部展成一个维度,新的维数就是被展开的所有维度的维数的乘积”。...
2021-01-08 14:58:45 2101
原创 正态分布随机数是什么
正态分布随机数是什么解释例子解释正态分布是一种常见的分布,而我们生成符合正态分布的随机数,或者说将域收敛到正态分布,都是指的当前某个变量的所有数合到一起符合正态分布,不要混淆成其他含义。例子已知,Python 中 torch.randn 会生成均值为 0,标准差为 1 的正态分布的随机数:此处,我们先生成维度为 3,每个维数都是 100 的张量 a,打印出它的 shape, 并计算其均值和标准差:从结果可以看到,均值非常接近 0,标准差非常接近 1,说明确实是变量 a 的所有数一起符合正态分
2021-01-08 14:45:15 5101
原创 squeeze和unsqueeze作用
squeeze和unsqueeze作用作用示例作用改变张量的维度,便于进行运算。如果你当前的张量shape为三维,而需要四维才能参与运算,这时候就可以添加一个维度,维数为1。示例我们首先生成一个二维张量 b,接着生成三维张量 c,四维张量d,再缩回二维张量 e。从例子中可以发现:unsqueeze(xxx) 可以在第 xxx 维插入一个维度,维数为 1 。squeeze() 可以把张量所有的维数为 1 的维度去掉。...
2021-01-06 13:57:34 453
原创 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 1692 5
原创 Ubuntu下应用卡住无法关闭
Ubuntu下应用卡住无法关闭通过命令行杀死进程通过命令行杀死进程使用 Ctrl + Alt + T 打开命令行窗口,输入“ps -aux”显示当前正在运行的进程(通过最右一列COMMAND确定),找到对应需要杀死的进程的PID(第二列),输入“sudo kill xxx”杀死对应进程,其中xxx为对应的PID。...
2021-01-06 10:47:33 1215
原创 事件分发
Android事件分发会经过一系列步骤与事件,顺序为:1.父控件的dispatchTouchEvent;2.父控件的onInterceptTouchEvent; // 决定是否将事件分发给子控件,不拦截则调用3456,拦截则调用父控件的触摸事件3.子控件的dispatchTouchEvent;4.子控件的onTouch; // 需要setOnTouchListener才会被调用
2020-06-24 09:01:16 113
原创 代理模式
一、问题如何使用相同的接口在不同的场景使用不同的对话框?二、选型使用代理模式,声明相同的接口,用来设置标题、确认按钮、取消按钮的文案、样式等,在构造函数中传入对应的类型,在代理主题中根据类型实例化不同的真实主题,使用同样的接口完成不同真实主题的初始化,因为各种类型的对话框可以抽象出相同的几个接口,例如标题,背景,文案等。三、使用代理模式由三部分构成:1.抽象主题
2020-06-24 09:01:00 121
原创 HashMap
一、HashMap的结构数组索引方便,增删麻烦;链表增删方便,索引麻烦;而哈希表则集成了数组和链表的优点,索引和增删都方便。哈希表是由数组+链表组成的,数组每个元素存储着链表的头结点。元素的key哈希值取余数组长度:hash(key)%len计算出元素放在数组哪个下标中。HashMap的实现中有一个bean,HashMapEntry,用来存储元素的key,value,next。当数
2020-06-24 09:00:44 134
原创 Android 相关七种 CPU 架构适配
NDK 开发时会涉及到 CPU 架构的适配,不同的机器上可能会有不同的 CPU 架构,也就是说,翻译到机器上使用的规则不一样,Android 上有7种 CPU 架构。 1.armeabi 2.armeabi-v7a 3.arm64-v8a 4.x86 5.x86_64 6.MIPS 7.MIPS64从厂家上来分是有三种,arm,x86,MIPS,arm 系列是绝大多数手机上使用的,x8
2017-05-01 14:47:31 13245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人