-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoodGenerator.py
More file actions
74 lines (68 loc) · 2.66 KB
/
Copy pathoodGenerator.py
File metadata and controls
74 lines (68 loc) · 2.66 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import numpy as np
import tensorflow as tf
def ood_generator(X_test_mnist, type):
outliers = X_test_mnist
oitliers_size = outliers.shape[0]
output = []
for i in range(oitliers_size):
sample = outliers[i, :, :, 0]
if type == "diagonal":
sample = sample.numpy()
np.fill_diagonal(sample, 0.5)
elif type == "off-diagonal":
sample = sample.numpy()
np.fill_diagonal(np.fliplr(sample), 0.5)
elif type == "cross":
sample = sample.numpy()
np.fill_diagonal(sample, 0.5)
np.fill_diagonal(np.fliplr(sample), 0.5)
elif type == "spots":
side = np.random.randint(1, 5)
if side == 1:
x = np.random.randint(-0.1, 31)
y = np.random.randint(28.6, 31)
elif side == 2:
x = np.random.randint(28.6, 31)
y = np.random.randint(-0.1, 31)
elif side == 3:
x = np.random.randint(-0.1, 31)
y = np.random.randint(-0.1, 2.5)
elif side == 4:
x = np.random.randint(-0.1, 2.5)
y = np.random.randint(-0.1, 31)
img = tf.Variable(sample)
img[x, y].assign(0.5)
sample = tf.convert_to_tensor(img)
else:
mix_type = np.random.randint(1, 5)
if mix_type == 1:
sample = sample.numpy()
np.fill_diagonal(sample, 0.5)
elif mix_type == 2:
sample = sample.numpy()
np.fill_diagonal(np.fliplr(sample), 0.5)
elif mix_type == 3:
sample = sample.numpy()
np.fill_diagonal(sample, 0.5)
np.fill_diagonal(np.fliplr(sample), 0.5)
elif mix_type == 4:
side = np.random.randint(1, 5)
if side == 1:
x = np.random.randint(-0.1, 31)
y = np.random.randint(28.6, 31)
elif side == 2:
x = np.random.randint(28.6, 31)
y = np.random.randint(-0.1, 31)
elif side == 3:
x = np.random.randint(-0.1, 31)
y = np.random.randint(-0.1, 2.5)
elif side == 4:
x = np.random.randint(-0.1, 2.5)
y = np.random.randint(-0.1, 31)
img = tf.Variable(sample)
img[x, y].assign(0.5)
sample = tf.convert_to_tensor(img)
sample = tf.convert_to_tensor(sample, tf.float32)
output.append(sample)
output = tf.reshape(output, (len(output), 32, 32, 1))
return output