lucid-dl 2.11.0__py3-none-any.whl → 2.11.2__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.
- lucid/__init__.py +4 -2
- lucid/_backend/core.py +89 -9
- lucid/_backend/metal.py +5 -1
- lucid/_func/__init__.py +162 -0
- lucid/_tensor/{tensor_ops.py → base.py} +64 -0
- lucid/_tensor/tensor.py +63 -19
- lucid/autograd/__init__.py +4 -1
- lucid/datasets/mnist.py +135 -6
- lucid/models/imggen/__init__.py +1 -0
- lucid/models/imggen/ncsn.py +402 -0
- lucid/nn/_kernel/__init__.py +1 -0
- lucid/nn/_kernel/activation.py +188 -0
- lucid/nn/_kernel/attention.py +125 -0
- lucid/{_backend → nn/_kernel}/conv.py +4 -13
- lucid/nn/_kernel/embedding.py +72 -0
- lucid/nn/_kernel/loss.py +416 -0
- lucid/nn/_kernel/norm.py +365 -0
- lucid/{_backend → nn/_kernel}/pool.py +7 -27
- lucid/nn/functional/__init__.py +4 -0
- lucid/nn/functional/_activation.py +19 -13
- lucid/nn/functional/_attention.py +9 -0
- lucid/nn/functional/_conv.py +5 -16
- lucid/nn/functional/_loss.py +31 -32
- lucid/nn/functional/_norm.py +60 -69
- lucid/nn/functional/_pool.py +7 -7
- lucid/nn/functional/_util.py +5 -1
- lucid/nn/init/_dist.py +1 -0
- lucid/types.py +24 -2
- {lucid_dl-2.11.0.dist-info → lucid_dl-2.11.2.dist-info}/METADATA +7 -5
- {lucid_dl-2.11.0.dist-info → lucid_dl-2.11.2.dist-info}/RECORD +33 -26
- {lucid_dl-2.11.0.dist-info → lucid_dl-2.11.2.dist-info}/WHEEL +1 -1
- {lucid_dl-2.11.0.dist-info → lucid_dl-2.11.2.dist-info}/licenses/LICENSE +0 -0
- {lucid_dl-2.11.0.dist-info → lucid_dl-2.11.2.dist-info}/top_level.txt +0 -0
lucid/nn/functional/_norm.py
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import lucid
|
|
2
2
|
import lucid.nn as nn
|
|
3
|
-
from lucid._tensor import Tensor
|
|
4
3
|
|
|
5
4
|
from lucid.types import _ShapeLike
|
|
6
5
|
|
|
6
|
+
from lucid._tensor import Tensor
|
|
7
|
+
from lucid.nn._kernel.norm import (
|
|
8
|
+
layer_norm_kernel,
|
|
9
|
+
batch_norm_kernel,
|
|
10
|
+
group_norm_kernel,
|
|
11
|
+
)
|
|
12
|
+
|
|
7
13
|
|
|
8
14
|
def normalize(
|
|
9
15
|
input_: Tensor, ord: int = 2, axis: int = 1, eps: float = 1e-12
|
|
@@ -25,44 +31,34 @@ def batch_norm(
|
|
|
25
31
|
eps: float = 1e-5,
|
|
26
32
|
) -> Tensor:
|
|
27
33
|
C = input_.shape[1]
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
batch_mean = input_.mean(axis=(0, *range(2, input_.ndim)), keepdims=True)
|
|
33
|
-
batch_var = input_.var(axis=(0, *range(2, input_.ndim)), keepdims=True)
|
|
34
|
-
|
|
35
|
-
if running_mean is not None and running_var is not None:
|
|
36
|
-
running_stats_ = (
|
|
37
|
-
momentum * batch_mean.flatten() + (1 - momentum) * running_mean,
|
|
38
|
-
momentum * batch_var.flatten() + (1 - momentum) * running_var,
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
if isinstance(running_mean, nn.Buffer) and isinstance(
|
|
42
|
-
running_var, nn.Buffer
|
|
43
|
-
):
|
|
44
|
-
running_mean.data = running_stats_[0].data
|
|
45
|
-
running_var.data = running_stats_[1].data
|
|
46
|
-
else:
|
|
47
|
-
running_mean, running_var = running_stats_
|
|
48
|
-
|
|
49
|
-
mean = batch_mean
|
|
50
|
-
var = batch_var
|
|
34
|
+
if running_mean is None or running_var is None:
|
|
35
|
+
running_mean = lucid.zeros((C,), device=input_.device)
|
|
36
|
+
running_var = lucid.ones((C,), device=input_.device)
|
|
37
|
+
has_running = False
|
|
51
38
|
else:
|
|
52
|
-
|
|
53
|
-
var = running_var.reshape(1, C, *(1,) * spatial_dim)
|
|
54
|
-
|
|
55
|
-
normalized = (input_ - mean) / lucid.sqrt(var + eps)
|
|
39
|
+
has_running = True
|
|
56
40
|
|
|
57
|
-
if weight is
|
|
58
|
-
weight =
|
|
59
|
-
|
|
41
|
+
if weight is None:
|
|
42
|
+
weight = lucid.ones((C,), device=input_.device)
|
|
43
|
+
has_weight = False
|
|
44
|
+
else:
|
|
45
|
+
has_weight = True
|
|
60
46
|
|
|
61
|
-
if bias is
|
|
62
|
-
bias =
|
|
63
|
-
|
|
47
|
+
if bias is None:
|
|
48
|
+
bias = lucid.zeros((C,), device=input_.device)
|
|
49
|
+
has_bias = False
|
|
50
|
+
else:
|
|
51
|
+
has_bias = True
|
|
64
52
|
|
|
65
|
-
|
|
53
|
+
op = batch_norm_kernel(
|
|
54
|
+
eps=eps,
|
|
55
|
+
momentum=momentum,
|
|
56
|
+
training=training,
|
|
57
|
+
has_running=has_running,
|
|
58
|
+
has_weight=has_weight,
|
|
59
|
+
has_bias=has_bias,
|
|
60
|
+
)
|
|
61
|
+
return op(input_, running_mean, running_var, weight, bias)
|
|
66
62
|
|
|
67
63
|
|
|
68
64
|
def layer_norm(
|
|
@@ -77,21 +73,22 @@ def layer_norm(
|
|
|
77
73
|
"Input tensor's normalized shape must match "
|
|
78
74
|
+ "the provided `normalized_shape`."
|
|
79
75
|
)
|
|
76
|
+
if weight is None:
|
|
77
|
+
weight = lucid.ones(normalized_shape, device=input_.device)
|
|
78
|
+
has_weight = False
|
|
79
|
+
else:
|
|
80
|
+
has_weight = True
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
normalized *= weight.reshape(
|
|
87
|
-
(1,) * (input_.ndim - len(normalized_shape)) + normalized_shape
|
|
88
|
-
)
|
|
89
|
-
if bias is not None:
|
|
90
|
-
normalized += bias.reshape(
|
|
91
|
-
(1,) * (input_.ndim - len(normalized_shape)) + normalized_shape
|
|
92
|
-
)
|
|
82
|
+
if bias is None:
|
|
83
|
+
bias = lucid.zeros(normalized_shape, device=input_.device)
|
|
84
|
+
has_bias = False
|
|
85
|
+
else:
|
|
86
|
+
has_bias = True
|
|
93
87
|
|
|
94
|
-
|
|
88
|
+
op = layer_norm_kernel(
|
|
89
|
+
normalized_shape, eps=eps, has_weight=has_weight, has_bias=has_bias
|
|
90
|
+
)
|
|
91
|
+
return op(input_, weight, bias)
|
|
95
92
|
|
|
96
93
|
|
|
97
94
|
def instance_norm(
|
|
@@ -155,29 +152,23 @@ def group_norm(
|
|
|
155
152
|
bias: Tensor | None,
|
|
156
153
|
eps: float = 1e-5,
|
|
157
154
|
) -> Tensor:
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
axes = (2,) + tuple(range(3, reshaped.ndim))
|
|
166
|
-
mean = reshaped.mean(axis=axes, keepdims=True)
|
|
167
|
-
var = reshaped.var(axis=axes, keepdims=True)
|
|
168
|
-
|
|
169
|
-
normalized = (reshaped - mean) / lucid.sqrt(var + eps)
|
|
170
|
-
normalized = normalized.reshape(N, C, *spatial_dims)
|
|
171
|
-
|
|
172
|
-
if weight is not None:
|
|
173
|
-
weight = weight.reshape(1, C, *(1,) * len(spatial_dims))
|
|
174
|
-
normalized *= weight
|
|
155
|
+
C = input_.shape[1]
|
|
156
|
+
if weight is None:
|
|
157
|
+
weight = lucid.ones((C,), device=input_.device)
|
|
158
|
+
has_weight = False
|
|
159
|
+
else:
|
|
160
|
+
has_weight = True
|
|
175
161
|
|
|
176
|
-
if bias is
|
|
177
|
-
bias =
|
|
178
|
-
|
|
162
|
+
if bias is None:
|
|
163
|
+
bias = lucid.zeros((C,), device=input_.device)
|
|
164
|
+
has_bias = False
|
|
165
|
+
else:
|
|
166
|
+
has_bias = True
|
|
179
167
|
|
|
180
|
-
|
|
168
|
+
op = group_norm_kernel(
|
|
169
|
+
num_groups=num_groups, eps=eps, has_weight=has_weight, has_bias=has_bias
|
|
170
|
+
)
|
|
171
|
+
return op(input_, weight, bias)
|
|
181
172
|
|
|
182
173
|
|
|
183
174
|
def global_response_norm(
|
lucid/nn/functional/_pool.py
CHANGED
|
@@ -2,7 +2,7 @@ import math
|
|
|
2
2
|
from typing import Literal
|
|
3
3
|
|
|
4
4
|
from lucid._tensor import Tensor
|
|
5
|
-
from lucid.
|
|
5
|
+
from lucid.nn._kernel.pool import pool_nd_kernel
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def avg_pool1d(
|
|
@@ -11,7 +11,7 @@ def avg_pool1d(
|
|
|
11
11
|
stride: int | tuple[int] = 1,
|
|
12
12
|
padding: int | tuple[int] = 0,
|
|
13
13
|
) -> Tensor:
|
|
14
|
-
return
|
|
14
|
+
return pool_nd_kernel(kernel_size, stride, padding, mode="avg")(input_)
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def avg_pool2d(
|
|
@@ -20,7 +20,7 @@ def avg_pool2d(
|
|
|
20
20
|
stride: int | tuple[int, int] = 1,
|
|
21
21
|
padding: int | tuple[int, int] = 0,
|
|
22
22
|
) -> Tensor:
|
|
23
|
-
return
|
|
23
|
+
return pool_nd_kernel(kernel_size, stride, padding, mode="avg")(input_)
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def avg_pool3d(
|
|
@@ -29,7 +29,7 @@ def avg_pool3d(
|
|
|
29
29
|
stride: int | tuple[int, int, int] = 1,
|
|
30
30
|
padding: int | tuple[int, int, int] = 0,
|
|
31
31
|
) -> Tensor:
|
|
32
|
-
return
|
|
32
|
+
return pool_nd_kernel(kernel_size, stride, padding, mode="avg")(input_)
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def max_pool1d(
|
|
@@ -38,7 +38,7 @@ def max_pool1d(
|
|
|
38
38
|
stride: int | tuple[int] = 1,
|
|
39
39
|
padding: int | tuple[int] = 0,
|
|
40
40
|
) -> Tensor:
|
|
41
|
-
return
|
|
41
|
+
return pool_nd_kernel(kernel_size, stride, padding, mode="max")(input_)
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
def max_pool2d(
|
|
@@ -47,7 +47,7 @@ def max_pool2d(
|
|
|
47
47
|
stride: int | tuple[int, int] = 1,
|
|
48
48
|
padding: int | tuple[int, int] = 0,
|
|
49
49
|
) -> Tensor:
|
|
50
|
-
return
|
|
50
|
+
return pool_nd_kernel(kernel_size, stride, padding, mode="max")(input_)
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
def max_pool3d(
|
|
@@ -56,7 +56,7 @@ def max_pool3d(
|
|
|
56
56
|
stride: int | tuple[int, int, int] = 1,
|
|
57
57
|
padding: int | tuple[int, int, int] = 0,
|
|
58
58
|
) -> Tensor:
|
|
59
|
-
return
|
|
59
|
+
return pool_nd_kernel(kernel_size, stride, padding, mode="max")(input_)
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
def adaptive_pool1d(
|
lucid/nn/functional/_util.py
CHANGED
|
@@ -4,6 +4,8 @@ import lucid.nn.functional
|
|
|
4
4
|
from lucid._tensor import Tensor
|
|
5
5
|
from lucid.types import _Scalar, Numeric
|
|
6
6
|
|
|
7
|
+
from lucid.nn._kernel.embedding import embedding_kernel
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
def _interpolate_bilinear(
|
|
9
11
|
input_: Tensor, size: tuple[int, int], align_corners: bool = False
|
|
@@ -129,7 +131,9 @@ def embedding(
|
|
|
129
131
|
max_norm: float | None = None,
|
|
130
132
|
norm_type: float = 2.0,
|
|
131
133
|
) -> Tensor:
|
|
132
|
-
|
|
134
|
+
indices = input_.astype(lucid.Int)
|
|
135
|
+
op = embedding_kernel()
|
|
136
|
+
output = op(indices, weight)
|
|
133
137
|
if padding_idx is not None:
|
|
134
138
|
mask = input_.data == padding_idx
|
|
135
139
|
output *= 1 - mask[..., None]
|
lucid/nn/init/_dist.py
CHANGED
lucid/types.py
CHANGED
|
@@ -2,6 +2,7 @@ from typing import (
|
|
|
2
2
|
Any,
|
|
3
3
|
Callable,
|
|
4
4
|
Protocol,
|
|
5
|
+
Self,
|
|
5
6
|
Sequence,
|
|
6
7
|
Literal,
|
|
7
8
|
TypeAlias,
|
|
@@ -9,7 +10,6 @@ from typing import (
|
|
|
9
10
|
)
|
|
10
11
|
import re
|
|
11
12
|
|
|
12
|
-
# NOTE: This module retains module independency.
|
|
13
13
|
import numpy as np
|
|
14
14
|
import mlx.core as mx
|
|
15
15
|
|
|
@@ -20,6 +20,8 @@ _Scalar = int | float | complex
|
|
|
20
20
|
_NumPyArray: TypeAlias = np.ndarray
|
|
21
21
|
_MLXArray: TypeAlias = mx.array
|
|
22
22
|
|
|
23
|
+
_TensorData = _NumPyArray | _MLXArray
|
|
24
|
+
|
|
23
25
|
_Gradient = _NumPyArray | _MLXArray | None
|
|
24
26
|
|
|
25
27
|
_ArrayOrScalar = _Scalar | list[_Scalar] | _NumPyArray | _MLXArray
|
|
@@ -55,11 +57,14 @@ class _TensorLike(Protocol):
|
|
|
55
57
|
_prev: list[_TensorLike]
|
|
56
58
|
_backward_op: Any
|
|
57
59
|
_backward_hooks: Any
|
|
60
|
+
_version: int
|
|
58
61
|
|
|
59
62
|
def to(self, device: _DeviceType) -> None: ...
|
|
60
63
|
|
|
61
64
|
def free(self) -> None: ...
|
|
62
65
|
|
|
66
|
+
def new_tensor(self) -> _TensorLike: ...
|
|
67
|
+
|
|
63
68
|
def is_cpu(self) -> bool: ...
|
|
64
69
|
|
|
65
70
|
def is_gpu(self) -> bool: ...
|
|
@@ -132,8 +137,18 @@ class Numeric:
|
|
|
132
137
|
|
|
133
138
|
raise TypeError(f"Unsupported dtype: {dtype}")
|
|
134
139
|
|
|
140
|
+
def __eq__(self, other: Self) -> bool:
|
|
141
|
+
if self.base_dtype is not other.base_dtype:
|
|
142
|
+
return False
|
|
143
|
+
if self.is_bit_free:
|
|
144
|
+
return True if other.is_bit_free else False
|
|
145
|
+
return True if other.is_bit_free or self.bits == other.bits else False
|
|
146
|
+
|
|
147
|
+
def __hash__(self) -> int:
|
|
148
|
+
return hash(str(self))
|
|
149
|
+
|
|
135
150
|
def __str__(self) -> str:
|
|
136
|
-
return self.base_dtype.__name__ + str(self.bits)
|
|
151
|
+
return self.base_dtype.__name__ + (str(self.bits) if self.bits else "")
|
|
137
152
|
|
|
138
153
|
def __repr__(self) -> str:
|
|
139
154
|
return (
|
|
@@ -148,11 +163,18 @@ Int16 = Numeric(int, bits=16)
|
|
|
148
163
|
Int32 = Numeric(int, bits=32)
|
|
149
164
|
Int64 = Numeric(int, bits=64)
|
|
150
165
|
|
|
166
|
+
Char = Int8
|
|
167
|
+
Short = Int16
|
|
168
|
+
Long = Int64
|
|
169
|
+
|
|
151
170
|
Float = Numeric(float, None)
|
|
152
171
|
Float16 = Numeric(float, bits=16)
|
|
153
172
|
Float32 = Numeric(float, bits=32)
|
|
154
173
|
Float64 = Numeric(float, bits=64)
|
|
155
174
|
|
|
175
|
+
Half = Float16
|
|
176
|
+
Double = Float64
|
|
177
|
+
|
|
156
178
|
Complex = Numeric(complex, None)
|
|
157
179
|
Complex64 = Numeric(complex, bits=64)
|
|
158
180
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lucid-dl
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.2
|
|
4
4
|
Summary: Lumerico's Comprehensive Interface for Deep Learning
|
|
5
5
|
Home-page: https://github.com/ChanLumerico/lucid
|
|
6
6
|
Author: ChanLumerico
|
|
@@ -8,7 +8,7 @@ Author-email: greensox284@gmail.com
|
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
|
-
Requires-Python: >=3.
|
|
11
|
+
Requires-Python: >=3.14
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
14
|
Requires-Dist: numpy
|
|
@@ -33,7 +33,7 @@ Dynamic: summary
|
|
|
33
33
|
[](https://pepy.tech/projects/lucid-dl)
|
|
34
34
|

|
|
35
35
|

|
|
36
|
-

|
|
37
37
|
|
|
38
38
|
**Lucid** is a minimalist deep learning framework built entirely from scratch in Python. It offers a pedagogically rich environment to explore the foundations of modern deep learning systems, including autodiff, neural network modules, and GPU acceleration — all while staying lightweight, readable, and free of complex dependencies.
|
|
39
39
|
|
|
@@ -48,9 +48,11 @@ Whether you're a student, educator, or an advanced researcher seeking to demysti
|
|
|
48
48
|
|
|
49
49
|
### 🔥 What's New
|
|
50
50
|
|
|
51
|
-
-
|
|
51
|
+
- Added various inplace tensor operations (e.g. `a.add_(b)`, `a.mul_(b)`)
|
|
52
52
|
|
|
53
|
-
-
|
|
53
|
+
- Added **Noise Conditional Score Network(NCSN)** to `lucid.models.NCSN`
|
|
54
|
+
|
|
55
|
+
- Branched a Stand-Alone Autograd Engine as `lucid.autograd`
|
|
54
56
|
|
|
55
57
|
- Provides a generalized API of computing gradients:
|
|
56
58
|
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
lucid/__init__.py,sha256=
|
|
1
|
+
lucid/__init__.py,sha256=EwNZkKALNS54RQw_D_1BtqbBo3kFMi4uSveSs6i-bdM,9161
|
|
2
2
|
lucid/error.py,sha256=qnTiVuZm3c5-DIt-OOyobZ7RUm7E1K4NR0j998LG1ug,709
|
|
3
3
|
lucid/port.py,sha256=Kt1YaSWef_eKF4KRj-UFhirvFC5urEESfYQ_BSlBZGE,3811
|
|
4
|
-
lucid/types.py,sha256=
|
|
4
|
+
lucid/types.py,sha256=XFeLUXhtMXGh9liRPB3X49PbJSK3bcOA6KN1gvCjksA,4818
|
|
5
5
|
lucid/_backend/__init__.py,sha256=n1bnYdeb_bNDBKASWGywTRa0Ne9hMAkal3AuVZJgovI,5
|
|
6
|
-
lucid/_backend/
|
|
7
|
-
lucid/_backend/
|
|
8
|
-
lucid/
|
|
9
|
-
lucid/_backend/pool.py,sha256=SRmw9ZShpu9g7_SiZ-o1oLvIbf093ruCfdNCaLYLm3M,11207
|
|
10
|
-
lucid/_func/__init__.py,sha256=fGd4Vv--Kuwrwc4w9ZSYEz3Bqb-O-kY5KSBKM6u0ndE,13705
|
|
6
|
+
lucid/_backend/core.py,sha256=neZF9uQlwNp-yHeyi0IbKlN556O-lsqThsIFExsf8-Y,11791
|
|
7
|
+
lucid/_backend/metal.py,sha256=vQegTENuPjeAM_EIXfuOpnIXZBeMbGVxCFvm4s-_NNo,4215
|
|
8
|
+
lucid/_func/__init__.py,sha256=ZOA1hnnDwwXbAUoLInwsA_0sMet89bw3XlOlft7UqnA,17062
|
|
11
9
|
lucid/_func/bfunc.py,sha256=HtU6T_SV6VdMFTKZ__EqWXP9UKGVPT5XkRdgGRtV2MA,20479
|
|
12
10
|
lucid/_func/gfunc.py,sha256=_gEJnYnAYhcN6aV1Z6ArIOGTgd0NEB2_eM86tE6uq-Q,4866
|
|
13
11
|
lucid/_func/ufunc.py,sha256=AnCSykuYC0fNNoZso-TM60Rlq_4c54uMYOG3BHdvy20,30261
|
|
@@ -15,18 +13,18 @@ lucid/_fusion/__init__.py,sha256=SVzLiFzs4m1mMOpefKDLFkYqV0zV5FGwFd9hEbUZtSo,68
|
|
|
15
13
|
lucid/_fusion/base.py,sha256=d6nWuPjYxkie9Xrtbj3JVusnIN61PIoSFFSthJNm9os,3821
|
|
16
14
|
lucid/_fusion/func.py,sha256=9tXzB-QNrx_AvNJiPto807faXKlzjuMG4o9gRgI5usc,1659
|
|
17
15
|
lucid/_tensor/__init__.py,sha256=wFWAMhTnQwThNiBEIT4fcw4ryIm8A4AoR-m9KDhklOQ,40
|
|
18
|
-
lucid/_tensor/
|
|
19
|
-
lucid/_tensor/
|
|
16
|
+
lucid/_tensor/base.py,sha256=pEeL4O-R_xFbugdBG8mWipP_pEhtIhWPSgAgHc51ZcQ,5262
|
|
17
|
+
lucid/_tensor/tensor.py,sha256=BLqpVqxP657W8j-oq7la9IVzH5RZnvQDKEMsU1s5rjM,14821
|
|
20
18
|
lucid/_util/__init__.py,sha256=NgOleItHJGVLdJlKHKfpzuSl3vofzJpNsZByHAYJmKs,6838
|
|
21
19
|
lucid/_util/func.py,sha256=ZODVlGdAejMTJnwEls7yMCI5WJ9Thkb3RIq1WwQCS4E,44239
|
|
22
|
-
lucid/autograd/__init__.py,sha256=
|
|
20
|
+
lucid/autograd/__init__.py,sha256=hDoK_B2chRFVhoxsT4vxRKangzBEMWqF8gj2hdoTenk,6775
|
|
23
21
|
lucid/data/__init__.py,sha256=qrDIQsnix5ZUEa0yrtomaaWbNJyJ3xEr2gdhRvg70_8,118
|
|
24
22
|
lucid/data/_base.py,sha256=RM8xpBl8qFhm19n7eER_jOsRaxkL3rbOkwUvn6VetSE,5921
|
|
25
23
|
lucid/data/_util.py,sha256=UsbliOrGmM0f1vqppoBPn3RSx53PIqcVx_yVOlHZB6A,1985
|
|
26
24
|
lucid/datasets/__init__.py,sha256=vFlNOP38SSYG75_Yf0Jbyw3okSO7sY4wIjSxIzzIgWg,103
|
|
27
25
|
lucid/datasets/_base.py,sha256=yeXPm3La3Beel7U_yPrxjXgGtjndJ3T6NYaQ2_H_Fak,1325
|
|
28
26
|
lucid/datasets/cifar.py,sha256=Wf9r6PSgwFuuYsnZDEQOFNB-06AkqW4DrVsVPRyxEF0,3704
|
|
29
|
-
lucid/datasets/mnist.py,sha256=
|
|
27
|
+
lucid/datasets/mnist.py,sha256=PUXW2UwmlXJFVJiNkI9Jm58Qe4qWHGA63znkk-y9INM,8603
|
|
30
28
|
lucid/einops/__init__.py,sha256=9Dlmfw6PsIU9b_a89Zre4yV2rztRHPCL4QpsUnXJwjM,802
|
|
31
29
|
lucid/einops/_func.py,sha256=XXsX9lse_0turKoFnOTtLdY6hBUi0gq_8K81G7nr80I,21026
|
|
32
30
|
lucid/linalg/__init__.py,sha256=N-LrlC3qSsOMt6Ad1-PP3Qc3QH6EWNf5P50GBvwb9aQ,1118
|
|
@@ -60,8 +58,9 @@ lucid/models/imgclf/vgg.py,sha256=fWy78AAHJre3Msy4DK5nhQwThI-7frsdqRS-JYtFiXM,24
|
|
|
60
58
|
lucid/models/imgclf/vit.py,sha256=NXzPIiyXxcE1-g25m36-_YwKnJZ0gl1-jf7G3V12jS0,3594
|
|
61
59
|
lucid/models/imgclf/xception.py,sha256=Y7YKCzF_y4r864hLouW0eE7M-kxA59SiI3-iIFsXVhQ,3728
|
|
62
60
|
lucid/models/imgclf/zfnet.py,sha256=brH5tHLVWTUfCqu-BwfFb0yZV9p5DmXN4O6cyP3U26U,1469
|
|
63
|
-
lucid/models/imggen/__init__.py,sha256=
|
|
61
|
+
lucid/models/imggen/__init__.py,sha256=J6MlEHqXxAYINbeQmyb85ev_IEOvQDTxTQjPgX6hdpY,59
|
|
64
62
|
lucid/models/imggen/ddpm.py,sha256=Nyi5bp7WMzqZ8Xl2AXuLsMmdz9QSZifbbmMPMeY1YfQ,10752
|
|
63
|
+
lucid/models/imggen/ncsn.py,sha256=TF_kqnXcPZx4C_eIBqwyeRf3jp7KtiHy3SxQDnbeCj4,13555
|
|
65
64
|
lucid/models/imggen/vae.py,sha256=avR8W0rzIsUyJF6veJCIEHavRsPjJsSuTDqzO2wj6sU,4084
|
|
66
65
|
lucid/models/objdet/__init__.py,sha256=y8_3gjSKlD8Pu0HYburcJ1FAOb4SG5eza_lg9SdFjy8,140
|
|
67
66
|
lucid/models/objdet/detr.py,sha256=i-KbNoPA9nUuUVBAKRHER-NB6z_sFF5r3Y3oplRaJkI,30336
|
|
@@ -82,19 +81,27 @@ lucid/nn/fused.py,sha256=75fcXuo6fHSO-JtjuKhowhHSDr4qc5871WR63sUzH0g,5492
|
|
|
82
81
|
lucid/nn/module.py,sha256=XvFWJ8NqXeZpr3RmKBQBz5eqT535Oi_7DaPN1Zi9gJc,21971
|
|
83
82
|
lucid/nn/parameter.py,sha256=NQS65YKn2B59wZbZIoT1mpDsU_F08y3yLi7hmV1B6yo,1232
|
|
84
83
|
lucid/nn/util.py,sha256=Yw1iBSPrGV_r_F51qpqLYdafNE_hyaA0DPWYP-rjaig,1699
|
|
85
|
-
lucid/nn/
|
|
86
|
-
lucid/nn/
|
|
87
|
-
lucid/nn/
|
|
88
|
-
lucid/nn/
|
|
84
|
+
lucid/nn/_kernel/__init__.py,sha256=n1bnYdeb_bNDBKASWGywTRa0Ne9hMAkal3AuVZJgovI,5
|
|
85
|
+
lucid/nn/_kernel/activation.py,sha256=mfe48Aw3_Hv0hZEVC7DxDw19XK9XSLfdCOvo2JcZz_o,5662
|
|
86
|
+
lucid/nn/_kernel/attention.py,sha256=1k0gboLObMNVow2v3TwliXC_2v8uKf2o8jHYFuyQqcg,3699
|
|
87
|
+
lucid/nn/_kernel/conv.py,sha256=TiY3EkUAmwFCI1aA8YVMoZJHIRrqmJAXZEPh1C7lons,16412
|
|
88
|
+
lucid/nn/_kernel/embedding.py,sha256=uf_G0aKphxBEOtfR9DHXmSyqkDCwc6tJEBNMKt4CNOU,2390
|
|
89
|
+
lucid/nn/_kernel/loss.py,sha256=UD0B5DZ3R98OPZUigHsctL0eAJch2rKQpn1uaI3fzGg,13935
|
|
90
|
+
lucid/nn/_kernel/norm.py,sha256=261WtixerLxFISIroQw8l_zZ3X0b4c_eDy8QHHA-i4M,11992
|
|
91
|
+
lucid/nn/_kernel/pool.py,sha256=IQh5hfKU4PUvnGS1ayorUmytB_vCSxcbAwBYlFKw0iI,10697
|
|
92
|
+
lucid/nn/functional/__init__.py,sha256=NDxjFCqXJ0SZ9ehuK8VbNDPdObegx_YflCIHN6eo1L8,13943
|
|
93
|
+
lucid/nn/functional/_activation.py,sha256=tLkFqAD2HRkuZqLu1qXRhN0EZtkXgeitt-VXD0ztqx4,1266
|
|
94
|
+
lucid/nn/functional/_attention.py,sha256=B4-Ock4_yYds0WVpRHlJnBR8kw9sYCyVFWNIdX25wwA,1212
|
|
95
|
+
lucid/nn/functional/_conv.py,sha256=Vx8K_eGa-yNxqOrudvyuLgPRYeT003UzNv8eCiLZQhM,5555
|
|
89
96
|
lucid/nn/functional/_drop.py,sha256=99zcj-06BGHaAPEFHeXJWlfxa-jinZrKc5pteXYtxL0,2351
|
|
90
97
|
lucid/nn/functional/_linear.py,sha256=0KPs14tdjTqJDhLaHTQp_OAOpDP0i-Pd4kJes2BTR9I,663
|
|
91
|
-
lucid/nn/functional/_loss.py,sha256=
|
|
92
|
-
lucid/nn/functional/_norm.py,sha256=
|
|
93
|
-
lucid/nn/functional/_pool.py,sha256=
|
|
98
|
+
lucid/nn/functional/_loss.py,sha256=b6KT8SrKe5lgAqlAmQnT00Hk7tvd-UcBPNryGYtTPWQ,3834
|
|
99
|
+
lucid/nn/functional/_norm.py,sha256=yunKJttd3WTxXvzKuugL2LgHLmp-9dMxhHgQ9myLUzA,5041
|
|
100
|
+
lucid/nn/functional/_pool.py,sha256=u6ykwqTZ38b9QPwUqFXpnPhOx2cc_9x9AfH0k26Y9pQ,4085
|
|
94
101
|
lucid/nn/functional/_spatial.py,sha256=lazoSvVMFcauBWRbMOqmkgixA5bDes6scGHVWCgVmHE,3911
|
|
95
|
-
lucid/nn/functional/_util.py,sha256=
|
|
102
|
+
lucid/nn/functional/_util.py,sha256=I2MvzuqPqZBC7Xo_rOq5d1R-f1Hqf7CtTKE06nudY60,5060
|
|
96
103
|
lucid/nn/init/__init__.py,sha256=YFi-HD2TEglweJ-gyX3n4UVZYzd70gcUi1dBu6hnOAY,1533
|
|
97
|
-
lucid/nn/init/_dist.py,sha256=
|
|
104
|
+
lucid/nn/init/_dist.py,sha256=Tj9SKl43ZrJdv99X5qXUowdcts4f4D3tUk7RBmX5uCg,2462
|
|
98
105
|
lucid/nn/modules/__init__.py,sha256=mol5Gfy-3ab5hBYZRxX0vjiI0w5VyKtBxVwj_vrOAZs,285
|
|
99
106
|
lucid/nn/modules/activation.py,sha256=CpiKpzgZHoCp8UO5taCJ9BuwFz5mYUs0o1_TQcEwQbQ,2823
|
|
100
107
|
lucid/nn/modules/attention.py,sha256=pZi7IGsNFu2xCmeLMuyWgveMyi2QXtaKRKQ70yAeE0c,4407
|
|
@@ -127,8 +134,8 @@ lucid/visual/__init__.py,sha256=6TuFDfmXTwpLyHl7_KqBfdzW6zqHjGzIFvymjFPlvjI,21
|
|
|
127
134
|
lucid/visual/graph.py,sha256=YjpIDM_lloZARw3sCBiXPl_hT5A2gTk2fEHvwvJWXTk,4599
|
|
128
135
|
lucid/weights/__init__.py,sha256=z1AikA3rOEeckWGkYWlcZkxNlJo9Xwa39PL6ly3hWnc,8801
|
|
129
136
|
lucid/weights/__init__.pyi,sha256=lFonYC3cUx2Idolf3AEPnjFcyqcn3UDU84oJlZafqLY,3013
|
|
130
|
-
lucid_dl-2.11.
|
|
131
|
-
lucid_dl-2.11.
|
|
132
|
-
lucid_dl-2.11.
|
|
133
|
-
lucid_dl-2.11.
|
|
134
|
-
lucid_dl-2.11.
|
|
137
|
+
lucid_dl-2.11.2.dist-info/licenses/LICENSE,sha256=vxRFYnVD1IeYtsvw-KmoElfqrjxKHv1h9YTvsG54loQ,1065
|
|
138
|
+
lucid_dl-2.11.2.dist-info/METADATA,sha256=udbwTB1UUVhJNWAWTGG_aqKNovOu-Qb_iLTi_HVb13I,12312
|
|
139
|
+
lucid_dl-2.11.2.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
140
|
+
lucid_dl-2.11.2.dist-info/top_level.txt,sha256=uzP_qBx9iNWIHKJRlElYcBLYVqMpdm9Q1Ma63QPYbFc,6
|
|
141
|
+
lucid_dl-2.11.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|