-
Notifications
You must be signed in to change notification settings - Fork 0
/
passAuth.py
68 lines (55 loc) · 1.84 KB
/
passAuth.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import os
import pickle
import numpy as np
import tensorflow as tf
from sklearn.preprocessing import StandardScaler
def create_model():
# Define the model architecture
model = tf.keras.Sequential([
tf.keras.layers.Dense(32, input_shape=(784,)),
tf.keras.layers.Activation('relu'),
tf.keras.layers.Dense(64),
tf.keras.layers.Activation('relu'),
tf.keras.layers.Dense(10),
tf.keras.layers.Activation('softmax')
])
# Compile the model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
return model
# Train the model on the data
def train_model(model, data, labels):
model.fit(data, labels, epochs=10)
def save_model(model):
# Save the model to a file
model.save('authentication_model.h5')
# Load the model from a file
def load_model():
return tf.keras.models.load_model('authentication_model.h5')
def authenticate(model, data):
# Use the model to make a prediction on the data
prediction = model.predict(data)
return prediction
def main():
# Load the data and labels
data = np.load('authentication_data.npy')
labels = np.load('authentication_labels.npy')
# Scale the data
scaler = StandardScaler()
data = scaler.fit_transform(data)
# Create and train the model
model = create_model()
train_model(model, data, labels)
# Save the model
save_model(model)
# Load the model
model = load_model()
# Authenticate the user
user_data = np.load('user_data.npy')
user_data = scaler.transform(user_data)
prediction = authenticate(model, user_data)
if np.argmax(prediction) == 1:
print('Authentication successful')
else:
print('Authentication failed')
if __name__ == '__main__':
main()