深度学习
文章平均质量分 91
AI Bro
如梦幻影,做现实的演员,演内心的独角戏。
展开
-
爆肝总结:神经网络大杂烩
文章目录purpose:来龙去脉LeNet5AlexnetVGGGoogle InceptionResNetDenseNetpurpose:论文里面经常会有对比实验,经常会用到一些较经典的网络。例如Alexnet网络是从Imagenet大赛中脱颖而出的模型,但是其原始的输入大小与输出大小可能与我们的任务并不相符。这种情况我们怎么使用经典的网络结构来做对比实验呢?看过了一些论文复现的代码,大多数作者是这样处理的:尽量保留经典模型的网络结构。如果任务不同,该改的还是要改。也就是说,他们复现的经典网络结原创 2021-10-02 16:44:29 · 408 阅读 · 0 评论 -
数字水印保护你的神经网络
文章目录1 前言2 数字水印2.1 白盒方法2.2 黑盒方法3 总结1 前言最近了解到数字水印技术在神经网络上的应用。我觉得蛮有意思的,就拿出来讲一讲,主要从大方向上讲解,生人亦可进。可能提到数字水印,大家第一印象是,把带有个人象征的内容嵌入到原创作品中,如下图。但考虑到通过p图技术可以把这种水印去掉,那么就有人这样做。在如下小姐姐的照片中,嵌入“老司机”图片。你敢信,一张小姐姐的图片,通过计算可生成“老司机”字样图片。我有个大胆的想法【手动狗头】。具体实现,可见 https://www.z原创 2021-09-25 01:29:17 · 3317 阅读 · 0 评论 -
域自适应实战&coding
目录1 前言2 原理3 coding3.1 加载数据集3.2 搭建网络3.3 训练及测试3.4 对比3.5 可视化特征分布4 总结附录1 前言好几天前我就想做关于域自适应的文章。可能你觉得我不务正业【手动狗头】,但是别急,这个还真挺有意思。还能加深自己对网络的理解,所以这几天,我一直在肝这方面的内容。好的,什么叫做域自适应?举个例子哈,有些人微信头像喜欢换成动漫的自己,当然了,作为好朋友,你肯定认得出动漫的他。这是因为我们视觉系统比较强大,偷偷做了域自适应。梦回正文,单纯的神经网络却认不出来。你训练原创 2021-08-17 18:27:39 · 2818 阅读 · 8 评论 -
使用torch进行迁移学习
文章目录1 前言2 process2.1 加载resnet18模型2.2 加载cifar10数据集2.3 冻结并改网络2.4 训练并测试3 源代码附录1 前言什么叫迁移学习?迁移学习(Transfer learning) 顾名思义就是把已训练好的模型(预训练模型)参数迁移到新的模型来帮助新模型训练。大白话:你学过了英文(预训练模型),之后你想学法文(新模型),在学习过程中,你会利用英文的基础,来帮助自己理解法文。That is Transfer Learning .更专业的表述可以参考迁移学习与域自适原创 2021-08-14 11:00:38 · 1297 阅读 · 1 评论 -
迁移学习与域自适应
文章目录1 摘要2 思路2.1 Question:2.2 理论公式2.3 任务场景2.3.1 同样的域,不同任务2.3.2 同样任务,不同的域3 总结附录1 摘要本文会介绍迁移学习与域自适应的具体区别首先,解答一个问题:如果说两个image服从同一种分布,到底是什么意思?之后通过数学理论公式,严谨的将迁移学习与域自适应区分开来,并介绍两者相应的应用场景。坚持看下去,我会讲清楚,我也相信你会有所收获。2 思路2.1 Question:如果说两个image服从同一种分布,到底是什么意思?原创 2021-08-13 12:30:13 · 5012 阅读 · 5 评论 -
强化学习之QLearning实战
目录1 前言2 如何做2.1 gym使用2.2 QLearning介绍2.3 生成Q表2.4 Q表决策3 源代码(可直接运行)4 总结5 附录1 前言玩个游戏(滑动杆CartPole),看下图。我们的目标是,我们通过向左或向右滑动滑块来保证杆子始终在滑块的上方。下图我设置随机滑动滑块,展现出来就是这样一个效果。经过该篇文章学习后,你能通过强化学习操控滑块,达到如下的一个效果。Amazing?Let’s make it .回到正题首先需要安装Gym,即游戏仿真平台。使用pip install原创 2021-08-11 22:48:25 · 1378 阅读 · 5 评论 -
神经网络之特征图可视化
目录1 前言2 coding2.1 加载数据及模型2.2 微调及训练2.3 可视化特征图3 总结附录1 前言使用torch实现。使用cifar10数据集代码中,有一点点迁移学习的内容中间层输出的特征图与原始图像进行对比,加深对神经网络理解。即从人为的可视化的角度,理解神经网络到底干了什么事。效果图:2 coding为了减少运行时间,这里直接使用resnet18的预训练模型。但是由于resnet18是适配imagenet数据集(1000个类别)的,最终层输出是1000维的向量。这里我原创 2021-08-06 12:33:21 · 12354 阅读 · 0 评论 -
对抗样本库之foolbox
目录1 前言2 foolbox使用2.1 构建并训练模型2.2 foolbox加载数据2.3 CW有目标及无目标实例2.4. foolbox杂谈3 总结附录1 前言对抗样本库的一些基本介绍,大家可以看cleverhans的前言部分foolbox支持tensorflow,pytorch以及jax框架,包含大量对抗样本攻击方式。这里主要介绍使用torch+foolbox来实现对抗样本攻击。使用pip install foolbox 进行安装。官网资料:github foolbox库foolb原创 2021-08-03 13:52:51 · 3878 阅读 · 3 评论 -
对抗样本库之cleverhans
目录1 前言2 cleverhans使用2.1 构建并训练模型2.2 cleverhans攻击及可视化3 总结附录1 前言对抗样本库,即进行对抗样本攻击或防御的工具。cleverhans,foolbox,advertorch这三个对抗样本库是比较常用的。github搜索关键字即可找到。cleverhans在github有5k个star,foolbox 2k个star,advertorch 1k个star。通过该信息自然大家都会选择使用cleverfans。cleverhans在之前的版本中只支持t原创 2021-08-02 18:17:55 · 9314 阅读 · 7 评论 -
大白话之One Pixel Attack for Fooling Deep Neural Networks论文讲解
1 引言使用单像素点愚弄深度神经网络。2017 CVPR 论文地址对抗样本生成的一种策略。本文采取一种独立思考的方式,来理解与讲解这篇论文。2 算法原理2.1 第一印象what the fuck?改变一个像素点就能使网络分类错误?想法great,但怎么可能逐渐冷静。。。单像素点真的能攻击成功?2.2 初步设想Can we:貌似 ”goodfellow的模型高度线性化,使得图像会有扰动放大效应“ 为改设想提供了一定的理论依据。How:假设确实改动某个像素点的值能实现对抗攻击。那原创 2021-07-26 18:39:45 · 1475 阅读 · 3 评论 -
对抗样本之JSMA原理&coding
目录1 引言2 JSMA原理3 coding3.1 训练模型3.2 JSMA对抗样本生成3.3 测试鲁棒性3.4 可视化展示附录1 引言本文代码完成生成JSMA对抗样本的完整过程。直接复制代码就能跑。相信我,不骗你。使用pytorch实现JSMA。pytorch不会?跳转2016 论文地址2 JSMA原理与FGSM利用模型输出的损失函数梯度信息不同,JSMA主要利用模型的输出类别概率信息,来反向传播求得对应梯度信息。作者将其称为前向梯度。即:通过如上的前向梯度,我们可以知道每个像素点对原创 2021-07-23 11:30:15 · 4231 阅读 · 7 评论 -
对抗样本之DeepFool原理&coding
目录1 笔者言2 coding2.1 训练模型2.2 DeepFool对抗样本生成2.3 测试鲁棒性2.4 可视化展示附录1 笔者言虽说标题有DeepFool原理,但能力有限,这个我确实讲不清楚。与FGSM,BIM,MIM,CW等生成对抗样本的方法相比,deepfool是最难的了。给你推荐一个我看懂了的文章,但切记,想要真正明白deepfool的原理,就一定要耐下性子认真看,还要多动笔画示意图。言至此,传送门本文主要讲解代码,完成生成deepfool对抗样本的完整过程。直接复制代码就能跑。相信我,不原创 2021-07-21 23:25:02 · 3474 阅读 · 3 评论 -
对抗样本之MIM原理&coding
1 引言MIM,即基于动量的基本迭代法。在BIM上加了动量的操作。不会BIM?跳转理解了BIM(基本迭代法),相信MIM的原理对你也不难。使用pytorch实现MIM。pytorch不会?跳转MIM 论文地址2 MIM原理对比BIMMIM如上,MIM与BIM在公式上就是有没有 miu*gt 的区别。其方法主要借鉴于神经网络中参数更新的momentum动量的思想。说白了,MIM的本质就是,在进行迭代的时候,每一轮的扰动不仅与当前的梯度方向有关,还与之前算出来的梯度方向相关原创 2021-07-20 23:12:28 · 2130 阅读 · 6 评论 -
对抗样本之BIM原理&coding
1 引言BIM,即基本迭代法,在FGSM基础上加上了迭代操作。想看FGSM,跳转理解了FGSM,相信对BIM会丝毫没有压力。各位看官大多还是奔着代码去的吧,这里核心讲下代码。使用pytorch实现BIM。pytorch不会?跳转2 BIM原理对比FGSM公式BIM公式如上,BIM与FGSM真就是一个for循环的区别。但为什么BIM也能发论文呢?BIM存在其数学理论的合理性以及实验效果表现良好。FGSM的使用,基于作者假设模型是高度线性化的。如此一来,梯度上升的方向就是最佳原创 2021-07-20 11:27:19 · 2779 阅读 · 4 评论 -
进化算法及模拟退火算法详解
文章目录1 引言2 GA遗传算法3 ES算法4 ES(1+1)算法5 模拟退火算法6 总结1 引言学习启发式算法需紧抓两点:如何通过父代生成子代点。通俗点来讲,就是种群如何交叉繁衍如何实现优胜劣汰,即使用何种算法将一个种群表现优秀的个体保存下来牢抓以上两点,有的放矢,启发式算法就简单的一批。2 GA遗传算法这里主要讲下GA算法的宏观思路。初始化100个父代(其实就是上图的100个点的x值),那如何通过这些父代,产生子代呢?这里就要拿生物学上的概念来理解了。现在我们把一个父代或子代看原创 2021-06-14 19:23:40 · 1131 阅读 · 4 评论 -
对抗样本之FGSM原理&coding
文章目录1、FGSM原理2、pytorch实现2.1 建立模型2.2 FGSM模块2.3 测试2.4 可视化对比2.5 对比样本与对抗样本1、FGSM原理论文 Explaining and harnessing adversarial examples. 这篇论文由Goodfellow等人发表在ICLR2015会议上,是对抗样本生成领域的经典论文。FGSM(fast gradient sign method)是一种基于梯度生成对抗样本的算法,属于对抗攻击中的无目标攻击(即不要求对抗样本经过mod原创 2021-05-13 13:56:37 · 7154 阅读 · 13 评论 -
pytorch从基础到实战
1、前言受博士学长推荐,入手了pytorch,用过都说好基础部分:pytorch优势以及其自动求导模块实战部分:pytorch拟合log函数曲线,代码逐句解释,让你真正明白pytorch的运行原理要求:提前安装好pytorch库,官方文档入口2、基础部分1.pytorch优势...原创 2021-05-08 22:05:30 · 2653 阅读 · 2 评论 -
keras之迁移学习小demo(四)
0 概要如果不懂迁移学习的概念——> 什么是迁移学习 (Transfer Learning)?本篇文章的预训练模型是从keras之分类数字图片(二)内获取的。要求:安装keras库能用gpu跑项目,如果不能,解决方案——>Google colab使用之手把手教学以上两点要求无法满足,你我就改日再见吧“食用”方式先“食用” keras之分类数字图片(二) 再观看这篇文章,效果更佳(不是捆绑消费)或者通过网盘获取 h5 模型文件,直接看这篇文章,效果略差h5 模型文件获取方原创 2021-02-01 17:51:27 · 772 阅读 · 3 评论 -
keras之读取h5文件(三)
目录0 前言1 读取h5文件1.1 加载模型1.2 打印模型权重1.3 使用test集验证2 源代码0 前言要求:安装keras库需要一个h5文件进行读取h5文件获取方式:1、keras之分类数字图片(二),该文章的会生成模型及参数,建议使用这种方法,掌握来龙去脉。2、或者直接获取:百度网盘提取码:gedt1 读取h5文件目标:熟练使用keras存读取h5文件步骤:1、加载模型2、打印模型权重3、使用test数据集验证,加载的模型是否完整1.1 加载模型fro原创 2021-01-31 10:23:24 · 3797 阅读 · 4 评论 -
keras之分类数字图片(二)
目录0 前言1 搭建模型1.1、加载数据1.2、数据进行预处理1.3、构建网络模型1.4、模型可视化1.5、模型评估及预测1.6、保存模型及参数2 源代码0 前言要求:安装keras库使用gpu运行。使用gpu大概10分钟能跑完,cpu跑不太现实没有gpu之解决方案,传送至Google colab使用之手把手教学1 搭建模型目标:使用keras搭建简单的网络结构,用来预测mnist数据集中的手写数字步骤:从MNIST加载图片数据。数据进行预处理构建网络模型,模型结构如下图原创 2021-01-30 21:42:36 · 681 阅读 · 1 评论 -
keras之模拟线性回归(一)
目录0 前言1 搭建模型2 源代码0 前言要求:安装keras库如有疑问,评论区留言1 搭建模型#这个demo,做一个简单的线性回归预测# 步骤:# 目标:是使得网络模型拟和一条 y=2*x+1 的函数图像,# 1、首先在 y=2*x+1 附近生成一些点,其中的x作为输入数据,y作为输出数据# 2、训练一个神经网络模型,包括100个神经元的全连接层和最终1个神经元的输出层。下面会提供网络模型图片# 3、训练大概1万次左右,即更新一万次参数。最后随机给出几个x,预测是否符合 y=.原创 2021-01-30 10:28:19 · 565 阅读 · 0 评论 -
Google colab使用之手把手教学
目录0 前言1 极速开始2 “持久化”使用方式3 一些重要的使用经验0 前言相信各位看到这篇文章,是因为自己电脑跑神经网络代码太慢了。这里我谈一下我个人经历。前几天我要跑一个tensorflow的项目——官方提供的一个28*28*3的手写数字生成项目。由于我没有配cpu,一个很简单的项目跑了很久都没成功。我开始了探索之路。刚开始我尝试在自己电脑上配置gpu环境,网上配置gpu教程参差不齐,我试了很久也无法成功 经同学推荐入手了baidu AI Studio。发现不支持te.原创 2021-01-27 23:24:44 · 3341 阅读 · 1 评论