awacke1's picture
Create app.py
560f1db
raw
history blame
2.38 kB
import streamlit as st
import torch
import torch.nn as nn
import torch.optim as optim
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
# Set up Streamlit layout
st.title("PyTorch vs Keras Comparison")
# Define PyTorch model
class PyTorchModel(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(PyTorchModel, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
# Define Keras model
def KerasModel(input_size, hidden_size, output_size):
model = Sequential()
model.add(Dense(hidden_size, activation='relu', input_shape=(input_size,)))
model.add(Dense(output_size))
return model
# Define example NLP tasks
nlp_tasks = {
'Task 1: Sentiment Analysis': {
'PyTorch': {
'model': PyTorchModel(100, 64, 2),
'optimizer': optim.Adam,
},
'Keras': {
'model': KerasModel(100, 64, 2),
'optimizer': Adam,
}
},
'Task 2: Text Classification': {
'PyTorch': {
'model': PyTorchModel(200, 128, 5),
'optimizer': optim.SGD,
},
'Keras': {
'model': KerasModel(200, 128, 5),
'optimizer': Adam,
}
}
}
# Select NLP task
task = st.sidebar.selectbox("Select NLP Task", list(nlp_tasks.keys()))
# Select framework
framework = st.sidebar.selectbox("Select Framework", ['PyTorch', 'Keras'])
# Get model and optimizer for selected task and framework
model = nlp_tasks[task][framework]['model']
optimizer = nlp_tasks[task][framework]['optimizer']
# Display model summary
st.subheader(f"{framework} Model Summary")
st.text(model)
# Display optimizer details
st.subheader(f"{framework} Optimizer Details")
st.text(optimizer)
# Perform example computations
if st.button("Perform Computation"):
# Perform forward pass
input_data = torch.randn(1, model.fc1.in_features)
output = model(input_data)
st.write(f"Output: {output}")
# Perform backward pass
loss = output.mean()
optimizer = optimizer(model.parameters(), lr=0.01)
optimizer.zero_grad()
loss.backward()
optimizer.step()
st.write("Backward pass completed.")