瀏覽代碼

more eval

Felix Kleinsteuber 3 年之前
父節點
當前提交
d7d2362438
共有 100 個文件被更改,包括 55 次插入35 次删除
  1. 2 1
      .gitignore
  2. 9 7
      approach1a_basic_frame_differencing.ipynb
  3. 12 9
      approach2_background_estimation.ipynb
  4. 二進制
      approach3_dsift.png
  5. 二進制
      approach3_keypoints.pdf
  6. 二進制
      approach3_keypoints_lapse.pdf
  7. 0 0
      approach3_local_features.ipynb
  8. 6 6
      approach4_autoencoder.ipynb
  9. 二進制
      approach4_difficult_anomalous_beaver_01.png
  10. 二進制
      approach4_difficult_anomalous_marten_01.png
  11. 二進制
      approach4_difficult_normal_beaver_01.png
  12. 二進制
      approach4_difficult_normal_marten_01.png
  13. 二進制
      approach4_easy_anomalous_beaver_01.png
  14. 二進制
      approach4_easy_anomalous_marten_01.png
  15. 二進制
      approach4_easy_normal_beaver_01.png
  16. 二進制
      approach4_easy_normal_marten_01.png
  17. 10 5
      eval_autoencoder.py
  18. 16 7
      eval_bow.py
  19. 二進制
      imgs/approach1a_lapse.pdf
  20. 二進制
      imgs/approach1a_motion.pdf
  21. 二進制
      imgs/approach1a_sigma4_lapse.pdf
  22. 二進制
      imgs/approach1a_sigma4_motion.pdf
  23. 二進制
      imgs/approach1a_sigma4_sqdiff.pdf
  24. 二進制
      imgs/approach1a_sqdiff.pdf
  25. 二進制
      plots/approach1a/roc_curves/Beaver_01_absmean.pdf
  26. 二進制
      plots/approach1a/roc_curves/Beaver_01_absmean_sigma2.pdf
  27. 二進制
      plots/approach1a/roc_curves/Beaver_01_absmean_sigma4.pdf
  28. 二進制
      plots/approach1a/roc_curves/Beaver_01_absmean_sigma4.png
  29. 二進制
      plots/approach1a/roc_curves/Beaver_01_absmean_sigma6.pdf
  30. 二進制
      plots/approach1a/roc_curves/Beaver_01_absmean_sigma6.png
  31. 二進制
      plots/approach1a/roc_curves/Beaver_01_absvar.pdf
  32. 二進制
      plots/approach1a/roc_curves/Beaver_01_absvar_sigma2.pdf
  33. 二進制
      plots/approach1a/roc_curves/Beaver_01_absvar_sigma4.pdf
  34. 二進制
      plots/approach1a/roc_curves/Beaver_01_absvar_sigma4.png
  35. 二進制
      plots/approach1a/roc_curves/Beaver_01_absvar_sigma6.pdf
  36. 二進制
      plots/approach1a/roc_curves/Beaver_01_absvar_sigma6.png
  37. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqmean.pdf
  38. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqmean_sigma2.pdf
  39. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqmean_sigma4.pdf
  40. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqmean_sigma4.png
  41. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqmean_sigma6.pdf
  42. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqmean_sigma6.png
  43. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqvar.pdf
  44. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqvar_sigma2.pdf
  45. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqvar_sigma4.pdf
  46. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqvar_sigma4.png
  47. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqvar_sigma6.pdf
  48. 二進制
      plots/approach1a/roc_curves/Beaver_01_sqvar_sigma6.png
  49. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean.pdf
  50. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean.png
  51. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean_sigma2.pdf
  52. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean_sigma2.png
  53. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean_sigma4.pdf
  54. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean_sigma4.png
  55. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean_sigma6.pdf
  56. 二進制
      plots/approach2/roc_curves/Beaver_01_sqmean_sigma6.png
  57. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar.pdf
  58. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar.png
  59. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar_sigma2.pdf
  60. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar_sigma2.png
  61. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar_sigma4.pdf
  62. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar_sigma4.png
  63. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar_sigma6.pdf
  64. 二進制
      plots/approach2/roc_curves/Beaver_01_sqvar_sigma6.png
  65. 二進制
      plots/approach3/roc_curves/Beaver_01_30_30_1024.pdf
  66. 二進制
      plots/approach3/roc_curves/Beaver_01_30_30_1024.png
  67. 二進制
      plots/approach4/roc_curves/Beaver_01_kde.pdf
  68. 二進制
      plots/approach4/roc_curves/Beaver_01_kde.png
  69. 二進制
      plots/approach4/roc_curves/Beaver_01_loss.pdf
  70. 二進制
      plots/approach4/roc_curves/Beaver_01_loss.png
  71. 二進制
      plots/approach4/roc_curves/GFox_03_kde,loss.pdf
  72. 二進制
      plots/approach4/roc_curves/GFox_03_kde,loss.png
  73. 二進制
      plots/approach4/roc_curves/GFox_03_kde.pdf
  74. 二進制
      plots/approach4/roc_curves/GFox_03_kde.png
  75. 二進制
      plots/approach4/roc_curves/GFox_03_loss.pdf
  76. 二進制
      plots/approach4/roc_curves/GFox_03_loss.png
  77. 二進制
      plots/approach4/roc_curves/Marten_01_kde,loss.pdf
  78. 二進制
      plots/approach4/roc_curves/Marten_01_kde,loss.png
  79. 二進制
      plots/approach4/roc_curves/Marten_01_kde.pdf
  80. 二進制
      plots/approach4/roc_curves/Marten_01_loss.pdf
  81. 二進制
      plots/approach4/roc_curves/Marten_01_loss.png
  82. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_kde.pdf
  83. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_kde.png
  84. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_loss.pdf
  85. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_loss.png
  86. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_exp_Beaver_01_kde.pdf
  87. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_exp_Beaver_01_kde.png
  88. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_nodo_Beaver_01_kde.pdf
  89. 二進制
      plots/approach4/roc_curves/ae2_deep_beaver_01_nodo_Beaver_01_kde.png
  90. 二進制
      plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_kde.pdf
  91. 二進制
      plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_kde.png
  92. 二進制
      plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_loss.pdf
  93. 二進制
      plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_loss.png
  94. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde,loss.pdf
  95. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde,loss.png
  96. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde.pdf
  97. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde.png
  98. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_loss.pdf
  99. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_loss.png
  100. 二進制
      plots/approach4/roc_curves/ae2_deep_marten_01_exp_Marten_01_kde.pdf

