|
|
import pandas as pd |
|
|
import numpy as np |
|
|
import torch |
|
|
import torch.nn as nn |
|
|
import gradio as gr |
|
|
|
|
|
model = nn.Sequential( |
|
|
nn.Linear(11, 20), |
|
|
nn.ReLU(), |
|
|
nn.Linear(20, 5, bias=True)) |
|
|
|
|
|
PATH = "wine_model.pth" |
|
|
|
|
|
model.load_state_dict(torch.load(PATH, weights_only=False)) |
|
|
|
|
|
def forward(model, input): |
|
|
preds = model(input) |
|
|
predicted_class = torch.argmax(preds, dim=-1) + 4 |
|
|
return predicted_class |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
gr.Markdown("Enter your wine data below:") |
|
|
input_df = gr.Dataframe( |
|
|
row_count=(2, "dynamic"), |
|
|
col_count=(11, "dynamic"), |
|
|
headers=list(df.columns)[:-1], |
|
|
label="Input Data", |
|
|
interactive=True, |
|
|
type="pandas" |
|
|
) |
|
|
output_text = gr.Textbox(label="Processed Output") |
|
|
|
|
|
def process_data(input_dataframe): |
|
|
|
|
|
if isinstance(input_dataframe, pd.DataFrame): |
|
|
return forward(model, input_dataframe) |
|
|
return "Invalid input type" |
|
|
|
|
|
input_df.change(fn=process_data, inputs=input_df, outputs=output_text) |
|
|
|
|
|
demo.launch() |
|
|
|