kavithapadala commited on
Commit
ff6cef2
·
verified ·
1 Parent(s): cb2c851

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -31
app.py CHANGED
@@ -9,6 +9,7 @@ from sklearn.preprocessing import MultiLabelBinarizer
9
  # device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
10
 
11
  # Load the trained model and tokenizer
 
12
  @st.cache_resource
13
  def load_model():
14
  model = AutoModelForSequenceClassification.from_pretrained(
@@ -16,13 +17,13 @@ def load_model():
16
  num_labels=8, # Adjust based on your label count
17
  problem_type="multi_label_classification"
18
  )
19
- model.load_state_dict(torch.load('best_model_v2.pth'))
 
20
  model.eval()
21
  tokenizer = AutoTokenizer.from_pretrained("microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract")
22
- model = model.to(device) # Move the model to the correct device
23
-
24
  return model, tokenizer
25
 
 
26
  @st.cache_resource
27
  def load_mlb():
28
  # Define the classes based on your label set
@@ -62,7 +63,9 @@ if st.button('Predict'):
62
  inputs = tokenizer(clinical_note, truncation=True, padding="max_length", max_length=512, return_tensors='pt')
63
 
64
  # Move inputs to the GPU if available
65
- inputs = {key: val.to(device) for key, val in inputs.items()}
 
 
66
 
67
  # Model inference
68
  with torch.no_grad():
@@ -91,30 +94,4 @@ if st.button('Predict'):
91
  # st.write("Please enter clinical notes for prediction.")
92
 
93
 
94
- # # Prediction button
95
- # if st.button('Predict'):
96
- # if clinical_note:
97
- # # Tokenize the input clinical note
98
- # inputs = tokenizer(clinical_note, truncation=True, padding="max_length", max_length=512, return_tensors='pt')
99
-
100
- # # Move inputs to the GPU if available
101
- # device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
102
- # inputs = {key: val.to(device) for key, val in inputs.items()}
103
-
104
- # # Model inference
105
- # with torch.no_grad():
106
- # outputs = model(**inputs)
107
- # logits = outputs.logits
108
-
109
- # # Apply sigmoid and threshold the output (0.5 for multi-label classification)
110
- # pred_labels = (torch.sigmoid(logits) > 0.5).cpu().numpy()
111
-
112
- # # Get the predicted ICD and CPT codes
113
- # predicted_codes = mlb.inverse_transform(pred_labels)
114
-
115
- # # Show the results
116
- # st.write("Predicted ICD and CPT Codes:")
117
- # st.write(predicted_codes)
118
-
119
- # else:
120
- # st.write("Please enter clinical notes for prediction.")
 
9
  # device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
10
 
11
  # Load the trained model and tokenizer
12
+
13
  @st.cache_resource
14
  def load_model():
15
  model = AutoModelForSequenceClassification.from_pretrained(
 
17
  num_labels=8, # Adjust based on your label count
18
  problem_type="multi_label_classification"
19
  )
20
+ # Map the model to the appropriate device
21
+ model.load_state_dict(torch.load('best_model_v2.pth', map_location=torch.device('cpu')))
22
  model.eval()
23
  tokenizer = AutoTokenizer.from_pretrained("microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract")
 
 
24
  return model, tokenizer
25
 
26
+
27
  @st.cache_resource
28
  def load_mlb():
29
  # Define the classes based on your label set
 
63
  inputs = tokenizer(clinical_note, truncation=True, padding="max_length", max_length=512, return_tensors='pt')
64
 
65
  # Move inputs to the GPU if available
66
+ # inputs = {key: val.to(device) for key, val in inputs.items()}
67
+ inputs = {key: val.to(torch.device('cpu')) for key, val in inputs.items()}
68
+
69
 
70
  # Model inference
71
  with torch.no_grad():
 
94
  # st.write("Please enter clinical notes for prediction.")
95
 
96
 
97
+