only saves weights if better than previous