![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
神经网络
ONE_SIX_MIX
等待翻身的咸鱼E
展开
-
pytorch weighted_and_neg_topk_cross_entropy 加权的负权重topk交叉熵损失
相比上面文章里改的的loss,加入topk 负类型测试,当负权重的类别在预测类别前 K 的高概率类别时,才会传递梯度,否则会跳过。一种 用于GPT模型 训练的 包含加权 和 数据增强 和 损失方法 的设计。根据这段时间的NLG经验,继续改进损失函数。主要用于以下文章所写的 NLP 增强管道。原创 2023-03-23 15:36:02 · 243 阅读 · 0 评论 -
torch.backends.cudnn.benchmark=True 的效果和坑
系统环境CUDA 11.1gtx1070-8gwin10 21h1 19043.1266打开该选项torch.backends.cudnn.benchmark=True加快运算速度,但相比加速。。。。。。最为直观的影响计算误差会增大约1000倍。显存占用会变为关闭时的 1.1 - 1.5 倍。这个选项不能随便打开,影响很大。以下为实验cudnn.benchmark = False,显存占用为 3.0 Gcard_id: 0 elapsed/total: 1/10 max_diff_原创 2021-10-05 19:47:14 · 2070 阅读 · 1 评论 -
使用 DGL图神经网络 分类全连接图的内外环。
介绍大约一个月前学习的DGL图神经网络时,为了便于自己学习和重温用的,从0搭建起来的例子。有两条环状排列的节点,构造它们的全连接图,然后判断节点是属于内环还是属于外环。输入有两个,一个是节点自身的XY坐标,一个是节点之间的关系图。输出是一个onehot向量,只有两个结果,0或1。0代表为节点属于内环,1代表节点属于外环。然后数据集里面,每个图的都是长这样的,但是它们的内环和外环的半径各不相同,环的中心坐标也各不相同。内外环数据集会在首次运行时,自动和随机生成。Github仓库:https://原创 2021-06-27 23:43:07 · 658 阅读 · 2 评论 -
SE Block 在特定情况可能会产生的害处(未使用专门实验验证,仅记录)
(未使用专门实验验证,仅记录,有空再专门弄个实验验证)记录下实验情况。模型结构模型中每个残差块的特征提取分支末端均加了 SEBlock。训练输入图像特点:亮度比较高的图像,如下面这种验证输入图像特点:原始亮度较高,但填充了一大块黑色区域的图像,如下面这种训练中,图像增强过程中,没有做过添加大块黑色区域的增强。训练后,如果输入图1,模型能正常输出概率热图(有细胞核的地方将会输出1.0概率值)。如果输入图2,概率热图左边那块区域的热图的概率值将会大幅度下降,约为0.1,接近全黑。如果将图原创 2020-07-20 10:56:27 · 835 阅读 · 2 评论 -
pytorch tensorflow 卷积权重互导
做个记录测试版本:pytorch 1.15.1tensorflow 1.15.3通道格式tensorflow NHWC权重格式为[filter_height, filter_width, in_channels, out_channels]pytorch NCHW权重格式为[out_channels, in_channels, filter_height, filter_width]tensorflow 权重转 pytorchpt_weight = np.transpos原创 2020-07-15 11:59:49 · 528 阅读 · 0 评论 -
i-RevBackward,使用 i-RevNet 方法大幅度节省显存
仓库:https://github.com/One-sixth/like_i_revnet_pytorch我根据i-RevNet原理,编写了一个反向传播函数,正向传播时不保存临时变量,反传时利用i-RevNet可逆的方式恢复输入,然后在一个区间内反传计算梯度。可逆块原理forward 时输入 x1, x2y = x1 + F(x2)输出 y, x2invert 时输入 y,x2x...原创 2020-03-30 12:23:13 · 892 阅读 · 0 评论 -
记录,以计算机图形方式突然发现深度学习的本质。。。
拜读了一篇大佬写的胶囊网络解析,非常给力https://zhuanlan.zhihu.com/p/29435406先对已变形的特征进行一定的空间变换,还原特征原本的样子,找到特征之间的不变性。仔细想如何对特征进行空间变换,第一个想到的就是矩阵的线性变换。以三维空间为例子有一个3D顶点,坐标是一个3元组,[x, y, z]有一个3维的3x3旋转变换矩阵将顶点与变换矩阵进行线性运算,可以...原创 2020-02-05 02:54:03 · 243 阅读 · 0 评论 -
pixelshuffle 和 pixelshuffle_invert pytorch实现
学习 irevnet,发现这个网络的结构真的是巧妙。加点料估计能节省一大堆显存irevnet 里的 PSI 层,原来是 pixelshuffle 的反向操作。看了半天。。。看到里面有 pixelshuffle 和 pixelshuffle 逆向的代码实现,就想着来优化一下,里面的for操作真的看得心痒。优化后代码,没想到比官方实现还快一点点。神奇!github仓库:https://gi...原创 2019-12-29 21:18:31 · 1877 阅读 · 4 评论 -
模拟量化线性函数
想了一个函数可以模拟量化行为全程可微原型y=x*sin(x)变体A,或许可以当激活函数y = x0.5+sin(x5)*0.5变体B,用来模拟量化,另外每个小区间,都有一个窝,像Swish函数y = x0.9+sin(x10)*0.1...原创 2019-10-22 16:22:19 · 352 阅读 · 0 评论 -
分离潜变量自动编码器超分辨率网络 SLAESR
分离潜变量自动编码器超分辨率网络Separating latent automatic encoder super-resolution network.简称:SLAESR关于训练部分,请看仓库github 仓库:https://github.com/One-sixth/SLAESR这名字听着有点Cool,: )设计原因和目的:有一大堆128x128的动漫头像,要把他们的分辨率弄到5...原创 2019-08-04 02:14:12 · 507 阅读 · 0 评论 -
使用 自动混合精度 加速训练 tensorflow, pytorch
启用方式请看官方介绍页面:https://developer.nvidia.com/automatic-mixed-precisiontensorflow 最爽,设置一个标志就直接启用了。跟据下面 pytorch 的实验结果,我估计对小模型来说效果差不多,所以没进行测试实验了。pytorch 这个需要一个apex库github 链接 https://github.com/nvidia...原创 2019-07-03 17:05:45 · 6552 阅读 · 65 评论 -
torch.utils.checkpoint 简介 和 简易使用
5个月之前说过要写个的,不过因为觉得过于简单,和懒,就鸽了。pytorch 的 checkpoint 是一种用时间换显存的技术,一般训练模式下,pytorch 每次运算后会保留一些中间变量用于求导,而使用 checkpoint 的函数,则不会保留中间变量,中间变量会在求导时再计算一次,因此减少了显存占用,跟 tensorflow 的 checkpoint 是完全不同的东西。这个 checkpo...原创 2019-06-28 01:34:40 · 24803 阅读 · 39 评论 -
更快的 SSIM & MS-SSIM pytorch 实现 和 收敛过程GIF
训练自编码机,好闲啊。。。就随便优化了一下github上弄下来的 SSIM 类。发现性能有极大的提升!好,专心一下优化这东西。更快的 SSIM & MS-SSIM 的 github 仓库https://github.com/One-sixth/ms_ssim_pytorchSSIM 收敛过程 和 MS-SSIM 的收敛过程,图有点大,所以存在 github 的仓库上,也许要翻墙。仓...原创 2019-06-24 01:22:17 · 5932 阅读 · 10 评论 -
分组稠密层,DenseGroup 使用MNIST简易实验
既然有分组卷积,那就肯定有分组稠密层。分组稠密层,跟分组卷积一样都可以大量减少参数,不过貌似没见过论文用过,不知效果如何。下面使用mnist的简易实验结果group_dense 比 dense运算速度慢点验证集准确率提升速度慢点最终验证准确率都是97%使用普通dense的模型大小为2M使用group_dense模型大小为0.2M做这种实验很无聊啊。。想想都知道跟普通卷积与分组卷积...原创 2019-06-02 16:40:21 · 352 阅读 · 0 评论 -
konohana_net 用于此花亭奇谭的目标检测网络
balabala !!!anchor free 的方法真好用,最重要的是训练速度快github仓库:待补充。。。示例视频:待补充。。。原来用仿yolov3和SSD的结构,效果不是很好,并且中途有项目做,就暂时搁置了,最近有空,发现anchor free发展起来了。正好看到fcos,而且是最简单的,就来试试。现在情况,看着还行,至少比之前的好图中的 iou 实际是 center_ness...原创 2019-05-27 23:48:35 · 508 阅读 · 1 评论 -
pytorch 中 torch.sqrt 的坑
记录一下,避免后面踩坑单步调了半小时,幸好这个问题出现很频繁发现是函数与导函数定义域问题。。。sqrt(x) 函数的定义域为 [0, 无穷大)sqrt(x) 的导函数的定义域 却是 (0, 无穷大)这些函数定义域跟导函数的定义域不一样,正向传播可以得到正常结果,但是一旦backward就会得到Nan。。。问题重现import torcha = torch.zeros(1)a.re...原创 2019-05-19 00:03:56 · 13873 阅读 · 12 评论 -
pytorch checkpoint 函数的坑
实验 pytorch 版本1.0.1pytorch 的 checkpoint 是一个可以用时间换空间的技术,很多情况下可以轻松实现 batch_size 翻倍的效果坑checkpoint 的输入需要requires_grad为True,不然在反向传播时不会计算内部梯度简单让输入的requires_grad为True并且节省显存的办法import torchimport torch.nn...原创 2019-04-28 15:53:09 · 12189 阅读 · 10 评论 -
使用 gan-qp 做动漫头像生成实验
代码托管在githubhttps://github.com/One-sixth/gan-qp-mod-pytorch我使用 gan-qp 在我的动漫头像数据集(3.7w张图像)上训练的,不过效果不怎么好,也许是数据集太小了,或者卷积核数量太少了。少了也没办法,显存限制了我的想象力。在这个模型上,Checkpoint基本没有加速作用,节省的显存太少了,所有没有用。模型1 一开始训练时,生成...原创 2019-04-03 16:13:57 · 2244 阅读 · 11 评论 -
想了一个TwiceLog激活函数,相比Tanh但不会饱和,pytorch实现
不知是否有前人想过这个激活函数,我没找到。。。做GAN的实验,发现很多实现都是在生成器最后一层使用Tanh函数,不过Tanh不是和Sigmod一样存在饱和问题吗?然后想用不会饱和Log函数来实现。TwiceLog跟Tanh曲线类似,只不过没有上下界class TwiceLog(torch.jit.ScriptModule): __constants__ = ['scale'] ...原创 2019-04-03 14:22:47 · 279 阅读 · 0 评论 -
使用 tensorlayer 组建 残差网络 resnet 实现 mnist 手写识别例子
最近学习残差网络,非常给力,即使是深层网络也能很快收敛 这里的代码构建了一个17层的网络,5 epoch就能达到96%以上准确率lost-损失,acc-准确率不过发现几个问题 1.使用训练过程中,lost值会先减小,然后会一直增大,而acc值却在一直上升 2.使用prelu神经元,lost值增大更快,acc值训练时间长会降低 3.使用elu神经元与prelu神经元相比,elu神经元...原创 2018-03-21 22:06:05 · 3515 阅读 · 2 评论 -
基于 mnist 数据集单标签单分类,使用不同 loss 函数测试 结果
基于 mnist 单标签单分类 测试多种 loss ,分析不同 loss 对准确率的影响 测试 loss 种类 softmax_cross_entropy hinge_loss sigmoid_cross_entropy huber_loss mean_squared_error mean_pairwise_squared_error初始参数batch_size 1...原创 2018-04-05 14:24:38 · 1250 阅读 · 0 评论 -
tf.dataset 使用 python generator 加载和预处理数据,dataset.map 对数据进行额外加工
python部分 使用 generator 输入和打乱数据到 dataset, tf.graph部分 使用 dataset.map 对输入数据进行加工import tensorflow as tf# import tensorlayer as tlimport numpy as np# 生成数据集# x_train, y_train, x_test, y_test = tl.fil...原创 2018-06-09 15:16:28 · 6477 阅读 · 0 评论 -
mobilenet_v2 tensorlayer 实现
mobilenet_v2 使用 tensorlayer 实现 训练数据使用 cifar10完整代码 github 地址 https://github.com/One-sixth/mobilenet_v2-tensorlayer 启动训练 python3 cifar10_use_mobilenet_v2.pymobilenet_v2 定义 like_mobilenet_v2.py...原创 2018-06-09 22:12:13 · 1311 阅读 · 0 评论 -
tensorflow 任意 batch size 不溢出显存( OOM ),使用 darknet 的 sub batch 方法
这方法很久之前就想弄了,网上( 百度 )除了 darknet 之外,没人弄这东西,无奈那时对 tf 的 Optimizer 和 梯度计算 理解很浅,没法弄,不久前看了个 tensorflow 的 eager run 的例子才弄懂 tf 的梯度计算方式。原理很简单,例如一个 batch 的 size = 100,直接放进显卡会溢出,那我把这个 batch 再分成 10 个 sub batch,每...原创 2018-08-26 14:11:24 · 7301 阅读 · 20 评论 -
神经网络 参数有效比
忘记在哪看的了,看了 对数组卷积 的论文 突然想起来了。。好吧,找不到出处了。应该是这个名字,还是叫 参数利用率 啥的。。参数有效比 = 准确率 / 参数数量那个 对数组卷积 的论文。。。貌似反证了平均组卷积的效率。 也不对,论文说的是浅层网络 图片截取自论文 https://arxiv.org/abs/1707.09855v1 有效比越大,参数利用率越高 uniform ...原创 2018-08-26 17:18:52 · 336 阅读 · 0 评论 -
CVAE-GAN tensorlayer实现
代码,训练过程,训练输出,测试输出,参见 github:https://github.com/One-sixth/CVAE-GAN_tensorlayer其他复制一下:CVAE-GAN_tensorlayerA CVAE-GAN implementation with tensorlayer.示例依赖tensorflowtensorlayernumpyprogr...原创 2018-08-23 16:02:54 · 2586 阅读 · 17 评论 -
此花亭奇谭 动漫 人物 目标识别 数据集 v0.1.1
前段时间看完此花亭,很喜欢,刚好那段时间弄懂了 yolo v3 网络,于是想自己弄个数据集练练手花了好长时间做的目标识别数据集,好多大的和重叠目标。。然后好难训练目前还未完成,只做到了第五集,后面的有空慢慢做。。其实是想使用训练出来的目标识别网络辅助标记完剩下的。。。无奈。。训练出的网络很差劲,还在努力加强中图像来源ANK-Raws-このはな綺譚-Ranpo-Kitan:Game-of-...原创 2018-10-08 00:23:18 · 2340 阅读 · 1 评论 -
低质量的 包围框 iou 值,让其更有用
下面 iou = 0.5 的两种情况,在 iou 无法提高的情况下,可以让预测框更符合某种形状,或某种状态,例如下面第二种状态,大部分时候比第一种要好方法:增加一个loss,使预测框重叠真实框时有更大的损失...原创 2018-10-14 18:09:46 · 781 阅读 · 0 评论 -
tensorflow 1.12 与 pytorch 1.0 互相迁移 操作符
估计距离 tensorflow 2.0 要出还有几个月,要升级到动态图了,不过要弄动态图的话,直接玩pytorch不是更好?所以直接学了点pytorchtensorflow 的 eager execute 效率不怎么好,虽然defun可以优化不少,但是对于复杂的网络,defun需要的时间太长了,而且defun之后就没法进入内部调试了,调试时间漫长。而pytorch直接运行,效率仍然非常高记录一...原创 2019-01-11 21:00:27 · 1293 阅读 · 1 评论 -
pytorch1.1 半精度训练 Adam RMSprop 优化器 Nan 问题
半精度浮点数表示的范围比单精度的少很多使网络输入 值域缩放到 [-1, 1] 或 [0, 1]定义Adam 或 RMSprop 优化器时,加入参数eps=1e-3optimizer = optim.Adam(model.parameters(), lr=0.001, eps=1e-3)...原创 2019-01-12 17:24:32 · 6004 阅读 · 11 评论 -
目前发现 pytorch1.0 与 tensorflow1.12 一些区别
pytorch 与 tensorflow1.12 的 eager execution 对比pytorch没有完整的half支持例如conv2d 以半精度训练 cpu 运行时会报错未实现torch.cat 无法拼接 halfTensor,报错未实现torch.linspace 参数 dtype=torch.half,报错未实现而tensorflow 有完整的半精度训练实现(应该是这样,...原创 2019-01-28 00:44:46 · 668 阅读 · 0 评论 -
神经网络,整数转onehot向量实验,发现Adam优化器不是万能的,有时RMSprop优化器更好
实验:用2层的MLP将 0-15 这16个整数,转换为一条长度为16的onehot向量,要求准确率100%增加难度,修改为100个整数,onehot长度改为100。16个整数情况下,不对原始数据进行处理使用Adam优化器的迭代次数,一般都到了10000次以上,才能达到100%准确率使用RMSprop优化器,多数情况2000次内迭代就达到了100%准确率100个整数情况下使用RMSpro...原创 2019-04-06 16:09:11 · 605 阅读 · 0 评论 -
使用tensorlayer来实现:通过keras例子来理解lstm循环神经网络
原 指导+例子+keras实现:http://blog.csdn.net/ma416539432/article/details/53509607测试环境:tensorflow-gpu 1.5.0 + tensorlayer 1.7.4这篇文章非常方便我 lstm神经元入门,但是我主使用tensorlayer,而不是keras,所以就把代码转为tensorlayer形式 我也是学习神经...原创 2018-02-24 19:17:53 · 1777 阅读 · 0 评论