burhan112 commited on
Commit
fd564a5
·
verified ·
1 Parent(s): d28302e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -7
app.py CHANGED
@@ -135,12 +135,12 @@ class Transformer(nn.Module):
135
  # Device setup
136
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
137
 
138
- # Load tokenizers (same files, but roles swapped)
139
  sp_code = spm.SentencePieceProcessor(model_file="code_tokenizer.model") # C++ tokenizer for input
140
  sp_pseudo = spm.SentencePieceProcessor(model_file="pseudocode_tokenizer.model") # Pseudocode tokenizer for output
141
 
142
  # Load the model trained for C++ to pseudocode
143
- model_path = "c2p.pth" # Assuming you retrained and saved as 'c2p.pth'
144
  model = torch.load(model_path, map_location=device, weights_only=False)
145
  model.eval()
146
  model = model.to(device)
@@ -149,7 +149,7 @@ model = model.to(device)
149
  def generate_pseudocode(cpp_code, max_len=500):
150
  model.eval()
151
  src = torch.tensor([sp_code.encode_as_ids(cpp_code)], dtype=torch.long, device=device) # Tokenize C++ input
152
- tgt = torch.tensor([[2]], dtype=torch.long, device=device) # <BOS> token (assuming ID=2)
153
 
154
  generated_tokens = [2] # Start with <BOS>
155
  with torch.no_grad():
@@ -158,7 +158,7 @@ def generate_pseudocode(cpp_code, max_len=500):
158
  next_token = output[:, -1, :].argmax(-1).item()
159
  generated_tokens.append(next_token)
160
  tgt = torch.cat([tgt, torch.tensor([[next_token]], device=device)], dim=1)
161
- if next_token == 3: # <EOS> token (assuming ID=3)
162
  break
163
 
164
  response = sp_pseudo.decode_ids(generated_tokens) # Decode using pseudocode tokenizer
@@ -173,9 +173,16 @@ def generate_output(cpp_code):
173
  with gr.Blocks(title="C++ to Pseudocode Transformer") as demo:
174
  gr.Markdown("## C++ to Pseudocode Converter")
175
  gr.Markdown("Enter C++ code below to generate pseudocode.")
176
- cpp_input = gr.Code(label="C++ Code", language="cpp", placeholder="e.g., 'int main() { int n; cin >> n; }'")
 
 
 
 
177
  generate_btn = gr.Button("Generate", variant="primary", elem_classes="btn-blue")
178
- pseudocode_output = gr.Textbox(label="Generated Pseudocode")
 
 
 
179
 
180
  generate_btn.click(
181
  fn=generate_output,
@@ -185,7 +192,7 @@ with gr.Blocks(title="C++ to Pseudocode Transformer") as demo:
185
 
186
  demo.launch()
187
 
188
- # Custom CSS (unchanged)
189
  demo.css = """
190
  .btn-blue {
191
  background-color: #007bff;
 
135
  # Device setup
136
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
137
 
138
+ # Load tokenizers
139
  sp_code = spm.SentencePieceProcessor(model_file="code_tokenizer.model") # C++ tokenizer for input
140
  sp_pseudo = spm.SentencePieceProcessor(model_file="pseudocode_tokenizer.model") # Pseudocode tokenizer for output
141
 
142
  # Load the model trained for C++ to pseudocode
143
+ model_path = "c2p.pth" # Assuming retrained model for C++ to pseudocode
144
  model = torch.load(model_path, map_location=device, weights_only=False)
145
  model.eval()
146
  model = model.to(device)
 
149
  def generate_pseudocode(cpp_code, max_len=500):
150
  model.eval()
151
  src = torch.tensor([sp_code.encode_as_ids(cpp_code)], dtype=torch.long, device=device) # Tokenize C++ input
152
+ tgt = torch.tensor([[2]], dtype=torch.long, device=device) # <BOS> token (ID=2)
153
 
154
  generated_tokens = [2] # Start with <BOS>
155
  with torch.no_grad():
 
158
  next_token = output[:, -1, :].argmax(-1).item()
159
  generated_tokens.append(next_token)
160
  tgt = torch.cat([tgt, torch.tensor([[next_token]], device=device)], dim=1)
161
+ if next_token == 3: # <EOS> token (ID=3)
162
  break
163
 
164
  response = sp_pseudo.decode_ids(generated_tokens) # Decode using pseudocode tokenizer
 
173
  with gr.Blocks(title="C++ to Pseudocode Transformer") as demo:
174
  gr.Markdown("## C++ to Pseudocode Converter")
175
  gr.Markdown("Enter C++ code below to generate pseudocode.")
176
+ cpp_input = gr.Textbox(
177
+ label="C++ Code",
178
+ placeholder="e.g., 'int main() { int n; cin >> n; }'",
179
+ lines=5
180
+ )
181
  generate_btn = gr.Button("Generate", variant="primary", elem_classes="btn-blue")
182
+ pseudocode_output = gr.Code(
183
+ label="Generated Pseudocode",
184
+ language="plaintext" # Pseudocode isn’t a formal language, so use plaintext
185
+ )
186
 
187
  generate_btn.click(
188
  fn=generate_output,
 
192
 
193
  demo.launch()
194
 
195
+ # Custom CSS
196
  demo.css = """
197
  .btn-blue {
198
  background-color: #007bff;