+ 2 - 1
.gitignore

@@ -1,3 +1,4 @@
 *.jpg
 *.jpg
 __pycache__
 __pycache__
-*_NoBackup
+*_NoBackup
+*.sh

文件差異過大導致無法顯示
+ 9 - 7
approach1a_basic_frame_differencing.ipynb


文件差異過大導致無法顯示
+ 12 - 9
approach2_background_estimation.ipynb


二進制
approach3_dsift.png


二進制
approach3_keypoints.pdf


二進制
approach3_keypoints_lapse.pdf


文件差異過大導致無法顯示
+ 0 - 0
approach3_local_features.ipynb


文件差異過大導致無法顯示
+ 6 - 6
approach4_autoencoder.ipynb


二進制
approach4_difficult_anomalous_beaver_01.png


二進制
approach4_difficult_anomalous_marten_01.png


二進制
approach4_difficult_normal_beaver_01.png


二進制
approach4_difficult_normal_marten_01.png


二進制
approach4_easy_anomalous_beaver_01.png


二進制
approach4_easy_anomalous_marten_01.png


二進制
approach4_easy_normal_beaver_01.png


二進制
approach4_easy_normal_marten_01.png


+ 10 - 5
eval_autoencoder.py

@@ -15,7 +15,7 @@ from torch.utils.data import DataLoader
 from py.FileUtils import dump
 from py.FileUtils import dump
 from py.Dataset import Dataset
 from py.Dataset import Dataset
 from py.PyTorchData import create_dataloader
 from py.PyTorchData import create_dataloader
