如何看网站关键词,旅游模板网站,莒县做网站的电话,深圳公共资源交易网全文链接#xff1a;https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现#xff0c;通过MNIST和Blobs等数据集进行实验#xff0c;对比了不同训练方式#xff08;仅源域训练、域对抗训练等https://tecdat.cn/?p39656 本文围绕基于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\], cys, cmapcoolwarm, alpha0.4)
plt.scatter(Xt\[:, 0\], Xt\[:, 1\], cyt, cmapcool, alpha0.4)
plt.show() 构建模型 不同训练方式的实验 域分类设置 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_components2)pca\_emb pca.fit\_transform(emb_all)num pca_emb.shape\[0\] // 2plt.scatter(pca\_emb\[:num, 0\], pca\_emb\[:num, 1\], cys, cmapcoolwarm, alpha0.4)plt.scatter(pca\_emb\[num:, 0\], pca\_emb\[num:, 1\], cyt, cmapcool, alpha0.4)plt.show()
train\_and\_evaluate(sess, domain\_train\_op, domain\_loss, grad\_scale-1.0, verboseFalse)
extract\_and\_plot\_pca\_feats(sess) 运行结果如下 从结果可以看出仅训练域分类器时模型能够很好地区分源域和目标域但对类别的区分能力较差这表明这种训练方式创建的表示使类别合并了。 标签分类 运行结果如下 在源域上进行标签预测训练时模型在源域上能够很好地区分不同类别但在目标域上的类别区分能力较差说明这种训练方式对目标域的适应能力不足。 域适应 运行结果如下 使用域对抗损失进行训练时模型在源域和目标域上的类别分类准确率都较高说明域对抗训练能够有效提升模型在目标域上的适应能力。 点击标题查阅往期内容 Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析|数据分享 左右滑动查看更多 01 02 03 04 更深的域分类器的域适应 运行结果如下 使用更深的域分类器进行域适应训练时在多次实验中似乎更能可靠地合并域同时保持较高的类别分类准确率。 MNIST - DANN 数据处理 在数据处理阶段我们对MNIST和MNIST - M数据集进行了预处理。对于MNIST数据将其转换为适合卷积神经网络输入的格式并扩展为三通道图像。MNIST - M数据则直接从之前生成的 pkl 文件中加载。通过计算像素均值我们对数据进行归一化处理这有助于提高模型的训练效果。最后创建了一个混合数据集用于后续的TSNE可视化方便我们直观地观察模型在不同域上的特征分布情况。 数据可视化 通过 函数对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(logitslogits, labelsself.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(logitsd\_logits, labelsself.domain) 该模型主要由三个部分组成特征提取器、标签预测器和域预测器。特征提取器使用卷积神经网络CNN从输入图像中提取特征标签预测器是一个多层感知机MLP用于对图像的类别进行预测域预测器同样是一个MLP用于判断输入数据来自源域还是目标域。在域预测器中使用了梯度反转层 flip_gradient 来实现对抗训练使得特征提取器学习到的特征能够在不同域之间具有不变性。 模型训练与评估 上述代码实现了两种训练模式仅在源域上训练source和使用域对抗训练dann。在训练过程中根据论文中的方法动态调整适应参数 l 和学习率 lr。运行结果如下 从结果可以看出仅在源域上训练时模型在源域MNIST上有较高的准确率但在目标域MNIST - M上的准确率较低说明模型对目标域的适应能力较差。而使用域对抗训练后虽然源域的准确率略有下降但目标域的准确率有了显著提升表明域对抗训练有效地提高了模型在不同域之间的泛化能力。 特征可视化 plot\_embedding(dann\_tsne 通过t - 分布随机邻域嵌入t - SNE方法将高维特征映射到二维空间进行可视化。从可视化结果可以直观地看到仅在源域上训练时源域和目标域的数据在特征空间中分离明显说明模型没有学习到域不变的特征。而使用域对抗训练后源域和目标域的数据在特征空间中更加接近表明模型学习到了更具泛化性的特征能够更好地适应不同的域。 结论 本文详细介绍了基于TensorFlow实现的神经网络对抗训练域适应方法。通过梯度反转层和域对抗训练模型能够学习到域不变的特征从而提高在目标域上的分类性能。在MNIST和Blobs数据集上的实验结果表明域对抗训练相比于仅在源域上训练能够显著提升模型在目标域上的准确率。同时通过特征可视化可以直观地观察到域对抗训练对特征分布的影响进一步验证了该方法的有效性。未来的研究可以考虑在更复杂的数据集和任务上应用该方法以及探索如何进一步优化域对抗训练的效果。 本文中分析的数据、代码分享到会员群扫描下面二维码即可加群 资料获取 在公众号后台回复“领资料”可免费获取数据分析、机器学习、深度学习等学习资料。 点击文末“阅读原文” 获取全文完整代码数据资料。 本文选自《TensorFlow域对抗训练DANN神经网络梯度反转层分析MNIST 与Blobs数据集提升目标域适应能力可视化》。 点击标题查阅往期内容 Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析|数据分享 【视频讲解】共享单车使用量预测RNN, LSTMGRU循环神经网络和传统机器学习|数据分享 视频Python深度学习量化交易策略、股价预测LSTM、GRU深度门控循环神经网络|附代码数据 Python用GRU神经网络模型预测比特币价格时间序列数据2案例可视化|附代码数据 【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码 Matlab用深度学习长短期记忆LSTM神经网络对文本数据进行分类 RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测 结合新冠疫情COVID-19股票价格预测ARIMAKNN和神经网络时间序列分析 深度学习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神经网络分类