You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

DeepLog.py 15 kB

first commit Former-commit-id: 08bc23ba02cffbce3cf63962390a65459a132e48 [formerly 0795edd4834b9b7dc66db8d10d4cbaf42bbf82cb] [formerly b5010b42541add7e2ea2578bf2da537efc457757 [formerly a7ca09c2c34c4fc8b3d8e01fcfa08eeeb2cae99d]] [formerly 615058473a2177ca5b89e9edbb797f4c2a59c7e5 [formerly 743d8dfc6843c4c205051a8ab309fbb2116c895e] [formerly bb0ea98b1e14154ef464e2f7a16738705894e54b [formerly 960a69da74b81ef8093820e003f2d6c59a34974c]]] [formerly 2fa3be52c1b44665bc81a7cc7d4cea4bbf0d91d5 [formerly 2054589f0898627e0a17132fd9d4cc78efc91867] [formerly 3b53730e8a895e803dfdd6ca72bc05e17a4164c1 [formerly 8a2fa8ab7baf6686d21af1f322df46fd58c60e69]] [formerly 87d1e3a07a19d03c7d7c94d93ab4fa9f58dada7c [formerly f331916385a5afac1234854ee8d7f160f34b668f] [formerly 69fb3c78a483343f5071da4f7e2891b83a49dd18 [formerly 386086f05aa9487f65bce2ee54438acbdce57650]]]] Former-commit-id: a00aed8c934a6460c4d9ac902b9a74a3d6864697 [formerly 26fdeca29c2f07916d837883983ca2982056c78e] [formerly 0e3170d41a2f99ecf5c918183d361d4399d793bf [formerly 3c12ad4c88ac5192e0f5606ac0d88dd5bf8602dc]] [formerly d5894f84f2fd2e77a6913efdc5ae388cf1be0495 [formerly ad3e7bc670ff92c992730d29c9d3aa1598d844e8] [formerly 69fb3c78a483343f5071da4f7e2891b83a49dd18]] Former-commit-id: 3c19c9fae64f6106415fbc948a4dc613b9ee12f8 [formerly 467ddc0549c74bb007e8f01773bb6dc9103b417d] [formerly 5fa518345d958e2760e443b366883295de6d991c [formerly 3530e130b9fdb7280f638dbc2e785d2165ba82aa]] Former-commit-id: 9f5d473d42a435ec0d60149939d09be1acc25d92 [formerly be0b25c4ec2cde052a041baf0e11f774a158105d] Former-commit-id: 9eca71cb73ba9edccd70ac06a3b636b8d4093b04
5 years ago
fixed DeepLog Former-commit-id: 10f175e0df2a1c6f6f8ec611499c71b7db1383b7 [formerly d72de9579a14cab4ae0ebfb63dae1f06d2ec3238] [formerly 0b9b303ee833b3d678dc426281d0f039323f483f [formerly e20ca20bbf995764ed9f67b253e4879e5ac36f09]] [formerly cf74f872fd1fa810a38b78a980acd9fc1774fdff [formerly 33da37f7276364e00e168a6dda7ebf5de911b11e] [formerly 091ad459c6d72042a9dc8cb120b15330d44ac585 [formerly 62790f8dd6d55bf3522c9a933c2e9cd32891cce4]]] [formerly 2e59d0b1d79234a94e801c8d4ff9918220b9ecfe [formerly 545e6512ca0248de9d8f9b8e53bafa2724f41c04] [formerly 09cbfb99a1d7fbef41af7d5ca6b2e15fbb9821e8 [formerly d4e1f6de2d5f51b43f439a2174def59011bf586f]] [formerly ca27227614c746b7ec4404157d04fe2bee7287a5 [formerly ca74a0fb79180f0975606a28217e8ab8c1244ad8] [formerly 36306f11260cdeebdd6190f8d83b1fadec6f1b47 [formerly e8420ff4f374f53a44a4f3a608414e5dbc8dc459]]]] [formerly 78d50b7036b10186e8238d900bbd5c887a7a6756 [formerly 2a5915403443474dc065daf2615f667f57e9217e] [formerly 5411d1a21bd1b567e76ce3d8214438d4579d91ee [formerly 587d8df3e94ed586c873692af64201661d1e6ffc]] [formerly 64665c51a33492f1b001eb446c9fa1462b0e48fa [formerly 796499a363a867f141f303b93506203e9da33545] [formerly 5864b76ac0bc4bc4697dfc886eff4a9019349d9d [formerly 786674bcb47bcb73fbb252c75bacef5dd7205f12]]] [formerly bc476386159a69d40f88e67d002cbe4ea8195d35 [formerly ba455da36102d2ed38f77a20a2d191cbcabfbfe5] [formerly d0bbd6381be17902a38398ae556f7691b030a8b1 [formerly 19ab59364a9fe10c45b6af24a5e37efbbb47ec12]] [formerly 4739d81a50e14ef3e30e284d2df9fc85cb9910dd [formerly db8628b789d8d665ab3c7968fae9c4df3c8e6913] [formerly 20f6c5f1fcad340075d753ab4be0481943432605 [formerly 9166f31753ce5de11c8be9873a5e07bb4e626629]]]]] [formerly 3856c93286579f98813d7ff09143d13a5db59fc1 [formerly af64f6245d0fceebc8a046011d959bfb7cedfe1b] [formerly 9cb87f5c1df48631760d2de6b72bf529451e1243 [formerly 496ceaaa60faf5ca6939a58fa19555073dfa2045]] [formerly 38c5b832c2ba19c450dea671704004748202965f [formerly ebedc4aa5f50fa56be8407e8919efee1dc090f34] [formerly 24495007519005f16941058007c00725cca1c170 [formerly f2450ba634eb5bd9cbc99a73062907beb74290ad]]] [formerly 16cd7f0f0dbc7bde76de79309e227854a436d4df [formerly 2ef24000ae050f947e79f1b398853f4b7d37a7d1] [formerly 017b81cb5fc818b4af8169e458479af11740b069 [formerly 5ce2a9776f74ab07a9dcbb4eb8419760f1cc0970]] [formerly 959df5aeeb6ce601e3d3e3e8ada957c24fa6e605 [formerly 54dfb9fb428880499882e9be2d593308a5a9554c] [formerly b525004ec7152a77077b48f6fa3e225d221ad03d [formerly 780d8415f69c5dc11b38ec1f5ed9debeb1421e29]]]] [formerly 6d2227a17fe0c8c7380fa78bc33f220eccefc64e [formerly 0b70e7fdfdfab60c43a692e3b91d14eb26a8e7bc] [formerly 4e7b7f476698af9a1ff02ebd814973fbbf002f02 [formerly 5c8be98ebc6fa5a551bd8283b9f0138f2f9a7416]] [formerly 68e7b23d1e254165f1ee2299dbf8dfa008364b63 [formerly 118b1a31e93bd1ad1a43db58f11cdb852e897f36] [formerly dfa796ad923209b02704dc5a5e1aa24d2a51e1ae [formerly 205081c5b539a35a7daeb625e05cffa490dd0b47]]] [formerly b388ed29b6384b57af6aef66b39af19943d1a486 [formerly 96eb3e8c010927433a0534331ffc1f74b1fdaadb] [formerly e8c7cae018491d2f55700968356099f3b24365e0 [formerly 332c14cfcad850b26a3182190726bd314002ad40]] [formerly a888b1f80118330a9b7f73e06730cffc3cf4a7de [formerly 441bd479ced3e69d1726fdf1006ef3dc86631e40] [formerly 04860f061ca12a2f8923b66f3fed47a894f65828 [formerly 7f7cb5ecdf7fa574544b4805a2800c45eabde805]]]]]] Former-commit-id: 276dd48e9d82a403cce9346869fd246887bc8ca8 [formerly 5641261d7698485acdc7dce92ee86de495b46efe] [formerly adaaadc3786d45e95a11ceed4a9516cff6228bca [formerly cc11c7696ef14398b60c922146d6435823ee1976]] [formerly 512766be38a2da65af6e147cca04887fd1367065 [formerly cb264f2c0d6c2aa15daef67722662c7324f282ec] [formerly b250cbb743d97f9a94b2326c027455a566a88edc [formerly 53162dcbc41854bd7e0352f49207bb5142c0af68]]] [formerly fa3468cf6db10a911bf562ec6f45dc7e2ab2f87c [formerly 03399ca30af0da98b368ed9a5deddc9bde6394f9] [formerly 8a1a9793ce5820e48e89be25be05784daee0e771 [formerly c361ad702f8316a18cbc36653a31e871ec40cc39]] [formerly 576ee5f1b7ba1832b936c038f8a1549969de019a [formerly 2c4f9e563230a9ff0a2a3da95fc7665a44dd4956] [formerly 35d18477b127260bb5fd20dc37e522911c430c3a [formerly fa2939d2b49c8b5b13084e22b100898b52b148c8]]]] [formerly fa3ca2e65d8a68448e8c3ec8109a3fd0e0f56932 [formerly e2fe9e75b540e392c734e6eb88c67aff76db14f4] [formerly e8ca42f66deacb7ebf393efee0337e7816efef37 [formerly 80350d8dc66483d741d6b7e8638a26b58f4f8172]] [formerly a59426477ff1c4fa2d568af84e67f7a351771d19 [formerly 42b3be1ea6903c19ffc9d8440e3486d95b9b75f9] [formerly db12d266e28ff2e6a2b4dc882235b7cfcb567c4b [formerly 5795e861e46062451ff44d75758a452504a5a834]]] [formerly 35c82d5a6d5dd31585a78cddb967b56481c99f68 [formerly 2b933210a77db7fffcf3f3a02f44d2ecc2a32bf7] [formerly 5bd8a10fba8fa3ea214dc167a2ebc7313f8ddaa5 [formerly 05591c435a6b8da4684394fe269f374aa356ec4d]] [formerly fd567a952dc829817b38897e993075f25fea1d64 [formerly 54b3647ed0f60e3f15f0b3992c8c8215c9fa8846] [formerly 04860f061ca12a2f8923b66f3fed47a894f65828]]]] Former-commit-id: e71dcd09bd569c939a83b0d11f364a2bfd3ea6d8 [formerly 5b6a69039cf62089adedb4eb6f7c1889d413a337] [formerly e0554030388f0ec87de1fc2250544816e8951bbc [formerly 4925b27f62fd95641dcd800a70f7846ccbb999f9]] [formerly f52d1d6c981e11481ae01c8d64a9024fe28bcad2 [formerly 484fb9d2d6c9bd8355de1e171a48d61aeb2e53f0] [formerly 109b6685226f1ab5af58aca8a78fd98860562e9a [formerly 7cbad1ca84e2accb6104c7037bbfc125b9e79f43]]] [formerly 47413aef6e05537be7fc26c0fce648a681c05a6a [formerly 8f49e283c7799b32b656c0356bc6cbf5e8294a10] [formerly e538dd2b4f83d11651b5f6277404416b1997bf9e [formerly 9b2b1dda2f7d898a03014cdf793f19a3fb4df784]] [formerly e8b5c204f8e329f5c33ea0bed58db75cbb0483f6 [formerly 46d330e2034bc37e4acbf56c6bd4eff92204d6e4] [formerly 32d0ab7a8919a2b096bf03c439f4f37af5bdbb8a [formerly a46227ab28c3b1c35f01d4de354c361a45fd9912]]]] Former-commit-id: 62f03e65b732a7b9cf49ce9a065f93b1b26d7ceb [formerly 618fcf1faf6a7ad4f06edb50e55620758bbe380d] [formerly be2058fa35a35ce56f6b0b5c472d12a782da7703 [formerly fe61c60bf78c7a2d2d8d89ff743f9f10a81511b1]] [formerly 46030f58db5c1c3b968c81f6fe7fbba3cedcc832 [formerly 7e89c96f7b8ba126f7c6652f6dc6f908897da1e7] [formerly 0e5dc4c70d8b370575321ece83f4b065c5a2b3bc [formerly 5c7a9b5b254516aaf267ae5cf0fdf2571718fc33]]] Former-commit-id: 10d972c1dc035b082629fdda3e07c9cef935ffde [formerly 5817bf295aa9044b5eeb34e5cdb2ecc0c5af7cec] [formerly e5cc4980fad93ea57f0b3d8d7279517ac6fa74f4 [formerly f808dabb9c72b898b415cebea3beb7a2a98536c6]] Former-commit-id: 049d92dc1fe6e5d107781aef8cbb804aa273743f [formerly c1c819ce082b0a7682d9ace94842a1aa1f505409] Former-commit-id: a62d42818a95d6fc0774cef5bf17da935e157b39
5 years ago
first commit Former-commit-id: 08bc23ba02cffbce3cf63962390a65459a132e48 [formerly 0795edd4834b9b7dc66db8d10d4cbaf42bbf82cb] [formerly b5010b42541add7e2ea2578bf2da537efc457757 [formerly a7ca09c2c34c4fc8b3d8e01fcfa08eeeb2cae99d]] [formerly 615058473a2177ca5b89e9edbb797f4c2a59c7e5 [formerly 743d8dfc6843c4c205051a8ab309fbb2116c895e] [formerly bb0ea98b1e14154ef464e2f7a16738705894e54b [formerly 960a69da74b81ef8093820e003f2d6c59a34974c]]] [formerly 2fa3be52c1b44665bc81a7cc7d4cea4bbf0d91d5 [formerly 2054589f0898627e0a17132fd9d4cc78efc91867] [formerly 3b53730e8a895e803dfdd6ca72bc05e17a4164c1 [formerly 8a2fa8ab7baf6686d21af1f322df46fd58c60e69]] [formerly 87d1e3a07a19d03c7d7c94d93ab4fa9f58dada7c [formerly f331916385a5afac1234854ee8d7f160f34b668f] [formerly 69fb3c78a483343f5071da4f7e2891b83a49dd18 [formerly 386086f05aa9487f65bce2ee54438acbdce57650]]]] Former-commit-id: a00aed8c934a6460c4d9ac902b9a74a3d6864697 [formerly 26fdeca29c2f07916d837883983ca2982056c78e] [formerly 0e3170d41a2f99ecf5c918183d361d4399d793bf [formerly 3c12ad4c88ac5192e0f5606ac0d88dd5bf8602dc]] [formerly d5894f84f2fd2e77a6913efdc5ae388cf1be0495 [formerly ad3e7bc670ff92c992730d29c9d3aa1598d844e8] [formerly 69fb3c78a483343f5071da4f7e2891b83a49dd18]] Former-commit-id: 3c19c9fae64f6106415fbc948a4dc613b9ee12f8 [formerly 467ddc0549c74bb007e8f01773bb6dc9103b417d] [formerly 5fa518345d958e2760e443b366883295de6d991c [formerly 3530e130b9fdb7280f638dbc2e785d2165ba82aa]] Former-commit-id: 9f5d473d42a435ec0d60149939d09be1acc25d92 [formerly be0b25c4ec2cde052a041baf0e11f774a158105d] Former-commit-id: 9eca71cb73ba9edccd70ac06a3b636b8d4093b04
5 years ago
fixed DeepLog Former-commit-id: 10f175e0df2a1c6f6f8ec611499c71b7db1383b7 [formerly d72de9579a14cab4ae0ebfb63dae1f06d2ec3238] [formerly 0b9b303ee833b3d678dc426281d0f039323f483f [formerly e20ca20bbf995764ed9f67b253e4879e5ac36f09]] [formerly cf74f872fd1fa810a38b78a980acd9fc1774fdff [formerly 33da37f7276364e00e168a6dda7ebf5de911b11e] [formerly 091ad459c6d72042a9dc8cb120b15330d44ac585 [formerly 62790f8dd6d55bf3522c9a933c2e9cd32891cce4]]] [formerly 2e59d0b1d79234a94e801c8d4ff9918220b9ecfe [formerly 545e6512ca0248de9d8f9b8e53bafa2724f41c04] [formerly 09cbfb99a1d7fbef41af7d5ca6b2e15fbb9821e8 [formerly d4e1f6de2d5f51b43f439a2174def59011bf586f]] [formerly ca27227614c746b7ec4404157d04fe2bee7287a5 [formerly ca74a0fb79180f0975606a28217e8ab8c1244ad8] [formerly 36306f11260cdeebdd6190f8d83b1fadec6f1b47 [formerly e8420ff4f374f53a44a4f3a608414e5dbc8dc459]]]] [formerly 78d50b7036b10186e8238d900bbd5c887a7a6756 [formerly 2a5915403443474dc065daf2615f667f57e9217e] [formerly 5411d1a21bd1b567e76ce3d8214438d4579d91ee [formerly 587d8df3e94ed586c873692af64201661d1e6ffc]] [formerly 64665c51a33492f1b001eb446c9fa1462b0e48fa [formerly 796499a363a867f141f303b93506203e9da33545] [formerly 5864b76ac0bc4bc4697dfc886eff4a9019349d9d [formerly 786674bcb47bcb73fbb252c75bacef5dd7205f12]]] [formerly bc476386159a69d40f88e67d002cbe4ea8195d35 [formerly ba455da36102d2ed38f77a20a2d191cbcabfbfe5] [formerly d0bbd6381be17902a38398ae556f7691b030a8b1 [formerly 19ab59364a9fe10c45b6af24a5e37efbbb47ec12]] [formerly 4739d81a50e14ef3e30e284d2df9fc85cb9910dd [formerly db8628b789d8d665ab3c7968fae9c4df3c8e6913] [formerly 20f6c5f1fcad340075d753ab4be0481943432605 [formerly 9166f31753ce5de11c8be9873a5e07bb4e626629]]]]] [formerly 3856c93286579f98813d7ff09143d13a5db59fc1 [formerly af64f6245d0fceebc8a046011d959bfb7cedfe1b] [formerly 9cb87f5c1df48631760d2de6b72bf529451e1243 [formerly 496ceaaa60faf5ca6939a58fa19555073dfa2045]] [formerly 38c5b832c2ba19c450dea671704004748202965f [formerly ebedc4aa5f50fa56be8407e8919efee1dc090f34] [formerly 24495007519005f16941058007c00725cca1c170 [formerly f2450ba634eb5bd9cbc99a73062907beb74290ad]]] [formerly 16cd7f0f0dbc7bde76de79309e227854a436d4df [formerly 2ef24000ae050f947e79f1b398853f4b7d37a7d1] [formerly 017b81cb5fc818b4af8169e458479af11740b069 [formerly 5ce2a9776f74ab07a9dcbb4eb8419760f1cc0970]] [formerly 959df5aeeb6ce601e3d3e3e8ada957c24fa6e605 [formerly 54dfb9fb428880499882e9be2d593308a5a9554c] [formerly b525004ec7152a77077b48f6fa3e225d221ad03d [formerly 780d8415f69c5dc11b38ec1f5ed9debeb1421e29]]]] [formerly 6d2227a17fe0c8c7380fa78bc33f220eccefc64e [formerly 0b70e7fdfdfab60c43a692e3b91d14eb26a8e7bc] [formerly 4e7b7f476698af9a1ff02ebd814973fbbf002f02 [formerly 5c8be98ebc6fa5a551bd8283b9f0138f2f9a7416]] [formerly 68e7b23d1e254165f1ee2299dbf8dfa008364b63 [formerly 118b1a31e93bd1ad1a43db58f11cdb852e897f36] [formerly dfa796ad923209b02704dc5a5e1aa24d2a51e1ae [formerly 205081c5b539a35a7daeb625e05cffa490dd0b47]]] [formerly b388ed29b6384b57af6aef66b39af19943d1a486 [formerly 96eb3e8c010927433a0534331ffc1f74b1fdaadb] [formerly e8c7cae018491d2f55700968356099f3b24365e0 [formerly 332c14cfcad850b26a3182190726bd314002ad40]] [formerly a888b1f80118330a9b7f73e06730cffc3cf4a7de [formerly 441bd479ced3e69d1726fdf1006ef3dc86631e40] [formerly 04860f061ca12a2f8923b66f3fed47a894f65828 [formerly 7f7cb5ecdf7fa574544b4805a2800c45eabde805]]]]]] Former-commit-id: 276dd48e9d82a403cce9346869fd246887bc8ca8 [formerly 5641261d7698485acdc7dce92ee86de495b46efe] [formerly adaaadc3786d45e95a11ceed4a9516cff6228bca [formerly cc11c7696ef14398b60c922146d6435823ee1976]] [formerly 512766be38a2da65af6e147cca04887fd1367065 [formerly cb264f2c0d6c2aa15daef67722662c7324f282ec] [formerly b250cbb743d97f9a94b2326c027455a566a88edc [formerly 53162dcbc41854bd7e0352f49207bb5142c0af68]]] [formerly fa3468cf6db10a911bf562ec6f45dc7e2ab2f87c [formerly 03399ca30af0da98b368ed9a5deddc9bde6394f9] [formerly 8a1a9793ce5820e48e89be25be05784daee0e771 [formerly c361ad702f8316a18cbc36653a31e871ec40cc39]] [formerly 576ee5f1b7ba1832b936c038f8a1549969de019a [formerly 2c4f9e563230a9ff0a2a3da95fc7665a44dd4956] [formerly 35d18477b127260bb5fd20dc37e522911c430c3a [formerly fa2939d2b49c8b5b13084e22b100898b52b148c8]]]] [formerly fa3ca2e65d8a68448e8c3ec8109a3fd0e0f56932 [formerly e2fe9e75b540e392c734e6eb88c67aff76db14f4] [formerly e8ca42f66deacb7ebf393efee0337e7816efef37 [formerly 80350d8dc66483d741d6b7e8638a26b58f4f8172]] [formerly a59426477ff1c4fa2d568af84e67f7a351771d19 [formerly 42b3be1ea6903c19ffc9d8440e3486d95b9b75f9] [formerly db12d266e28ff2e6a2b4dc882235b7cfcb567c4b [formerly 5795e861e46062451ff44d75758a452504a5a834]]] [formerly 35c82d5a6d5dd31585a78cddb967b56481c99f68 [formerly 2b933210a77db7fffcf3f3a02f44d2ecc2a32bf7] [formerly 5bd8a10fba8fa3ea214dc167a2ebc7313f8ddaa5 [formerly 05591c435a6b8da4684394fe269f374aa356ec4d]] [formerly fd567a952dc829817b38897e993075f25fea1d64 [formerly 54b3647ed0f60e3f15f0b3992c8c8215c9fa8846] [formerly 04860f061ca12a2f8923b66f3fed47a894f65828]]]] Former-commit-id: e71dcd09bd569c939a83b0d11f364a2bfd3ea6d8 [formerly 5b6a69039cf62089adedb4eb6f7c1889d413a337] [formerly e0554030388f0ec87de1fc2250544816e8951bbc [formerly 4925b27f62fd95641dcd800a70f7846ccbb999f9]] [formerly f52d1d6c981e11481ae01c8d64a9024fe28bcad2 [formerly 484fb9d2d6c9bd8355de1e171a48d61aeb2e53f0] [formerly 109b6685226f1ab5af58aca8a78fd98860562e9a [formerly 7cbad1ca84e2accb6104c7037bbfc125b9e79f43]]] [formerly 47413aef6e05537be7fc26c0fce648a681c05a6a [formerly 8f49e283c7799b32b656c0356bc6cbf5e8294a10] [formerly e538dd2b4f83d11651b5f6277404416b1997bf9e [formerly 9b2b1dda2f7d898a03014cdf793f19a3fb4df784]] [formerly e8b5c204f8e329f5c33ea0bed58db75cbb0483f6 [formerly 46d330e2034bc37e4acbf56c6bd4eff92204d6e4] [formerly 32d0ab7a8919a2b096bf03c439f4f37af5bdbb8a [formerly a46227ab28c3b1c35f01d4de354c361a45fd9912]]]] Former-commit-id: 62f03e65b732a7b9cf49ce9a065f93b1b26d7ceb [formerly 618fcf1faf6a7ad4f06edb50e55620758bbe380d] [formerly be2058fa35a35ce56f6b0b5c472d12a782da7703 [formerly fe61c60bf78c7a2d2d8d89ff743f9f10a81511b1]] [formerly 46030f58db5c1c3b968c81f6fe7fbba3cedcc832 [formerly 7e89c96f7b8ba126f7c6652f6dc6f908897da1e7] [formerly 0e5dc4c70d8b370575321ece83f4b065c5a2b3bc [formerly 5c7a9b5b254516aaf267ae5cf0fdf2571718fc33]]] Former-commit-id: 10d972c1dc035b082629fdda3e07c9cef935ffde [formerly 5817bf295aa9044b5eeb34e5cdb2ecc0c5af7cec] [formerly e5cc4980fad93ea57f0b3d8d7279517ac6fa74f4 [formerly f808dabb9c72b898b415cebea3beb7a2a98536c6]] Former-commit-id: 049d92dc1fe6e5d107781aef8cbb804aa273743f [formerly c1c819ce082b0a7682d9ace94842a1aa1f505409] Former-commit-id: a62d42818a95d6fc0774cef5bf17da935e157b39
5 years ago
first commit Former-commit-id: 08bc23ba02cffbce3cf63962390a65459a132e48 [formerly 0795edd4834b9b7dc66db8d10d4cbaf42bbf82cb] [formerly b5010b42541add7e2ea2578bf2da537efc457757 [formerly a7ca09c2c34c4fc8b3d8e01fcfa08eeeb2cae99d]] [formerly 615058473a2177ca5b89e9edbb797f4c2a59c7e5 [formerly 743d8dfc6843c4c205051a8ab309fbb2116c895e] [formerly bb0ea98b1e14154ef464e2f7a16738705894e54b [formerly 960a69da74b81ef8093820e003f2d6c59a34974c]]] [formerly 2fa3be52c1b44665bc81a7cc7d4cea4bbf0d91d5 [formerly 2054589f0898627e0a17132fd9d4cc78efc91867] [formerly 3b53730e8a895e803dfdd6ca72bc05e17a4164c1 [formerly 8a2fa8ab7baf6686d21af1f322df46fd58c60e69]] [formerly 87d1e3a07a19d03c7d7c94d93ab4fa9f58dada7c [formerly f331916385a5afac1234854ee8d7f160f34b668f] [formerly 69fb3c78a483343f5071da4f7e2891b83a49dd18 [formerly 386086f05aa9487f65bce2ee54438acbdce57650]]]] Former-commit-id: a00aed8c934a6460c4d9ac902b9a74a3d6864697 [formerly 26fdeca29c2f07916d837883983ca2982056c78e] [formerly 0e3170d41a2f99ecf5c918183d361d4399d793bf [formerly 3c12ad4c88ac5192e0f5606ac0d88dd5bf8602dc]] [formerly d5894f84f2fd2e77a6913efdc5ae388cf1be0495 [formerly ad3e7bc670ff92c992730d29c9d3aa1598d844e8] [formerly 69fb3c78a483343f5071da4f7e2891b83a49dd18]] Former-commit-id: 3c19c9fae64f6106415fbc948a4dc613b9ee12f8 [formerly 467ddc0549c74bb007e8f01773bb6dc9103b417d] [formerly 5fa518345d958e2760e443b366883295de6d991c [formerly 3530e130b9fdb7280f638dbc2e785d2165ba82aa]] Former-commit-id: 9f5d473d42a435ec0d60149939d09be1acc25d92 [formerly be0b25c4ec2cde052a041baf0e11f774a158105d] Former-commit-id: 9eca71cb73ba9edccd70ac06a3b636b8d4093b04
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. from typing import Any, Callable, List, Dict, Union, Optional, Sequence, Tuple
  2. from numpy import ndarray
  3. from collections import OrderedDict
  4. from scipy import sparse
  5. import os
  6. import sklearn
  7. import numpy
  8. import typing
  9. import numpy as np
  10. from keras.models import Sequential
  11. from keras.layers import Dense, Dropout , LSTM
  12. from keras.regularizers import l2
  13. from keras.losses import mean_squared_error
  14. from sklearn.preprocessing import StandardScaler
  15. from sklearn.utils import check_array
  16. from sklearn.utils.validation import check_is_fitted
  17. from pyod.utils.stat_models import pairwise_distances_no_broadcast
  18. from pyod.models.base import BaseDetector
  19. # Custom import commands if any
  20. import warnings
  21. import numpy as np
  22. from sklearn.utils import check_array
  23. from sklearn.exceptions import NotFittedError
  24. # from numba import njit
  25. from pyod.utils.utility import argmaxn
  26. from d3m.container.numpy import ndarray as d3m_ndarray
  27. from d3m.container import DataFrame as d3m_dataframe
  28. from d3m.metadata import hyperparams, params, base as metadata_base
  29. from d3m import utils
  30. from d3m.base import utils as base_utils
  31. from d3m.exceptions import PrimitiveNotFittedError
  32. from d3m.primitive_interfaces.base import CallResult, DockerContainer
  33. # from d3m.primitive_interfaces.supervised_learning import SupervisedLearnerPrimitiveBase
  34. from d3m.primitive_interfaces.unsupervised_learning import UnsupervisedLearnerPrimitiveBase
  35. from d3m.primitive_interfaces.transformer import TransformerPrimitiveBase
  36. from d3m.primitive_interfaces.base import ProbabilisticCompositionalityMixin, ContinueFitMixin
  37. from d3m import exceptions
  38. import pandas
  39. import uuid
  40. from d3m import container, utils as d3m_utils
  41. from detection_algorithm.UODBasePrimitive import Params_ODBase, Hyperparams_ODBase, UnsupervisedOutlierDetectorBase
  42. __all__ = ('DeepLog',)
  43. Inputs = container.DataFrame
  44. Outputs = container.DataFrame
  45. class Params(Params_ODBase):
  46. ######## Add more Attributes #######
  47. pass
  48. class Hyperparams(Hyperparams_ODBase):
  49. hidden_size = hyperparams.Hyperparameter[int](
  50. default=64,
  51. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  52. description="hidden state dimension"
  53. )
  54. loss = hyperparams.Hyperparameter[typing.Union[str, None]](
  55. default='mean_squared_error',
  56. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  57. description="loss function"
  58. )
  59. optimizer = hyperparams.Hyperparameter[typing.Union[str, None]](
  60. default='Adam',
  61. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  62. description="Optimizer"
  63. )
  64. epochs = hyperparams.Hyperparameter[int](
  65. default=10,
  66. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  67. description="Epoch"
  68. )
  69. batch_size = hyperparams.Hyperparameter[int](
  70. default=32,
  71. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  72. description="Batch size"
  73. )
  74. dropout_rate = hyperparams.Hyperparameter[float](
  75. default=0.2,
  76. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  77. description="Dropout rate"
  78. )
  79. l2_regularizer = hyperparams.Hyperparameter[float](
  80. default=0.1,
  81. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  82. description="l2 regularizer"
  83. )
  84. validation_size = hyperparams.Hyperparameter[float](
  85. default=0.1,
  86. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  87. description="validation size"
  88. )
  89. window_size = hyperparams.Hyperparameter[int](
  90. default=1,
  91. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  92. description="window size"
  93. )
  94. features = hyperparams.Hyperparameter[int](
  95. default=1,
  96. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  97. description="Number of features in Input"
  98. )
  99. stacked_layers = hyperparams.Hyperparameter[int](
  100. default=1,
  101. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  102. description="Number of LSTM layers between input layer and Final Dense Layer"
  103. )
  104. preprocessing = hyperparams.UniformBool(
  105. default=True,
  106. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  107. description="Whether to Preprosses the data"
  108. )
  109. verbose = hyperparams.Hyperparameter[int](
  110. default=1,
  111. semantic_types=['https://metadata.datadrivendiscovery.org/types/ControlParameter'],
  112. description="verbose"
  113. )
  114. contamination = hyperparams.Uniform(
  115. lower=0.,
  116. upper=0.5,
  117. default=0.1,
  118. description='the amount of contamination of the data set, i.e.the proportion of outliers in the data set. Used when fitting to define the threshold on the decision function',
  119. semantic_types=['https://metadata.datadrivendiscovery.org/types/TuningParameter']
  120. )
  121. class DeepLogPrimitive(UnsupervisedOutlierDetectorBase[Inputs, Outputs, Params, Hyperparams]):
  122. """
  123. A primitive that uses DeepLog for outlier detection
  124. Parameters
  125. ----------
  126. """
  127. __author__ = "DATA Lab at Texas A&M University",
  128. metadata = metadata_base.PrimitiveMetadata(
  129. {
  130. '__author__': "DATA Lab @Texas A&M University",
  131. 'name': "DeepLog Anomolay Detection",
  132. 'python_path': 'd3m.primitives.tods.detection_algorithm.deeplog',
  133. 'source': {'name': "DATALAB @Taxes A&M University", 'contact': 'mailto:khlai037@tamu.edu',
  134. 'uris': ['https://gitlab.com/lhenry15/tods/-/blob/Yile/anomaly-primitives/anomaly_primitives/MatrixProfile.py']},
  135. 'algorithm_types': [metadata_base.PrimitiveAlgorithmType.DEEPLOG],
  136. 'primitive_family': metadata_base.PrimitiveFamily.ANOMALY_DETECTION,
  137. 'id': str(uuid.uuid3(uuid.NAMESPACE_DNS, 'DeepLogPrimitive')),
  138. 'hyperparams_to_tune': ['hidden_size', 'loss', 'optimizer', 'epochs', 'batch_size',
  139. 'l2_regularizer', 'validation_size',
  140. 'window_size', 'features', 'stacked_layers', 'preprocessing', 'verbose', 'dropout_rate','contamination'],
  141. 'version': '0.0.1',
  142. }
  143. )
  144. def __init__(self, *,
  145. hyperparams: Hyperparams, #
  146. random_seed: int = 0,
  147. docker_containers: Dict[str, DockerContainer] = None) -> None:
  148. super().__init__(hyperparams=hyperparams, random_seed=random_seed, docker_containers=docker_containers)
  149. self._clf = DeeplogLstm(hidden_size=hyperparams['hidden_size'],
  150. loss=hyperparams['loss'],
  151. optimizer=hyperparams['optimizer'],
  152. epochs=hyperparams['epochs'],
  153. batch_size=hyperparams['batch_size'],
  154. dropout_rate=hyperparams['dropout_rate'],
  155. l2_regularizer=hyperparams['l2_regularizer'],
  156. validation_size=hyperparams['validation_size'],
  157. window_size=hyperparams['window_size'],
  158. stacked_layers=hyperparams['stacked_layers'],
  159. preprocessing=hyperparams['preprocessing'],
  160. verbose=hyperparams['verbose'],
  161. contamination=hyperparams['contamination']
  162. )
  163. def set_training_data(self, *, inputs: Inputs) -> None:
  164. """
  165. Set training data for outlier detection.
  166. Args:
  167. inputs: Container DataFrame
  168. Returns:
  169. None
  170. """
  171. super().set_training_data(inputs=inputs)
  172. def fit(self, *, timeout: float = None, iterations: int = None) -> CallResult[None]:
  173. """
  174. Fit model with training data.
  175. Args:
  176. *: Container DataFrame. Time series data up to fit.
  177. Returns:
  178. None
  179. """
  180. return super().fit()
  181. def produce(self, *, inputs: Inputs, timeout: float = None, iterations: int = None) -> CallResult[Outputs]:
  182. """
  183. Process the testing data.
  184. Args:
  185. inputs: Container DataFrame. Time series data up to outlier detection.
  186. Returns:
  187. Container DataFrame
  188. 1 marks Outliers, 0 marks normal.
  189. """
  190. return super().produce(inputs=inputs, timeout=timeout, iterations=iterations)
  191. def get_params(self) -> Params:
  192. """
  193. Return parameters.
  194. Args:
  195. None
  196. Returns:
  197. class Params
  198. """
  199. return super().get_params()
  200. def set_params(self, *, params: Params) -> None:
  201. """
  202. Set parameters for outlier detection.
  203. Args:
  204. params: class Params
  205. Returns:
  206. None
  207. """
  208. super().set_params(params=params)
  209. class DeeplogLstm(BaseDetector):
  210. """Class to Implement Deep Log LSTM based on "https://www.cs.utah.edu/~lifeifei/papers/deeplog.pdf
  211. Only Parameter Value anomaly detection layer has been implemented for time series data"""
  212. def __init__(self, hidden_size : int = 64,
  213. optimizer : str ='adam',loss=mean_squared_error,preprocessing=True,
  214. epochs : int =100, batch_size : int =32, dropout_rate : float =0.0,
  215. l2_regularizer : float =0.1, validation_size : float =0.1,
  216. window_size: int = 1, stacked_layers: int = 1, verbose : int = 1, contamination:int = 0.001):
  217. super(DeeplogLstm, self).__init__(contamination=contamination)
  218. self.hidden_size = hidden_size
  219. self.loss = loss
  220. self.optimizer = optimizer
  221. self.epochs = epochs
  222. self.batch_size = batch_size
  223. self.dropout_rate = dropout_rate
  224. self.l2_regularizer = l2_regularizer
  225. self.validation_size = validation_size
  226. self.window_size = window_size
  227. self.stacked_layers = stacked_layers
  228. self.preprocessing = preprocessing
  229. self.verbose = verbose
  230. self.dropout_rate = dropout_rate
  231. self.contamination = contamination
  232. def _build_model(self):
  233. """
  234. Builds Stacked LSTM model.
  235. Args:
  236. inputs : Self object containing model parameters
  237. Returns:
  238. return : model
  239. """
  240. model = Sequential()
  241. #InputLayer
  242. model.add(LSTM(self.hidden_size,input_shape = (self.window_size,self.n_features_),return_sequences=True,dropout = self.dropout_rate))
  243. #stacked layer
  244. for layers in range(self.stacked_layers):
  245. if(layers == self.stacked_layers -1 ):
  246. model.add(LSTM(self.hidden_size, return_sequences=False,dropout = self.dropout_rate))
  247. continue
  248. model.add(LSTM(self.hidden_size,return_sequences=True,dropout = self.dropout_rate))
  249. #output layer
  250. model.add(Dense(self.n_features_))
  251. # Compile model
  252. model.compile(loss=self.loss, optimizer=self.optimizer)
  253. if self.verbose >= 1:
  254. print(model.summary())
  255. return model
  256. def fit(self,X,y=None):
  257. """
  258. Fit data to LSTM model.
  259. Args:
  260. inputs : X , ndarray of size (number of sample,features)
  261. Returns:
  262. return : self object with trained model
  263. """
  264. X = check_array(X)
  265. self._set_n_classes(y)
  266. self.n_samples_, self.n_features_ = X.shape[0], X.shape[1]
  267. X_train,Y_train = self._preprocess_data_for_LSTM(X)
  268. self.model_ = self._build_model()
  269. self.history_ = self.model_.fit(X_train, Y_train,
  270. epochs=self.epochs,
  271. batch_size=self.batch_size,
  272. validation_split=self.validation_size,
  273. verbose=self.verbose).history
  274. pred_scores = np.zeros(X.shape)
  275. pred_scores[self.window_size:] = self.model_.predict(X_train)
  276. Y_train_for_decision_scores = np.zeros(X.shape)
  277. Y_train_for_decision_scores[self.window_size:] = Y_train
  278. self.decision_scores_ = pairwise_distances_no_broadcast(Y_train_for_decision_scores,
  279. pred_scores)
  280. self._process_decision_scores()
  281. return self
  282. def _preprocess_data_for_LSTM(self,X):
  283. """
  284. Preposses data and prepare sequence of data based on number of samples needed in a window
  285. Args:
  286. inputs : X , ndarray of size (number of sample,features)
  287. Returns:
  288. return : X , Y X being samples till (t-1) of data and Y the t time data
  289. """
  290. if self.preprocessing:
  291. self.scaler_ = StandardScaler()
  292. X_norm = self.scaler_.fit_transform(X)
  293. else:
  294. X_norm = np.copy(X)
  295. X_data = []
  296. Y_data = []
  297. for index in range(X.shape[0] - self.window_size):
  298. X_data.append(X_norm[index:index+self.window_size])
  299. Y_data.append(X_norm[index+self.window_size])
  300. X_data = np.asarray(X_data)
  301. Y_data = np.asarray(Y_data)
  302. return X_data,Y_data
  303. def decision_function(self, X):
  304. """Predict raw anomaly score of X using the fitted detector.
  305. The anomaly score of an input sample is computed based on different
  306. detector algorithms. .
  307. Parameters
  308. ----------
  309. X : numpy array of shape (n_samples, n_features)
  310. The training input samples. Sparse matrices are accepted only
  311. if they are supported by the base estimator.
  312. Returns
  313. -------
  314. anomaly_scores : numpy array of shape (n_samples,)
  315. The anomaly score of the input samples.
  316. """
  317. check_is_fitted(self, ['model_', 'history_'])
  318. X = check_array(X)
  319. print("inside")
  320. print(X.shape)
  321. print(X[0])
  322. X_norm,Y_norm = self._preprocess_data_for_LSTM(X)
  323. pred_scores = np.zeros(X.shape)
  324. pred_scores[self.window_size:] = self.model_.predict(X_norm)
  325. Y_norm_for_decision_scores = np.zeros(X.shape)
  326. Y_norm_for_decision_scores[self.window_size:] = Y_norm
  327. return pairwise_distances_no_broadcast(Y_norm_for_decision_scores, pred_scores)

全栈的自动化机器学习系统,主要针对多变量时间序列数据的异常检测。TODS提供了详尽的用于构建基于机器学习的异常检测系统的模块,它们包括:数据处理(data processing),时间序列处理( time series processing),特征分析(feature analysis),检测算法(detection algorithms),和强化模块( reinforcement module)。这些模块所提供的功能包括常见的数据预处理、时间序列数据的平滑或变换,从时域或频域中抽取特征、多种多样的检测算