-from py.Autoencoder3 import Autoencoder
+from py.Autoencoder2 import Autoencoder
 from py.Labels import LABELS
 from py.Labels import LABELS
 
 
 TRAIN_FOLDER = "./ae_train_NoBackup"
 TRAIN_FOLDER = "./ae_train_NoBackup"
@@ -32,10 +32,11 @@ def load_autoencoder(train_name: str, device: str = "cpu", model_number: int = -
     print("Loaded!")
     print("Loaded!")
     return model
     return model
 
 
-def eval_autoencoder(model: Autoencoder, data_loader: DataLoader, device: str = "cpu"):
+def eval_autoencoder(model: Autoencoder, data_loader: DataLoader, device: str = "cpu", include_images: bool = False):
     losses = [] # reconstruction errors
     losses = [] # reconstruction errors
     encodings = [] # latent representations for KDE
     encodings = [] # latent representations for KDE
     labels = []
     labels = []
+    imgs = [] # input images (optional)
 
 
     with torch.no_grad():
     with torch.no_grad():
         model = model.to(device)
         model = model.to(device)
@@ -54,7 +55,9 @@ def eval_autoencoder(model: Autoencoder, data_loader: DataLoader, device: str =
             for input, enc, output in zip(features, encoded_flat, output_batch):
             for input, enc, output in zip(features, encoded_flat, output_batch):
                 encodings.append(enc)
                 encodings.append(enc)
                 losses.append(criterion(input, output).cpu().numpy())
                 losses.append(criterion(input, output).cpu().numpy())
-    return np.array(losses), np.array(encodings), np.array(labels)
+                if include_images:
+                    imgs.append(input.cpu().numpy())
+    return np.array(losses), np.array(encodings), np.array(labels), np.array(imgs)
 
 
 def main():
 def main():
     parser = argparse.ArgumentParser(description="Autoencoder eval script - evaluates Motion and Lapse images of session")
     parser = argparse.ArgumentParser(description="Autoencoder eval script - evaluates Motion and Lapse images of session")
@@ -66,6 +69,7 @@ def main():
     parser.add_argument("--latent", type=int, help="Number of latent features", default=512)
     parser.add_argument("--latent", type=int, help="Number of latent features", default=512)
     parser.add_argument("--model_number", type=int, help="Load model save of specific epoch (default: use latest)", default=-1)
     parser.add_argument("--model_number", type=int, help="Load model save of specific epoch (default: use latest)", default=-1)
     parser.add_argument("--image_transforms", action="store_true", help="Truncate and resize images (only enable if the input images have not been truncated resized to the target size already)")
     parser.add_argument("--image_transforms", action="store_true", help="Truncate and resize images (only enable if the input images have not been truncated resized to the target size already)")
+    parser.add_argument("--include_images", action="store_true", help="Include input images in Motion eval file")
     
     
 
 
     args = parser.parse_args()
     args = parser.parse_args()
@@ -82,8 +86,9 @@ def main():
     train_dir = os.path.join(TRAIN_FOLDER, args.name)
     train_dir = os.path.join(TRAIN_FOLDER, args.name)
     save_dir = os.path.join(train_dir, "eval")
     save_dir = os.path.join(train_dir, "eval")
     os.makedirs(save_dir, exist_ok=True)
     os.makedirs(save_dir, exist_ok=True)
+    suffix = "_withimgs" if args.include_images else ""
     lapse_eval_file = os.path.join(save_dir, f"{session.name}_lapse.pickle")
     lapse_eval_file = os.path.join(save_dir, f"{session.name}_lapse.pickle")
-    motion_eval_file = os.path.join(save_dir, f"{session.name}_motion.pickle")
+    motion_eval_file = os.path.join(save_dir, f"{session.name}_motion{suffix}.pickle")
 
 
     # Load model
     # Load model
     model = load_autoencoder(args.name, args.device, args.model_number, latent_features=args.latent)
     model = load_autoencoder(args.name, args.device, args.model_number, latent_features=args.latent)
@@ -123,7 +128,7 @@ def main():
     else:
     else:
         print("Creating motion data loader... ", end="")
         print("Creating motion data loader... ", end="")
         motion_loader = create_dataloader(session.get_motion_folder(), batch_size=args.batch_size, skip_transforms=not args.image_transforms, shuffle=False, labeler=labeler, filter=is_labeled)
         motion_loader = create_dataloader(session.get_motion_folder(), batch_size=args.batch_size, skip_transforms=not args.image_transforms, shuffle=False, labeler=labeler, filter=is_labeled)
-        results = eval_autoencoder(model, motion_loader, args.device)
+        results = eval_autoencoder(model, motion_loader, args.device, include_images=args.include_images)
         dump(motion_eval_file, results)
         dump(motion_eval_file, results)
         print(f"Results saved to {motion_eval_file}!")
         print(f"Results saved to {motion_eval_file}!")
     print("Done.")
     print("Done.")

+ 16 - 7
eval_bow.py

@@ -7,6 +7,7 @@ import argparse
 import os
 import os
 import numpy as np
 import numpy as np
 from sklearn import svm
 from sklearn import svm
+from tqdm import tqdm
 
 
 from py.Dataset import Dataset
 from py.Dataset import Dataset
 from py.LocalFeatures import generate_bow_features
 from py.LocalFeatures import generate_bow_features
@@ -49,18 +50,26 @@ def main():
         print(f"ERROR: Eval file already exists! ({eval_file})")
         print(f"ERROR: Eval file already exists! ({eval_file})")
     else:
     else:
         print(f"Loading dictionary from {dictionary_file}...")
         print(f"Loading dictionary from {dictionary_file}...")
-        dictionary = np.load(dictionary_file)
+        dictionaries = np.load(dictionary_file)
+        print(f"Shape of dictionaries: {dictionaries.shape}") # (num_dicts, dict_size, 128)
+        assert len(dictionaries.shape) == 3 and dictionaries.shape[2] == 128
         print(f"Loading training data from {train_feat_file}...")
         print(f"Loading training data from {train_feat_file}...")
-        train_data = np.load(train_feat_file).squeeze()
+        train_data = np.load(train_feat_file)
+        print(f"Shape of training data: {train_data.shape}") # (num_train_images, num_dicts, 1, dict_size)
+        assert len(train_data.shape) == 4
+        assert train_data.shape[1] == dictionaries.shape[0]
+        assert train_data.shape[2] == 1
+        assert train_data.shape[3] == dictionaries.shape[1]
         
         
-        print(f"Fitting one-class SVM...")
-        clf = svm.OneClassSVM().fit(train_data)
+        print(f"Fitting {dictionaries.shape[0]} one-class SVMs...")
+        clfs = [svm.OneClassSVM().fit(train_data[:,i,0,:].squeeze()) for i in tqdm(range(dictionaries.shape[0]))]
 
 
         print("Evaluating...")
         print("Evaluating...")
         with open(eval_file, "a+") as f:
         with open(eval_file, "a+") as f:
-            for filename, feat in generate_bow_features(list(session.generate_motion_images()), dictionary, kp_step=args.step_size, kp_size=args.keypoint_size):
-                y = clf.decision_function(feat)[0]
-                f.write(f"{filename},{y}\n")
+            for filename, feats in generate_bow_features(list(session.generate_motion_images()), dictionaries, kp_step=args.step_size, kp_size=args.keypoint_size):
+                ys = [clf.decision_function(feat)[0] for clf, feat in zip(clfs, feats)]
+                ys_out = ",".join([str(y) for y in ys])
+                f.write(f"{filename},{ys_out}\n")
                 f.flush()
                 f.flush()
 
 
         print("Complete!")
         print("Complete!")

二進制
imgs/approach1a_lapse.pdf


二進制
imgs/approach1a_motion.pdf


二進制
imgs/approach1a_sigma4_lapse.pdf


二進制
imgs/approach1a_sigma4_motion.pdf


二進制
imgs/approach1a_sigma4_sqdiff.pdf


二進制
imgs/approach1a_sqdiff.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absmean.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absmean_sigma2.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absmean_sigma4.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absmean_sigma4.png


二進制
plots/approach1a/roc_curves/Beaver_01_absmean_sigma6.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absmean_sigma6.png


二進制
plots/approach1a/roc_curves/Beaver_01_absvar.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absvar_sigma2.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absvar_sigma4.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absvar_sigma4.png


二進制
plots/approach1a/roc_curves/Beaver_01_absvar_sigma6.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_absvar_sigma6.png


二進制
plots/approach1a/roc_curves/Beaver_01_sqmean.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqmean_sigma2.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqmean_sigma4.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqmean_sigma4.png


二進制
plots/approach1a/roc_curves/Beaver_01_sqmean_sigma6.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqmean_sigma6.png


二進制
plots/approach1a/roc_curves/Beaver_01_sqvar.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqvar_sigma2.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqvar_sigma4.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqvar_sigma4.png


二進制
plots/approach1a/roc_curves/Beaver_01_sqvar_sigma6.pdf


二進制
plots/approach1a/roc_curves/Beaver_01_sqvar_sigma6.png


二進制
plots/approach2/roc_curves/Beaver_01_sqmean.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqmean.png


二進制
plots/approach2/roc_curves/Beaver_01_sqmean_sigma2.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqmean_sigma2.png


二進制
plots/approach2/roc_curves/Beaver_01_sqmean_sigma4.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqmean_sigma4.png


二進制
plots/approach2/roc_curves/Beaver_01_sqmean_sigma6.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqmean_sigma6.png


二進制
plots/approach2/roc_curves/Beaver_01_sqvar.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqvar.png


二進制
plots/approach2/roc_curves/Beaver_01_sqvar_sigma2.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqvar_sigma2.png


二進制
plots/approach2/roc_curves/Beaver_01_sqvar_sigma4.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqvar_sigma4.png


二進制
plots/approach2/roc_curves/Beaver_01_sqvar_sigma6.pdf


二進制
plots/approach2/roc_curves/Beaver_01_sqvar_sigma6.png


二進制
plots/approach3/roc_curves/Beaver_01_30_30_1024.pdf


二進制
plots/approach3/roc_curves/Beaver_01_30_30_1024.png


二進制
plots/approach4/roc_curves/Beaver_01_kde.pdf


二進制
plots/approach4/roc_curves/Beaver_01_kde.png


二進制
plots/approach4/roc_curves/Beaver_01_loss.pdf


二進制
plots/approach4/roc_curves/Beaver_01_loss.png


二進制
plots/approach4/roc_curves/GFox_03_kde,loss.pdf


二進制
plots/approach4/roc_curves/GFox_03_kde,loss.png


二進制
plots/approach4/roc_curves/GFox_03_kde.pdf


二進制
plots/approach4/roc_curves/GFox_03_kde.png


二進制
plots/approach4/roc_curves/GFox_03_loss.pdf


二進制
plots/approach4/roc_curves/GFox_03_loss.png


二進制
plots/approach4/roc_curves/Marten_01_kde,loss.pdf


二進制
plots/approach4/roc_curves/Marten_01_kde,loss.png


二進制
plots/approach4/roc_curves/Marten_01_kde.pdf


二進制
plots/approach4/roc_curves/Marten_01_loss.pdf


二進制
plots/approach4/roc_curves/Marten_01_loss.png


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_kde.pdf


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_kde.png


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_loss.pdf


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_Beaver_01_loss.png


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_exp_Beaver_01_kde.pdf


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_exp_Beaver_01_kde.png


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_nodo_Beaver_01_kde.pdf


二進制
plots/approach4/roc_curves/ae2_deep_beaver_01_nodo_Beaver_01_kde.png


二進制
plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_kde.pdf


二進制
plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_kde.png


二進制
plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_loss.pdf


二進制
plots/approach4/roc_curves/ae2_deep_gfox_03_GFox_03_loss.png


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde,loss.pdf


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde,loss.png


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde.pdf


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_kde.png


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_loss.pdf


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_Marten_01_loss.png


二進制
plots/approach4/roc_curves/ae2_deep_marten_01_exp_Marten_01_kde.pdf


部分文件因文件數量過多而無法顯示