for index, e in enumerate(Predicted_expressions): Predicted_expressions[index] = e[0:-1].split("$")[0] print("let us start the optimization party!!") Target_images = np.concatenate(target_images, 0) refined_expressions = [] scores = 0 b = 0 distances = 0 beam_scores = [] for index, value in enumerate(Predicted_expressions): optimized_expression, score = optimize_expression( value, Target_images[index // beam_width], metric="chamfer", stack_size=max_len // 2 + 1, steps=max_len, max_iter=max_iter) refined_expressions.append(optimized_expression) beam_scores.append(score) if b == (beam_width - 1): scores += np.min(beam_scores) beam_scores = [] b = 0 else: b += 1 print( index, score, scores / ((index + beam_width) // beam_width),
plt.close("all") print("average chamfer distance: {}".format( CDs / (config.test_size // config.batch_size)), flush=True) if REFINE: Target_images = np.concatenate(Target_images, 0) tweaked_expressions = [] scores = 0 for index, value in enumerate(pred_expressions): prog = parser.Parser.parse(value) if validity(prog, len(prog), len(prog) - 1): optim_expression, score = optimize_expression( value, Target_images[index // beam_width], metric="chamfer", max_iter=None) print(value) tweaked_expressions.append(optim_expression) scores += score else: # If the predicted program is invalid tweaked_expressions.append(value) scores += 16 print("chamfer scores", scores / len(tweaked_expressions)) with open( tweak_expressions_path + "chamfer_tweak_expressions_beamwidth_{}.txt".format( beam_width), "w") as file: