当前位置: 首页 > news >正文

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...

全文链接:https://tecdat.cn/?p=39656

本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等)下的分类性能。结果表明,域对抗训练能够有效提升模型在目标域上的适应能力,为解决无监督域适应问题提供了一种有效的途径点击文末“阅读原文”获取完整代码、数据、远程指导)。

在机器学习和深度学习领域,域适应是一个重要的研究方向。不同数据源(即不同域)之间往往存在分布差异,这使得在一个域上训练的模型在另一个域上的性能显著下降。“Unsupervised Domain Adaptation by Backpropagation” 论文提出了一种简单有效的方法,通过随机梯度下降(SGD)和梯度反转层来实现域适应。后续的 “Domain - Adversarial Training of Neural Networks” 对该工作进行了详细阐述和扩展。

梯度反转层

梯度反转层是实现域对抗训练的关键。

# 反转 x 关于 y 的梯度,并按 l 进行缩放(默认为 1.0)
y = flip_gradient(x, l)
MNIST
构建MNIST - M数据集
实验结果对比

以下是大致的结果:

Blobs - DANN
Blob数据集
# 绘制数据集
plt.scatter(Xs\[:, 0\], Xs\[:, 1\], c=ys, cmap='coolwarm', alpha=0.4)
plt.scatter(Xt\[:, 0\], Xt\[:, 1\], c=yt, cmap='cool', alpha=0.4)
plt.show()

Blob数据集可视化

构建模型

不同训练方式的实验
  • 域分类:设置 grad_scale=-1.0 可以有效关闭梯度反转。仅训练域分类器会创建使类别合并的表示。

train\_loss = sess.graph.get\_tensor\_by\_name(train\_loss\_name + ':0')train\_op = sess.graph.get\_operation\_by\_name(train\_op\_name)sess.run(tf.global\_variables\_initializer())for i in range(num_batches):if grad_scale is None:
不同训练方式的实验
  • 域分类

F = sess.graph.get\_tensor\_by\_name(feat\_tensor_name + ':0')emb\_s = sess.run(F, feed\_dict={'X:0': Xs})emb\_t = sess.run(F, feed\_dict={'X:0': Xt})emb\_all = np.vstack(\[emb\_s, emb_t\])pca = PCA(n_components=2)pca\_emb = pca.fit\_transform(emb_all)num = pca_emb.shape\[0\] // 2plt.scatter(pca\_emb\[:num, 0\], pca\_emb\[:num, 1\], c=ys, cmap='coolwarm', alpha=0.4)plt.scatter(pca\_emb\[num:, 0\], pca\_emb\[num:, 1\], c=yt, cmap='cool', alpha=0.4)plt.show()
train\_and\_evaluate(sess, 'domain\_train\_op', 'domain\_loss', grad\_scale=-1.0, verbose=False)
extract\_and\_plot\_pca\_feats(sess)

运行结果如下:

域分类PCA特征可视化
从结果可以看出,仅训练域分类器时,模型能够很好地区分源域和目标域,但对类别的区分能力较差,这表明这种训练方式创建的表示使类别合并了。

  • 标签分类

运行结果如下:

标签分类PCA特征可视化
在源域上进行标签预测训练时,模型在源域上能够很好地区分不同类别,但在目标域上的类别区分能力较差,说明这种训练方式对目标域的适应能力不足。

  • 域适应

运行结果如下:

域适应PCA特征可视化
使用域对抗损失进行训练时,模型在源域和目标域上的类别分类准确率都较高,说明域对抗训练能够有效提升模型在目标域上的适应能力。


点击标题查阅往期内容

图片

Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析|数据分享

outside_default.png

左右滑动查看更多

outside_default.png

01

图片

02

图片

03

图片

04

图片

  • 更深的域分类器的域适应

运行结果如下:

更深域分类器的域适应PCA特征可视化
使用更深的域分类器进行域适应训练时,在多次实验中似乎更能可靠地合并域,同时保持较高的类别分类准确率。

MNIST - DANN

数据处理

在数据处理阶段,我们对MNIST和MNIST - M数据集进行了预处理。对于MNIST数据,将其转换为适合卷积神经网络输入的格式,并扩展为三通道图像。MNIST - M数据则直接从之前生成的 pkl 文件中加载。通过计算像素均值,我们对数据进行归一化处理,这有助于提高模型的训练效果。最后,创建了一个混合数据集用于后续的TSNE可视化,方便我们直观地观察模型在不同域上的特征分布情况。

数据可视化

MNIST训练数据可视化
MNIST - M训练数据可视化
通过 函数对MNIST和MNIST - M的训练数据进行可视化展示,我们可以直观地看到两个数据集之间的差异,这也体现了域适应问题的挑战性,即不同域之间的数据分布存在明显差异。

