Esempio n. 1
0
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),
Esempio n. 2
0
                    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: