Mlp-Mixer-BiGRU故障诊断的python代码合集
谈起 MLP-Mixer 之前,我们先了解一下 MLP 结构,即多层感知机(Multi-layer Perceptrons),理论上一定复杂程度的 MLP 可以拟合任何函数的,但是代价是大量的计算开销和参数量,这给纯 MLP 的模型发展造成了阻碍。之前提出的 CNN、RNN 就是通过将 Inductive Bias(归纳偏置) 引入模型里,从而能在计算资源有限、数据有限的情况下能取得很好的结果。
不管怎么说,MLP-Mixer 证明了古老结构 MLP 的能力,视觉领域形成了 MLP --> CNN --> Transformer --> MLP 的轮回,一时间后续很多基于 MLP 的工作如雨后竹笋般频出,如 ResMLP、CycleMLP、gMLP、ViP、ConvMLP 等。
流程解析
我们来看一下 MLP-Mixer 的总体结构把,这里我们直接看代码来理解;
部分核心代码:
class PatchEmbed(nn.Layer):""" Patch Embedding Layer"""def __init__(self,img_size=224,patch_size=16,in_chans=3,embed_dim=768,norm_layer=None,flatten=True,):super().__init__()img_size = (img_size, img_size)patch_size = (patch_size, patch_size)self.img_size = img_sizeself.patch_size = patch_sizeself.grid_size = (img_size[0] // patch_size[0],img_size[1] // patch_size[1])self.num_patches = self.grid_size[0] * self.grid_size[1]self.flatten = flattenself.proj = nn.Conv2D(in_chans,embed_dim,kernel_size=patch_size,stride=patch_size)self.norm = norm_layer(embed_dim) if norm_layer else Identity()def forward(self, x):B, C, H, W = x.shapeassert (H == self.img_size[0]), f"Input image height ({H}) doesn't match model ({self.img_size[0]})."assert (W == self.img_size[1]), f"Input image width ({W}) doesn't match model ({self.img_size[1]})."x = self.proj(x)if self.flatten:x = x.flatten(2).transpose([0, 2, 1]) # BCHW -> BNCx = self.norm(x)return x
本代码在Mlp-Mixer算法的基础上融合Bigru,构成了Mlp-Mixer-BiGRU新型算法。该算法基于pytorch,数据来源为公开轴承数据集。数据集上,本模型表现良好。MLP-MIXER和MLP-MIXER-BIGRU两者置于同一合集中,供大家学习使用。
希望对大家有所帮助,需要的朋友欢迎关注共重号:年轻的战场ssd,回复 Mlp-Mixer-BiGRU 。一起交流,学习进步!!!