depthtensor 2.4.0__tar.gz → 2.4.2__tar.gz
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.
- {depthtensor-2.4.0 → depthtensor-2.4.2}/PKG-INFO +5 -5
- {depthtensor-2.4.0 → depthtensor-2.4.2}/README.md +4 -4
- {depthtensor-2.4.0 → depthtensor-2.4.2}/pyproject.toml +3 -3
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/__init__.py +1 -1
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/ops/comparison.py +67 -67
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/ops/creation.py +24 -26
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/ops/diff.py +63 -48
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/ops/elementwise.py +160 -152
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/ops/reduction.py +32 -32
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/random/generator.py +28 -26
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/utils.py +31 -46
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/autodiff.py +5 -7
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/tensor.py +87 -99
- depthtensor-2.4.2/src/DepthTensor/typing.py +95 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/depthtensor.egg-info/PKG-INFO +5 -5
- depthtensor-2.4.0/src/DepthTensor/typing.py +0 -121
- {depthtensor-2.4.0 → depthtensor-2.4.2}/LICENSE +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/setup.cfg +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/__init__.py +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/exceptions.py +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/ops/__init__.py +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/DepthTensor/_core/random/__init__.py +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/depthtensor.egg-info/SOURCES.txt +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/depthtensor.egg-info/dependency_links.txt +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/depthtensor.egg-info/requires.txt +0 -0
- {depthtensor-2.4.0 → depthtensor-2.4.2}/src/depthtensor.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: depthtensor
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: A Hardware-Accelerated Tensor Computation and Autograd Engine
|
|
5
5
|
Author-email: Le Hong Ha <lehahong1310@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
|
|
41
41
|
# DepthTensor: A Hardware-Accelerated Tensor Computation and Autograd Engine
|
|
42
42
|
|
|
43
|
-
**DepthTensor** is a light-weight, high-performance library for reverse-mode automatic differentiation (AD). It is useful in building the mathematical foundation of deep learning frameworks, with the use of a `Tensor` object which dynamically builds computational graphs and computes gradients using **Vector-Jacobian Products (VJP)**, generalized for tensors of
|
|
43
|
+
**DepthTensor** is a light-weight, high-performance library for reverse-mode automatic differentiation (AD). It is useful in building the mathematical foundation of deep learning frameworks, with the use of a `Tensor` object which dynamically builds computational graphs and computes gradients using **Vector-Jacobian Products (VJP)**, generalized for tensors of arbitrary rank.
|
|
44
44
|
|
|
45
45
|
> **Note**: This is the core autograd and tensor computation engine. For the full deep learning framework, refer to [DepthML](https://github.com/l-h-ha/DepthML).
|
|
46
46
|
|
|
@@ -82,7 +82,7 @@ All gradients are aggregated from all gradient downstreams.
|
|
|
82
82
|
|
|
83
83
|
## 2. Architecture and System Design
|
|
84
84
|
|
|
85
|
-
### 2.1. The
|
|
85
|
+
### 2.1. The Differentiable Primitive (`Tensor`)
|
|
86
86
|
|
|
87
87
|
The `Tensor` class acts like a node in the Directed Acyclic Graph (DAG).
|
|
88
88
|
|
|
@@ -109,13 +109,13 @@ a, b = dt.Tensor([1], device="gpu"), dt.Tensor(
|
|
|
109
109
|
[100], device="gpu"
|
|
110
110
|
)
|
|
111
111
|
|
|
112
|
-
#
|
|
112
|
+
# Optimization Loop
|
|
113
113
|
lr = 0.001
|
|
114
114
|
for i in range(500):
|
|
115
115
|
# Rosenbrock: f(x,y) = (a-x)^2 + b(y-x^2)^2
|
|
116
116
|
loss = (a - x) ** 2 + b * (y - x**2) ** 2
|
|
117
117
|
|
|
118
|
-
#
|
|
118
|
+
# Backward pass
|
|
119
119
|
dt.differentiate(loss)
|
|
120
120
|
|
|
121
121
|
# Gradient Descent
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DepthTensor: A Hardware-Accelerated Tensor Computation and Autograd Engine
|
|
2
2
|
|
|
3
|
-
**DepthTensor** is a light-weight, high-performance library for reverse-mode automatic differentiation (AD). It is useful in building the mathematical foundation of deep learning frameworks, with the use of a `Tensor` object which dynamically builds computational graphs and computes gradients using **Vector-Jacobian Products (VJP)**, generalized for tensors of
|
|
3
|
+
**DepthTensor** is a light-weight, high-performance library for reverse-mode automatic differentiation (AD). It is useful in building the mathematical foundation of deep learning frameworks, with the use of a `Tensor` object which dynamically builds computational graphs and computes gradients using **Vector-Jacobian Products (VJP)**, generalized for tensors of arbitrary rank.
|
|
4
4
|
|
|
5
5
|
> **Note**: This is the core autograd and tensor computation engine. For the full deep learning framework, refer to [DepthML](https://github.com/l-h-ha/DepthML).
|
|
6
6
|
|
|
@@ -42,7 +42,7 @@ All gradients are aggregated from all gradient downstreams.
|
|
|
42
42
|
|
|
43
43
|
## 2. Architecture and System Design
|
|
44
44
|
|
|
45
|
-
### 2.1. The
|
|
45
|
+
### 2.1. The Differentiable Primitive (`Tensor`)
|
|
46
46
|
|
|
47
47
|
The `Tensor` class acts like a node in the Directed Acyclic Graph (DAG).
|
|
48
48
|
|
|
@@ -69,13 +69,13 @@ a, b = dt.Tensor([1], device="gpu"), dt.Tensor(
|
|
|
69
69
|
[100], device="gpu"
|
|
70
70
|
)
|
|
71
71
|
|
|
72
|
-
#
|
|
72
|
+
# Optimization Loop
|
|
73
73
|
lr = 0.001
|
|
74
74
|
for i in range(500):
|
|
75
75
|
# Rosenbrock: f(x,y) = (a-x)^2 + b(y-x^2)^2
|
|
76
76
|
loss = (a - x) ** 2 + b * (y - x**2) ** 2
|
|
77
77
|
|
|
78
|
-
#
|
|
78
|
+
# Backward pass
|
|
79
79
|
dt.differentiate(loss)
|
|
80
80
|
|
|
81
81
|
# Gradient Descent
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "depthtensor"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
description = "A Hardware-Accelerated Tensor Computation and Autograd Engine"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -13,8 +13,8 @@ authors = [
|
|
|
13
13
|
license = { file = "LICENSE" }
|
|
14
14
|
classifiers = [
|
|
15
15
|
"Programming Language :: Python :: 3",
|
|
16
|
-
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
17
|
-
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
18
|
"Operating System :: OS Independent"
|
|
19
19
|
]
|
|
20
20
|
requires-python = ">=3.8"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import overload, Union, Tuple
|
|
2
2
|
|
|
3
3
|
from ...typing import (
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
TensorType,
|
|
5
|
+
Device,
|
|
6
|
+
TensorDataBool,
|
|
7
7
|
Casting,
|
|
8
8
|
Order,
|
|
9
|
-
|
|
9
|
+
TensorLike,
|
|
10
10
|
)
|
|
11
11
|
|
|
12
12
|
from ..exceptions import (
|
|
@@ -16,7 +16,7 @@ from ..exceptions import (
|
|
|
16
16
|
DEVICE_MISMATCH_MSG,
|
|
17
17
|
)
|
|
18
18
|
|
|
19
|
-
from ..utils import
|
|
19
|
+
from ..utils import to_tensordata, get_device, get_two_operand_op_device
|
|
20
20
|
|
|
21
21
|
import numpy as np
|
|
22
22
|
|
|
@@ -32,35 +32,35 @@ except (ImportError, ModuleNotFoundError):
|
|
|
32
32
|
|
|
33
33
|
@overload
|
|
34
34
|
def where(
|
|
35
|
-
condition:
|
|
35
|
+
condition: TensorLike,
|
|
36
36
|
/,
|
|
37
37
|
*,
|
|
38
|
-
device:
|
|
38
|
+
device: Device = "cpu",
|
|
39
39
|
requires_grad: bool = False,
|
|
40
|
-
) -> Tuple[
|
|
40
|
+
) -> Tuple[TensorType, ...]: ...
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
@overload
|
|
44
44
|
def where(
|
|
45
|
-
condition:
|
|
46
|
-
x:
|
|
47
|
-
y:
|
|
45
|
+
condition: TensorLike,
|
|
46
|
+
x: TensorLike | None,
|
|
47
|
+
y: TensorLike | None,
|
|
48
48
|
/,
|
|
49
49
|
*,
|
|
50
|
-
device:
|
|
50
|
+
device: Device = "cpu",
|
|
51
51
|
requires_grad: bool = False,
|
|
52
|
-
) ->
|
|
52
|
+
) -> TensorType: ...
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
def where(
|
|
56
|
-
condition:
|
|
57
|
-
x:
|
|
58
|
-
y:
|
|
56
|
+
condition: TensorLike,
|
|
57
|
+
x: TensorLike | None = None,
|
|
58
|
+
y: TensorLike | None = None,
|
|
59
59
|
/,
|
|
60
60
|
*,
|
|
61
|
-
device:
|
|
61
|
+
device: Device | None = None,
|
|
62
62
|
requires_grad: bool = False,
|
|
63
|
-
) -> Union[
|
|
63
|
+
) -> Union[tuple[TensorType, ...], TensorType]:
|
|
64
64
|
from ...tensor import Tensor
|
|
65
65
|
|
|
66
66
|
if device is None:
|
|
@@ -68,9 +68,9 @@ def where(
|
|
|
68
68
|
|
|
69
69
|
# * One parameter overload
|
|
70
70
|
if (x is None) and (y is None):
|
|
71
|
-
data =
|
|
71
|
+
data = to_tensordata(condition, device=device)
|
|
72
72
|
if device == "cpu":
|
|
73
|
-
result = np.where(data)
|
|
73
|
+
result = np.where(data) # type: ignore
|
|
74
74
|
else:
|
|
75
75
|
if cp is None:
|
|
76
76
|
raise CuPyNotFound(CUPY_NOT_FOUND_MSG)
|
|
@@ -85,9 +85,9 @@ def where(
|
|
|
85
85
|
):
|
|
86
86
|
raise DeviceMismatch(DEVICE_MISMATCH_MSG)
|
|
87
87
|
|
|
88
|
-
data =
|
|
89
|
-
x_data =
|
|
90
|
-
y_data =
|
|
88
|
+
data = to_tensordata(condition, device=device)
|
|
89
|
+
x_data = to_tensordata(x, device=device)
|
|
90
|
+
y_data = to_tensordata(y, device=device)
|
|
91
91
|
if device == "cpu":
|
|
92
92
|
result = np.where(data, x_data, y_data)
|
|
93
93
|
else:
|
|
@@ -105,24 +105,24 @@ def where(
|
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
def wrapper_2in_1out(
|
|
108
|
-
x1:
|
|
109
|
-
x2:
|
|
108
|
+
x1: TensorLike,
|
|
109
|
+
x2: TensorLike,
|
|
110
110
|
/,
|
|
111
|
-
out:
|
|
111
|
+
out: TensorDataBool | None = None,
|
|
112
112
|
*,
|
|
113
113
|
func_name: str,
|
|
114
|
-
device:
|
|
115
|
-
where:
|
|
114
|
+
device: Device | None = None,
|
|
115
|
+
where: TensorDataBool | bool = True,
|
|
116
116
|
casting: Casting = "same_kind",
|
|
117
117
|
order: Order = "K",
|
|
118
118
|
dtype: None = None,
|
|
119
119
|
subok: bool = True,
|
|
120
|
-
) ->
|
|
120
|
+
) -> TensorType:
|
|
121
121
|
from ...tensor import Tensor
|
|
122
122
|
|
|
123
123
|
op_device = get_two_operand_op_device(x1, x2, device)
|
|
124
124
|
|
|
125
|
-
x1, x2 =
|
|
125
|
+
x1, x2 = to_tensordata(x1, device=op_device), to_tensordata(x2, device=op_device)
|
|
126
126
|
if op_device == "cpu":
|
|
127
127
|
y = getattr(np, func_name)(
|
|
128
128
|
x1,
|
|
@@ -142,18 +142,18 @@ def wrapper_2in_1out(
|
|
|
142
142
|
|
|
143
143
|
|
|
144
144
|
def equal(
|
|
145
|
-
x1:
|
|
146
|
-
x2:
|
|
145
|
+
x1: TensorLike,
|
|
146
|
+
x2: TensorLike,
|
|
147
147
|
/,
|
|
148
|
-
out:
|
|
148
|
+
out: TensorDataBool | None = None,
|
|
149
149
|
*,
|
|
150
|
-
device:
|
|
151
|
-
where:
|
|
150
|
+
device: Device | None = None,
|
|
151
|
+
where: TensorDataBool | bool = True,
|
|
152
152
|
casting: Casting = "same_kind",
|
|
153
153
|
order: Order = "K",
|
|
154
154
|
dtype: None = None,
|
|
155
155
|
subok: bool = True,
|
|
156
|
-
) ->
|
|
156
|
+
) -> TensorType:
|
|
157
157
|
return wrapper_2in_1out(
|
|
158
158
|
x1,
|
|
159
159
|
x2,
|
|
@@ -169,18 +169,18 @@ def equal(
|
|
|
169
169
|
|
|
170
170
|
|
|
171
171
|
def not_equal(
|
|
172
|
-
x1:
|
|
173
|
-
x2:
|
|
172
|
+
x1: TensorLike,
|
|
173
|
+
x2: TensorLike,
|
|
174
174
|
/,
|
|
175
|
-
out:
|
|
175
|
+
out: TensorDataBool | None = None,
|
|
176
176
|
*,
|
|
177
|
-
device:
|
|
178
|
-
where:
|
|
177
|
+
device: Device | None = None,
|
|
178
|
+
where: TensorDataBool | bool = True,
|
|
179
179
|
casting: Casting = "same_kind",
|
|
180
180
|
order: Order = "K",
|
|
181
181
|
dtype: None = None,
|
|
182
182
|
subok: bool = True,
|
|
183
|
-
) ->
|
|
183
|
+
) -> TensorType:
|
|
184
184
|
return wrapper_2in_1out(
|
|
185
185
|
x1,
|
|
186
186
|
x2,
|
|
@@ -196,18 +196,18 @@ def not_equal(
|
|
|
196
196
|
|
|
197
197
|
|
|
198
198
|
def greater(
|
|
199
|
-
x1:
|
|
200
|
-
x2:
|
|
199
|
+
x1: TensorLike,
|
|
200
|
+
x2: TensorLike,
|
|
201
201
|
/,
|
|
202
|
-
out:
|
|
202
|
+
out: TensorDataBool | None = None,
|
|
203
203
|
*,
|
|
204
|
-
device:
|
|
205
|
-
where:
|
|
204
|
+
device: Device | None = None,
|
|
205
|
+
where: TensorDataBool | bool = True,
|
|
206
206
|
casting: Casting = "same_kind",
|
|
207
207
|
order: Order = "K",
|
|
208
208
|
dtype: None = None,
|
|
209
209
|
subok: bool = True,
|
|
210
|
-
) ->
|
|
210
|
+
) -> TensorType:
|
|
211
211
|
return wrapper_2in_1out(
|
|
212
212
|
x1,
|
|
213
213
|
x2,
|
|
@@ -223,18 +223,18 @@ def greater(
|
|
|
223
223
|
|
|
224
224
|
|
|
225
225
|
def greater_equal(
|
|
226
|
-
x1:
|
|
227
|
-
x2:
|
|
226
|
+
x1: TensorLike,
|
|
227
|
+
x2: TensorLike,
|
|
228
228
|
/,
|
|
229
|
-
out:
|
|
229
|
+
out: TensorDataBool | None = None,
|
|
230
230
|
*,
|
|
231
|
-
device:
|
|
232
|
-
where:
|
|
231
|
+
device: Device | None = None,
|
|
232
|
+
where: TensorDataBool | bool = True,
|
|
233
233
|
casting: Casting = "same_kind",
|
|
234
234
|
order: Order = "K",
|
|
235
235
|
dtype: None = None,
|
|
236
236
|
subok: bool = True,
|
|
237
|
-
) ->
|
|
237
|
+
) -> TensorType:
|
|
238
238
|
return wrapper_2in_1out(
|
|
239
239
|
x1,
|
|
240
240
|
x2,
|
|
@@ -250,18 +250,18 @@ def greater_equal(
|
|
|
250
250
|
|
|
251
251
|
|
|
252
252
|
def less(
|
|
253
|
-
x1:
|
|
254
|
-
x2:
|
|
253
|
+
x1: TensorLike,
|
|
254
|
+
x2: TensorLike,
|
|
255
255
|
/,
|
|
256
|
-
out:
|
|
256
|
+
out: TensorDataBool | None = None,
|
|
257
257
|
*,
|
|
258
|
-
device:
|
|
259
|
-
where:
|
|
258
|
+
device: Device | None = None,
|
|
259
|
+
where: TensorDataBool | bool = True,
|
|
260
260
|
casting: Casting = "same_kind",
|
|
261
261
|
order: Order = "K",
|
|
262
262
|
dtype: None = None,
|
|
263
263
|
subok: bool = True,
|
|
264
|
-
) ->
|
|
264
|
+
) -> TensorType:
|
|
265
265
|
return wrapper_2in_1out(
|
|
266
266
|
x1,
|
|
267
267
|
x2,
|
|
@@ -277,18 +277,18 @@ def less(
|
|
|
277
277
|
|
|
278
278
|
|
|
279
279
|
def less_equal(
|
|
280
|
-
x1:
|
|
281
|
-
x2:
|
|
280
|
+
x1: TensorLike,
|
|
281
|
+
x2: TensorLike,
|
|
282
282
|
/,
|
|
283
|
-
out:
|
|
283
|
+
out: TensorDataBool | None = None,
|
|
284
284
|
*,
|
|
285
|
-
device:
|
|
286
|
-
where:
|
|
285
|
+
device: Device | None = None,
|
|
286
|
+
where: TensorDataBool | bool = True,
|
|
287
287
|
casting: Casting = "same_kind",
|
|
288
288
|
order: Order = "K",
|
|
289
289
|
dtype: None = None,
|
|
290
290
|
subok: bool = True,
|
|
291
|
-
) ->
|
|
291
|
+
) -> TensorType:
|
|
292
292
|
return wrapper_2in_1out(
|
|
293
293
|
x1,
|
|
294
294
|
x2,
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Literal
|
|
2
2
|
|
|
3
3
|
from ...typing import (
|
|
4
|
+
TensorType,
|
|
4
5
|
TensorLike,
|
|
5
6
|
DTypeLike,
|
|
6
7
|
Order,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
ShapeLike,
|
|
11
|
-
NDArrayLike,
|
|
8
|
+
Axis,
|
|
9
|
+
Device,
|
|
10
|
+
Shape,
|
|
12
11
|
)
|
|
13
12
|
|
|
14
13
|
from ..exceptions import CuPyNotFound, CUPY_NOT_FOUND_MSG
|
|
15
|
-
|
|
16
|
-
from ..utils import to_xp_array, get_device
|
|
14
|
+
from ..utils import to_tensordata, get_device
|
|
17
15
|
|
|
18
16
|
import numpy as np
|
|
19
17
|
|
|
@@ -28,23 +26,23 @@ except (ImportError, ModuleNotFoundError):
|
|
|
28
26
|
|
|
29
27
|
|
|
30
28
|
def zeros_like(
|
|
31
|
-
a:
|
|
29
|
+
a: TensorLike,
|
|
32
30
|
/,
|
|
33
31
|
*,
|
|
34
|
-
device:
|
|
32
|
+
device: Device | None = None,
|
|
35
33
|
requires_grad: bool = False,
|
|
36
|
-
dtype:
|
|
34
|
+
dtype: DTypeLike | None = None,
|
|
37
35
|
order: Order = "K",
|
|
38
36
|
subok: bool = True,
|
|
39
|
-
shape:
|
|
40
|
-
) ->
|
|
37
|
+
shape: Axis | None = None,
|
|
38
|
+
) -> TensorType:
|
|
41
39
|
from ...tensor import Tensor
|
|
42
40
|
|
|
43
41
|
if device is None:
|
|
44
42
|
device_op = get_device(a)
|
|
45
43
|
else:
|
|
46
44
|
device_op = device
|
|
47
|
-
a =
|
|
45
|
+
a = to_tensordata(a)
|
|
48
46
|
if device_op == "cpu":
|
|
49
47
|
y = np.zeros_like(a, dtype=dtype, order=order, subok=subok, shape=shape)
|
|
50
48
|
else:
|
|
@@ -55,23 +53,23 @@ def zeros_like(
|
|
|
55
53
|
|
|
56
54
|
|
|
57
55
|
def ones_like(
|
|
58
|
-
a:
|
|
56
|
+
a: TensorLike,
|
|
59
57
|
/,
|
|
60
58
|
*,
|
|
61
|
-
device:
|
|
59
|
+
device: Device | None = None,
|
|
62
60
|
requires_grad: bool = False,
|
|
63
|
-
dtype:
|
|
61
|
+
dtype: DTypeLike | None = None,
|
|
64
62
|
order: Order = "K",
|
|
65
63
|
subok: bool = True,
|
|
66
|
-
shape:
|
|
67
|
-
) ->
|
|
64
|
+
shape: Axis | None = None,
|
|
65
|
+
) -> TensorType:
|
|
68
66
|
from ...tensor import Tensor
|
|
69
67
|
|
|
70
68
|
if device is None:
|
|
71
69
|
device_op = get_device(a)
|
|
72
70
|
else:
|
|
73
71
|
device_op = device
|
|
74
|
-
a =
|
|
72
|
+
a = to_tensordata(a)
|
|
75
73
|
if device_op == "cpu":
|
|
76
74
|
y = np.ones_like(a, dtype=dtype, order=order, subok=subok, shape=shape)
|
|
77
75
|
else:
|
|
@@ -82,13 +80,13 @@ def ones_like(
|
|
|
82
80
|
|
|
83
81
|
|
|
84
82
|
def zeros(
|
|
85
|
-
shape:
|
|
83
|
+
shape: Shape,
|
|
86
84
|
dtype: DTypeLike = float,
|
|
87
85
|
order: Literal["C", "F"] = "C",
|
|
88
86
|
*,
|
|
89
|
-
device:
|
|
87
|
+
device: Device = "cpu",
|
|
90
88
|
requires_grad: bool = False,
|
|
91
|
-
) ->
|
|
89
|
+
) -> TensorType:
|
|
92
90
|
from ...tensor import Tensor
|
|
93
91
|
|
|
94
92
|
if device == "cpu":
|
|
@@ -101,13 +99,13 @@ def zeros(
|
|
|
101
99
|
|
|
102
100
|
|
|
103
101
|
def ones(
|
|
104
|
-
shape:
|
|
102
|
+
shape: Shape,
|
|
105
103
|
dtype: DTypeLike = float,
|
|
106
104
|
order: Literal["C", "F"] = "C",
|
|
107
105
|
*,
|
|
108
|
-
device:
|
|
106
|
+
device: Device = "cpu",
|
|
109
107
|
requires_grad: bool = False,
|
|
110
|
-
) ->
|
|
108
|
+
) -> TensorType:
|
|
111
109
|
from ...tensor import Tensor
|
|
112
110
|
|
|
113
111
|
if device == "cpu":
|