Press "Enter" to skip to content

使用Autoencoder方法在TensorFlow和Keras中进行异常检测

Photo by Leiada Krozjhen on Unsplash

一种先进的无监督方法,用于去噪、降维、异常检测等

到目前为止,我分享的所有关于TensorFlow和神经网络的教程都是关于监督学习。而这一篇将讲述无监督学习技术Autoencoder。简单来说,Autoencoder通过压缩输入数据、编码和重构数据的方式来减少数据中的噪音。这样,Autoencoder可以减少数据的维度或噪音,并专注于输入数据的真正要点。

从这里对Autoencoder的介绍中可以看到,这里涉及到了不止一个过程。

  1. 首先,需要一个模型来压缩输入数据,也就是编码器模型。
  2. 然后需要另一个模型来重构压缩后的数据,使其尽可能接近输入数据,也就是解码器模型。

通过这个过程,可以去除噪音,降低数据的维度,并清晰输入数据。

在本教程中,我将详细解释Autoencoder是如何工作的,并提供一个实际示例。

对于这个示例,我选择使用一个名为deep_weeds的公共数据集(Apache License 2.0)。

import tensorflow as tf
import tensorflow_datasets as tfds
ds = tfds.load('deep_weeds', split='train', shuffle_files=True)

数据准备

我们需要为这个无监督的异常检测示例准备一个数据集。我们将选择一个类作为主要类,并将其视为有效类。然后,我会将另一个类别的一些数据作为异常。然后,我们将开发模型来查找这几个异常数据。

我选择类别5作为有效类别,类别1作为异常。在下面的代码块中,我首先获取类别5和类别1的所有数据,并创建图像和相应标签的列表。

import numpy as np
images_main = []
images_anomaly = []
labels_main = []
labels_anomaly = []
ds = ds.prefetch(tf.data.AUTOTUNE)
for example in ds...
Leave a Reply

Your email address will not be published. Required fields are marked *