Spaces:
Sleeping
Sleeping
File size: 1,807 Bytes
4f82165 d70af30 8a2c474 8c73bdf 8877f9e 8a2c474 a0dde26 8a2c474 d70af30 8a2c474 d70af30 4f82165 8a2c474 4f82165 8a2c474 4f82165 6b33fcc 4f82165 8a2c474 4f82165 59d907e 4f82165 |
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 |
from tensorflow.keras.models import load_model
from tensorflow.keras.initializers import Orthogonal
from tensorflow.keras.utils import custom_object_scope
from tensorflow.keras.layers import LSTM
import gradio as gr
import pandas as pd
import numpy as np
# Initialize LSTM layer correctly without time_major
lstm_layer = LSTM(64, return_sequences=True)
# Register custom initializers or objects when loading the model
with custom_object_scope({'Orthogonal': Orthogonal}):
model = load_model('models/lstm-combinedmodel.h5')
def predict_from_csv(file_path):
# Load the data from CSV
data = pd.read_csv(file_path)
# Reorder and preprocess data if necessary
required_columns = ['CAN ID', 'RTR', 'DLC', 'Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6', 'Data7', 'Data8']
data = data[required_columns]
# Convert data to numpy array or the format your model expects
input_data = data.values
# Predict using the model
predictions = model.predict(input_data)
# Determine the predicted class and confidence
predicted_class = np.argmax(predictions, axis=1)[0]
confidence = np.max(predictions, axis=1)[0]
# Map numeric class to label
class_labels = {0: "Normal", 1: "Anomaly"}
label = class_labels[predicted_class]
output = f"Predicted Class: {label}, Confidence: {confidence:.4f}"
return output
def interface_func(uploaded_file):
# Use the prediction function on the uploaded file path
predictions = predict_from_csv(uploaded_file.name)
return predictions
iface = gr.Interface(fn=interface_func,
inputs=gr.File(label="Upload CSV"),
outputs="text",
description="Upload a CSV file with the specified columns to predict.")
iface.launch() |