深度学习
文章平均质量分 73
cofisher
这个作者很懒,什么都没留下…
展开
-
联邦学习(六):Tensorflow 实现联邦迁移学习
项目说明本项目旨在使用 Tensorflow2.0 模拟实现论文 Federated Transfer Learning for Intelligent Fault Diagnostics Using Deep Adversarial Networks with Data Privacy 中所提出的部分方法。方法说明文中使用网络如下图所示(不包含文中所提出的 LpL_pLp 损失):在本文中,客户端共 11 个,包括 10 个源域客户端和 1 个目标域客户端。并且:代码说明1、导入需要的库原创 2021-04-23 15:36:29 · 2036 阅读 · 7 评论 -
联邦学习(二):卷积神经网络通过底层 API 实现 FedAvg 联邦算法
代码实现1、导入需要的库import collectionsimport numpy as npimport tensorflow as tfimport tensorflow_federated as tffimport nest_asyncionest_asyncio.apply()tff.framework.set_default_context(tff.test.ReferenceExecutor()) # 防止 RuntimeError 问题2、导入并处理数据mnis原创 2021-04-20 12:48:15 · 1436 阅读 · 11 评论 -
联邦学习(一):通过卷积神经网络对 emnist 数据集分类
文章目录项目介绍代码说明1、导入需要的库2、导入数据集3、处理数据集4、创建模型5、定义初始化模型函数6、定义迭代函数6.1 客户端更新权重函数6.2 服务端更新权重函数6.3 使用 tff.tf_computation 修饰以上两个更新函数6.4 使用 tff.federated_computation 修饰 next_fn() 函数7、将算法封装到 tff.templates.IterativeProcess 中8、处理测试集数据9、测试集准确率9.1 测试函数9.2 模型初始化9.3 模型训练项目介原创 2021-04-19 13:38:22 · 1945 阅读 · 4 评论 -
Tensorflow2.0 实现DAN和JAN中的损失函数
项目说明在 2015 年的文章 Learning Transferable Features with Deep Adaptation Networks (DAN) 和 2016 年的文章 Deep Transfer Learning with Joint Adaptation Networks (JAN) 中作者利用 MK-MMD 分别提出了两种损失函数(以下简称为 DAN_loss 和 JAN_loss)。在开源的源代码中,作者使用 Pytorch 编写了这两个函数,这里我们将使用 Tensorflo原创 2021-04-06 09:10:51 · 1334 阅读 · 2 评论 -
Tensorflow2.0 梯度反转层(GRL)的实现
项目介绍在对抗学习中,我们常常需要将某一层的梯度乘上-1再进行梯度下降的操作(即梯度上升),就像【深度域适配】一、DANN与梯度反转层(GRL)详解一文中所介绍的那样。代码实现@tf.custom_gradientdef grad_reverse(x): y = tf.identity(x) def custom_grad(dy): return -dy return y, custom_gradclass GradReverse(tf.keras.la原创 2020-12-10 16:03:39 · 2174 阅读 · 0 评论 -
Tensorflow2.0 自定义余弦退火学习率衰减策略
项目说明余弦退火学习率衰减的学习率曲线如下图所示:除了在训练过程中进行学习率衰减以防止求得的最优解不断震荡之外,余弦退火衰减策略规定,学习率每次衰减到0之后,会迅速回升至初始值,这样可以避免陷入局部最优解。关于余弦退火学习率衰减策略的详细介绍可以参考文章:学习率衰减之余弦退火(CosineAnnealing)。代码实现在 Tensorflow2.0 中自定义学习率衰减策略其实很简单,可以参考文章:Tensorflow2.0学习率衰减详细汇总。import tensorflow as tfimp原创 2020-12-10 14:25:51 · 2694 阅读 · 1 评论 -
基于帕累托的多目标遗传算法优化的原理与 Python 实现
文章目录帕累托多目标遗传算法代码实现排序函数查找所需索引函数Pareto 法得到帕累托前沿函数拥挤度计算从父代和子代中选择下一个父代帕累托多目标遗传算法在优化领域,遗传算法绝对占得上一席之地,但由于在染色体选择阶段,俄罗斯轮盘赌法常被使用,因此遗传算法主要被用来解决单优化问题。对于多目标优化问题,我们常常不知道如何判断两个解孰优孰劣从而难以在遗传算法的选择阶段进行合适的选择,帕累托优化应运而生解决了这一问题。首先,需要对一下概念进行说明:支配、非支配:当A所有目标都优于B时,就说A支配了B,否原创 2020-11-02 19:35:51 · 5026 阅读 · 4 评论 -
Tensorflow2.0 之深度残差收缩网络 (DRSN)
文章目录DRSN 原理残差网络自注意力网络软阈值化代码实现DRSN 原理DRSN 由三部分组成:残差网络、自注意力网络和软阈值化。残差网络残差网络(或称深度残差网络、深度残差学习,英文ResNet)属于一种卷积神经网络。相较于普通的卷积神经网络,残差网络采用了跨层恒等连接,以减轻卷积神经网络的训练难度。其具体说明可以参考文章:Tensorflow2.0之自定义ResNet。自注意力网络在 DRSN 中,SE 模块被选用作为自注意力机制中的主要部分。它可以通过一个小型的子网络,自动学习得到一组权重原创 2020-11-02 17:11:34 · 6713 阅读 · 18 评论 -
Tensorflow2.0:CNN 解决凯斯西储大学轴承数据集的分类问题
文章目录项目介绍代码实现1、导入需要的库2、参数设置3、归一化4、定义滑窗函数5、取样本6、划分训练集和测试集7、得到 Dataset 类型数据集8、建立模型9、初始化优化器10、定义损失函数11、定义梯度下降函数12、模型训练项目介绍在此文章中,主要是对分类凯斯西储大学轴承数据的代码进行讲解,关于数据集的介绍可以参考:美国西储大学轴承数据解读,在此文章中,我们只对 12K 采样频率下的驱动端轴承故障数据进行分类。另外,当提及外圈故障时,我们只考虑中心方向 @6:00 的外圈故障,且因为故障直径为 0原创 2020-08-14 11:28:52 · 8246 阅读 · 55 评论 -
用深度卷积迁移学习网络来分类无标签数据
对 Deep Convolutional Transfer Learning Network A New Method for Intelligent Fault Diagnosis of Machines with Unlabeled Data 一文进行了讲解,用在一个数据集上训练的网络对另一数据集的无标签数据进行分类。原创 2020-08-14 10:28:31 · 4487 阅读 · 12 评论 -
Tensorflow2.0:基于循环卷积网络预测剩余寿命
文章目录项目介绍RCNN 网络介绍RCNN 优点RCNN 结构循环结构总体框架变分推理量化 RCNN 的预测不确定性1、假设变分分布2、最小化 KL 散度3、将 L 分成两项分别处理3.1 第一项:蒙特卡洛积分3.2 第二项:L2L^2L2 正则化4、得到目标函数项目代码实现1、导入需要的库2、DDL3、优化器4、损失函数5、梯度下降6、模型训练项目介绍在 Multi-Scale Convolutional Attention Network for Predicting Remaining Usefu原创 2020-08-11 14:10:39 · 7127 阅读 · 77 评论 -
Tensorflow2.0:基于多尺度卷积注意力网络预测剩余寿命
文章目录项目介绍MSCAN 网络介绍1、Representation learning subnetwork1.1 卷积块(Block)1.2 自注意力模块1.3 多尺度卷积2、RUL estimation subnetwork2.1 动态高斯失活2.2 Maxout 激活函数MSCAN 网络实现1、Representation learning subnetwork2、DDLMSCAN 网络训练1、优化器2、损失函数3、梯度下降4、模型训练项目介绍在 Multi-Scale Convolutional原创 2020-08-07 23:33:38 · 5060 阅读 · 82 评论 -
Tensorflow2.0:多分类评价指标 ROC、PRC 绘图、AUC 计算以及混淆矩阵绘制
文章目录项目准备python 代码1、导入需要的库2、建立 Dataset 测试集3、模型导入4、定义测试函数5、将多分类问题转化为单分类问题6、得到每个正例的置信度7、将上面两个函数结合起来8、将测试集输入模型进行测试9、定义 PRC 计算函数10、定义 ROC 计算函数11、计算图片标签和置信度12、计算精确率和召回率13、绘制 P-R 图14、计算 FPR 和 TPR15、绘制 ROC 图项目准备在绘图前,我们只需要有测试集以及训练好的网络模型(.h5 文件)即可。最终得到的图如下所示:py原创 2020-08-03 16:09:47 · 5876 阅读 · 12 评论 -
Tensorflow2.0 评价模型复杂度:参数量、FLOPs 和 MACC 计算
文章目录项目介绍代码实现1、迁移学习不带分类层的简化版 MobileNet V2 网络2、查看网络结构3、提取需要分析的层4、计算 FLOPs 和 MACC项目介绍在论文写作时,我们经常会对所提出模型的复杂度进行分析,主要用到的评价指标包括参数量、FLOPs 和 MACC,它们的计算原理可以参考《卷积、可分离卷积的参数量、计算量与 MACC 的对比》一文,在此文章中,我们着重介绍如何在 Tensorflow2.0 中计算这些参数。代码实现我们使用迁移学习到的 MobileNet V2 网络举例。1原创 2020-07-27 15:28:10 · 5988 阅读 · 4 评论 -
GhostNet 网络原理与 Tensorflow2.0 实现
介绍在 GhostNet: More Features from Cheap Operations 一文中,作者发现,在一个训练好的深度神经网络中,通常会包含一些相似的特征图,以保证对输入数据有更全面的理解。如下图所示,在 ResNet-50 中,将经过第一个残差块处理后的特征图拿出来,三对相似的特征图示例用相同颜色的框注释。 因此,作者提出:将用于获得这张特征图的卷积核数量减少一半(则得到的特征图的通道数会减少一半),然后将得到的特征图进行线性运算(在下图中用扳手表示),得到缺少的另一半特征图,最后将这原创 2020-07-22 15:05:16 · 2532 阅读 · 7 评论 -
Tensorflow2.0 定义模型的三种方法
1、API通过直接使用 tf.keras.Sequential() 函数可以轻松地构建网络,如:mobile = tf.keras.applications.MobileNetV2(include_top=False, weights='imagenet', input_shape=(224, 224, 3)) mobile.trainable = Falsemodel = tf.keras.Sequential([ simplified_mobile, tf.keras.layers.Dr原创 2020-07-22 10:43:59 · 1661 阅读 · 0 评论 -
Tensorflow2.0 用遗传算法进行网络架构搜索
本文将基于 Tensorflow2.0 使用遗传算法对网络结构寻优来对 cifar10 数据集进行分类。此项目共包含两个文件,一个是用于导入数据集、构建网络以及训练网络的文件 main.py,另一个是实现遗传算法的文件 GA.py。原创 2020-07-18 11:58:08 · 2048 阅读 · 6 评论 -
将自己的图片数据集分成训练集和测试集并用 Tensorflow2.0 导入
在下载完一个数据集后,很多朋友会为如何划分出训练集、验证集和测试集而烦恼,这篇文章将详细介绍如何划分数据集并将其用于模型训练。原创 2020-07-18 01:25:02 · 6158 阅读 · 5 评论 -
Tensorflow2.0 查看网络中每层的名称、权重及特征图绘制
Tensorflow2.0 查看网络中每层的名称、权重及特征图绘制原创 2020-07-08 20:04:32 · 5819 阅读 · 0 评论 -
Tensorflow2.0 在迁移学习到的模型中间添加新层
这是一个尝试用 Tensorflow2.0 在迁移学习到的模型中间添加新层的记录。原创 2020-07-08 12:13:09 · 1527 阅读 · 0 评论 -
EfficientNet 网络原理与 Tensorflow2.0 实现
EfficientNet 网络原理与 Tensorflow2.0 实现原创 2020-06-30 21:45:34 · 1530 阅读 · 2 评论 -
ShuffleNet V2 网络结构的原理与 Tensorflow2.0 实现
ShuffleNet V2 网络结构的原理与 Tensorflow2.0 实现原创 2020-06-28 00:41:46 · 2873 阅读 · 2 评论 -
ShuffleNet V1 网络结构的原理与 Tensorflow2.0 实现
介绍在论文 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 中,作者提出了 Group convolution 帮助降低计算复杂度;但是使用 Group convolution 会有副作用,故在此基础上,论文提出 Channel shuffle 帮助信息流通。基于这两种技术,论文构建了一个名为 ShuffleNet 的高效架构,相比于其他先进模型,对于给定的计算复杂度预算,ShuffleN原创 2020-06-27 00:17:28 · 1343 阅读 · 5 评论 -
MobileNet V3 网络结构的原理与 Tensorflow2.0 实现
MobileNet V2 网络结构的原理与 Tensorflow2.0 实现原创 2020-06-24 00:09:29 · 4911 阅读 · 1 评论 -
MnasNet 网络原理与 Tensorflow2.0 实现(with SE module)
文章目录介绍网络介绍总体流程Mnasnet 结构含有 SE 模块的 Mnasnet 结构代码实现参考资料介绍设计移动设备上的 CNN 模型具有挑战性,需要保证模型小速度快且准确率高,人为地权衡这三方面很困难,有太多种可能结构需要考虑。Google 大脑 AutoML 组提出了一种用于设计资源受限的移动 CNN 模型的神经网络结构搜索方法,将时间延迟信息明确地整合到主要目标中,这样搜索模型可以识别一个网络是否很好地平衡了准确率和时间延迟。在《MnasNet: Platform-Aware Neural原创 2020-06-23 19:10:30 · 1519 阅读 · 3 评论 -
SENet 网络结构的原理与 Tensorflow2.0 实现
文章目录介绍SE 模块SE 模块在其他网络上的应用模型效果SE 模块代码实现SE 模块应用到 ResNet 代码实现介绍SENet 是 ImageNet 2017(ImageNet 收官赛)的冠军模型,具有复杂度低,参数少和计算量小的优点。另外,SENet 思路很简单,很其中的 SE 模块很容易扩展在已有网络结构如 Inception 和 ResNet 中。SE 模块已经有很多工作在空间维度上来提升网络的性能,如 Inception 等,而 SENet 将关注点放在了特征通道之间的关系上。其具体策略原创 2020-06-23 13:24:35 · 8067 阅读 · 8 评论 -
MobileNet V2 网络结构的原理与 Tensorflow2.0 实现
MobileNet V2 网络结构的原理与 Tensorflow2.0 实现原创 2020-06-22 23:36:20 · 7861 阅读 · 13 评论 -
Xception 网络结构的原理与 Tensorflow2.0 实现
Xception 网络结构的原理与 Tensorflow2.0 实现原创 2020-06-22 13:48:53 · 3216 阅读 · 2 评论 -
MobileNet V1 网络结构的原理与 Tensorflow2.0 实现
对 MobileNet 网络的介绍与 Tensorflow2.0 实现。原创 2020-06-21 17:35:50 · 1273 阅读 · 0 评论 -
卷积、可分离卷积的参数量、计算量与 MACC 的对比
卷积、可分离卷积的参数量与计算量的对比原创 2020-06-21 15:27:13 · 1681 阅读 · 0 评论 -
Tensorflow2.0 对自己的图片数据集进行分类
这是一套完整的使用自己的图片数据集进行训练的模板文件。原创 2020-06-21 12:51:45 · 5368 阅读 · 25 评论 -
Tensorflow2.0 之 SSD 网络结构
文章目录引言网络结构搭建 SSD 网络空洞卷积参考资料引言SSD 目标检测算法在 2016 年被提出,它的速度要快于 Faster-RCNN,其精度要高于 YOLO(YOLOv3 除外),在本文中,我们主要针对其网络结构进行说明。网络结构其实 SSD 的网络是基于 VGG 网络来建立的,VGG 网络如下图所示:SSD 网络将 VGG 中的全连接层去掉后又在后面接了十层卷积层,将 VGG 中的 Conv4_3,新加的 Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2 的原创 2020-05-17 11:26:44 · 2634 阅读 · 0 评论 -
Tensorflow2.0 实现 YOLOv3(九):image_demo.py
文章目录文章说明导入需要的库导入并处理图片构造模型得到预测框文章说明本系列文章旨在对 Github 上 malin9402 提供的代码进行说明,在这篇文章中,我们会对 YOLOv3 项目中的 image_demo.py 文件进行说明。这个程序的作用是对输入的图片中的内容进行目标检测,并在图上标注检测框。如果只是想运行 Github 上的代码,可以参考对 YOLOv3 代码的说明一文。导入需...原创 2020-05-07 23:22:33 · 1244 阅读 · 6 评论 -
Tensorflow2.0 实现 YOLOv3(二):网络结构(common.py + backbone.py)
在这篇文章中,我们会对 YOLOv3 网络的整体结构进行说明,涉及的文件包括 common.py、backbone.py 和部分 yolov3.py。原创 2020-05-04 19:28:53 · 3404 阅读 · 13 评论 -
用Tensorflow2.0实现Faster-RCNN的详细代码解析
在这篇文章中,我们将使用 Tensorflow2.0 实现 Faster-RCNN 并对相关代码进行解释说明。原创 2020-05-02 18:58:56 · 16443 阅读 · 330 评论 -
Tensorflow2.0用FPN(图像金字塔网络)提取特征
一、FPN 的作用当我们在使用卷积神经网络的提取图像特征的时候,最后一个 feature map 的长宽会比原始图片小很多,比如原始图片大小为 100x100,feature map 大小为 10x10,这就说明,其实我们是在用 feature map 中的一个特征点来表示原始图片中一个 10x10 的像素区域。然而,在目标检测中,我们可能要对原始图片中的一个 1x1 的像素点中包含的物体进行检...原创 2020-04-22 13:39:40 · 4654 阅读 · 6 评论 -
Tensorflow2.0之图像说明文字生成
文章目录项目介绍代码实现1、导入需要的库2、下载数据集3、读取 json 文件4、载入图片5、载入模型6、获取图片特征6.1 删除重复的图片6.2 切片、分批6.3 将图片输入网络以获取特征7、文本 →\rightarrow→ 数字向量7.1 构建分词器7.2 构建数字向量7.3 将数字向量填充到同一长度8、划分训练集和验证集9、建立 tf.data 数据集10、编码器11、Bahdanau 注意...原创 2020-04-17 14:44:17 · 2651 阅读 · 0 评论 -
Tensorflow2.0之理解语言的 Transformer 模型
项目介绍我们将训练一个 Transformer 模型 用于将葡萄牙语翻译成英语。在此之前,建议先了解有关文本生成和注意力机制的相关内容。Transformer 模型的核心思想是自注意力机制(self-attention)——能注意输入序列的不同位置以计算该序列的表示的能力。Transformer 创建了多层自注意力层(self-attetion layers)组成的堆栈,下文的按比缩放的点积注...原创 2020-04-14 13:53:41 · 9015 阅读 · 23 评论 -
tf.matmul是怎么对两个高维矩阵进行相乘操作的?
在Tensorflow中,我们经常使用tf.matmul对两个矩阵进行相乘操作,按理说,矩阵相乘只能发生在二维矩阵之间,那么对于高维矩阵是怎么处理的呢?我们可以用三维矩阵举例:a = tf.ones((2, 2, 3))b = tf.ones((2, 3, 2))print('a:', a)print('b:', b)print('matmul:', tf.matmul(a, b))...原创 2020-04-13 16:10:38 · 4931 阅读 · 3 评论 -
如何对高维矩阵进行转置?
在线性代数课程中,我们一般只需要对二维矩阵进行转置,这是非常简单的。但在编写代码时,我们可能遇到高维(三维、四维等)矩阵转置的问题,那么此时该如何对其进行转置呢?最关键的地方,就是搞清楚在转置过程中,什么位置关系是变化的,什么位置关系是不变的。下面举例说明。三维矩阵三位矩阵的转置比较简单,因为它的第二个维度是不发生变化的,实质上只是交换了第一个和第三个维度。如下面这个 2×2×32\time...原创 2020-04-13 15:24:23 · 6657 阅读 · 1 评论