构建模型
# 特征提取器 - CNN模型b\_conv1 = bias\_variable(\[48\])h\_conv1 = tf.nn.relu(conv2d(h\_pool0, W\_conv1) + b\_conv1)h\_pool1 = max\_pool\_2x2(h\_conv1)self.feature = tf.reshape(h_pool1, \[-1, 7 * 7 * 48\])# 标签预测器 - MLP模型with tf.variable\_scope('label\_predictor'):W\_fc2 = weight\_variable(\[100, 10\])b\_fc2 = bias\_variable(\[10\])logits = tf.matmul(h\_fc1, W\_fc2) + b_fc2self.pred = tf.nn.softmax(logits)self.pred\_loss = tf.nn.softmax\_cross\_entropy\_with\_logits(logits=logits, labels=self.classify\_labels)# 域预测器 - 小MLP模型,带有对抗损失d\_b\_fc1 = bias_variable(\[2\])d\_logits = tf.matmul(d\_h\_fc0, d\_W\_fc1) + d\_b_fc1self.domain\_pred = tf.nn.softmax(d\_logits)self.domain\_loss = tf.nn.softmax\_cross\_entropy\_with\_logits(logits=d\_logits, labels=self.domain)

该模型主要由三个部分组成:特征提取器、标签预测器和域预测器。特征提取器使用卷积神经网络(CNN)从输入图像中提取特征;标签预测器是一个多层感知机(MLP),用于对图像的类别进行预测;域预测器同样是一个MLP,用于判断输入数据来自源域还是目标域。在域预测器中,使用了梯度反转层 flip_gradient 来实现对抗训练,使得特征提取器学习到的特征能够在不同域之间具有不变性。

模型训练与评估

上述代码实现了两种训练模式:仅在源域上训练(source)和使用域对抗训练(dann)。在训练过程中,根据论文中的方法动态调整适应参数 l 和学习率 lr
运行结果如下:

从结果可以看出,仅在源域上训练时,模型在源域(MNIST)上有较高的准确率,但在目标域(MNIST - M)上的准确率较低,说明模型对目标域的适应能力较差。而使用域对抗训练后,虽然源域的准确率略有下降,但目标域的准确率有了显著提升,表明域对抗训练有效地提高了模型在不同域之间的泛化能力。

