|
import torch |
|
import streamlit as st |
|
import numpy as np |
|
|
|
class Net(torch.nn.Module): |
|
def __init__(self, input_size, hidden_size, output_size): |
|
super(Net, self).__init__() |
|
self.hidden = torch.nn.Linear(input_size, hidden_size) |
|
self.relu = torch.nn.ReLU() |
|
self.output = torch.nn.Linear(hidden_size, output_size) |
|
self.sigmoid = torch.nn.Sigmoid() |
|
|
|
def forward(self, x): |
|
hidden = self.hidden(x) |
|
relu = self.relu(hidden) |
|
output = self.output(relu) |
|
output = self.sigmoid(output) |
|
return output |
|
|
|
def load_model(path): |
|
model = Net(2, 5, 1) |
|
model.load_state_dict(torch.load(path)) |
|
return model |
|
|
|
def predict(model, input_data): |
|
with torch.no_grad(): |
|
output = model(input_data) |
|
return output.numpy() |
|
|
|
def main(): |
|
st.title("PyTorch Model Predictor") |
|
|
|
uploaded_file = st.file_uploader("Choose a PyTorch model file (.pt)", type="pt") |
|
|
|
if uploaded_file is not None: |
|
model = load_model(uploaded_file) |
|
st.success("Model loaded successfully.") |
|
|
|
st.header("Make a Prediction") |
|
input_data = np.array([st.number_input("Input 1"), st.number_input("Input 2")]) |
|
if st.button("Predict"): |
|
prediction = predict(model, torch.from_numpy(input_data).float().to('cpu')) |
|
st.write("Prediction:", prediction.item()) |
|
else: |
|
st.warning("Please upload a PyTorch model file (.pt).") |
|
|
|
if __name__ == "__main__": |
|
main() |
|
|