-
Notifications
You must be signed in to change notification settings - Fork 66
/
Copy pathexperiment_OutlierDetection.py
48 lines (40 loc) · 2.06 KB
/
experiment_OutlierDetection.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import PIL.Image as Image
from data import ImShow as I
import numpy as np
import tensorflow as tf
from model import l21RobustDeepAutoencoderOnST as l21RDA
import os
def l21RDAE(X, layers, lamda, folder, learning_rate = 0.15, inner = 100, outer = 10, batch_size = 133,re_init=False,inputsize = (28,28)):
if not os.path.isdir(folder):
os.makedirs(folder)
os.chdir(folder)
with tf.Graph().as_default():
with tf.Session() as sess:
rael21 = l21RDA.RobustL21Autoencoder(sess = sess, lambda_= lamda*X.shape[0], layers_sizes=layers)
l21L, l21S = rael21.fit(X = X, sess = sess, inner_iteration = inner, iteration = outer, batch_size = batch_size, learning_rate = learning_rate, re_init=re_init, verbose = True)
l21R = rael21.getRecon(X = X, sess = sess)
l21H = rael21.transform(X, sess)
Image.fromarray(I.tile_raster_images(X=l21S,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"l21S.png")
Image.fromarray(I.tile_raster_images(X=l21R,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"l21R.png")
Image.fromarray(I.tile_raster_images(X=l21L,img_shape=inputsize, tile_shape=(10, 10),tile_spacing=(1, 1))).save(r"l21L.png")
l21S.dump("l21S.npk")
os.chdir("../")
def experiment_frame():
X = np.load(r"./data/data.npk")
inner = 50
outer = 20
lamda_list = np.arange(0.00035,0.0015,0.0001)
layers = [784, 400, 200] ## S trans
folder = r"OutlierDetectionResult"
if not os.path.isdir(folder):
os.makedirs(folder)
os.chdir(folder)
image_X = Image.fromarray(I.tile_raster_images(X = X, img_shape = (28,28), tile_shape=(10, 10),tile_spacing=(1, 1)))
image_X.save(r"X.png")
for lam in lamda_list:
folder = "lam" + str(lam)
l21RDAE(X = X, layers=layers, lamda = lam, folder = folder, learning_rate = 0.001,
inner = inner, outer = outer, batch_size = 133,re_init=True,inputsize = (28,28))
os.chdir("../")
if __name__ == "__main__":
experiment_frame()