I had some way too high heart rate readings when my strap battery ran low. I replaced the battery and the readings on my rides went back to normal but my calories and training effect continued to be really low compared to before I had the battery issue.
The problem was resolved by going in to settings->system->user profile->heart rate zones on the watch itself and turning off the auto detect max heart rate. This allowed me to manually change my auto detect max heart rate of 193 to an age calculated heart rate of 161. Being in my sixties I have never achieved a max heart rate above 159 in recent years. While the manually input rate is likely not completely accurate it is far more accurate than the erroneous, high rate that was stuck in my watch.
Interestingly, my Garmin Connect app and Garmin Connect website both have a place for input of heart rate zones. These fields do not overwrite the settings in the watch itself, at least not for my Fenix 3HR.