modelmakerlibrary 0.1.0__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.
- accelerator/__init__.py +28 -0
- accelerator/gpu.py +14 -0
- accelerator/npu.py +30 -0
- accelerator/tpu.py +24 -0
- modelMakerLibrary.py +68 -0
- modelmakerlibrary-0.1.0.dist-info/METADATA +86 -0
- modelmakerlibrary-0.1.0.dist-info/RECORD +17 -0
- modelmakerlibrary-0.1.0.dist-info/WHEEL +5 -0
- modelmakerlibrary-0.1.0.dist-info/licenses/LICENSE +202 -0
- modelmakerlibrary-0.1.0.dist-info/top_level.txt +3 -0
- src/NeuralNetwork_create.py +193 -0
- src/__init__.py +0 -0
- src/dataset_function.py +614 -0
- src/model.py +343 -0
- src/packages.py +17 -0
- src/tokenizers_function.py +109 -0
- src/train.py +36 -0
src/dataset_function.py
ADDED
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
from src.packages import torch, tsv, csv, json, pd, os, datasets, v2, DataLoader
|
|
2
|
+
|
|
3
|
+
class _FolderDataset(torch.utils.data.Dataset):
|
|
4
|
+
def __init__(self, path, model_type):
|
|
5
|
+
extensions = {
|
|
6
|
+
"text": {".txt"},
|
|
7
|
+
"video": {".mp4", ".mkv", ".avi", ".mov", ".webm", ".mpeg", ".mpg"},
|
|
8
|
+
"audio": {".wav", ".mp3", ".flac", ".ogg", ".m4a", ".aac"},
|
|
9
|
+
}[model_type]
|
|
10
|
+
self.path = path
|
|
11
|
+
self.model_type = model_type
|
|
12
|
+
self.classes = sorted(
|
|
13
|
+
name for name in os.listdir(path)
|
|
14
|
+
if os.path.isdir(os.path.join(path, name))
|
|
15
|
+
)
|
|
16
|
+
if not self.classes:
|
|
17
|
+
self.classes = [""]
|
|
18
|
+
self.class_to_idx = {name: index for index, name in enumerate(self.classes)}
|
|
19
|
+
self.samples = []
|
|
20
|
+
for class_name in self.classes:
|
|
21
|
+
class_path = os.path.join(path, class_name) if class_name else path
|
|
22
|
+
for root, _, files in os.walk(class_path):
|
|
23
|
+
for filename in files:
|
|
24
|
+
if os.path.splitext(filename)[1].lower() in extensions:
|
|
25
|
+
self.samples.append((os.path.join(root, filename), self.class_to_idx[class_name]))
|
|
26
|
+
self.samples.sort()
|
|
27
|
+
|
|
28
|
+
def __len__(self):
|
|
29
|
+
return len(self.samples)
|
|
30
|
+
|
|
31
|
+
def __getitem__(self, index):
|
|
32
|
+
path, label = self.samples[index]
|
|
33
|
+
if self.model_type == "text":
|
|
34
|
+
with open(path, encoding="utf-8") as file:
|
|
35
|
+
value = file.read()
|
|
36
|
+
else:
|
|
37
|
+
value = path
|
|
38
|
+
return value, torch.tensor(label)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class _TextDataset(torch.utils.data.Dataset):
|
|
42
|
+
def __init__(self, dataset_path):
|
|
43
|
+
supported_extensions = {".txt", ".json", ".csv", ".tsv"}
|
|
44
|
+
if os.path.isfile(dataset_path):
|
|
45
|
+
paths = [dataset_path]
|
|
46
|
+
root = os.path.dirname(dataset_path)
|
|
47
|
+
else:
|
|
48
|
+
root = dataset_path
|
|
49
|
+
paths = sorted(
|
|
50
|
+
os.path.join(directory, filename)
|
|
51
|
+
for directory, _, filenames in os.walk(root)
|
|
52
|
+
for filename in filenames
|
|
53
|
+
if os.path.splitext(filename)[1].lower() in supported_extensions
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
self.samples = []
|
|
57
|
+
self.classes = []
|
|
58
|
+
class_indices = {}
|
|
59
|
+
empty_files = []
|
|
60
|
+
for path in paths:
|
|
61
|
+
extension = os.path.splitext(path)[1].lower()
|
|
62
|
+
relative = os.path.relpath(path, root)
|
|
63
|
+
parent = os.path.dirname(relative)
|
|
64
|
+
label = parent.split(os.sep, 1)[0] if parent else ""
|
|
65
|
+
|
|
66
|
+
if os.path.getsize(path) == 0:
|
|
67
|
+
empty_files.append(path)
|
|
68
|
+
continue
|
|
69
|
+
if extension == ".txt":
|
|
70
|
+
with open(path, encoding="utf-8") as file:
|
|
71
|
+
text = file.read()
|
|
72
|
+
records = [(text, label)] if text.strip() else []
|
|
73
|
+
elif extension == ".json":
|
|
74
|
+
with open(path, encoding="utf-8") as file:
|
|
75
|
+
data = json.load(file)
|
|
76
|
+
if isinstance(data, dict):
|
|
77
|
+
data = data.get("data", [data])
|
|
78
|
+
if not isinstance(data, list):
|
|
79
|
+
raise ValueError(f"Expected a JSON object or list of text records in '{path}'.")
|
|
80
|
+
records = [
|
|
81
|
+
(item["text"], item.get("label", label))
|
|
82
|
+
for item in data
|
|
83
|
+
if isinstance(item, dict) and isinstance(item.get("text"), str) and item["text"].strip()
|
|
84
|
+
]
|
|
85
|
+
else:
|
|
86
|
+
with open(path, encoding="utf-8", newline="") as file:
|
|
87
|
+
reader = csv.DictReader(file, delimiter="\t" if extension == ".tsv" else ",")
|
|
88
|
+
if not reader.fieldnames or "text" not in reader.fieldnames:
|
|
89
|
+
raise ValueError(f"Expected a 'text' column in '{path}'.")
|
|
90
|
+
records = [
|
|
91
|
+
(row["text"], row.get("label", label))
|
|
92
|
+
for row in reader
|
|
93
|
+
if row.get("text") and row["text"].strip()
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
for text, record_label in records:
|
|
97
|
+
if record_label not in class_indices:
|
|
98
|
+
class_indices[record_label] = len(self.classes)
|
|
99
|
+
self.classes.append(record_label)
|
|
100
|
+
self.samples.append((text, class_indices[record_label]))
|
|
101
|
+
if not self.samples:
|
|
102
|
+
if empty_files:
|
|
103
|
+
details = ", ".join(f"'{path}'" for path in empty_files[:5])
|
|
104
|
+
raise ValueError(f"No non-empty text records found. Empty text file(s): {details}. Add text to the file(s) or use a dataset file containing text records.")
|
|
105
|
+
raise ValueError(f"No supported text files found under '{os.path.abspath(dataset_path)}'.")
|
|
106
|
+
|
|
107
|
+
def __len__(self):
|
|
108
|
+
return len(self.samples)
|
|
109
|
+
|
|
110
|
+
def __getitem__(self, index):
|
|
111
|
+
text, label = self.samples[index]
|
|
112
|
+
return text, torch.tensor(label)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
# Initialize the dataset by checking if the dataset path exists and replacing the dataset name accordingly
|
|
116
|
+
def init_dataset(dataset_name, dataset_path):
|
|
117
|
+
dataset_path = os.fspath(dataset_path)
|
|
118
|
+
print("Initialized dataset with name '{}' and path '{}'.".format(dataset_name, os.path.abspath(dataset_path)))
|
|
119
|
+
return dataset_name, dataset_path
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def load_dataset(dataset_path, model_type="text"):
|
|
124
|
+
"""Load a file or folder dataset for use with split_dataset or data_loader."""
|
|
125
|
+
if dataset_path is None or not os.path.exists(dataset_path):
|
|
126
|
+
raise ValueError(f"Dataset path does not exist: {dataset_path!r}.")
|
|
127
|
+
if model_type == "image":
|
|
128
|
+
if not os.path.isdir(dataset_path):
|
|
129
|
+
raise ValueError("Image datasets must be directories organized in class folders.")
|
|
130
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
131
|
+
elif model_type == "text":
|
|
132
|
+
dataset = _TextDataset(os.fspath(dataset_path))
|
|
133
|
+
elif model_type in {"video", "audio"}:
|
|
134
|
+
if not os.path.isdir(dataset_path):
|
|
135
|
+
raise ValueError(f"{model_type.capitalize()} datasets must be directories.")
|
|
136
|
+
dataset = _FolderDataset(dataset_path, model_type)
|
|
137
|
+
else:
|
|
138
|
+
raise ValueError("Model type must be one of: image, text, video, audio.")
|
|
139
|
+
if len(dataset) == 0:
|
|
140
|
+
raise ValueError(f"No {model_type} dataset files found under '{os.path.abspath(dataset_path)}'.")
|
|
141
|
+
print("Loaded dataset with {} samples from '{}'.".format(len(dataset), os.path.abspath(dataset_path)))
|
|
142
|
+
return dataset
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
# Split the dataset into 2 parts - training and testing datasets
|
|
147
|
+
def split_dataset(dataset, train_ratio):
|
|
148
|
+
if dataset is None:
|
|
149
|
+
raise ValueError("Dataset is None. Please provide a valid dataset.")
|
|
150
|
+
if isinstance(train_ratio, bool) or not isinstance(train_ratio, (int, float)) or not 2 <= train_ratio <= 98:
|
|
151
|
+
raise ValueError("Train ratio must be between 2 and 98.")
|
|
152
|
+
dataset_size = len(dataset)
|
|
153
|
+
if dataset_size < 2:
|
|
154
|
+
raise ValueError("At least two dataset samples are required to create non-empty train and test splits.")
|
|
155
|
+
train_size = int(train_ratio / 100 * dataset_size)
|
|
156
|
+
test_size = dataset_size - train_size
|
|
157
|
+
train_dataset, test_dataset = torch.utils.data.random_split(dataset, [train_size, test_size])
|
|
158
|
+
print("Dataset split into {} training samples and {} testing samples.".format(len(train_dataset), len(test_dataset)))
|
|
159
|
+
return train_dataset, test_dataset
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def data_loader(dataset, batch_size, shuffle):
|
|
163
|
+
if dataset is None:
|
|
164
|
+
raise ValueError("Dataset is None. Please provide a valid dataset.")
|
|
165
|
+
if batch_size <= 0:
|
|
166
|
+
raise ValueError("Batch size must be greater than 0.")
|
|
167
|
+
if not isinstance(shuffle, bool):
|
|
168
|
+
raise ValueError("Shuffle must be a boolean value.")
|
|
169
|
+
data_loader = DataLoader(dataset, batch_size=batch_size, shuffle=shuffle)
|
|
170
|
+
print("Data loader created with batch size {} and shuffle setting {}.".format(batch_size, shuffle))
|
|
171
|
+
return data_loader
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def dataset_convert(dataset_path, out_path, convert_type, model_type):
|
|
175
|
+
if dataset_path is None or out_path is None or convert_type is None or model_type is None:
|
|
176
|
+
raise ValueError("Dataset path, output path, type, and model type must not be None.")
|
|
177
|
+
if not os.path.exists(dataset_path):
|
|
178
|
+
raise ValueError("Dataset path does not exist.")
|
|
179
|
+
if model_type not in {"image", "text", "video", "audio"}:
|
|
180
|
+
raise ValueError("Model type must be one of: image, text, video, audio.")
|
|
181
|
+
if convert_type not in ['json', 'csv', 'tsv', 'xml', 'parquet', 'orc', 'feather', 'hdf5', 'pickle']:
|
|
182
|
+
raise ValueError("Convert type must be one of the following: 'json', 'csv', 'tsv', 'xml', 'parquet', 'orc', 'feather', 'hdf5', 'pickle'.")
|
|
183
|
+
output_parent = os.path.dirname(os.path.abspath(os.fspath(out_path)))
|
|
184
|
+
os.makedirs(output_parent, exist_ok=True)
|
|
185
|
+
if model_type == "image":
|
|
186
|
+
if convert_type == 'json':
|
|
187
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
188
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
189
|
+
data_list = []
|
|
190
|
+
for images, labels in data_loader:
|
|
191
|
+
for i in range(len(images)):
|
|
192
|
+
image = images[i].numpy().tolist()
|
|
193
|
+
label = labels[i].item()
|
|
194
|
+
data_list.append({'image': image, 'label': label})
|
|
195
|
+
with open(out_path, 'w') as f:
|
|
196
|
+
json.dump(data_list, f)
|
|
197
|
+
|
|
198
|
+
elif convert_type == 'csv':
|
|
199
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
200
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
201
|
+
with open(out_path, 'w', newline='') as f:
|
|
202
|
+
writer = csv.writer(f)
|
|
203
|
+
writer.writerow(['image', 'label'])
|
|
204
|
+
for images, labels in data_loader:
|
|
205
|
+
for i in range(len(images)):
|
|
206
|
+
image = images[i].numpy().flatten().tolist()
|
|
207
|
+
label = labels[i].item()
|
|
208
|
+
writer.writerow([image, label])
|
|
209
|
+
f.flush()
|
|
210
|
+
elif convert_type == 'tsv':
|
|
211
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
212
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
213
|
+
with open(out_path, 'w', newline='') as f:
|
|
214
|
+
writer = csv.writer(f, delimiter='\t')
|
|
215
|
+
writer.writerow(['image', 'label'])
|
|
216
|
+
for images, labels in data_loader:
|
|
217
|
+
for i in range(len(images)):
|
|
218
|
+
image = images[i].numpy().flatten().tolist()
|
|
219
|
+
label = labels[i].item()
|
|
220
|
+
writer.writerow([image, label])
|
|
221
|
+
f.flush()
|
|
222
|
+
elif convert_type == 'xml':
|
|
223
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
224
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
225
|
+
with open(out_path, 'w') as f:
|
|
226
|
+
f.write('<dataset>\n')
|
|
227
|
+
for images, labels in data_loader:
|
|
228
|
+
for i in range(len(images)):
|
|
229
|
+
image = images[i].numpy().flatten().tolist()
|
|
230
|
+
label = labels[i].item()
|
|
231
|
+
f.write(f' <data>\n <image>{image}</image>\n <label>{label}</label>\n </data>\n')
|
|
232
|
+
f.write('</dataset>')
|
|
233
|
+
elif convert_type == 'parquet':
|
|
234
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
235
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
236
|
+
data_list = []
|
|
237
|
+
for images, labels in data_loader:
|
|
238
|
+
for i in range(len(images)):
|
|
239
|
+
image = images[i].numpy().flatten().tolist()
|
|
240
|
+
label = labels[i].item()
|
|
241
|
+
data_list.append({'image': image, 'label': label})
|
|
242
|
+
df = pd.DataFrame(data_list)
|
|
243
|
+
df.to_parquet(out_path, index=False)
|
|
244
|
+
|
|
245
|
+
elif convert_type == 'orc':
|
|
246
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
247
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
248
|
+
data_list = []
|
|
249
|
+
for images, labels in data_loader:
|
|
250
|
+
for i in range(len(images)):
|
|
251
|
+
image = images[i].numpy().flatten().tolist()
|
|
252
|
+
label = labels[i].item()
|
|
253
|
+
data_list.append({'image': image, 'label': label})
|
|
254
|
+
df = pd.DataFrame(data_list)
|
|
255
|
+
df.to_orc(out_path, index=False)
|
|
256
|
+
|
|
257
|
+
elif convert_type == 'feather':
|
|
258
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
259
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
260
|
+
data_list = []
|
|
261
|
+
for images, labels in data_loader:
|
|
262
|
+
for i in range(len(images)):
|
|
263
|
+
image = images[i].numpy().flatten().tolist()
|
|
264
|
+
label = labels[i].item()
|
|
265
|
+
data_list.append({'image': image, 'label': label})
|
|
266
|
+
df = pd.DataFrame(data_list)
|
|
267
|
+
df.to_feather(out_path)
|
|
268
|
+
|
|
269
|
+
elif convert_type == 'hdf5':
|
|
270
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
271
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
272
|
+
data_list = []
|
|
273
|
+
for images, labels in data_loader:
|
|
274
|
+
for i in range(len(images)):
|
|
275
|
+
image = images[i].numpy().flatten().tolist()
|
|
276
|
+
label = labels[i].item()
|
|
277
|
+
data_list.append({'image': image, 'label': label})
|
|
278
|
+
df = pd.DataFrame(data_list)
|
|
279
|
+
df.to_hdf(out_path, key='data', mode='w')
|
|
280
|
+
|
|
281
|
+
elif convert_type == 'pickle':
|
|
282
|
+
dataset = datasets.ImageFolder(dataset_path, transform=v2.ToTensor())
|
|
283
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
284
|
+
data_list = []
|
|
285
|
+
for images, labels in data_loader:
|
|
286
|
+
for i in range(len(images)):
|
|
287
|
+
image = images[i].numpy().flatten().tolist()
|
|
288
|
+
label = labels[i].item()
|
|
289
|
+
data_list.append({'image': image, 'label': label})
|
|
290
|
+
df = pd.DataFrame(data_list)
|
|
291
|
+
df.to_pickle(out_path)
|
|
292
|
+
|
|
293
|
+
if model_type == "text":
|
|
294
|
+
if convert_type == 'json':
|
|
295
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
296
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
297
|
+
data_list = []
|
|
298
|
+
for texts, labels in data_loader:
|
|
299
|
+
for i in range(len(texts)):
|
|
300
|
+
text = texts[i]
|
|
301
|
+
label = labels[i].item()
|
|
302
|
+
data_list.append({'text': text, 'label': label})
|
|
303
|
+
with open(out_path, 'w') as f:
|
|
304
|
+
json.dump(data_list, f)
|
|
305
|
+
elif convert_type == 'csv':
|
|
306
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
307
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
308
|
+
with open(out_path, 'w', newline='') as f:
|
|
309
|
+
writer = csv.writer(f)
|
|
310
|
+
writer.writerow(['text', 'label'])
|
|
311
|
+
for texts, labels in data_loader:
|
|
312
|
+
for i in range(len(texts)):
|
|
313
|
+
text = texts[i]
|
|
314
|
+
label = labels[i].item()
|
|
315
|
+
writer.writerow([text, label])
|
|
316
|
+
elif convert_type == 'tsv':
|
|
317
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
318
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
319
|
+
with open(out_path, 'w', newline='') as f:
|
|
320
|
+
writer = csv.writer(f, delimiter='\t')
|
|
321
|
+
writer.writerow(['text', 'label'])
|
|
322
|
+
for texts, labels in data_loader:
|
|
323
|
+
for i in range(len(texts)):
|
|
324
|
+
text = texts[i]
|
|
325
|
+
label = labels[i].item()
|
|
326
|
+
writer.writerow([text, label])
|
|
327
|
+
elif convert_type == 'xml':
|
|
328
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
329
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
330
|
+
with open(out_path, 'w') as f:
|
|
331
|
+
f.write('<dataset>\n')
|
|
332
|
+
for texts, labels in data_loader:
|
|
333
|
+
for i in range(len(texts)):
|
|
334
|
+
text = texts[i]
|
|
335
|
+
label = labels[i].item()
|
|
336
|
+
f.write(f' <data>\n <text>{text}</text>\n <label>{label}</label>\n </data>\n')
|
|
337
|
+
f.write('</dataset>')
|
|
338
|
+
elif convert_type == 'parquet':
|
|
339
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
340
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
341
|
+
data_list = []
|
|
342
|
+
for texts, labels in data_loader:
|
|
343
|
+
for i in range(len(texts)):
|
|
344
|
+
text = texts[i]
|
|
345
|
+
label = labels[i].item()
|
|
346
|
+
data_list.append({'text': text, 'label': label})
|
|
347
|
+
df = pd.DataFrame(data_list)
|
|
348
|
+
df.to_parquet(out_path, index=False)
|
|
349
|
+
elif convert_type == 'orc':
|
|
350
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
351
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
352
|
+
data_list = []
|
|
353
|
+
for texts, labels in data_loader:
|
|
354
|
+
for i in range(len(texts)):
|
|
355
|
+
text = texts[i]
|
|
356
|
+
label = labels[i].item()
|
|
357
|
+
data_list.append({'text': text, 'label': label})
|
|
358
|
+
df = pd.DataFrame(data_list)
|
|
359
|
+
df.to_orc(out_path, index=False)
|
|
360
|
+
elif convert_type == 'feather':
|
|
361
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
362
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
363
|
+
data_list = []
|
|
364
|
+
for texts, labels in data_loader:
|
|
365
|
+
for i in range(len(texts)):
|
|
366
|
+
text = texts[i]
|
|
367
|
+
label = labels[i].item()
|
|
368
|
+
data_list.append({'text': text, 'label': label})
|
|
369
|
+
df = pd.DataFrame(data_list)
|
|
370
|
+
df.to_feather(out_path)
|
|
371
|
+
elif convert_type == 'hdf5':
|
|
372
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
373
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
374
|
+
data_list = []
|
|
375
|
+
for texts, labels in data_loader:
|
|
376
|
+
for i in range(len(texts)):
|
|
377
|
+
text = texts[i]
|
|
378
|
+
label = labels[i].item()
|
|
379
|
+
data_list.append({'text': text, 'label': label})
|
|
380
|
+
df = pd.DataFrame(data_list)
|
|
381
|
+
df.to_hdf(out_path, key='data', mode='w')
|
|
382
|
+
elif convert_type == 'pickle':
|
|
383
|
+
dataset = _FolderDataset(dataset_path, "text")
|
|
384
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
385
|
+
data_list = []
|
|
386
|
+
for texts, labels in data_loader:
|
|
387
|
+
for i in range(len(texts)):
|
|
388
|
+
text = texts[i]
|
|
389
|
+
label = labels[i].item()
|
|
390
|
+
data_list.append({'text': text, 'label': label})
|
|
391
|
+
df = pd.DataFrame(data_list)
|
|
392
|
+
df.to_pickle(out_path)
|
|
393
|
+
|
|
394
|
+
if model_type == "video":
|
|
395
|
+
if convert_type == 'json':
|
|
396
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
397
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
398
|
+
data_list = []
|
|
399
|
+
for videos, labels in data_loader:
|
|
400
|
+
for i in range(len(videos)):
|
|
401
|
+
video = videos[i]
|
|
402
|
+
label = labels[i].item()
|
|
403
|
+
data_list.append({'video': video, 'label': label})
|
|
404
|
+
with open(out_path, 'w') as f:
|
|
405
|
+
json.dump(data_list, f)
|
|
406
|
+
|
|
407
|
+
elif convert_type == 'csv':
|
|
408
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
409
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
410
|
+
with open(out_path, 'w', newline='') as f:
|
|
411
|
+
writer = csv.writer(f)
|
|
412
|
+
writer.writerow(['video', 'label'])
|
|
413
|
+
for videos, labels in data_loader:
|
|
414
|
+
for i in range(len(videos)):
|
|
415
|
+
video = videos[i]
|
|
416
|
+
label = labels[i].item()
|
|
417
|
+
writer.writerow([video, label])
|
|
418
|
+
elif convert_type == 'tsv':
|
|
419
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
420
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
421
|
+
with open(out_path, 'w', newline='') as f:
|
|
422
|
+
writer = csv.writer(f, delimiter='\t')
|
|
423
|
+
writer.writerow(['video', 'label'])
|
|
424
|
+
for videos, labels in data_loader:
|
|
425
|
+
for i in range(len(videos)):
|
|
426
|
+
video = videos[i]
|
|
427
|
+
label = labels[i].item()
|
|
428
|
+
writer.writerow([video, label])
|
|
429
|
+
|
|
430
|
+
elif convert_type == 'xml':
|
|
431
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
432
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
433
|
+
with open(out_path, 'w') as f:
|
|
434
|
+
f.write('<dataset>\n')
|
|
435
|
+
for videos, labels in data_loader:
|
|
436
|
+
for i in range(len(videos)):
|
|
437
|
+
video = videos[i]
|
|
438
|
+
label = labels[i].item()
|
|
439
|
+
f.write(f' <data>\n <video>{video}</video>\n <label>{label}</label>\n </data>\n')
|
|
440
|
+
f.write('</dataset>')
|
|
441
|
+
|
|
442
|
+
elif convert_type == 'parquet':
|
|
443
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
444
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
445
|
+
data_list = []
|
|
446
|
+
for videos, labels in data_loader:
|
|
447
|
+
for i in range(len(videos)):
|
|
448
|
+
video = videos[i]
|
|
449
|
+
label = labels[i].item()
|
|
450
|
+
data_list.append({'video': video, 'label': label})
|
|
451
|
+
df = pd.DataFrame(data_list)
|
|
452
|
+
df.to_parquet(out_path, index=False)
|
|
453
|
+
|
|
454
|
+
elif convert_type == 'orc':
|
|
455
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
456
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
457
|
+
data_list = []
|
|
458
|
+
for videos, labels in data_loader:
|
|
459
|
+
for i in range(len(videos)):
|
|
460
|
+
video = videos[i]
|
|
461
|
+
label = labels[i].item()
|
|
462
|
+
data_list.append({'video': video, 'label': label})
|
|
463
|
+
df = pd.DataFrame(data_list)
|
|
464
|
+
df.to_orc(out_path, index=False)
|
|
465
|
+
|
|
466
|
+
elif convert_type == 'feather':
|
|
467
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
468
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
469
|
+
data_list = []
|
|
470
|
+
for videos, labels in data_loader:
|
|
471
|
+
for i in range(len(videos)):
|
|
472
|
+
video = videos[i]
|
|
473
|
+
label = labels[i].item()
|
|
474
|
+
data_list.append({'video': video, 'label': label})
|
|
475
|
+
df = pd.DataFrame(data_list)
|
|
476
|
+
df.to_feather(out_path)
|
|
477
|
+
|
|
478
|
+
elif convert_type == 'hdf5':
|
|
479
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
480
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
481
|
+
data_list = []
|
|
482
|
+
for videos, labels in data_loader:
|
|
483
|
+
for i in range(len(videos)):
|
|
484
|
+
video = videos[i]
|
|
485
|
+
label = labels[i].item()
|
|
486
|
+
data_list.append({'video': video, 'label': label})
|
|
487
|
+
df = pd.DataFrame(data_list)
|
|
488
|
+
df.to_hdf(out_path, key='data', mode='w')
|
|
489
|
+
|
|
490
|
+
elif convert_type == 'pickle':
|
|
491
|
+
dataset = _FolderDataset(dataset_path, "video")
|
|
492
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
493
|
+
data_list = []
|
|
494
|
+
for videos, labels in data_loader:
|
|
495
|
+
for i in range(len(videos)):
|
|
496
|
+
video = videos[i]
|
|
497
|
+
label = labels[i].item()
|
|
498
|
+
data_list.append({'video': video, 'label': label})
|
|
499
|
+
df = pd.DataFrame(data_list)
|
|
500
|
+
df.to_pickle(out_path)
|
|
501
|
+
|
|
502
|
+
if model_type == "audio":
|
|
503
|
+
if convert_type == 'json':
|
|
504
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
505
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
506
|
+
data_list = []
|
|
507
|
+
for audios, labels in data_loader:
|
|
508
|
+
for i in range(len(audios)):
|
|
509
|
+
audio = audios[i]
|
|
510
|
+
label = labels[i].item()
|
|
511
|
+
data_list.append({'audio': audio, 'label': label})
|
|
512
|
+
with open(out_path, 'w') as f:
|
|
513
|
+
json.dump(data_list, f)
|
|
514
|
+
|
|
515
|
+
elif convert_type == 'csv':
|
|
516
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
517
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
518
|
+
with open(out_path, 'w', newline='') as f:
|
|
519
|
+
writer = csv.writer(f)
|
|
520
|
+
writer.writerow(['audio', 'label'])
|
|
521
|
+
for audios, labels in data_loader:
|
|
522
|
+
for i in range(len(audios)):
|
|
523
|
+
audio = audios[i]
|
|
524
|
+
label = labels[i].item()
|
|
525
|
+
writer.writerow([audio, label])
|
|
526
|
+
elif convert_type == 'tsv':
|
|
527
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
528
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
529
|
+
with open(out_path, 'w', newline='') as f:
|
|
530
|
+
writer = csv.writer(f, delimiter='\t')
|
|
531
|
+
writer.writerow(['audio', 'label'])
|
|
532
|
+
for audios, labels in data_loader:
|
|
533
|
+
for i in range(len(audios)):
|
|
534
|
+
audio = audios[i]
|
|
535
|
+
label = labels[i].item()
|
|
536
|
+
writer.writerow([audio, label])
|
|
537
|
+
elif convert_type == 'xml':
|
|
538
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
539
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
540
|
+
with open(out_path, 'w') as f:
|
|
541
|
+
f.write('<dataset>\n')
|
|
542
|
+
for audios, labels in data_loader:
|
|
543
|
+
for i in range(len(audios)):
|
|
544
|
+
audio = audios[i]
|
|
545
|
+
label = labels[i].item()
|
|
546
|
+
f.write(f' <data>\n <audio>{audio}</audio>\n <label>{label}</label>\n </data>\n')
|
|
547
|
+
f.write('</dataset>')
|
|
548
|
+
|
|
549
|
+
elif convert_type == 'parquet':
|
|
550
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
551
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
552
|
+
data_list = []
|
|
553
|
+
for audios, labels in data_loader:
|
|
554
|
+
for i in range(len(audios)):
|
|
555
|
+
audio = audios[i]
|
|
556
|
+
label = labels[i].item()
|
|
557
|
+
data_list.append({'audio': audio, 'label': label})
|
|
558
|
+
df = pd.DataFrame(data_list)
|
|
559
|
+
df.to_parquet(out_path, index=False)
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
elif convert_type == 'orc':
|
|
563
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
564
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
565
|
+
data_list = []
|
|
566
|
+
for audios, labels in data_loader:
|
|
567
|
+
for i in range(len(audios)):
|
|
568
|
+
audio = audios[i]
|
|
569
|
+
label = labels[i].item()
|
|
570
|
+
data_list.append({'audio': audio, 'label': label})
|
|
571
|
+
df = pd.DataFrame(data_list)
|
|
572
|
+
df.to_orc(out_path, index=False)
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
elif convert_type == 'feather':
|
|
576
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
577
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
578
|
+
data_list = []
|
|
579
|
+
for audios, labels in data_loader:
|
|
580
|
+
for i in range(len(audios)):
|
|
581
|
+
audio = audios[i]
|
|
582
|
+
label = labels[i].item()
|
|
583
|
+
data_list.append({'audio': audio, 'label': label})
|
|
584
|
+
df = pd.DataFrame(data_list)
|
|
585
|
+
df.to_feather(out_path)
|
|
586
|
+
|
|
587
|
+
elif convert_type == 'hdf5':
|
|
588
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
589
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
590
|
+
data_list = []
|
|
591
|
+
for audios, labels in data_loader:
|
|
592
|
+
for i in range(len(audios)):
|
|
593
|
+
audio = audios[i]
|
|
594
|
+
label = labels[i].item()
|
|
595
|
+
data_list.append({'audio': audio, 'label': label})
|
|
596
|
+
df = pd.DataFrame(data_list)
|
|
597
|
+
df.to_hdf(out_path, key='data', mode='w')
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
elif convert_type == 'pickle':
|
|
601
|
+
dataset = _FolderDataset(dataset_path, "audio")
|
|
602
|
+
data_loader = DataLoader(dataset, batch_size=1, shuffle=False)
|
|
603
|
+
data_list = []
|
|
604
|
+
for audios, labels in data_loader:
|
|
605
|
+
for i in range(len(audios)):
|
|
606
|
+
audio = audios[i]
|
|
607
|
+
label = labels[i].item()
|
|
608
|
+
data_list.append({'audio': audio, 'label': label})
|
|
609
|
+
df = pd.DataFrame(data_list)
|
|
610
|
+
df.to_pickle(out_path)
|
|
611
|
+
|
|
612
|
+
output_path = os.path.abspath(os.fspath(out_path))
|
|
613
|
+
print(f"Converted {model_type} dataset to '{output_path}'.")
|
|
614
|
+
return output_path
|