Hemang1915 commited on
Commit
9ba4070
·
1 Parent(s): 75289c7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -24
app.py CHANGED
@@ -6,7 +6,6 @@ from tensorflow.keras.layers import Dense
6
  from tensorflow.keras.preprocessing.sequence import pad_sequences
7
  import numpy as np
8
  import pickle
9
- from stable_baselines3 import PPO
10
 
11
  app = FastAPI(title="Transaction Classifier API", description="API for classifying banking transactions.")
12
  print("FastAPI app initialized...")
@@ -72,15 +71,8 @@ def load_resources():
72
  print(f"Num categories: {len(le_category.classes_)}, Num subcategories: {len(le_subcategory.classes_)}")
73
  return model, tokenizer, le_category, le_subcategory
74
 
75
- def load_ppo_model():
76
- print("Loading PPO model...")
77
- ppo = PPO.load('ppo_finetuned_model')
78
- print("PPO model loaded.")
79
- return ppo
80
-
81
  class TransactionRequest(BaseModel):
82
  description: str
83
- use_rl: Optional[bool] = False
84
 
85
  class PredictionResponse(BaseModel):
86
  category: str
@@ -96,30 +88,20 @@ async def root():
96
  async def predict(request: TransactionRequest):
97
  try:
98
  model, tokenizer, le_category, le_subcategory = load_resources()
99
- num_subcategories = len(le_subcategory.classes_)
100
 
101
  seq = tokenizer.texts_to_sequences([request.description])
102
  pad = pad_sequences(seq, maxlen=max_len, padding='post')
103
  pred = model.predict(pad, verbose=0)
104
 
105
- if request.use_rl:
106
- ppo = load_ppo_model()
107
- obs = pad[0]
108
- action, _ = ppo.predict(obs) # Match Colab: no deterministic=True
109
- print(f"RL Action: {action}, Observation: {obs}")
110
- cat_idx = action // num_subcategories
111
- subcat_idx = action % num_subcategories
112
- print(f"RL cat_idx: {cat_idx}, subcat_idx: {subcat_idx}")
113
- else:
114
- cat_probs = pred[0][0]
115
- subcat_probs = pred[1][0]
116
- cat_idx = np.argmax(cat_probs)
117
- subcat_idx = np.argmax(subcat_probs)
118
 
119
  cat_pred = le_category.inverse_transform([cat_idx])[0]
120
  subcat_pred = le_subcategory.inverse_transform([subcat_idx])[0]
121
- cat_conf = float(pred[0][0][cat_idx] * 100)
122
- subcat_conf = float(pred[1][0][subcat_idx] * 100)
123
 
124
  print(f"Predicted: category={cat_pred}, subcategory={subcat_pred}")
125
  return {
 
6
  from tensorflow.keras.preprocessing.sequence import pad_sequences
7
  import numpy as np
8
  import pickle
 
9
 
10
  app = FastAPI(title="Transaction Classifier API", description="API for classifying banking transactions.")
11
  print("FastAPI app initialized...")
 
71
  print(f"Num categories: {len(le_category.classes_)}, Num subcategories: {len(le_subcategory.classes_)}")
72
  return model, tokenizer, le_category, le_subcategory
73
 
 
 
 
 
 
 
74
  class TransactionRequest(BaseModel):
75
  description: str
 
76
 
77
  class PredictionResponse(BaseModel):
78
  category: str
 
88
  async def predict(request: TransactionRequest):
89
  try:
90
  model, tokenizer, le_category, le_subcategory = load_resources()
 
91
 
92
  seq = tokenizer.texts_to_sequences([request.description])
93
  pad = pad_sequences(seq, maxlen=max_len, padding='post')
94
  pred = model.predict(pad, verbose=0)
95
 
96
+ cat_probs = pred[0][0]
97
+ subcat_probs = pred[1][0]
98
+ cat_idx = np.argmax(cat_probs)
99
+ subcat_idx = np.argmax(subcat_probs)
 
 
 
 
 
 
 
 
 
100
 
101
  cat_pred = le_category.inverse_transform([cat_idx])[0]
102
  subcat_pred = le_subcategory.inverse_transform([subcat_idx])[0]
103
+ cat_conf = float(cat_probs[cat_idx] * 100)
104
+ subcat_conf = float(subcat_probs[subcat_idx] * 100)
105
 
106
  print(f"Predicted: category={cat_pred}, subcategory={subcat_pred}")
107
  return {