Spaces:
Sleeping
Sleeping
reshmasuresh
commited on
Commit
•
752a6e0
1
Parent(s):
1109bc4
Upload 5 files
Browse files- .gitattributes +1 -0
- BackPropogation.py +53 -0
- DNN_model.keras +3 -0
- Perceptron.py +46 -0
- app.py +79 -0
- requirements.txt +5 -0
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
DNN_model.keras filter=lfs diff=lfs merge=lfs -text
|
BackPropogation.py
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import numpy as np
|
2 |
+
from tqdm import tqdm
|
3 |
+
|
4 |
+
|
5 |
+
class BackPropogation:
|
6 |
+
def __init__(self,learning_rate=0.01, epochs=100,activation_function='step'):
|
7 |
+
self.bias = 0
|
8 |
+
self.learning_rate = learning_rate
|
9 |
+
self.max_epochs = epochs
|
10 |
+
self.activation_function = activation_function
|
11 |
+
|
12 |
+
|
13 |
+
def activate(self, x):
|
14 |
+
if self.activation_function == 'step':
|
15 |
+
return 1 if x >= 0 else 0
|
16 |
+
elif self.activation_function == 'sigmoid':
|
17 |
+
return 1 if (1 / (1 + np.exp(-x)))>=0.5 else 0
|
18 |
+
elif self.activation_function == 'relu':
|
19 |
+
return 1 if max(0,x)>=0.5 else 0
|
20 |
+
|
21 |
+
def fit(self, X, y):
|
22 |
+
error_sum=0
|
23 |
+
n_features = X.shape[1]
|
24 |
+
self.weights = np.zeros((n_features))
|
25 |
+
for epoch in tqdm(range(self.max_epochs)):
|
26 |
+
for i in range(len(X)):
|
27 |
+
inputs = X[i]
|
28 |
+
target = y[i]
|
29 |
+
weighted_sum = np.dot(inputs, self.weights) + self.bias
|
30 |
+
prediction = self.activate(weighted_sum)
|
31 |
+
|
32 |
+
# Calculating loss and updating weights.
|
33 |
+
error = target - prediction
|
34 |
+
self.weights += self.learning_rate * error * inputs
|
35 |
+
self.bias += self.learning_rate * error
|
36 |
+
|
37 |
+
print(f"Updated Weights after epoch {epoch} with {self.weights}")
|
38 |
+
print("Training Completed")
|
39 |
+
|
40 |
+
def predict(self, X):
|
41 |
+
predictions = []
|
42 |
+
for i in range(len(X)):
|
43 |
+
inputs = X[i]
|
44 |
+
weighted_sum = np.dot(inputs, self.weights) + self.bias
|
45 |
+
prediction = self.activate(weighted_sum)
|
46 |
+
predictions.append(prediction)
|
47 |
+
return predictions
|
48 |
+
|
49 |
+
|
50 |
+
|
51 |
+
|
52 |
+
|
53 |
+
|
DNN_model.keras
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:d933d18a2e1b135e86d568b9cd9c20bdff0ed32c9b903d39c4f9385607ae476e
|
3 |
+
size 10723101
|
Perceptron.py
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import numpy as np
|
2 |
+
from tqdm import tqdm
|
3 |
+
|
4 |
+
|
5 |
+
class Perceptron:
|
6 |
+
|
7 |
+
def __init__(self,learning_rate=0.01, epochs=100,activation_function='step'):
|
8 |
+
self.bias = 0
|
9 |
+
self.learning_rate = learning_rate
|
10 |
+
self.max_epochs = epochs
|
11 |
+
self.activation_function = activation_function
|
12 |
+
|
13 |
+
|
14 |
+
def activate(self, x):
|
15 |
+
if self.activation_function == 'step':
|
16 |
+
return 1 if x >= 0 else 0
|
17 |
+
elif self.activation_function == 'sigmoid':
|
18 |
+
return 1 if (1 / (1 + np.exp(-x)))>=0.5 else 0
|
19 |
+
elif self.activation_function == 'relu':
|
20 |
+
return 1 if max(0,x)>=0.5 else 0
|
21 |
+
|
22 |
+
def fit(self, X, y):
|
23 |
+
n_features = X.shape[1]
|
24 |
+
self.weights = np.random.randint(n_features, size=(n_features))
|
25 |
+
for epoch in tqdm(range(self.max_epochs)):
|
26 |
+
for i in range(len(X)):
|
27 |
+
inputs = X[i]
|
28 |
+
target = y[i]
|
29 |
+
weighted_sum = np.dot(inputs, self.weights) + self.bias
|
30 |
+
prediction = self.activate(weighted_sum)
|
31 |
+
print("Training Completed")
|
32 |
+
|
33 |
+
def predict(self, X):
|
34 |
+
predictions = []
|
35 |
+
for i in range(len(X)):
|
36 |
+
inputs = X[i]
|
37 |
+
weighted_sum = np.dot(inputs, self.weights) + self.bias
|
38 |
+
prediction = self.activate(weighted_sum)
|
39 |
+
predictions.append(prediction)
|
40 |
+
return predictions
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
|
45 |
+
|
46 |
+
|
app.py
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import numpy as np
|
3 |
+
from PIL import Image
|
4 |
+
from tensorflow.keras.models import load_model
|
5 |
+
from tensorflow.keras.datasets import imdb
|
6 |
+
from tensorflow.keras.preprocessing.sequence import pad_sequences
|
7 |
+
import pickle
|
8 |
+
|
9 |
+
# Load word index for Sentiment Classification
|
10 |
+
word_to_index = imdb.get_word_index()
|
11 |
+
|
12 |
+
# Function to perform sentiment classification
|
13 |
+
def sentiment_classification(new_review_text, model):
|
14 |
+
max_review_length = 500
|
15 |
+
new_review_tokens = [word_to_index.get(word, 0) for word in new_review_text.split()]
|
16 |
+
new_review_tokens = pad_sequences([new_review_tokens], maxlen=max_review_length)
|
17 |
+
prediction = model.predict(new_review_tokens)
|
18 |
+
if type(prediction) == list:
|
19 |
+
prediction = prediction[0]
|
20 |
+
return "Positive" if prediction > 0.5 else "Negative"
|
21 |
+
|
22 |
+
# Function to perform tumor detection
|
23 |
+
def tumor_detection(img, model):
|
24 |
+
img = Image.open(img)
|
25 |
+
img=img.resize((128,128))
|
26 |
+
img=np.array(img)
|
27 |
+
input_img = np.expand_dims(img, axis=0)
|
28 |
+
res = model.predict(input_img)
|
29 |
+
return "Tumor Detected" if res else "No Tumor"
|
30 |
+
|
31 |
+
# Streamlit App
|
32 |
+
st.title("Deep Prediction Models")
|
33 |
+
|
34 |
+
# Choose between tasks
|
35 |
+
task = st.radio("Select Task", ("Sentiment Classification", "Tumor Detection"))
|
36 |
+
|
37 |
+
if task == "Sentiment Classification":
|
38 |
+
# Input box for new review
|
39 |
+
new_review_text = st.text_area("Enter a New Review:", value="")
|
40 |
+
if st.button("Submit") and not new_review_text.strip():
|
41 |
+
st.warning("Please enter a review.")
|
42 |
+
|
43 |
+
if new_review_text.strip():
|
44 |
+
st.subheader("Choose Model for Sentiment Classification")
|
45 |
+
model_option = st.selectbox("Select Model", ("Perceptron", "Backpropagation", "DNN", "RNN", "LSTM"))
|
46 |
+
|
47 |
+
# Load models dynamically based on the selected option
|
48 |
+
if model_option == "Perceptron":
|
49 |
+
with open('perceptron.pkl', 'rb') as file:
|
50 |
+
model = pickle.load(file)
|
51 |
+
elif model_option == "Backpropagation":
|
52 |
+
with open('Backprop.pkl', 'rb') as file:
|
53 |
+
model = pickle.load(file)
|
54 |
+
elif model_option == "DNN":
|
55 |
+
model = load_model('DNN_model.keras')
|
56 |
+
elif model_option == "RNN":
|
57 |
+
model = load_model('RNN_imdb.keras')
|
58 |
+
elif model_option == "LSTM":
|
59 |
+
model = load_model('lstm_imdb.keras')
|
60 |
+
|
61 |
+
if st.button("Classify Sentiment"):
|
62 |
+
result = sentiment_classification(new_review_text, model)
|
63 |
+
st.subheader("Sentiment Classification Result")
|
64 |
+
st.write(f"**{result}**")
|
65 |
+
|
66 |
+
elif task == "Tumor Detection":
|
67 |
+
st.subheader("Tumor Detection")
|
68 |
+
uploaded_file = st.file_uploader("Choose a tumor image...", type=["jpg", "jpeg", "png"])
|
69 |
+
|
70 |
+
if uploaded_file is not None:
|
71 |
+
# Load the tumor detection model
|
72 |
+
model = load_model('CN.h5')
|
73 |
+
st.image(uploaded_file, caption="Uploaded Image.", use_column_width=False, width=200)
|
74 |
+
st.write("")
|
75 |
+
|
76 |
+
if st.button("Detect Tumor"):
|
77 |
+
result = tumor_detection(uploaded_file, model)
|
78 |
+
st.subheader("Tumor Detection Result")
|
79 |
+
st.write(f"**{result}**")
|
requirements.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
numpy
|
3 |
+
Pillow
|
4 |
+
tensorflow
|
5 |
+
tqdm
|