mattricesound commited on
Commit
af0842b
·
1 Parent(s): 634cc2a

Remove notebooks

Browse files
notebooks/Experiments.ipynb DELETED
The diff for this file is too large to render. See raw diff
 
notebooks/diffusion_test.ipynb DELETED
The diff for this file is too large to render. See raw diff
 
notebooks/egfx.ipynb DELETED
@@ -1,603 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 28,
6
- "metadata": {},
7
- "outputs": [],
8
- "source": [
9
- "import mirdata\n",
10
- "from torch.utils.data import Dataset, DataLoader\n",
11
- "import torchaudio\n",
12
- "import torchaudio.transforms as T\n",
13
- "import torch.nn.functional as F\n",
14
- "from pathlib import Path\n",
15
- "from typing import List\n",
16
- "import torch\n"
17
- ]
18
- },
19
- {
20
- "cell_type": "code",
21
- "execution_count": 24,
22
- "metadata": {},
23
- "outputs": [],
24
- "source": [
25
- "effect_type = [\"Phaser\"]\n",
26
- "root=Path(\"./data/egfx\")\n",
27
- "wet_files = []\n",
28
- "dry_files = []\n",
29
- "labels = []"
30
- ]
31
- },
32
- {
33
- "cell_type": "code",
34
- "execution_count": 18,
35
- "metadata": {},
36
- "outputs": [],
37
- "source": [
38
- "for i, effect in enumerate(effect_type):\n",
39
- " for pickup in Path(root / effect).iterdir():\n",
40
- " wet_files += list(pickup.glob(\"*.wav\"))\n",
41
- " dry_files += list(root.glob(f\"Clean/{pickup.name}/**/*.wav\"))\n",
42
- " \n",
43
- " labels += [i] * len(wet_files)\n"
44
- ]
45
- },
46
- {
47
- "cell_type": "code",
48
- "execution_count": 26,
49
- "metadata": {},
50
- "outputs": [],
51
- "source": [
52
- "LENGTH = 2**18 # 12 seconds\n",
53
- "ORIG_SR = 48000"
54
- ]
55
- },
56
- {
57
- "cell_type": "code",
58
- "execution_count": 27,
59
- "metadata": {},
60
- "outputs": [],
61
- "source": [
62
- "class GuitarFXDataset(Dataset):\n",
63
- " def __init__(\n",
64
- " self,\n",
65
- " root: str,\n",
66
- " sample_rate: int,\n",
67
- " length: int = LENGTH,\n",
68
- " effect_type: List[str] = None,\n",
69
- " ):\n",
70
- " self.length = length\n",
71
- " self.wet_files = []\n",
72
- " self.dry_files = []\n",
73
- " self.labels = []\n",
74
- " self.root = Path(root)\n",
75
- " if effect_type is None:\n",
76
- " effect_type = [\n",
77
- " d.name for d in self.root.iterdir() if d.is_dir() and d != \"Clean\"\n",
78
- " ]\n",
79
- " for i, effect in enumerate(effect_type):\n",
80
- " for pickup in Path(self.root / effect).iterdir():\n",
81
- " self.wet_files += sorted(list(pickup.glob(\"*.wav\")))\n",
82
- " self.dry_files += sorted(\n",
83
- " list(self.root.glob(f\"Clean/{pickup.name}/**/*.wav\"))\n",
84
- " )\n",
85
- " self.labels += [i] * len(self.wet_files)\n",
86
- " print(\n",
87
- " f\"Found {len(self.wet_files)} wet files and {len(self.dry_files)} dry files\"\n",
88
- " )\n",
89
- " self.resampler = T.Resample(ORIG_SR, sample_rate)\n",
90
- "\n",
91
- " def __len__(self):\n",
92
- " return len(self.dry_files)\n",
93
- "\n",
94
- " def __getitem__(self, idx):\n",
95
- " print(idx, self.wet_files[idx], self.dry_files[idx])\n",
96
- " x, sr = torchaudio.load(self.wet_files[idx])\n",
97
- " y, sr = torchaudio.load(self.dry_files[idx])\n",
98
- " effect_label = self.labels[idx]\n",
99
- "\n",
100
- " resampled_x = self.resampler(x)\n",
101
- " resampled_y = self.resampler(y)\n",
102
- " # Pad or crop to length\n",
103
- " if resampled_x.shape[-1] < self.length:\n",
104
- " resampled_x = F.pad(resampled_x, (0, self.length - resampled_x.shape[1]))\n",
105
- " elif resampled_x.shape[-1] > self.length:\n",
106
- " resampled_x = resampled_x[:, : self.length]\n",
107
- " if resampled_y.shape[-1] < self.length:\n",
108
- " resampled_y = F.pad(resampled_y, (0, self.length - resampled_y.shape[1]))\n",
109
- " elif resampled_y.shape[-1] > self.length:\n",
110
- " resampled_y = resampled_y[:, : self.length]\n",
111
- " return (resampled_x, resampled_y, effect_label)\n"
112
- ]
113
- },
114
- {
115
- "cell_type": "code",
116
- "execution_count": 29,
117
- "metadata": {},
118
- "outputs": [],
119
- "source": [
120
- "\n",
121
- "SAMPLE_RATE = 22050\n",
122
- "TRAIN_SPLIT = 0.8"
123
- ]
124
- },
125
- {
126
- "cell_type": "code",
127
- "execution_count": 32,
128
- "metadata": {},
129
- "outputs": [
130
- {
131
- "name": "stdout",
132
- "output_type": "stream",
133
- "text": [
134
- "Found 690 wet files and 690 dry files\n"
135
- ]
136
- }
137
- ],
138
- "source": [
139
- "guitfx = GuitarFXDataset(\n",
140
- " root=\"./data/egfx\",\n",
141
- " sample_rate=SAMPLE_RATE,\n",
142
- " effect_type=[\"Phaser\"],\n",
143
- ")"
144
- ]
145
- },
146
- {
147
- "cell_type": "code",
148
- "execution_count": 33,
149
- "metadata": {},
150
- "outputs": [],
151
- "source": [
152
- "train_size = int(TRAIN_SPLIT * len(guitfx))\n",
153
- "val_size = len(guitfx) - train_size\n",
154
- "train_dataset, val_dataset = torch.utils.data.random_split(\n",
155
- " guitfx, [train_size, val_size]\n",
156
- ")\n",
157
- "val = DataLoader(val_dataset, batch_size=2)\n"
158
- ]
159
- },
160
- {
161
- "cell_type": "markdown",
162
- "metadata": {},
163
- "source": []
164
- },
165
- {
166
- "cell_type": "code",
167
- "execution_count": 37,
168
- "metadata": {},
169
- "outputs": [
170
- {
171
- "name": "stdout",
172
- "output_type": "stream",
173
- "text": [
174
- "[560, 150, 218, 404, 292, 509, 10, 315, 554, 6, 169, 116, 601, 309, 280, 510, 559, 197, 613, 424, 500, 460, 273, 467, 190, 534, 642, 112, 635, 283, 217, 7, 679, 526, 73, 102, 134, 263, 449, 142, 215, 154, 181, 378, 425, 278, 208, 58, 323, 210, 388, 363, 249, 57, 479, 79, 508, 429, 237, 390, 435, 62, 254, 528, 614, 311, 680, 61, 374, 668, 373, 594, 9, 677, 188, 2, 91, 633, 549, 257, 170, 183, 465, 502, 244, 664, 632, 356, 581, 145, 81, 85, 232, 250, 571, 118, 319, 308, 536, 592, 607, 566, 609, 302, 576, 354, 35, 493, 593, 437, 636, 495, 506, 153, 638, 164, 229, 456, 34, 518, 381, 322, 304, 565, 52, 499, 66, 39, 220, 38, 111, 454, 267, 98, 563, 585, 121, 391]\n"
175
- ]
176
- }
177
- ],
178
- "source": [
179
- "print(val_dataset.indices)"
180
- ]
181
- },
182
- {
183
- "cell_type": "code",
184
- "execution_count": 38,
185
- "metadata": {},
186
- "outputs": [
187
- {
188
- "name": "stdout",
189
- "output_type": "stream",
190
- "text": [
191
- "[tensor([[[0.0482, 0.0772, 0.0682, ..., 0.0000, 0.0000, 0.0000]],\n",
192
- "\n",
193
- " [[0.0092, 0.0138, 0.0139, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0007, -0.0009, 0.0074, ..., 0.0000, 0.0000, 0.0000]],\n",
194
- "\n",
195
- " [[ 0.0007, 0.0036, 0.0064, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
196
- "[tensor([[[0.0027, 0.0050, 0.0063, ..., 0.0000, 0.0000, 0.0000]],\n",
197
- "\n",
198
- " [[0.0043, 0.0077, 0.0084, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0007, 0.0023, 0.0026, ..., 0.0000, 0.0000, 0.0000]],\n",
199
- "\n",
200
- " [[0.0005, 0.0023, 0.0034, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
201
- "[tensor([[[0.0008, 0.0017, 0.0056, ..., 0.0000, 0.0000, 0.0000]],\n",
202
- "\n",
203
- " [[0.0008, 0.0016, 0.0016, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0007, 0.0022, 0.0028, ..., 0.0000, 0.0000, 0.0000]],\n",
204
- "\n",
205
- " [[0.0003, 0.0009, 0.0011, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
206
- "[tensor([[[ 0.0071, 0.0107, 0.0078, ..., 0.0000, 0.0000, 0.0000]],\n",
207
- "\n",
208
- " [[ 0.0043, 0.0011, -0.0055, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0004, -0.0014, -0.0022, ..., 0.0000, 0.0000, 0.0000]],\n",
209
- "\n",
210
- " [[ 0.0013, 0.0045, 0.0072, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
211
- "[tensor([[[0.0022, 0.0036, 0.0059, ..., 0.0000, 0.0000, 0.0000]],\n",
212
- "\n",
213
- " [[0.0431, 0.0687, 0.0638, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0009, 0.0030, 0.0047, ..., 0.0000, 0.0000, 0.0000]],\n",
214
- "\n",
215
- " [[-0.0001, -0.0012, -0.0022, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
216
- "[tensor([[[ 0.0053, 0.0082, 0.0058, ..., 0.0000, 0.0000, 0.0000]],\n",
217
- "\n",
218
- " [[-0.0035, -0.0036, -0.0021, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0003, 0.0019, 0.0038, ..., 0.0000, 0.0000, 0.0000]],\n",
219
- "\n",
220
- " [[-0.0003, -0.0029, -0.0058, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
221
- "[tensor([[[ 0.0069, 0.0106, 0.0078, ..., 0.0000, 0.0000, 0.0000]],\n",
222
- "\n",
223
- " [[-0.0035, -0.0040, -0.0034, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0003, 0.0010, 0.0034, ..., 0.0000, 0.0000, 0.0000]],\n",
224
- "\n",
225
- " [[-0.0020, -0.0076, -0.0117, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
226
- "[tensor([[[ 0.0044, 0.0086, 0.0079, ..., 0.0000, 0.0000, 0.0000]],\n",
227
- "\n",
228
- " [[-0.0016, -0.0022, -0.0014, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0006, -0.0020, -0.0020, ..., 0.0000, 0.0000, 0.0000]],\n",
229
- "\n",
230
- " [[-0.0002, -0.0009, -0.0017, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
231
- "[tensor([[[0.0027, 0.0027, 0.0002, ..., 0.0000, 0.0000, 0.0000]],\n",
232
- "\n",
233
- " [[0.0033, 0.0048, 0.0028, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0008, 0.0035, 0.0059, ..., 0.0000, 0.0000, 0.0000]],\n",
234
- "\n",
235
- " [[0.0002, 0.0006, 0.0011, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
236
- "[tensor([[[ 0.0056, 0.0341, 0.0562, ..., 0.0000, 0.0000, 0.0000]],\n",
237
- "\n",
238
- " [[-0.0009, -0.0013, -0.0002, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0021, 0.0092, 0.0056, ..., 0.0000, 0.0000, 0.0000]],\n",
239
- "\n",
240
- " [[0.0007, 0.0021, 0.0023, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
241
- "[tensor([[[ 0.0014, 0.0024, 0.0030, ..., 0.0000, 0.0000, 0.0000]],\n",
242
- "\n",
243
- " [[-0.1450, -0.1390, -0.0209, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 2.6921e-04, 1.6453e-03, 2.7682e-03, ..., 0.0000e+00,\n",
244
- " 0.0000e+00, 0.0000e+00]],\n",
245
- "\n",
246
- " [[-3.2024e-02, -1.9613e-01, -4.0412e-01, ..., 0.0000e+00,\n",
247
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
248
- "[tensor([[[-0.0059, -0.0064, -0.0022, ..., 0.0000, 0.0000, 0.0000]],\n",
249
- "\n",
250
- " [[-0.0039, -0.0046, -0.0021, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0002, -0.0021, -0.0037, ..., 0.0000, 0.0000, 0.0000]],\n",
251
- "\n",
252
- " [[-0.0004, -0.0017, -0.0031, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
253
- "[tensor([[[ 0.0086, 0.0122, 0.0111, ..., 0.0000, 0.0000, 0.0000]],\n",
254
- "\n",
255
- " [[-0.0114, -0.0113, -0.0039, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0004, 0.0043, 0.0085, ..., 0.0000, 0.0000, 0.0000]],\n",
256
- "\n",
257
- " [[-0.0010, -0.0059, -0.0108, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
258
- "[tensor([[[0.0069, 0.0105, 0.0097, ..., 0.0000, 0.0000, 0.0000]],\n",
259
- "\n",
260
- " [[0.0069, 0.0100, 0.0067, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[1.4215e-04, 2.1199e-03, 5.7695e-03, ..., 0.0000e+00,\n",
261
- " 0.0000e+00, 0.0000e+00]],\n",
262
- "\n",
263
- " [[9.1938e-05, 1.1531e-03, 2.8006e-03, ..., 0.0000e+00,\n",
264
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
265
- "[tensor([[[0.0012, 0.0038, 0.0057, ..., 0.0000, 0.0000, 0.0000]],\n",
266
- "\n",
267
- " [[0.0035, 0.0058, 0.0088, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0004, 0.0013, 0.0014, ..., 0.0000, 0.0000, 0.0000]],\n",
268
- "\n",
269
- " [[0.0003, 0.0022, 0.0044, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
270
- "[tensor([[[ 0.0011, 0.0023, 0.0030, ..., 0.0000, 0.0000, 0.0000]],\n",
271
- "\n",
272
- " [[-0.0033, -0.0038, -0.0007, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0003, 0.0023, 0.0041, ..., 0.0000, 0.0000, 0.0000]],\n",
273
- "\n",
274
- " [[0.0005, 0.0038, 0.0079, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
275
- "[tensor([[[ 0.0020, -0.0012, -0.0042, ..., 0.0000, 0.0000, 0.0000]],\n",
276
- "\n",
277
- " [[ 0.0035, 0.0056, 0.0063, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0013, 0.0048, 0.0063, ..., 0.0000, 0.0000, 0.0000]],\n",
278
- "\n",
279
- " [[0.0005, 0.0026, 0.0049, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
280
- "[tensor([[[-0.0033, -0.0054, -0.0052, ..., 0.0000, 0.0000, 0.0000]],\n",
281
- "\n",
282
- " [[ 0.0031, 0.0057, 0.0069, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0021, 0.0064, 0.0081, ..., 0.0000, 0.0000, 0.0000]],\n",
283
- "\n",
284
- " [[0.0004, 0.0015, 0.0021, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
285
- "[tensor([[[-0.0023, -0.0059, -0.0074, ..., 0.0000, 0.0000, 0.0000]],\n",
286
- "\n",
287
- " [[ 0.0087, 0.0125, 0.0101, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0004, -0.0011, -0.0011, ..., 0.0000, 0.0000, 0.0000]],\n",
288
- "\n",
289
- " [[ 0.0019, 0.0071, 0.0113, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
290
- "[tensor([[[ 0.0046, 0.0039, -0.0007, ..., 0.0000, 0.0000, 0.0000]],\n",
291
- "\n",
292
- " [[ 0.0038, 0.0021, 0.0117, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0003, 0.0024, 0.0042, ..., 0.0000, 0.0000, 0.0000]],\n",
293
- "\n",
294
- " [[0.0048, 0.0240, 0.0323, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
295
- "[tensor([[[ 0.0064, 0.0104, 0.0116, ..., 0.0000, 0.0000, 0.0000]],\n",
296
- "\n",
297
- " [[-0.0028, -0.0033, -0.0007, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0010, 0.0047, 0.0074, ..., 0.0000, 0.0000, 0.0000]],\n",
298
- "\n",
299
- " [[0.0005, 0.0013, 0.0009, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
300
- "[tensor([[[0.0042, 0.0073, 0.0064, ..., 0.0000, 0.0000, 0.0000]],\n",
301
- "\n",
302
- " [[0.0015, 0.0029, 0.0041, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0007, 0.0026, 0.0033, ..., 0.0000, 0.0000, 0.0000]],\n",
303
- "\n",
304
- " [[0.0004, 0.0016, 0.0026, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
305
- "[tensor([[[-0.0016, -0.0054, -0.0048, ..., 0.0000, 0.0000, 0.0000]],\n",
306
- "\n",
307
- " [[ 0.0113, 0.0209, 0.0223, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0014, 0.0034, 0.0026, ..., 0.0000, 0.0000, 0.0000]],\n",
308
- "\n",
309
- " [[-0.0004, -0.0024, -0.0011, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
310
- "[tensor([[[ 0.0064, 0.0108, 0.0107, ..., 0.0000, 0.0000, 0.0000]],\n",
311
- "\n",
312
- " [[-0.0007, -0.0040, -0.0083, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0005, 0.0018, 0.0035, ..., 0.0000, 0.0000, 0.0000]],\n",
313
- "\n",
314
- " [[0.0002, 0.0008, 0.0012, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
315
- "[tensor([[[ 0.0071, 0.0064, -0.0008, ..., 0.0000, 0.0000, 0.0000]],\n",
316
- "\n",
317
- " [[ 0.0024, 0.0039, 0.0042, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0018, 0.0064, 0.0094, ..., 0.0000, 0.0000, 0.0000]],\n",
318
- "\n",
319
- " [[0.0001, 0.0008, 0.0019, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
320
- "[tensor([[[0.0075, 0.0099, 0.0065, ..., 0.0000, 0.0000, 0.0000]],\n",
321
- "\n",
322
- " [[0.0008, 0.0010, 0.0005, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0007, 0.0032, 0.0058, ..., 0.0000, 0.0000, 0.0000]],\n",
323
- "\n",
324
- " [[0.0006, 0.0023, 0.0029, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
325
- "[tensor([[[-0.0024, -0.0027, -0.0021, ..., 0.0000, 0.0000, 0.0000]],\n",
326
- "\n",
327
- " [[ 0.0096, 0.0151, 0.0139, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0003, -0.0012, -0.0023, ..., 0.0000, 0.0000, 0.0000]],\n",
328
- "\n",
329
- " [[-0.0001, -0.0010, -0.0015, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
330
- "[tensor([[[0.0012, 0.0027, 0.0036, ..., 0.0000, 0.0000, 0.0000]],\n",
331
- "\n",
332
- " [[0.0030, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0005, 0.0015, 0.0021, ..., 0.0000, 0.0000, 0.0000]],\n",
333
- "\n",
334
- " [[-0.0003, -0.0010, -0.0016, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
335
- "[tensor([[[ 0.0006, 0.0012, 0.0014, ..., 0.0000, 0.0000, 0.0000]],\n",
336
- "\n",
337
- " [[-0.0033, -0.0041, -0.0015, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0001, 0.0003, 0.0002, ..., 0.0000, 0.0000, 0.0000]],\n",
338
- "\n",
339
- " [[-0.0005, -0.0021, -0.0035, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
340
- "[tensor([[[0.0041, 0.0051, 0.0031, ..., 0.0000, 0.0000, 0.0000]],\n",
341
- "\n",
342
- " [[0.0005, 0.0005, 0.0005, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0006, 0.0025, 0.0042, ..., 0.0000, 0.0000, 0.0000]],\n",
343
- "\n",
344
- " [[0.0006, 0.0015, 0.0015, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
345
- "[tensor([[[0.0111, 0.0142, 0.0113, ..., 0.0000, 0.0000, 0.0000]],\n",
346
- "\n",
347
- " [[0.0015, 0.0030, 0.0035, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 4.1647e-04, 3.4729e-03, 9.2547e-03, ..., 0.0000e+00,\n",
348
- " 0.0000e+00, 0.0000e+00]],\n",
349
- "\n",
350
- " [[-6.6249e-05, -7.6026e-04, -1.4447e-03, ..., 0.0000e+00,\n",
351
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
352
- "[tensor([[[-0.0004, 0.0005, 0.0029, ..., 0.0000, 0.0000, 0.0000]],\n",
353
- "\n",
354
- " [[ 0.0025, 0.0042, 0.0035, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0004, 0.0015, 0.0015, ..., 0.0000, 0.0000, 0.0000]],\n",
355
- "\n",
356
- " [[0.0005, 0.0011, 0.0017, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
357
- "[tensor([[[ 0.0009, 0.0009, 0.0006, ..., 0.0000, 0.0000, 0.0000]],\n",
358
- "\n",
359
- " [[ 0.0147, 0.0051, -0.0118, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0008, 0.0028, 0.0037, ..., 0.0000, 0.0000, 0.0000]],\n",
360
- "\n",
361
- " [[0.0010, 0.0134, 0.0304, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
362
- "[tensor([[[0.0015, 0.0026, 0.0049, ..., 0.0000, 0.0000, 0.0000]],\n",
363
- "\n",
364
- " [[0.0030, 0.0060, 0.0081, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0003, 0.0015, 0.0035, ..., 0.0000, 0.0000, 0.0000]],\n",
365
- "\n",
366
- " [[0.0002, 0.0010, 0.0015, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
367
- "[tensor([[[ 0.0019, 0.0052, 0.0092, ..., 0.0000, 0.0000, 0.0000]],\n",
368
- "\n",
369
- " [[-0.0031, -0.0043, -0.0041, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0002, 0.0005, 0.0007, ..., 0.0000, 0.0000, 0.0000]],\n",
370
- "\n",
371
- " [[-0.0010, -0.0047, -0.0077, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
372
- "[tensor([[[ 0.0014, 0.0019, 0.0014, ..., 0.0000, 0.0000, 0.0000]],\n",
373
- "\n",
374
- " [[ 0.0005, -0.0015, -0.0017, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0002, 0.0011, 0.0020, ..., 0.0000, 0.0000, 0.0000]],\n",
375
- "\n",
376
- " [[0.0008, 0.0032, 0.0038, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
377
- "[tensor([[[0.0097, 0.0098, 0.0010, ..., 0.0000, 0.0000, 0.0000]],\n",
378
- "\n",
379
- " [[0.0106, 0.0109, 0.0012, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0003, -0.0013, -0.0023, ..., 0.0000, 0.0000, 0.0000]],\n",
380
- "\n",
381
- " [[ 0.0002, 0.0021, 0.0052, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
382
- "[tensor([[[ 0.0030, 0.0057, 0.0084, ..., 0.0000, 0.0000, 0.0000]],\n",
383
- "\n",
384
- " [[-0.0037, -0.0044, -0.0016, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0013, 0.0051, 0.0077, ..., 0.0000, 0.0000, 0.0000]],\n",
385
- "\n",
386
- " [[0.0002, 0.0006, 0.0007, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
387
- "[tensor([[[ 0.0050, 0.0078, 0.0072, ..., 0.0000, 0.0000, 0.0000]],\n",
388
- "\n",
389
- " [[-0.0022, -0.0033, -0.0034, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0003, 0.0014, 0.0022, ..., 0.0000, 0.0000, 0.0000]],\n",
390
- "\n",
391
- " [[-0.0006, -0.0028, -0.0046, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
392
- "[tensor([[[-0.0014, -0.0020, -0.0014, ..., 0.0000, 0.0000, 0.0000]],\n",
393
- "\n",
394
- " [[ 0.0069, 0.0159, 0.0219, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0002, 0.0004, -0.0001, ..., 0.0000, 0.0000, 0.0000]],\n",
395
- "\n",
396
- " [[ 0.0008, 0.0033, 0.0045, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
397
- "[tensor([[[-0.0027, -0.0035, -0.0092, ..., 0.0000, 0.0000, 0.0000]],\n",
398
- "\n",
399
- " [[-0.0004, 0.0005, 0.0015, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0029, -0.0107, -0.0177, ..., 0.0000, 0.0000, 0.0000]],\n",
400
- "\n",
401
- " [[ 0.0006, 0.0013, 0.0007, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
402
- "[tensor([[[ 0.0286, 0.0299, 0.0081, ..., 0.0000, 0.0000, 0.0000]],\n",
403
- "\n",
404
- " [[-0.0002, 0.0009, 0.0020, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-2.5037e-03, -1.1195e-03, 1.1923e-02, ..., 0.0000e+00,\n",
405
- " 0.0000e+00, 0.0000e+00]],\n",
406
- "\n",
407
- " [[ 1.5308e-04, -3.6808e-05, -5.5343e-04, ..., 0.0000e+00,\n",
408
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
409
- "[tensor([[[0.0018, 0.0027, 0.0019, ..., 0.0000, 0.0000, 0.0000]],\n",
410
- "\n",
411
- " [[0.0055, 0.0096, 0.0124, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0002, 0.0022, 0.0032, ..., 0.0000, 0.0000, 0.0000]],\n",
412
- "\n",
413
- " [[0.0002, 0.0017, 0.0032, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
414
- "[tensor([[[ 3.7041e-03, 5.7321e-03, 5.1036e-03, ..., 0.0000e+00,\n",
415
- " 0.0000e+00, 0.0000e+00]],\n",
416
- "\n",
417
- " [[ 2.1164e-03, 1.5563e-03, -7.2010e-05, ..., 0.0000e+00,\n",
418
- " 0.0000e+00, 0.0000e+00]]]), tensor([[[0.0013, 0.0040, 0.0052, ..., 0.0000, 0.0000, 0.0000]],\n",
419
- "\n",
420
- " [[0.0002, 0.0009, 0.0017, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
421
- "[tensor([[[-0.0020, -0.0022, -0.0008, ..., 0.0000, 0.0000, 0.0000]],\n",
422
- "\n",
423
- " [[ 0.0088, 0.0130, 0.0157, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-4.7201e-05, -2.4349e-04, -5.1608e-04, ..., 0.0000e+00,\n",
424
- " 0.0000e+00, 0.0000e+00]],\n",
425
- "\n",
426
- " [[ 1.2934e-03, 4.1513e-03, 3.6547e-03, ..., 0.0000e+00,\n",
427
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
428
- "[tensor([[[0.0018, 0.0069, 0.0096, ..., 0.0000, 0.0000, 0.0000]],\n",
429
- "\n",
430
- " [[0.0026, 0.0024, 0.0006, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 3.0634e-04, 1.1319e-03, 1.7446e-03, ..., 0.0000e+00,\n",
431
- " 0.0000e+00, 0.0000e+00]],\n",
432
- "\n",
433
- " [[-8.3813e-05, -7.7285e-04, -1.7113e-03, ..., 0.0000e+00,\n",
434
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
435
- "[tensor([[[0.0009, 0.0013, 0.0017, ..., 0.0000, 0.0000, 0.0000]],\n",
436
- "\n",
437
- " [[0.0070, 0.0122, 0.0151, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0001, 0.0013, 0.0024, ..., 0.0000, 0.0000, 0.0000]],\n",
438
- "\n",
439
- " [[0.0008, 0.0034, 0.0060, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
440
- "[tensor([[[0.0075, 0.0141, 0.0187, ..., 0.0000, 0.0000, 0.0000]],\n",
441
- "\n",
442
- " [[0.0023, 0.0025, 0.0019, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0002, 0.0012, 0.0024, ..., 0.0000, 0.0000, 0.0000]],\n",
443
- "\n",
444
- " [[0.0007, 0.0028, 0.0046, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
445
- "[tensor([[[ 0.0115, -0.0051, -0.0278, ..., 0.0000, 0.0000, 0.0000]],\n",
446
- "\n",
447
- " [[ 0.0212, 0.0099, -0.0170, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0042, 0.0199, 0.0318, ..., 0.0000, 0.0000, 0.0000]],\n",
448
- "\n",
449
- " [[0.0018, 0.0141, 0.0247, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
450
- "[tensor([[[ 0.0010, -0.0022, -0.0045, ..., 0.0000, 0.0000, 0.0000]],\n",
451
- "\n",
452
- " [[ 0.0068, 0.0116, 0.0121, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0005, 0.0037, 0.0072, ..., 0.0000, 0.0000, 0.0000]],\n",
453
- "\n",
454
- " [[0.0002, 0.0015, 0.0030, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
455
- "[tensor([[[ 0.0081, 0.0120, 0.0105, ..., 0.0000, 0.0000, 0.0000]],\n",
456
- "\n",
457
- " [[-0.0209, -0.0408, -0.0275, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0007, 0.0027, 0.0050, ..., 0.0000, 0.0000, 0.0000]],\n",
458
- "\n",
459
- " [[0.0037, 0.0249, 0.0292, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
460
- "[tensor([[[0.0067, 0.0102, 0.0098, ..., 0.0000, 0.0000, 0.0000]],\n",
461
- "\n",
462
- " [[0.0144, 0.0246, 0.0242, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[2.0850e-04, 2.0092e-03, 4.8804e-03, ..., 0.0000e+00,\n",
463
- " 0.0000e+00, 0.0000e+00]],\n",
464
- "\n",
465
- " [[5.1832e-05, 1.2148e-03, 4.0634e-03, ..., 0.0000e+00,\n",
466
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
467
- "[tensor([[[-0.0024, -0.0024, -0.0013, ..., 0.0000, 0.0000, 0.0000]],\n",
468
- "\n",
469
- " [[ 0.0046, 0.0079, 0.0074, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0005, -0.0025, -0.0036, ..., 0.0000, 0.0000, 0.0000]],\n",
470
- "\n",
471
- " [[ 0.0003, 0.0010, 0.0017, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
472
- "[tensor([[[-0.0109, -0.0121, -0.0033, ..., 0.0000, 0.0000, 0.0000]],\n",
473
- "\n",
474
- " [[ 0.0011, 0.0015, 0.0020, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0001, 0.0005, 0.0006, ..., 0.0000, 0.0000, 0.0000]],\n",
475
- "\n",
476
- " [[0.0002, 0.0008, 0.0010, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
477
- "[tensor([[[-0.0015, -0.0018, -0.0014, ..., 0.0000, 0.0000, 0.0000]],\n",
478
- "\n",
479
- " [[-0.0083, -0.0828, -0.1668, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0006, -0.0017, -0.0014, ..., 0.0000, 0.0000, 0.0000]],\n",
480
- "\n",
481
- " [[-0.0118, -0.0768, -0.1046, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
482
- "[tensor([[[ 0.0106, -0.0040, -0.0246, ..., 0.0000, 0.0000, 0.0000]],\n",
483
- "\n",
484
- " [[ 0.0028, 0.0043, 0.0036, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0040, 0.0172, 0.0272, ..., 0.0000, 0.0000, 0.0000]],\n",
485
- "\n",
486
- " [[0.0002, 0.0016, 0.0027, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
487
- "[tensor([[[ 0.0020, 0.0005, -0.0163, ..., 0.0000, 0.0000, 0.0000]],\n",
488
- "\n",
489
- " [[ 0.0065, 0.0113, 0.0133, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0019, -0.0107, -0.0205, ..., 0.0000, 0.0000, 0.0000]],\n",
490
- "\n",
491
- " [[ 0.0007, 0.0026, 0.0040, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
492
- "[tensor([[[0.0010, 0.0020, 0.0023, ..., 0.0000, 0.0000, 0.0000]],\n",
493
- "\n",
494
- " [[0.0112, 0.0147, 0.0106, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0005, 0.0010, 0.0009, ..., 0.0000, 0.0000, 0.0000]],\n",
495
- "\n",
496
- " [[0.0017, 0.0062, 0.0095, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
497
- "[tensor([[[-0.0007, -0.0016, -0.0019, ..., 0.0000, 0.0000, 0.0000]],\n",
498
- "\n",
499
- " [[ 0.0028, 0.0051, 0.0083, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0003, -0.0010, -0.0008, ..., 0.0000, 0.0000, 0.0000]],\n",
500
- "\n",
501
- " [[ 0.0011, 0.0045, 0.0069, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
502
- "[tensor([[[0.0078, 0.0125, 0.0115, ..., 0.0000, 0.0000, 0.0000]],\n",
503
- "\n",
504
- " [[0.0046, 0.0071, 0.0058, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-7.1681e-05, -8.8706e-04, -1.7330e-03, ..., 0.0000e+00,\n",
505
- " 0.0000e+00, 0.0000e+00]],\n",
506
- "\n",
507
- " [[ 1.1175e-03, 2.9858e-03, 4.5334e-03, ..., 0.0000e+00,\n",
508
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
509
- "[tensor([[[-0.0027, -0.0049, -0.0051, ..., 0.0000, 0.0000, 0.0000]],\n",
510
- "\n",
511
- " [[-0.0013, -0.0019, -0.0017, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0005, -0.0015, -0.0020, ..., 0.0000, 0.0000, 0.0000]],\n",
512
- "\n",
513
- " [[-0.0003, -0.0022, -0.0038, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
514
- "[tensor([[[0.0008, 0.0011, 0.0007, ..., 0.0000, 0.0000, 0.0000]],\n",
515
- "\n",
516
- " [[0.0004, 0.0012, 0.0014, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0007, 0.0024, 0.0034, ..., 0.0000, 0.0000, 0.0000]],\n",
517
- "\n",
518
- " [[0.0006, 0.0020, 0.0029, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
519
- "[tensor([[[-1.2539e-03, -6.1979e-04, 1.0325e-03, ..., 0.0000e+00,\n",
520
- " 0.0000e+00, 0.0000e+00]],\n",
521
- "\n",
522
- " [[ 6.1576e-05, 2.2814e-04, 9.5116e-04, ..., 0.0000e+00,\n",
523
- " 0.0000e+00, 0.0000e+00]]]), tensor([[[8.0004e-05, 1.0549e-03, 2.6432e-03, ..., 0.0000e+00,\n",
524
- " 0.0000e+00, 0.0000e+00]],\n",
525
- "\n",
526
- " [[7.4739e-05, 1.3412e-04, 1.7083e-04, ..., 0.0000e+00,\n",
527
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
528
- "[tensor([[[ 0.0151, 0.0170, 0.0124, ..., 0.0000, 0.0000, 0.0000]],\n",
529
- "\n",
530
- " [[-0.0022, -0.0067, -0.0094, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[ 0.0005, 0.0016, 0.0019, ..., 0.0000, 0.0000, 0.0000]],\n",
531
- "\n",
532
- " [[-0.0001, -0.0019, -0.0042, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
533
- "[tensor([[[ 0.0006, 0.0013, 0.0020, ..., 0.0000, 0.0000, 0.0000]],\n",
534
- "\n",
535
- " [[-0.0153, -0.0197, -0.0135, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[7.0598e-04, 3.5944e-03, 4.8469e-03, ..., 0.0000e+00,\n",
536
- " 0.0000e+00, 0.0000e+00]],\n",
537
- "\n",
538
- " [[5.7171e-05, 3.5541e-04, 3.9973e-04, ..., 0.0000e+00,\n",
539
- " 0.0000e+00, 0.0000e+00]]]), tensor([0, 0])]\n",
540
- "[tensor([[[0.0013, 0.0020, 0.0025, ..., 0.0000, 0.0000, 0.0000]],\n",
541
- "\n",
542
- " [[0.0120, 0.0202, 0.0220, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0006, 0.0025, 0.0037, ..., 0.0000, 0.0000, 0.0000]],\n",
543
- "\n",
544
- " [[0.0004, 0.0027, 0.0058, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
545
- "[tensor([[[0.0029, 0.0039, 0.0064, ..., 0.0000, 0.0000, 0.0000]],\n",
546
- "\n",
547
- " [[0.0015, 0.0025, 0.0030, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0004, 0.0048, 0.0087, ..., 0.0000, 0.0000, 0.0000]],\n",
548
- "\n",
549
- " [[0.0003, 0.0012, 0.0022, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
550
- "[tensor([[[0.0034, 0.0093, 0.0100, ..., 0.0000, 0.0000, 0.0000]],\n",
551
- "\n",
552
- " [[0.0007, 0.0014, 0.0018, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[-0.0008, -0.0035, -0.0042, ..., 0.0000, 0.0000, 0.0000]],\n",
553
- "\n",
554
- " [[ 0.0003, 0.0016, 0.0028, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n",
555
- "[tensor([[[0.0022, 0.0047, 0.0062, ..., 0.0000, 0.0000, 0.0000]],\n",
556
- "\n",
557
- " [[0.0082, 0.0121, 0.0115, ..., 0.0000, 0.0000, 0.0000]]]), tensor([[[0.0013, 0.0045, 0.0062, ..., 0.0000, 0.0000, 0.0000]],\n",
558
- "\n",
559
- " [[0.0015, 0.0091, 0.0154, ..., 0.0000, 0.0000, 0.0000]]]), tensor([0, 0])]\n"
560
- ]
561
- }
562
- ],
563
- "source": [
564
- "for v in val:\n",
565
- " print(v)"
566
- ]
567
- },
568
- {
569
- "cell_type": "code",
570
- "execution_count": null,
571
- "metadata": {},
572
- "outputs": [],
573
- "source": []
574
- }
575
- ],
576
- "metadata": {
577
- "kernelspec": {
578
- "display_name": "env",
579
- "language": "python",
580
- "name": "python3"
581
- },
582
- "language_info": {
583
- "codemirror_mode": {
584
- "name": "ipython",
585
- "version": 3
586
- },
587
- "file_extension": ".py",
588
- "mimetype": "text/x-python",
589
- "name": "python",
590
- "nbconvert_exporter": "python",
591
- "pygments_lexer": "ipython3",
592
- "version": "3.9.13"
593
- },
594
- "orig_nbformat": 4,
595
- "vscode": {
596
- "interpreter": {
597
- "hash": "94173bdbcc3a07290a92586f1f41e17e9573695669854c49e68cc83ee6746035"
598
- }
599
- }
600
- },
601
- "nbformat": 4,
602
- "nbformat_minor": 2
603
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
notebooks/guitar_generation_test.ipynb DELETED
The diff for this file is too large to render. See raw diff