|
|
|
@ -18,7 +18,7 @@ from matplotlib import pyplot
|
|
|
|
|
from pandas import DataFrame
|
|
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pylab as plt
|
|
|
|
|
#import aes_lib as aes
|
|
|
|
|
|
|
|
|
|
import tensorflow.keras
|
|
|
|
|
import numpy as np
|
|
|
|
|
import math
|
|
|
|
@ -29,9 +29,7 @@ from pandas import DataFrame
|
|
|
|
|
from sklearn.metrics import precision_score, recall_score, f1_score, confusion_matrix
|
|
|
|
|
from tensorflow.keras.models import Sequential
|
|
|
|
|
from tensorflow.keras.layers import Dense, Activation
|
|
|
|
|
#from tensorflow.keras.utils import to_categorical
|
|
|
|
|
#from sklearn.metrics import zero_one_loss
|
|
|
|
|
#from sklearn.metrics import confusion_matrix
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
visual = True
|
|
|
|
@ -104,35 +102,39 @@ def create_fit_save_ae(cl_train, ae_file, irefile, epohs, verbose_show, patience
|
|
|
|
|
# Ниже строки читать входные данные пользователя с помощью функции map ()
|
|
|
|
|
ae_arch = list(map(int, input("Задайте архитектуру скрытых слоёв автокодировщика, например, в виде 3 1 3 : ").strip().split()))[:n]
|
|
|
|
|
ae = tensorflow.keras.models.Sequential()
|
|
|
|
|
|
|
|
|
|
# input layer
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(size))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
|
|
|
|
|
# hidden layers
|
|
|
|
|
for i in range(len(ae_arch)):
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(ae_arch[i]))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
|
|
|
|
|
# output layer
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(size))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('linear'))
|
|
|
|
|
else:
|
|
|
|
|
ae = tensorflow.keras.models.Sequential()
|
|
|
|
|
|
|
|
|
|
# input layer
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(size))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
|
|
|
|
|
# hidden layers
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(3))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Dense(4))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Dense(5))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(2))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(1))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(2))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Dense(5))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Dense(4))
|
|
|
|
|
#ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(3))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('tanh'))
|
|
|
|
|
|
|
|
|
|
# output layer
|
|
|
|
|
ae.add(tensorflow.keras.layers.Dense(size))
|
|
|
|
|
ae.add(tensorflow.keras.layers.Activation('linear'))
|
|
|
|
|
|
|
|
|
@ -176,11 +178,7 @@ def test(y_pred, Y_test):
|
|
|
|
|
def predict_ae(nn, x_test, threshold):
|
|
|
|
|
x_test_predicted = nn.predict(x_test)
|
|
|
|
|
ire = ire_array(x_test, x_test_predicted)
|
|
|
|
|
# Расчет ошибки при нормализации: иначе закоментировать и раскоментировать 81 и 82
|
|
|
|
|
#x_test_norm = norm_array(x_test, 0)
|
|
|
|
|
#x_test_predicted_norm = nn.predict(x_test_norm)
|
|
|
|
|
#x_test_predicted = norm_array(x_test_predicted_norm, 1)
|
|
|
|
|
#ire = ire_array(x_test, x_test_predicted)
|
|
|
|
|
|
|
|
|
|
predicted_labels = (ire > threshold).astype(float)
|
|
|
|
|
predicted_labels = predicted_labels.reshape((predicted_labels.shape[0], 1))
|
|
|
|
|
ire = np.transpose(np.array([ire]))
|
|
|
|
|