特征可视化
plot\_embedding(dann\_tsne



通过t - 分布随机邻域嵌入(t - SNE)方法将高维特征映射到二维空间进行可视化。从可视化结果可以直观地看到,仅在源域上训练时,源域和目标域的数据在特征空间中分离明显,说明模型没有学习到域不变的特征。而使用域对抗训练后,源域和目标域的数据在特征空间中更加接近,表明模型学习到了更具泛化性的特征,能够更好地适应不同的域。

结论

本文详细介绍了基于TensorFlow实现的神经网络对抗训练域适应方法。通过梯度反转层和域对抗训练,模型能够学习到域不变的特征,从而提高在目标域上的分类性能。在MNIST和Blobs数据集上的实验结果表明,域对抗训练相比于仅在源域上训练,能够显著提升模型在目标域上的准确率。同时,通过特征可视化可以直观地观察到域对抗训练对特征分布的影响,进一步验证了该方法的有效性。未来的研究可以考虑在更复杂的数据集和任务上应用该方法,以及探索如何进一步优化域对抗训练的效果。

51bd572e19763413fa4305aa0bf7cb74.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

9abd819f3baa7822a6f3980cc246d44a.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

c077c72f8b5492841e42c58541b75f42.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《TensorFlow域对抗训练DANN神经网络梯度反转层分析MNIST 与Blobs数据集提升目标域适应能力可视化》。

点击标题查阅往期内容

Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析|数据分享

【视频讲解】共享单车使用量预测:RNN, LSTM,GRU循环神经网络和传统机器学习|数据分享

视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据

Python用GRU神经网络模型预测比特币价格时间序列数据2案例可视化|附代码数据

【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

30bb6807e71519e89fdfec2220abedfe.jpeg

a2b490b858f64d12913866789e18b32e.png

ec66c7b1a5bd37b5c1dfdfde0edfc782.png

c8827c4e8491a41065b20f03eeb82c70.jpeg

41efcd362595416e0e661cff34d9c81a.png

相关文章:

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...

全文链接:https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等&am…...

保姆级教程--DeepSeek部署

以DeepSeek-R1或其他类似模型为例,涵盖环境配置、代码部署和运行测试的全流程: 准备工作 1. 注册 Cloud Studio - 访问 [Cloud Studio 官网](https://cloudstudio.net/),使用腾讯云账号登录。 - 完成实名认证(如需长期使用…...

机器学习之心的创作纪念日

机缘 今天,是我成为创作者的第1460天。 在这段时间里,获得了很大的成长。 虽然日常忙碌但还在坚持创作、初心还在。 日常 创作已经成为我生活的一部分,尤其是在我的工作中,创作是不可或缺的,创作都是核心能力之一。…...

VeryReport和FastReport两款报表软件深度分析对比

在当今数据驱动的商业环境中,报表软件已经成为企业管理和数据分析的重要工具。无论是中小型企业还是大型企业,都需要依赖高效的报表工具来快速生成、分析和展示数据。市面上有许多报表工具,其中VeryReport和FastReport是两款备受关注的报表软…...

libtorch的c++,加载*.pth

一、转换模型为TorchScript 前提:python只保存了参数,没存结构 要在C中使用libtorch(PyTorch的C接口),读取和加载通过torch.save保存的模型( torch.save(pdn.state_dict()这种方式,只保存了…...

去除 RequestTemplate 对象中的指定请求头

目录 目标实现获取 RequestTemplate 对象去除请求头 目标 去除 RequestTemplate 对象中的指定请求头,如 Authorization 等。 实现 获取 RequestTemplate 对象 获取 RequestTemplate 对象的方式有很多种,如 通过 feign 虚拟客户端配置器: …...

b s架构 网络安全 网络安全架构分析

目录 文章目录 目录网络安全逻辑架构 微分段(Micro-segmentation)防火墙即服务(Firewall asa Service ,FWaaS)安全网络网关(Secure web gateway)净化域名系统(Sanitized Domain Na…...

【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】3. DeepS…...

Spring Boot和SpringMVC的关系

Spring Boot和SpringMVC都是Spring框架的一部分,但它们的作用和使用方式有所不同。为了更好地理解它们的关系,我们可以从以下几个方面进行详细说明: 1. SpringBoot的作用 SpringBoot是一个开源框架,它的目的是简化Spring应用程序…...

java基础4(黑马)

一、方法 1.定义 方法:是一种语法结构,它可以把一段代码封装成一个功能,以便重复使用。 方法的完整格式: package cn.chang.define;public class MethodDemo1 {public static void main(String[] args) {// 目标:掌…...

nodejs - vue 视频切片上传,本地正常,线上环境导致磁盘爆满bug

nodejs 视频切片上传,本地正常,线上环境导致磁盘爆满bug 原因: 然后在每隔一分钟执行du -sh ls ,发现文件变得越来越大,即文件下的mp4文件越来越大 最后导致磁盘直接爆满 排查原因 1、尝试将m3u8文件夹下的所有视…...

注意力机制(Attention Mechanism)和Transformer模型的区别与联系

注意力机制(Attention Mechanism) 和 Transformer 模型 是深度学习领域中的两个重要概念,虽然它们紧密相关,但有着明显的区别。下面我们将从 定义、作用、结构 和 应用 等多个维度来分析这两者的区别与联系。 1. 定义 注意力机制(Attention Mechanism): 注意力机制是一…...

C++,设计模式,【单例模式】

文章目录 一、模式定义与核心价值二、模式结构解析三、关键实现技术演进1. 基础版(非线程安全)2. 线程安全版(双重检查锁)3. 现代C++实现(C++11起)四、实战案例:全局日志管理器五、模式优缺点深度分析✅ 核心优势⚠️ 潜在缺陷六、典型应用场景七、高级实现技巧1. 模板化…...

C++:类和对象初识

C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...

官网下载Redis指南

1.访问官网 https://redis.io/downloads/#stack 2.点击redis图标 拉到下面点击download 在新页面拉到最下面,点击install from source 找到需要的大版本后,点击releases page 最后点击下载需要的版本号即可...

活动预告 |【Part1】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载

课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft 云技术的了解。参加我们举办的“迁移和保护 Windows Server 和 SQL Server 工作负载”活动,了解 Azure 如何为将工作负…...

【Linux系统编程】五、进程创建 -- fork()

文章目录 前言Ⅰ. 重温fork函数一、fork()的概念二、如何理解fork()有两个返回值 Ⅱ.fork的常规用法Ⅲ. fork调用失败的原因Ⅳ. 写时拷贝为什么存在写时拷贝❓❓❓ 前言 现阶段我们知道进程创建有如下两种方式,其实包括在以后的学习中这两种方式也是最常见的&#…...

深入解析 STM32 GPIO:结构、配置与应用实践

理解 GPIO 的工作原理和配置方法是掌握 STM32 开发的基础,后续的外设(如定时器、ADC、通信接口)都依赖于 GPIO 的正确配置。 目录 一、GPIO 的基本概念 二、GPIO 的主要功能 三、GPIO 的内部结构 四、GPIO 的工作模式 1. 输入模式 2. 输出模式 3. 复用功能模式 4. 模…...

深入探究 C++17 std::is_invocable

文章目录 一、引言二、std::is_invocable 概述代码示例输出结果 三、std::is_invocable 的工作原理简化实现示例 四、std::is_invocable 的相关变体1. std::is_invocable_r2. std::is_nothrow_invocable 和 std::is_nothrow_invocable_r 五、使用场景1. 模板元编程2. 泛型算法 …...

Vmware网络模式

一、Vmware虚拟网络 Vmware共支持创建20个虚拟网络,相当于现实生活的交换机,名称vmnet0-vmnet19 没创建一个虚拟网络。对应在物理机会自动生成相应的虚拟网卡 该虚拟网卡用于和对应的虚拟网络中的虚拟机通信 二、虚拟网络的工作模式 1、nat模式 …...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...