Spaces:
Sleeping
Sleeping
File size: 2,405 Bytes
f60fef5 3537d48 bd39949 3537d48 bd39949 0c9440e bd39949 3537d48 bd39949 0ecdc68 3537d48 0ecdc68 3537d48 0ecdc68 3537d48 6fb64b4 a37b981 0ecdc68 3537d48 0ecdc68 3537d48 0ecdc68 6fb64b4 0ecdc68 6fb64b4 0ecdc68 0c9440e 0ecdc68 6fb64b4 3537d48 0c9440e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
from flask import Flask, request, render_template
import os
import json
import numpy as np
from Vit_concept import run_inference, model
from GP import genetic_programming
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
def tolist_safe(obj):
return obj.tolist() if isinstance(obj, np.ndarray) else obj
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
return "No file part"
file = request.files['file']
if file.filename == '':
return "No selected file"
filepath = os.path.join(UPLOAD_FOLDER, file.filename)
file.save(filepath)
with open(filepath, 'r') as f:
data = json.load(f)
# Collect training data and predict HLCs
input_output_pairs = []
predicted_HLCs = []
for sample in data.get("train", []):
input_grid = sample["input"]
output_grid = sample["output"]
concept_label, _ = run_inference(model, input_grid, output_grid)
predicted_HLCs.append(concept_label)
input_output_pairs.append((tolist_safe(input_grid), tolist_safe(output_grid)))
predicted_HLCs = list(set(predicted_HLCs))
# GP optimization
best_program, generations = genetic_programming(
input_output_pairs=input_output_pairs,
population_size=200,
generations=200,
mutation_rate=0.2,
crossover_rate=0.7,
max_depth=3,
predicted_HLCs=predicted_HLCs
)
# Evaluate GP program on test inputs
test_pairs = []
predicted_test_outputs = []
for sample in data.get("test", []):
test_input = tolist_safe(sample["input"])
test_output = tolist_safe(sample["output"])
test_pairs.append((test_input, test_output))
try:
pred = tolist_safe(best_program.evaluate(test_input))
except Exception as e:
print(f"Prediction error: {e}")
pred = [["ERROR"]]
predicted_test_outputs.append(pred)
return render_template(
"results.html",
hlcs=predicted_HLCs,
input_output_pairs=input_output_pairs,
test_pairs=test_pairs,
predicted_test_outputs=predicted_test_outputs,
best_program=str(best_program)
)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860, debug=False)
|