{"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/lstm-based-encoder-decoder-for-multi-sensor","title":"LSTM-based Encoder-Decoder for Multi-sensor Anomaly Detection","arxiv_id":"1607.00148","date":"2016-07-01","proceeding":null,"authors":["Pankaj Malhotra","Anusha Ramakrishnan","Gaurangi Anand","Lovekesh Vig","Puneet Agarwal","Gautam Shroff"],"abstract":"Mechanical devices such as engines, vehicles, aircrafts, etc., are typically\ninstrumented with numerous sensors to capture the behavior and health of the\nmachine. However, there are often external factors or variables which are not\ncaptured by sensors leading to time-series which are inherently unpredictable.\nFor instance, manual controls and/or unmonitored environmental conditions or\nload may lead to inherently unpredictable time-series. Detecting anomalies in\nsuch scenarios becomes challenging using standard approaches based on\nmathematical models that rely on stationarity, or prediction models that\nutilize prediction errors to detect anomalies. We propose a Long Short Term\nMemory Networks based Encoder-Decoder scheme for Anomaly Detection (EncDec-AD)\nthat learns to reconstruct 'normal' time-series behavior, and thereafter uses\nreconstruction error to detect anomalies. We experiment with three publicly\navailable quasi predictable time-series datasets: power demand, space shuttle,\nand ECG, and two real-world engine datasets with both predictive and\nunpredictable behavior. We show that EncDec-AD is robust and can detect\nanomalies from predictable, unpredictable, periodic, aperiodic, and\nquasi-periodic time-series. Further, we show that EncDec-AD is able to detect\nanomalies from short time-series (length as small as 30) as well as long\ntime-series (length as large as 500).","url_abs":"http://arxiv.org/abs/1607.00148v2","url_pdf":"http://arxiv.org/pdf/1607.00148v2.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":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/KDD-OpenSource/DeepADoTS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"unanswered"}},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/PyLink88/RecAE","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/chickenbestlover/RNN-Time-series-Anomaly-Detection","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/flaviagiammarino/encdec-ad-tensorflow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/freedombenLiu/RNN-Time-series-Anomaly-Detection","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/freedombenLiu/https-github.com-chickenbestlover-RNN-Time-series-Anomaly-Detection","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/pylink88/recurrent-autoencoder","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"lstm-based-encoder-decoder-for-multi-sensor","repo_url":"https://github.com/MindSpore-paper-code-2/code399/tree/main/LSTM","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"outlier-detection","task_name":"Outlier Detection"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"time-series-anomaly-detection","task_name":"Time Series Anomaly Detection"},{"task_slug":"time-series-classification","task_name":"Time Series Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1607.00148","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1607.00148"}},"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/freedombenLiu/RNN-Time-series-Anomaly-Detection","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chickenbestlover/RNN-Time-series-Anomaly-Detection","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/freedombenLiu/https-github.com-chickenbestlover-RNN-Time-series-Anomaly-Detection","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PyLink88/RecAE","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/KDD-OpenSource/DeepADoTS","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/flaviagiammarino/encdec-ad-tensorflow","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pylink88/recurrent-autoencoder","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindSpore-paper-code-2/code399/tree/main/LSTM","reach":null}],"summary":{"ran_draft_wrong":1,"unverified":8},"by_repo_kind":{"listed":{"samples":9,"ran":1,"repositories":3}},"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":"566787f11a729568","entry":"get_batch","repo":"freedombenLiu/RNN-Time-series-Anomaly-Detection","repo_kind":"listed","path":"1_train_predictor.py","file_url":"https://github.com/freedombenLiu/RNN-Time-series-Anomaly-Detection/blob/HEAD/1_train_predictor.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"566787f11a729568"}},{"code_sha256_prefix":"03a889e75902ecf2","entry":"MAEAUC_approx","repo":"PyLink88/RecAE","repo_kind":"listed","path":"graphs/losses/MAEAUCLoss.py","file_url":"https://github.com/PyLink88/RecAE/blob/HEAD/graphs/losses/MAEAUCLoss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"03a889e75902ecf2"}},{"code_sha256_prefix":"be6f61f79637e752","entry":"MSEAUC_approx","repo":"PyLink88/RecAE","repo_kind":"listed","path":"graphs/losses/MSEAUCLoss.py","file_url":"https://github.com/PyLink88/RecAE/blob/HEAD/graphs/losses/MSEAUCLoss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"be6f61f79637e752"}},{"code_sha256_prefix":"9cd5486d4616a5a3","entry":"checkpoints_folder","repo":"PyLink88/RecAE","repo_kind":"listed","path":"utils/checkpoints.py","file_url":"https://github.com/PyLink88/RecAE/blob/HEAD/utils/checkpoints.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9cd5486d4616a5a3"}},{"code_sha256_prefix":"0fd05327039d35fc","entry":"get_anomaly_scores","repo":"flaviagiammarino/encdec-ad-tensorflow","repo_kind":"listed","path":"encdec_ad_tensorflow/model.py","file_url":"https://github.com/flaviagiammarino/encdec-ad-tensorflow/blob/HEAD/encdec_ad_tensorflow/model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0fd05327039d35fc"}},{"code_sha256_prefix":"0eecfc043f408288","entry":"get_config_from_json","repo":"PyLink88/RecAE","repo_kind":"listed","path":"utils/config.py","file_url":"https://github.com/PyLink88/RecAE/blob/HEAD/utils/config.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0eecfc043f408288"}},{"code_sha256_prefix":"11a203c922b46983","entry":"process_config","repo":"PyLink88/RecAE","repo_kind":"listed","path":"utils/config.py","file_url":"https://github.com/PyLink88/RecAE/blob/HEAD/utils/config.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"11a203c922b46983"}},{"code_sha256_prefix":"81150672c807200f","entry":"sequences_to_time_series","repo":"flaviagiammarino/encdec-ad-tensorflow","repo_kind":"listed","path":"encdec_ad_tensorflow/model.py","file_url":"https://github.com/flaviagiammarino/encdec-ad-tensorflow/blob/HEAD/encdec_ad_tensorflow/model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"81150672c807200f"}},{"code_sha256_prefix":"2cd277ef3cf65386","entry":"time_series_to_sequences","repo":"flaviagiammarino/encdec-ad-tensorflow","repo_kind":"listed","path":"encdec_ad_tensorflow/model.py","file_url":"https://github.com/flaviagiammarino/encdec-ad-tensorflow/blob/HEAD/encdec_ad_tensorflow/model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2cd277ef3cf65386"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}