diff --git a/blueprints/__pycache__/user.cpython-313.pyc b/blueprints/__pycache__/user.cpython-313.pyc new file mode 100644 index 0000000..a203882 Binary files /dev/null and b/blueprints/__pycache__/user.cpython-313.pyc differ diff --git a/blueprints/user.py b/blueprints/user.py new file mode 100644 index 0000000..2f8423d --- /dev/null +++ b/blueprints/user.py @@ -0,0 +1,12 @@ +# /blueprints/user.py + +from flask import Blueprint, jsonify +from controllers.user_controller import UserController + +user_blueprint = Blueprint("user", __name__) +user_controller = UserController() + + +@user_blueprint.route("/users", methods=["GET"]) +def get_users(): + return user_controller.get_users() diff --git a/controllers/__init__.py b/controllers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/controllers/__pycache__/__init__.cpython-313.pyc b/controllers/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..cf49416 Binary files /dev/null and b/controllers/__pycache__/__init__.cpython-313.pyc differ diff --git a/controllers/__pycache__/user_controller.cpython-313.pyc b/controllers/__pycache__/user_controller.cpython-313.pyc new file mode 100644 index 0000000..a201ef4 Binary files /dev/null and b/controllers/__pycache__/user_controller.cpython-313.pyc differ diff --git a/controllers/lstm_controller.py b/controllers/lstm_controller.py new file mode 100644 index 0000000..09422eb --- /dev/null +++ b/controllers/lstm_controller.py @@ -0,0 +1,17 @@ + + +# # Sample Data Preparation +# input_dim = 3 # Example input dimension +# hidden_dim = 5 # Example hidden dimension +# num_samples = 1000 +# sequence_length = 10 + +# # Generate dummy data for training +# X = np.random.randn(num_samples, input_dim, 1) # Shape (num_samples, input_dim, 1) +# y = np.random.randn( +# num_samples, hidden_dim, 1 +# ) # Shape (num_samples, hidden_dim, 1) + +# # Initialize and train the LSTM +# lstm = LSTM(input_dim, hidden_dim) +# lstm.train(X, y, num_epochs=10, learning_rate=0.01) \ No newline at end of file diff --git a/controllers/user_controller.py b/controllers/user_controller.py new file mode 100644 index 0000000..0f2688f --- /dev/null +++ b/controllers/user_controller.py @@ -0,0 +1,12 @@ +# /controllers/user_controller.py +from flask import jsonify +from services.user_service import UserService + + +class UserController: + def __init__(self): + self.user_service = UserService() + + def get_users(self): + users = self.user_service.get_all_users() + return jsonify(users) diff --git a/lstm.py b/lstm.py deleted file mode 100644 index 8012df3..0000000 --- a/lstm.py +++ /dev/null @@ -1,58 +0,0 @@ -import numpy as np - -class LSTM: - def __init__(self, input_dim, hidden_dim): - # Initialize weights and biases - self.Wf = np.random.rand(hidden_dim, hidden_dim + input_dim) - self.bf = np.random.rand(hidden_dim, 1) - - self.Wi = np.random.rand(hidden_dim, hidden_dim + input_dim) - self.bi = np.random.rand(hidden_dim, 1) - - self.WC = np.random.rand(hidden_dim, hidden_dim + input_dim) - self.bC = np.random.rand(hidden_dim, 1) - - self.Wo = np.random.rand(hidden_dim, hidden_dim + input_dim) - self.bo = np.random.rand(hidden_dim, 1) - - def sigmoid(self, x): - return 1 / (1 + np.exp(-x)) - - def tanh(self, x): - return np.tanh(x) - - def forward(self, x_t, h_prev, C_prev): - # Combine previous hidden state and current input - combined = np.vstack((h_prev, x_t)) - - # Forget gate - f_t = self.sigmoid(np.dot(self.Wf, combined) + self.bf) - - # Input gate - i_t = self.sigmoid(np.dot(self.Wi, combined) + self.bi) - C_tilde = self.tanh(np.dot(self.WC, combined) + self.bC) - - # Cell state - C_t = f_t * C_prev + i_t * C_tilde - - # Output gate - o_t = self.sigmoid(np.dot(self.Wo, combined) + self.bo) - h_t = o_t * self.tanh(C_t) - - return h_t, C_t - -# Example usage -input_dim = 5 # Input feature size -hidden_dim = 3 # Number of hidden units -lstm = LSTM(input_dim, hidden_dim) - -# Sample inputs -h_prev = np.zeros((hidden_dim, 1)) # Previous hidden state -C_prev = np.zeros((hidden_dim, 1)) # Previous cell state -x_t = np.random.rand(input_dim, 1) # Current input - -# Forward pass -h_t, C_t = lstm.forward(x_t, h_prev, C_prev) - -print("Current hidden state:", h_t) -print("Current cell state:", C_t) \ No newline at end of file diff --git a/main.py b/main.py index f8fb771..10db396 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,9 @@ from flask import Flask +from blueprints.user import user_blueprint app = Flask(__name__) -@app.route('/') -def home(): - return "Hello, World!" +app.register_blueprint(user_blueprint, url_prefix="/api") -if __name__ == '__main__': +if __name__ == "__main__": app.run(debug=True) - - diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/repositories/__init__.py b/repositories/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/repositories/__pycache__/__init__.cpython-313.pyc b/repositories/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..f067392 Binary files /dev/null and b/repositories/__pycache__/__init__.cpython-313.pyc differ diff --git a/repositories/__pycache__/user_repository.cpython-313.pyc b/repositories/__pycache__/user_repository.cpython-313.pyc new file mode 100644 index 0000000..a3e778d Binary files /dev/null and b/repositories/__pycache__/user_repository.cpython-313.pyc differ diff --git a/repositories/user_repository.py b/repositories/user_repository.py new file mode 100644 index 0000000..dc4683c --- /dev/null +++ b/repositories/user_repository.py @@ -0,0 +1,3 @@ +class UserRepository: + def get_all_users(self): + return [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}] diff --git a/services/__init__.py b/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/__pycache__/__init__.cpython-313.pyc b/services/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..ac75d55 Binary files /dev/null and b/services/__pycache__/__init__.cpython-313.pyc differ diff --git a/services/__pycache__/user_service.cpython-313.pyc b/services/__pycache__/user_service.cpython-313.pyc new file mode 100644 index 0000000..a878751 Binary files /dev/null and b/services/__pycache__/user_service.cpython-313.pyc differ diff --git a/services/lstm.py b/services/lstm.py new file mode 100644 index 0000000..9fad3c1 --- /dev/null +++ b/services/lstm.py @@ -0,0 +1,53 @@ +import numpy as np + + +class LSTM: + def __init__(self, input_dim, hidden_dim): + self.input_dim = input_dim + self.hidden_dim = hidden_dim + self.Wf = np.random.randn(hidden_dim, input_dim + hidden_dim) * 0.01 + self.Wi = np.random.randn(hidden_dim, input_dim + hidden_dim) * 0.01 + self.Wc = np.random.randn(hidden_dim, input_dim + hidden_dim) * 0.01 + self.Wo = np.random.randn(hidden_dim, input_dim + hidden_dim) * 0.01 + self.bf = np.zeros((hidden_dim, 1)) + self.bi = np.zeros((hidden_dim, 1)) + self.bc = np.zeros((hidden_dim, 1)) + self.bo = np.zeros((hidden_dim, 1)) + self.h = np.zeros((hidden_dim, 1)) + self.c = np.zeros((hidden_dim, 1)) + + def sigmoid(self, x): + return 1 / (1 + np.exp(-x)) + + def tanh(self, x): + return np.tanh(x) + + def forward(self, x_t): + combined = np.vstack((self.h, x_t)) + f_t = self.sigmoid(np.dot(self.Wf, combined) + self.bf) + i_t = self.sigmoid(np.dot(self.Wi, combined) + self.bi) + C_tilde_t = self.tanh(np.dot(self.Wc, combined) + self.bc) + self.c = f_t * self.c + i_t * C_tilde_t + o_t = self.sigmoid(np.dot(self.Wo, combined) + self.bo) + self.h = o_t * self.tanh(self.c) + return self.h + + def backward(self, x_t, h_t, y_t, learning_rate): + # Your backward pass implementation here + pass + + def train(self, X, y, num_epochs, learning_rate): + for epoch in range(num_epochs): + for i in range(len(X)): + x_t = X[i] + y_t = y[i] + + # Forward pass + h_t = self.forward(x_t) + + # Calculate loss and perform backward pass + loss = np.mean((h_t - y_t) ** 2) # Example loss + self.backward(x_t, h_t, y_t, learning_rate) + + if i % 100 == 0: # Print loss every 100 samples + print(f"Epoch {epoch}, Sample {i}, Loss: {loss}") diff --git a/services/user_service.py b/services/user_service.py new file mode 100644 index 0000000..7d562ed --- /dev/null +++ b/services/user_service.py @@ -0,0 +1,11 @@ +# /services/user_service.py + +from repositories.user_repository import UserRepository + + +class UserService: + def __init__(self): + self.user_repository = UserRepository() + + def get_all_users(self): + return self.user_repository.get_all_users()