TensorFlowClass / pages /Prompt2Example.py
eaglelandsonce's picture
Create Prompt2Example.py
cc6dcfa verified
raw
history blame
2.39 kB
import streamlit as st
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# Generate synthetic data
def generate_data(num_points=1000):
np.random.seed(0)
X = np.random.randn(num_points, 2)
y = (X[:, 0]**2 + X[:, 1]**2 < 1).astype(int)
return X, y
# Create the model
def create_model(input_shape, learning_rate, activation, hidden_layers):
model = tf.keras.Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=input_shape))
for neurons in hidden_layers:
model.add(tf.keras.layers.Dense(neurons, activation=activation))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate),
loss='binary_crossentropy',
metrics=['accuracy'])
return model
# Plot decision boundary
def plot_decision_boundary(model, X, y):
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
grid = np.c_[xx.ravel(), yy.ravel()]
probs = model.predict(grid).reshape(xx.shape)
plt.contourf(xx, yy, probs, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolor='k', marker='o')
st.pyplot(plt.gcf())
def main():
st.title("Interactive Neural Network Training")
# Sidebar inputs
learning_rate = st.sidebar.slider("Learning rate", 0.001, 0.1, 0.03)
activation = st.sidebar.selectbox("Activation function", ["relu", "tanh", "sigmoid"])
num_hidden_layers = st.sidebar.slider("Number of hidden layers", 1, 5, 2)
neurons_per_layer = st.sidebar.slider("Neurons per layer", 1, 10, 4)
batch_size = st.sidebar.slider("Batch size", 1, 100, 10)
num_epochs = st.sidebar.slider("Number of epochs", 1, 1000, 100)
hidden_layers = [neurons_per_layer] * num_hidden_layers
X, y = generate_data()
model = create_model(input_shape=(2,), learning_rate=learning_rate, activation=activation, hidden_layers=hidden_layers)
model.fit(X, y, epochs=num_epochs, batch_size=batch_size, validation_split=0.5, verbose=0)
st.write("Training complete")
fig, ax = plt.subplots()
plot_decision_boundary(model, X, y)
st.pyplot(fig)
if __name__ == "__main__":
main()