Home › Fóruns › Fórum Deep Learning com Python de A a Z: O Curso Completo › Autoencoder para anomalias › Responder a: Autoencoder para anomalias
Essa construção que fiz estaria correta para a detecção de anomalias com o autoencoder usando tensorflow/keras?
————————————————
# Preparação para autoencoder
tamanho = treino.shape[1]
tamanho
# Construção das camadas
input = layers.Input(shape=(tamanho, ))
encoder = layers.Dense(int(tamanho/2), activation=”relu”)(input)
encoder = layers.Dense(int(tamanho/5), activation=”relu”)(encoder)
encoder = layers.Dense(int(tamanho/9), activation=”relu”)(encoder)
latent = layers.Dense(int(tamanho/12), activation=”relu”)(encoder)
decoder = layers.Dense(int(tamanho/9), activation=”relu”)(latent)
decoder = layers.Dense(int(tamanho/5), activation=”relu”)(decoder)
decoder = layers.Dense(int(tamanho/2), activation=”relu”)(decoder)
output = layers.Dense(int(tamanho), activation=”sigmoid”)(decoder)
# Criação do modelo
autoencoder = Model(input, output)
autoencoder.compile(optimizer=”adam”, loss=”mse”) ################# usar o MSE seria adequado?
# Treinamento do modelo
treinamento = autoencoder.fit(treino, treino, epochs=100, batch_size=256, verbose=False, validation_split=0.15)
# Reconstrução da base
reconstrucao = autoencoder.predict(treino)
train_loss = tf.keras.losses.mse(reconstrucao, treino)
plt.hist(train_loss, bins=50)
# Determinação do threshold para identificação de anomalias
threshold = np.mean(train_loss) + np.std(train_loss)
threshold
# Atribuição da perda MSE
dados[“MSE”] = tf.keras.losses.mse(reconstrucao, treino)
# Classificação do outlier
dados[“Outlier”] = 0
dados.loc[dados[“MSE”] > threshold, “Outlier”] = 1
<hr />
Obrigado !