{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/benchmarking-a-catchment-aware-long-short","title":"Towards Learning Universal, Regional, and Local Hydrological Behaviors via Machine-Learning Applied to Large-Sample Datasets","arxiv_id":"1907.08456","date":"2019-07-19","proceeding":null,"authors":["Frederik Kratzert","Daniel Klotz","Guy Shalev","Günter Klambauer","Sepp Hochreiter","Grey Nearing"],"abstract":"Regional rainfall-runoff modeling is an old but still mostly out-standing problem in Hydrological Sciences. The problem currently is that traditional hydrological models degrade significantly in performance when calibrated for multiple basins together instead of for a single basin alone. In this paper, we propose a novel, data-driven approach using Long Short-Term Memory networks (LSTMs), and demonstrate that under a 'big data' paradigm, this is not necessarily the case. By training a single LSTM model on 531 basins from the CAMELS data set using meteorological time series data and static catchment attributes, we were able to significantly improve performance compared to a set of several different hydrological benchmark models. Our proposed approach not only significantly outperforms hydrological models that were calibrated regionally but also achieves better performance than hydrological models that were calibrated for each basin individually. Furthermore, we propose an adaption to the standard LSTM architecture, which we call an Entity-Aware-LSTM (EA-LSTM), that allows for learning, and embedding as a feature layer in a deep learning model, catchment similarities. We show that this learned catchment similarity corresponds well with what we would expect from prior hydrological understanding.","url_abs":"https://arxiv.org/abs/1907.08456v2","url_pdf":"https://arxiv.org/pdf/1907.08456v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"benchmarking-a-catchment-aware-long-short","repo_url":"https://github.com/kratzert/ealstm_regional_modeling","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"machine-learning","task_name":"BIG-bench Machine Learning"},{"task_slug":"benchmarking","task_name":"Benchmarking"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"}],"methods":[{"method_slug":"lstm","method_name":"LSTM"},{"method_slug":"sigmoid-activation","method_name":"Sigmoid Activation"},{"method_slug":"tanh-activation","method_name":"Tanh Activation"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1907.08456","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1907.08456"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kratzert/ealstm_regional_modeling","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":14},"by_repo_kind":{"official":{"samples":14,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"1991f7b4961d51bd","entry":"calc_alpha_nse","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/metrics.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1991f7b4961d51bd"}},{"code_sha256_prefix":"12340ba2e594bd55","entry":"calc_beta_nse","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/metrics.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"12340ba2e594bd55"}},{"code_sha256_prefix":"755c08582e820958","entry":"calc_nse","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/metrics.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"755c08582e820958"}},{"code_sha256_prefix":"38bbee82c7bccf8e","entry":"ecdf","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/plotutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/plotutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"38bbee82c7bccf8e"}},{"code_sha256_prefix":"f8f9fe9c5962f19a","entry":"eval_lstm_models","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/evalutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/evalutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f8f9fe9c5962f19a"}},{"code_sha256_prefix":"040feb3b499435ae","entry":"get_clusters","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/clusterutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/clusterutils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"040feb3b499435ae"}},{"code_sha256_prefix":"1a855e3ea0dd9718","entry":"get_label_2_color","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/clusterutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/clusterutils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1a855e3ea0dd9718"}},{"code_sha256_prefix":"7a44dc282997b5eb","entry":"get_morris_gradient","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/morris.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/morris.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7a44dc282997b5eb"}},{"code_sha256_prefix":"2c7baa5803225897","entry":"get_run_dirs","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/evalutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/evalutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2c7baa5803225897"}},{"code_sha256_prefix":"f48dd78c80f393e6","entry":"get_shape_collections","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/plotutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/plotutils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f48dd78c80f393e6"}},{"code_sha256_prefix":"938143c5ecc5641d","entry":"get_silhouette_scores","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/clusterutils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/clusterutils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"938143c5ecc5641d"}},{"code_sha256_prefix":"0d729ca958fc0d3a","entry":"load_attributes","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/datautils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/datautils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0d729ca958fc0d3a"}},{"code_sha256_prefix":"c37a05f06f05d465","entry":"normalize_features","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/datautils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/datautils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c37a05f06f05d465"}},{"code_sha256_prefix":"b62b4383d90e0390","entry":"rescale_features","repo":"kratzert/ealstm_regional_modeling","repo_kind":"official","path":"papercode/datautils.py","file_url":"https://github.com/kratzert/ealstm_regional_modeling/blob/HEAD/papercode/datautils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b62b4383d90e0390"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}