Learning Non-Vacuous Generalization Bounds from Optimization