keras版本AdaBN复现的效果

keras版本AdaBN复现的效果
越来越多的小伙伴咨询AdaBN是怎么回事,怎么复现,效果则么样。先不说代码怎么复现,先看看效果如何。
首先放一下张伟大佬的硕士毕业论文里面的AdaBN算法猥代码:
请添加图片描述
请添加图片描述
从上面两个图理解,就是把分别处于两种载荷情况下的相同机理的故障作为原领域数据和目标领域数据,先训练目标领域的数据,这时候卷积神经网络做正向传播和反向传播(即在定义模型训练过程中保留训练集和测试集)代码如下:

model.fit(X_train, Y_train,validation_data=(X_test, Y_test),epochs=20,batch_size=128)#正向传播反向传播都有

然后把模型以h5的形式进行保存

model.save('C:/Users/1/Desktop/目标领域.h5')

此时此刻已经完成了伪代码中提到的BN层参数替换的权重参数
训练结果如下图所示:
在途中请添加图片描述
在上图中红色曲线表示训练集正确率,绿色曲线代表测试集正确率,蓝色曲线代表训练集损失函数值,橙色曲线代表测试集损失函数值

接下来需要将数据回归到原领域,在原领域中使用训练目标域时候的BN权重,且保持BN权重不进行更新,同时定义源领域只做正向传播(即去掉定义训练中的测试集)代码如下:

history=model.fit(X_train, Y_train,epochs=20,batch_size=128)

训练结果如下图所示:
请添加图片描述
上图中橙色直线表示正确率,蓝色直线代表目标函数值。
训练完源领域数据后保存最终AdaBN模型:

model.save('C:/Users/1/Desktop/AdaBN.h5')

最终进行测试对比,我再训练过程中以及预测过程中的数据具体划分形式为:
源领域:凯斯西储大学,轴承故障数据,48K中第一行,无载109、122、135三个故障数据
目标领域:凯斯西储大学,轴承故障数据,48K中第二行,负载1中的110、123、136三个数据

为了体现效果,直接拿目标领域训练保存的模型对负载一中的数据进行预测,预测结果如下:
请添加图片描述
请添加图片描述
然后拿AdaBN结果进行预测
请添加图片描述
请添加图片描述
预测结果显而易见,这还不是用的原领域数据进行训练再去预测目标领域的结果,而是直接目标领域训练结果模型的预测效果,可见AdaBN泛化能力非常强势。

最后说明一下,本人就要毕业了,CSDN以后不会再更新了,有问题就在帖子下方留言,有时间一定回复。
要AdaBN算法代码的可以私信我,这里不再放出,可根据我前几篇帖子自己琢磨出来

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让我顺利毕业吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值