radnn 0.0.6__py3-none-any.whl → 0.0.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- radnn/__init__.py +6 -3
- radnn/core.py +9 -0
- radnn/data/__init__.py +4 -0
- radnn/data/dataset_base.py +327 -0
- radnn/data/image_dataset.py +100 -0
- radnn/data/preprocess/__init__.py +2 -0
- radnn/data/preprocess/normalizer.py +111 -0
- radnn/data/preprocess/standardizer.py +100 -0
- radnn/data/sample_set.py +153 -0
- radnn/data/sequence_dataset.py +136 -0
- radnn/errors.py +2 -0
- radnn/evaluation/evaluate_classification.py +2 -2
- radnn/experiment/ml_experiment.py +389 -0
- radnn/experiment/ml_experiment_config.py +37 -6
- radnn/experiment/ml_experiment_env.py +7 -1
- radnn/experiment/ml_experiment_store.py +10 -0
- radnn/learn/__init__.py +7 -0
- radnn/learn/keras_learning_rate_scheduler.py +31 -0
- radnn/learn/keras_optimization_algorithm.py +32 -0
- radnn/learn/learning_algorithm.py +35 -0
- radnn/learn/state/__init__.py +4 -0
- radnn/learn/state/keras_best_state_saver.py +17 -0
- radnn/ml_system.py +96 -0
- radnn/plots/__init__.py +2 -1
- radnn/plots/plot_auto_multi_image.py +112 -0
- radnn/system/files/jsonfile.py +4 -1
- radnn/system/filesystem.py +2 -6
- radnn/utils.py +89 -0
- {radnn-0.0.6.dist-info → radnn-0.0.7.dist-info}/METADATA +2 -2
- radnn-0.0.7.dist-info/RECORD +53 -0
- radnn-0.0.6.dist-info/RECORD +0 -33
- {radnn-0.0.6.dist-info → radnn-0.0.7.dist-info}/LICENSE.txt +0 -0
- {radnn-0.0.6.dist-info → radnn-0.0.7.dist-info}/WHEEL +0 -0
- {radnn-0.0.6.dist-info → radnn-0.0.7.dist-info}/top_level.txt +0 -0
radnn/ml_system.py
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import random
|
|
3
|
+
import numpy as np
|
|
4
|
+
import importlib
|
|
5
|
+
|
|
6
|
+
class MLSystem(object):
|
|
7
|
+
IS_USING_TENSORFLOW = False
|
|
8
|
+
IS_USING_TORCH = False
|
|
9
|
+
|
|
10
|
+
# --------------------------------------------------------------------------------------
|
|
11
|
+
_instance = None
|
|
12
|
+
@classmethod
|
|
13
|
+
def Instance(cls):
|
|
14
|
+
if cls._instance is None:
|
|
15
|
+
cls._instance = cls()
|
|
16
|
+
mlsys = cls._instance
|
|
17
|
+
return cls._instance
|
|
18
|
+
# --------------------------------------------------------------------------------------
|
|
19
|
+
@property
|
|
20
|
+
def is_tensorflow(self):
|
|
21
|
+
return self.is_tensorflow_installed and (not cls.IS_USING_TORCH) and (cls.IS_USING_TENSORFLOW)
|
|
22
|
+
# --------------------------------------------------------------------------------------
|
|
23
|
+
@property
|
|
24
|
+
def is_torch(self):
|
|
25
|
+
return self.is_torch_installed and (cls.IS_USING_TORCH)
|
|
26
|
+
# --------------------------------------------------------------------------------------
|
|
27
|
+
def __init__(self):
|
|
28
|
+
self._is_random_seed_initialized = False
|
|
29
|
+
self._filesys = None
|
|
30
|
+
self.switches = dict()
|
|
31
|
+
self.switches["IsDebuggable"] = False
|
|
32
|
+
|
|
33
|
+
self.is_tensorflow_installed = False
|
|
34
|
+
self.is_torch_installed = False
|
|
35
|
+
self.is_opencv_installed = False
|
|
36
|
+
# --------------------------------------------------------------------------------------
|
|
37
|
+
def use_tensorflow(self):
|
|
38
|
+
self.IS_USING_TENSORFLOW = True
|
|
39
|
+
self.IS_USING_TORCH = False
|
|
40
|
+
# --------------------------------------------------------------------------------------
|
|
41
|
+
def use_torch(self):
|
|
42
|
+
self.IS_USING_TORCH = True
|
|
43
|
+
self.IS_USING_TENSORFLOW = False
|
|
44
|
+
# --------------------------------------------------------------------------------------
|
|
45
|
+
@property
|
|
46
|
+
def filesys(self):
|
|
47
|
+
return self._filesys
|
|
48
|
+
# ............................
|
|
49
|
+
@filesys.setter
|
|
50
|
+
def filesys(self, value):
|
|
51
|
+
self._filesys = value
|
|
52
|
+
# --------------------------------------------------------------------------------------
|
|
53
|
+
# We are seeding the number generators to get some amount of determinism for the whole ML training process.
|
|
54
|
+
# For Tensorflow it is not ensuring 100% deterministic reproduction of an experiment on the GPU.
|
|
55
|
+
def random_seed_all(self, seed, is_done_once=False):
|
|
56
|
+
bContinue = True
|
|
57
|
+
if is_done_once:
|
|
58
|
+
bContinue = (not self._is_random_seed_initialized)
|
|
59
|
+
|
|
60
|
+
if bContinue:
|
|
61
|
+
random.seed(seed)
|
|
62
|
+
os.environ['PYTHONHASHSEED'] = str(seed)
|
|
63
|
+
np.random.seed(seed)
|
|
64
|
+
if mlsys.is_tensorflow:
|
|
65
|
+
import tensorflow as tf
|
|
66
|
+
tf.compat.v1.reset_default_graph()
|
|
67
|
+
tf.random.set_seed(seed)
|
|
68
|
+
tf.keras.utils.set_random_seed(seed)
|
|
69
|
+
elif mlsys.is_torch:
|
|
70
|
+
import torch
|
|
71
|
+
torch.manual_seed(seed)
|
|
72
|
+
# GPU and multi-GPU
|
|
73
|
+
torch.cuda.manual_seed(seed)
|
|
74
|
+
torch.cuda.manual_seed_all(seed)
|
|
75
|
+
# For GPU determinism
|
|
76
|
+
torch.backends.cudnn.deterministic = True
|
|
77
|
+
torch.backends.cudnn.benchmark = False
|
|
78
|
+
|
|
79
|
+
self._is_random_seed_initialized = True
|
|
80
|
+
print("(>) Random seed set to %d" % seed)
|
|
81
|
+
# --------------------------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# ----------------------------------------------------------------------------------------------------------------------
|
|
85
|
+
def is_tensorflow_installed():
|
|
86
|
+
bIsInstalled = importlib.util.find_spec("tensorflow") is not None
|
|
87
|
+
if not is_tensorflow_installed:
|
|
88
|
+
bIsInstalled = importlib.util.find_spec("tensorflow-gpu") is not None
|
|
89
|
+
return bIsInstalled
|
|
90
|
+
# ----------------------------------------------------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
mlsys: MLSystem = MLSystem.Instance()
|
|
94
|
+
mlsys.is_tensorflow_installed = is_tensorflow_installed()
|
|
95
|
+
mlsys.is_torch_installed = importlib.util.find_spec("torch") is not None
|
|
96
|
+
mlsys.is_opencv_installed = importlib.util.find_spec("cv2") is not None
|
radnn/plots/__init__.py
CHANGED
|
@@ -2,4 +2,5 @@ from .plot_confusion_matrix import PlotConfusionMatrix
|
|
|
2
2
|
from .plot_learning_curve import PlotLearningCurve
|
|
3
3
|
from .plot_roc import PlotROC
|
|
4
4
|
from .plot_voronoi_2d import PlotVoronoi2D
|
|
5
|
-
from .plot_multi_scatter import MultiScatterPlot
|
|
5
|
+
from .plot_multi_scatter import MultiScatterPlot
|
|
6
|
+
from .plot_auto_multi_image import AutoMultiImagePlot
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# ......................................................................................
|
|
2
|
+
# MIT License
|
|
3
|
+
|
|
4
|
+
# Copyright (c) 2022-2025 Pantelis I. Kaplanoglou
|
|
5
|
+
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
# furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
# copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
# SOFTWARE.
|
|
23
|
+
|
|
24
|
+
# ......................................................................................
|
|
25
|
+
|
|
26
|
+
import numpy as np
|
|
27
|
+
import matplotlib.pyplot as plt
|
|
28
|
+
|
|
29
|
+
class AutoMultiImagePlot(object):
|
|
30
|
+
def __init__(self, min=None, max=None, title=None):
|
|
31
|
+
self.rows = []
|
|
32
|
+
self.row_count = 0
|
|
33
|
+
self.row_titles = []
|
|
34
|
+
self.current_row = -1
|
|
35
|
+
self.row_col_count = dict()
|
|
36
|
+
self.max_col_count = 0
|
|
37
|
+
self.min = min
|
|
38
|
+
self.max = max
|
|
39
|
+
self.title = title
|
|
40
|
+
|
|
41
|
+
def add_row(self, row_title=None):
|
|
42
|
+
self.current_row = self.row_count
|
|
43
|
+
self.rows.append([])
|
|
44
|
+
self.row_count = len(self.rows)
|
|
45
|
+
self.row_titles.append(row_title)
|
|
46
|
+
|
|
47
|
+
def add_column(self, images, image_title=None, color_map=None, aspect=None, extent=None):
|
|
48
|
+
oRowColumns = self.rows[self.current_row]
|
|
49
|
+
dImage = {"image": images, "title": image_title
|
|
50
|
+
, "cmap": color_map, "aspect": aspect
|
|
51
|
+
, "extend": extent}
|
|
52
|
+
|
|
53
|
+
oRowColumns.append(dImage)
|
|
54
|
+
self.rows[self.current_row] = oRowColumns
|
|
55
|
+
nColCount = len(oRowColumns)
|
|
56
|
+
|
|
57
|
+
self.row_col_count[self.current_row] = nColCount
|
|
58
|
+
if nColCount > self.max_col_count:
|
|
59
|
+
self.max_col_count = nColCount
|
|
60
|
+
|
|
61
|
+
def prepare(self, title=None, figure_size=(15, 6), restrict_columns=None):
|
|
62
|
+
|
|
63
|
+
nColumns = restrict_columns
|
|
64
|
+
if nColumns is None:
|
|
65
|
+
nColumns = self.max_col_count
|
|
66
|
+
fig, oSubplotGrid = plt.subplots(nrows=self.row_count, ncols=nColumns
|
|
67
|
+
, figsize=figure_size
|
|
68
|
+
, subplot_kw={'xticks': [], 'yticks': []})
|
|
69
|
+
bIsSingleRow = self.row_count == 1
|
|
70
|
+
if bIsSingleRow:
|
|
71
|
+
oSubplotGrid = oSubplotGrid[np.newaxis, ...]
|
|
72
|
+
|
|
73
|
+
if title is None:
|
|
74
|
+
title = self.title
|
|
75
|
+
fig.suptitle(title)
|
|
76
|
+
|
|
77
|
+
for nRowIndex, oRowColumns in enumerate(self.rows):
|
|
78
|
+
if len(oRowColumns) > 0:
|
|
79
|
+
sRowTitle = self.row_titles[nRowIndex]
|
|
80
|
+
nImageCount = len(oRowColumns)
|
|
81
|
+
nIncr = nImageCount // nColumns
|
|
82
|
+
nImageIndex = 0
|
|
83
|
+
for nColIndex in range(nColumns):
|
|
84
|
+
bMustPlot = True
|
|
85
|
+
if (nIncr == 0) and (nColIndex > 0):
|
|
86
|
+
bMustPlot = False
|
|
87
|
+
|
|
88
|
+
if bMustPlot:
|
|
89
|
+
dImage = oRowColumns[nImageIndex]
|
|
90
|
+
oSubPlot = oSubplotGrid[nRowIndex, nColIndex]
|
|
91
|
+
oSubPlot.title.set_text(dImage["title"])
|
|
92
|
+
oSubPlot.imshow(dImage["image"], cmap=dImage["cmap"],
|
|
93
|
+
aspect=dImage["aspect"], extent=dImage["extend"],
|
|
94
|
+
vmin=self.min, vmax=self.max
|
|
95
|
+
)
|
|
96
|
+
if nColIndex == 0:
|
|
97
|
+
oSubPlot.text(0.0, 0.5, sRowTitle, transform=oSubPlot.transAxes,
|
|
98
|
+
horizontalalignment='right', verticalalignment='center',
|
|
99
|
+
fontsize=9, fontweight='bold')
|
|
100
|
+
nImageIndex += nIncr
|
|
101
|
+
|
|
102
|
+
return self
|
|
103
|
+
|
|
104
|
+
# --------------------------------------------------------------------------------------
|
|
105
|
+
def save(self, filename):
|
|
106
|
+
plt.savefig(filename, bbox_inches='tight')
|
|
107
|
+
return self
|
|
108
|
+
|
|
109
|
+
# --------------------------------------------------------------------------------------
|
|
110
|
+
def show(self):
|
|
111
|
+
plt.show()
|
|
112
|
+
# --------------------------------------------------------------------------------------
|
radnn/system/files/jsonfile.py
CHANGED
|
@@ -51,7 +51,10 @@ class JSONFile(FileObject):
|
|
|
51
51
|
filename = self._useFileName(filename)
|
|
52
52
|
|
|
53
53
|
if obj is not None:
|
|
54
|
-
|
|
54
|
+
if isinstance(obj, dict):
|
|
55
|
+
sJSON = json.dumps(obj, sort_keys=is_sorted_keys, indent=4)
|
|
56
|
+
else:
|
|
57
|
+
sJSON = json.dumps(obj, default=lambda o: obj.__dict__, sort_keys=is_sorted_keys, indent=4)
|
|
55
58
|
with open(filename, "w") as oFile:
|
|
56
59
|
oFile.write(sJSON)
|
|
57
60
|
oFile.close()
|
radnn/system/filesystem.py
CHANGED
|
@@ -27,13 +27,10 @@ from radnn.core import system_name
|
|
|
27
27
|
from radnn.system.filestore import FileStore
|
|
28
28
|
from radnn.system.files import JSONFile
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
30
|
# =======================================================================================================================
|
|
34
31
|
class FileSystem(object):
|
|
35
32
|
# --------------------------------------------------------------------------------------------------------
|
|
36
|
-
def __init__(self, config_folder="MLConfig", model_folder="MLModels", dataset_folder="MLData", must_exist=False, setup_filename="*auto*"):
|
|
33
|
+
def __init__(self, config_folder="MLConfig", model_folder="MLModels", dataset_folder="MLData", must_exist=False, setup_filename="*auto*", is_custom_setup=False):
|
|
37
34
|
'''
|
|
38
35
|
Initializes the file system settings for an experiment
|
|
39
36
|
:param config_folder: The folder that contains the experiment hyperparameter files.
|
|
@@ -42,7 +39,6 @@ class FileSystem(object):
|
|
|
42
39
|
:param setup_filename: The filename of the setup file.
|
|
43
40
|
:param must_exist: False: Auto-creates the directories on the file system | True: Raises an error if it does not exist.
|
|
44
41
|
'''
|
|
45
|
-
|
|
46
42
|
self.setup_filename = setup_filename
|
|
47
43
|
if self.setup_filename == "*auto*":
|
|
48
44
|
self.setup_filename = system_name() + ".fsys"
|
|
@@ -51,7 +47,7 @@ class FileSystem(object):
|
|
|
51
47
|
self.model_groups = []
|
|
52
48
|
|
|
53
49
|
dSetup = None
|
|
54
|
-
if self.setup_filename is not None:
|
|
50
|
+
if (self.setup_filename is not None) and (not is_custom_setup):
|
|
55
51
|
if os.path.exists(self.setup_filename):
|
|
56
52
|
oFile = JSONFile(self.setup_filename)
|
|
57
53
|
dSetup = oFile.load()
|
radnn/utils.py
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def print_tensor(tensor, title=None, format="%+.3f", axes_descr=["Sample"]):
|
|
5
|
+
# ................................................
|
|
6
|
+
def printElement(p_nElement, p_bIsScalar):
|
|
7
|
+
if p_bIsScalar:
|
|
8
|
+
print(format % p_nElement, end=" ")
|
|
9
|
+
else:
|
|
10
|
+
print(np.array2string(p_nElement, separator=",", formatter={'float': lambda x: format % x}), end=" ")
|
|
11
|
+
|
|
12
|
+
# ................................................
|
|
13
|
+
def strBoxLeft(p_nIndex, p_nCount):
|
|
14
|
+
if (p_nIndex == 0):
|
|
15
|
+
return "┌ "
|
|
16
|
+
elif (p_nIndex == (p_nCount - 1)):
|
|
17
|
+
return "└ "
|
|
18
|
+
else:
|
|
19
|
+
return "│ "
|
|
20
|
+
|
|
21
|
+
# ................................................
|
|
22
|
+
def strBoxRight(p_nIndex, p_nCount):
|
|
23
|
+
if (p_nIndex == 0):
|
|
24
|
+
return "┐ "
|
|
25
|
+
elif (p_nIndex == (p_nCount - 1)):
|
|
26
|
+
return "┘ "
|
|
27
|
+
else:
|
|
28
|
+
return "│ "
|
|
29
|
+
|
|
30
|
+
# ................................................
|
|
31
|
+
|
|
32
|
+
if len(tensor.shape) == 3:
|
|
33
|
+
tensor = tensor[np.newaxis, ...]
|
|
34
|
+
elif len(tensor.shape) == 2:
|
|
35
|
+
tensor = tensor[np.newaxis, ..., np.newaxis]
|
|
36
|
+
elif len(tensor.shape) == 5:
|
|
37
|
+
tensor = tensor[..., np.newaxis]
|
|
38
|
+
else:
|
|
39
|
+
raise Exception("Supported tensors are rank 2 to rank 5")
|
|
40
|
+
|
|
41
|
+
nSampleIndex = 0
|
|
42
|
+
nCount, nGridRows, nGridCols = tensor.shape[0:3]
|
|
43
|
+
nSliceCoordDigits = len(str(nGridRows))
|
|
44
|
+
if len(str(nGridCols)) > nSliceCoordDigits:
|
|
45
|
+
nSliceCoordDigits = len(str(nGridCols))
|
|
46
|
+
|
|
47
|
+
bIsGridOfTensors = (len(tensor.shape) == 6)
|
|
48
|
+
if bIsGridOfTensors:
|
|
49
|
+
nWindowRows, nWindowCols = tensor.shape[3:5]
|
|
50
|
+
|
|
51
|
+
bIsScalar = (tensor.shape[-1] == 1)
|
|
52
|
+
|
|
53
|
+
nSpaces = nSliceCoordDigits * 2 + 5
|
|
54
|
+
sSliceHeaders = ["X" + " " * (nSpaces - 3) + "= ",
|
|
55
|
+
" %" + str(nSliceCoordDigits) + "d" ",%" + str(nSliceCoordDigits) + "d ",
|
|
56
|
+
" " * nSpaces]
|
|
57
|
+
|
|
58
|
+
print("-" * 70)
|
|
59
|
+
if title is None:
|
|
60
|
+
print(f"shape:{tensor.shape}")
|
|
61
|
+
else:
|
|
62
|
+
print(f"{title} shape:{tensor.shape}")
|
|
63
|
+
while nSampleIndex < nCount:
|
|
64
|
+
print(f" {axes_descr[0]}:#{nSampleIndex}")
|
|
65
|
+
for nRow in range(0, nGridRows):
|
|
66
|
+
if bIsGridOfTensors:
|
|
67
|
+
for nY in range(nWindowRows):
|
|
68
|
+
for nCol in range(0, nGridCols):
|
|
69
|
+
if (nY == 0):
|
|
70
|
+
print(sSliceHeaders[0] + strBoxLeft(nY, nWindowRows), end="")
|
|
71
|
+
elif (nY == 1):
|
|
72
|
+
sBaseStr = sSliceHeaders[1] % (nRow, nCol)
|
|
73
|
+
print(sBaseStr + strBoxLeft(nY, nWindowRows), end="")
|
|
74
|
+
else:
|
|
75
|
+
print(sSliceHeaders[2] + strBoxLeft(nY, nWindowRows), end="")
|
|
76
|
+
for nX in range(nWindowCols):
|
|
77
|
+
printElement(tensor[nSampleIndex, nRow, nCol, nY, nX, ...], bIsScalar)
|
|
78
|
+
|
|
79
|
+
print(strBoxRight(nY, nWindowRows), end="")
|
|
80
|
+
print("")
|
|
81
|
+
print("")
|
|
82
|
+
else:
|
|
83
|
+
print(strBoxLeft(nRow, nGridRows), end="")
|
|
84
|
+
for nCol in range(0, nGridCols):
|
|
85
|
+
printElement(tensor[nSampleIndex, nRow, nCol, ...], bIsScalar)
|
|
86
|
+
print(strBoxRight(nRow, nGridRows))
|
|
87
|
+
print("." * 60)
|
|
88
|
+
nSampleIndex += 1
|
|
89
|
+
# -----------------------------------------------------------------------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: radnn
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.7
|
|
4
4
|
Summary: Rapid Deep Neural Networks
|
|
5
5
|
Author-email: "Pantelis I. Kaplanoglou" <pikaplanoglou@ihu.gr>
|
|
6
6
|
License: MIT License
|
|
@@ -45,7 +45,7 @@ Description-Content-Type: text/markdown
|
|
|
45
45
|
License-File: LICENSE.txt
|
|
46
46
|
Requires-Dist: numpy>=1.26.4
|
|
47
47
|
Requires-Dist: matplotlib>=3.8.4
|
|
48
|
-
Requires-Dist: pandas>=2.2.
|
|
48
|
+
Requires-Dist: pandas>=2.2.1
|
|
49
49
|
Requires-Dist: scikit-learn>=1.4.2
|
|
50
50
|
|
|
51
51
|
# radnn - Rapid Deep Neural Networks
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
radnn/__init__.py,sha256=5uPiqiHDaYdsGupS0bxtGQ1SxcaxiupuprGmPP912zE,322
|
|
2
|
+
radnn/core.py,sha256=c60Lv2osyy3S6IxYIfbMSC9QMwnyT8qPED2xy_UnM24,3399
|
|
3
|
+
radnn/errors.py,sha256=upA3Afpvrkxexf956PwITHB-fR_V2n2k4Jn8HaZcpm8,150
|
|
4
|
+
radnn/ml_system.py,sha256=YWvYd5E-DEhiLZRCcjkFAZp-s1eZgmLNkxScE9RHETE,3879
|
|
5
|
+
radnn/utils.py,sha256=Q2nGUgyTGrhs0vxEmHfEZffWb7JBewmiygcHRaWw1W8,3100
|
|
6
|
+
radnn/data/__init__.py,sha256=09OkpdAe59yJH74DuQrxLtCiiNXgX6E3F2MKjzz8Cns,117
|
|
7
|
+
radnn/data/dataset_base.py,sha256=3b8UaJFBiN0cY8C9uZKFzRt0g_4Q_EZgVEKWgsAA4t8,15181
|
|
8
|
+
radnn/data/image_dataset.py,sha256=REGEomCmt0IFcjxYWtziELJFBoVnfR_TDFtct3IGR8U,4520
|
|
9
|
+
radnn/data/sample_set.py,sha256=rvRtS7EqLFVF4Hf6qmIuxE-fatFiqWbETnh5RWqVj5E,6685
|
|
10
|
+
radnn/data/sequence_dataset.py,sha256=DZAFgatzpf86nI62TJV5limYP3dP_z30UgWV2dYTDgc,6209
|
|
11
|
+
radnn/data/preprocess/__init__.py,sha256=6JTaWzzeXAbIXkH8O9JDawtObutCyXQjHEZdlofSics,74
|
|
12
|
+
radnn/data/preprocess/normalizer.py,sha256=7ZD1Z2_nW8KAG7cJ1RCYn-TMzVcW7dqWLTAjSPzMXo8,5444
|
|
13
|
+
radnn/data/preprocess/standardizer.py,sha256=tzH3aJ8seTw-UwxnAb0Z6eAkW5iPu1c12_Kenuv7X2Q,5019
|
|
14
|
+
radnn/evaluation/__init__.py,sha256=7dXDyJfOpSAr7G8jfDofsW4YEHNElCTTyMXuLCtpoOI,59
|
|
15
|
+
radnn/evaluation/evaluate_classification.py,sha256=Iiv0aZcIEzVMg8BNNxyNzl7g23SdMiENQxeEKep8Cpg,5497
|
|
16
|
+
radnn/experiment/__init__.py,sha256=8gxrFS4bG7rg2kgrDEhemJgDbO-5KhBYc4owJZ-S--k,247
|
|
17
|
+
radnn/experiment/ml_experiment.py,sha256=FPxOlzNLyDEqFBAyCc7zMrc26pQwr5grwbMCBsL89L8,17861
|
|
18
|
+
radnn/experiment/ml_experiment_config.py,sha256=YFLaSpz8UPs_JZC_hPkZAUOfelLmmr1cAlgRfbL3TEs,9785
|
|
19
|
+
radnn/experiment/ml_experiment_env.py,sha256=vF5sDLzIyLwme82VI4aKgmRxly-31THZyEc0dFof9dg,11206
|
|
20
|
+
radnn/experiment/ml_experiment_store.py,sha256=qeujLZJ-qGoBlyib3BukT4PBiioaPm4L1X24aXQ7_yg,398
|
|
21
|
+
radnn/learn/__init__.py,sha256=gF-5pD1OxrxhOeO7G7wbpr37LRjGkT71PY78Li3bBJU,252
|
|
22
|
+
radnn/learn/keras_learning_rate_scheduler.py,sha256=l0c53dtq1W5oclXDLxXzUlmBG_hzO-19EFRw3518PJs,1156
|
|
23
|
+
radnn/learn/keras_optimization_algorithm.py,sha256=ff3S_3CJ2t0N4_TZiGDpiAhExquRsqAGZDc42werGJo,1686
|
|
24
|
+
radnn/learn/learning_algorithm.py,sha256=dRr3QWvY2kXIaEADKTFhEjLw8w99rv4HcgKk-sQ8-d4,1420
|
|
25
|
+
radnn/learn/state/__init__.py,sha256=zExYBp7mkQlzDZX3jnzYa5piwOEFxUwe6ZvKI6IiE6o,117
|
|
26
|
+
radnn/learn/state/keras_best_state_saver.py,sha256=ep9QP7bZqmN8XmSzUpRXuBh6ccrbhFdFL4p5c3pg3MA,883
|
|
27
|
+
radnn/plots/__init__.py,sha256=dVd7QDrkD_fBUag4Kz3yTnPvBxaBgpDt16bbbNlqLKw,286
|
|
28
|
+
radnn/plots/plot_auto_multi_image.py,sha256=0-Bmk3aqeO6AzxC2GEycsx6Wp0sByVZdX4NUp-_OnYA,4507
|
|
29
|
+
radnn/plots/plot_confusion_matrix.py,sha256=KWW5k7-gaLPXO4oQBnzwAwgI-rvPOmqw8uiZbFlmU5o,2625
|
|
30
|
+
radnn/plots/plot_learning_curve.py,sha256=tgx3vAm4rg5qScqxLQ2T82BqrRWjiYaIKgLQp5Y19cQ,3480
|
|
31
|
+
radnn/plots/plot_multi_scatter.py,sha256=-VgSwi7knYTNrdW86RGon0MZ_r0JDoiWP9F_gWIvTuo,4797
|
|
32
|
+
radnn/plots/plot_roc.py,sha256=iyOnhux2qFEs7W-szEOCg2VCkcnBEaOJxZkWWYuSnCQ,3493
|
|
33
|
+
radnn/plots/plot_voronoi_2d.py,sha256=Kq3ZaLhLaFHQAurhFKNy7NNuIm3RArCk_WxPT8Ftxek,4409
|
|
34
|
+
radnn/system/__init__.py,sha256=uJLg56njcLtaRO0Kyudat055DGxqWsLMvrn9P8_Rt6A,119
|
|
35
|
+
radnn/system/filestore.py,sha256=gNESaiJNwdrFbkzcbkSv-O4V8vrBagOSR90WcFueNsA,8977
|
|
36
|
+
radnn/system/filesystem.py,sha256=Q9eydbKF2syFax6D82kgcEaj6_h-rVgxLAs_6mm2JIc,5566
|
|
37
|
+
radnn/system/tee_logger.py,sha256=WcyIJiW851PP6Jk7SyCHj63BEt7HnWa5-GJtw1CjGHE,2629
|
|
38
|
+
radnn/system/files/__init__.py,sha256=u2oGHNKM362JwqrDgwmWTAiisL067h6H9uu-d0iTBks,169
|
|
39
|
+
radnn/system/files/csvfile.py,sha256=9uKqmCdqLAKomANejcSruHle1r3gVdByQb1I2otLcMs,2246
|
|
40
|
+
radnn/system/files/fileobject.py,sha256=qT9qzpH6YFSIzaKfILxhpaQ1P2o2tqRh9J5J2L_Kp8Y,3851
|
|
41
|
+
radnn/system/files/imgfile.py,sha256=HxvvittOUG1mmIp-Bg8vHnLPtRYD-N4nE86G0Rcys6M,2242
|
|
42
|
+
radnn/system/files/jsonfile.py,sha256=1IgfK0j58RjvkV7pw7Z5oR49W071OmsMceX7F4w0MZw,3291
|
|
43
|
+
radnn/system/files/picklefile.py,sha256=0BFiYzr6BbGWMXyQCMjYHa_GlW8nEZ95CQtn7lpH254,5526
|
|
44
|
+
radnn/system/files/textfile.py,sha256=r7FZ1pdFGYxKrQ_kgkEK35GIqRU8k_MjdB0OrDd5m0o,2891
|
|
45
|
+
radnn/system/hosts/__init__.py,sha256=k2gkMJhe96Nf-V2ex6jZqmCRX9vA_K6gFB8J8Ii9ahc,261
|
|
46
|
+
radnn/system/hosts/colab_host.py,sha256=tAuLn9gTkX9cCSEmm7sG1JmCtNIgFlASwBt2olHUSe4,2434
|
|
47
|
+
radnn/system/hosts/linux_host.py,sha256=TZ-5JEZV0WNEB5trTbRWM0REhpuK5oYxoLodKKqhm9s,57
|
|
48
|
+
radnn/system/hosts/windows_host.py,sha256=u4IvgfFoKWdrFy0hYG__AoxfEJYHF4-ISNXTCJ5uN8I,2257
|
|
49
|
+
radnn-0.0.7.dist-info/LICENSE.txt,sha256=vYtt_GDvm_yW65X9YMBOOu8Vqc9SAvqH94TbfBc2ckU,1106
|
|
50
|
+
radnn-0.0.7.dist-info/METADATA,sha256=nTJMpLFSrb6hQc9wbr_Zopmq3Ute5OE0i8Ey0NWoy7g,2861
|
|
51
|
+
radnn-0.0.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
52
|
+
radnn-0.0.7.dist-info/top_level.txt,sha256=FKlLIm6gRAeZlRzs-HCBJAB1q9ELJ7MgaL-qqFuPo6M,6
|
|
53
|
+
radnn-0.0.7.dist-info/RECORD,,
|
radnn-0.0.6.dist-info/RECORD
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
radnn/__init__.py,sha256=9CEr23hNkWNU-R14QMatDBvWQG0oHNjFIBNT23Mfe2M,171
|
|
2
|
-
radnn/core.py,sha256=cWGl_B3bHASEDdZHgDKN9CwGo7-TFjj3y2YD-Ei4bD4,2828
|
|
3
|
-
radnn/evaluation/__init__.py,sha256=7dXDyJfOpSAr7G8jfDofsW4YEHNElCTTyMXuLCtpoOI,59
|
|
4
|
-
radnn/evaluation/evaluate_classification.py,sha256=wacQ_02loI2ApOKrUIDTKqqrwi0_TpUZJQfTpJ6rtag,5497
|
|
5
|
-
radnn/experiment/__init__.py,sha256=8gxrFS4bG7rg2kgrDEhemJgDbO-5KhBYc4owJZ-S--k,247
|
|
6
|
-
radnn/experiment/ml_experiment_config.py,sha256=MuFb4sY4kgCwxtJGmpOace4eTopy7mVLg3IDCpy6evI,8547
|
|
7
|
-
radnn/experiment/ml_experiment_env.py,sha256=I54WILYjCJf9P133dFgOMsXGxkftlU8DcmwXDnBW930,11151
|
|
8
|
-
radnn/plots/__init__.py,sha256=S3nGBBeCcaJl-RX03AWLpJXF8Ac6hnksrBPL40Nlbso,231
|
|
9
|
-
radnn/plots/plot_confusion_matrix.py,sha256=KWW5k7-gaLPXO4oQBnzwAwgI-rvPOmqw8uiZbFlmU5o,2625
|
|
10
|
-
radnn/plots/plot_learning_curve.py,sha256=tgx3vAm4rg5qScqxLQ2T82BqrRWjiYaIKgLQp5Y19cQ,3480
|
|
11
|
-
radnn/plots/plot_multi_scatter.py,sha256=-VgSwi7knYTNrdW86RGon0MZ_r0JDoiWP9F_gWIvTuo,4797
|
|
12
|
-
radnn/plots/plot_roc.py,sha256=iyOnhux2qFEs7W-szEOCg2VCkcnBEaOJxZkWWYuSnCQ,3493
|
|
13
|
-
radnn/plots/plot_voronoi_2d.py,sha256=Kq3ZaLhLaFHQAurhFKNy7NNuIm3RArCk_WxPT8Ftxek,4409
|
|
14
|
-
radnn/system/__init__.py,sha256=uJLg56njcLtaRO0Kyudat055DGxqWsLMvrn9P8_Rt6A,119
|
|
15
|
-
radnn/system/filestore.py,sha256=gNESaiJNwdrFbkzcbkSv-O4V8vrBagOSR90WcFueNsA,8977
|
|
16
|
-
radnn/system/filesystem.py,sha256=jt37OP9UgdJihjKLRWpMmERt1L0EdS-uPRrdIduH_BQ,5523
|
|
17
|
-
radnn/system/tee_logger.py,sha256=WcyIJiW851PP6Jk7SyCHj63BEt7HnWa5-GJtw1CjGHE,2629
|
|
18
|
-
radnn/system/files/__init__.py,sha256=u2oGHNKM362JwqrDgwmWTAiisL067h6H9uu-d0iTBks,169
|
|
19
|
-
radnn/system/files/csvfile.py,sha256=9uKqmCdqLAKomANejcSruHle1r3gVdByQb1I2otLcMs,2246
|
|
20
|
-
radnn/system/files/fileobject.py,sha256=qT9qzpH6YFSIzaKfILxhpaQ1P2o2tqRh9J5J2L_Kp8Y,3851
|
|
21
|
-
radnn/system/files/imgfile.py,sha256=HxvvittOUG1mmIp-Bg8vHnLPtRYD-N4nE86G0Rcys6M,2242
|
|
22
|
-
radnn/system/files/jsonfile.py,sha256=CX0Y6kPEaF_eEUb8ah-5Wvp35JRVYcpvOXg-DCxRnf0,3172
|
|
23
|
-
radnn/system/files/picklefile.py,sha256=0BFiYzr6BbGWMXyQCMjYHa_GlW8nEZ95CQtn7lpH254,5526
|
|
24
|
-
radnn/system/files/textfile.py,sha256=r7FZ1pdFGYxKrQ_kgkEK35GIqRU8k_MjdB0OrDd5m0o,2891
|
|
25
|
-
radnn/system/hosts/__init__.py,sha256=k2gkMJhe96Nf-V2ex6jZqmCRX9vA_K6gFB8J8Ii9ahc,261
|
|
26
|
-
radnn/system/hosts/colab_host.py,sha256=tAuLn9gTkX9cCSEmm7sG1JmCtNIgFlASwBt2olHUSe4,2434
|
|
27
|
-
radnn/system/hosts/linux_host.py,sha256=TZ-5JEZV0WNEB5trTbRWM0REhpuK5oYxoLodKKqhm9s,57
|
|
28
|
-
radnn/system/hosts/windows_host.py,sha256=u4IvgfFoKWdrFy0hYG__AoxfEJYHF4-ISNXTCJ5uN8I,2257
|
|
29
|
-
radnn-0.0.6.dist-info/LICENSE.txt,sha256=vYtt_GDvm_yW65X9YMBOOu8Vqc9SAvqH94TbfBc2ckU,1106
|
|
30
|
-
radnn-0.0.6.dist-info/METADATA,sha256=WHrzQA_iryCKZzR7KWbRAmIygXa0cWCTqlWYj5yhc10,2861
|
|
31
|
-
radnn-0.0.6.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
32
|
-
radnn-0.0.6.dist-info/top_level.txt,sha256=FKlLIm6gRAeZlRzs-HCBJAB1q9ELJ7MgaL-qqFuPo6M,6
|
|
33
|
-
radnn-0.0.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|