本文整理匯總了Python中torch.float64方法的典型用法代碼示例。如果您正苦於以下問題:Python torch.float64方法的具體用法?Python torch.float64怎麽用?Python torch.float64使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類torch
的用法示例。
在下文中一共展示了torch.float64方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: sample_action
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def sample_action(self, obs):
"""Sample an action for the given observation.
Parameters
----------
obs: A numpy array of shape [obs_dim].
Returns
-------
An integer, the action sampled.
"""
if np.random.random() < self.epsilon:
return np.random.randint(self.ac_dim)
if len(obs.shape) != 1 or obs.shape[0] != self.obs_dim:
raise ValueError(
"Expected input observation shape [obs_dim], got %s" % str(obs.shape)
)
obs = torch.tensor(obs.reshape(1, -1), dtype=torch.float64)
# When sampling use eval mode.
return (
torch.distributions.Categorical(logits=self.eval().double().forward(obs))
.sample()
.item()
)
示例2: test_n_additions_via_scalar_multiplication
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def test_n_additions_via_scalar_multiplication(n, a, dtype, negative, manifold, strict):
n = torch.as_tensor(n, dtype=a.dtype).requires_grad_()
y = torch.zeros_like(a)
for _ in range(int(n.item())):
y = manifold.mobius_add(a, y)
ny = manifold.mobius_scalar_mul(n, a)
if negative:
tolerance = {
torch.float32: dict(atol=4e-5, rtol=1e-3),
torch.float64: dict(atol=1e-5, rtol=1e-3),
}
else:
tolerance = {
torch.float32: dict(atol=2e-6, rtol=1e-3),
torch.float64: dict(atol=1e-5, rtol=1e-3),
}
tolerant_allclose_check(y, ny, strict=strict, **tolerance[dtype])
ny.sum().backward()
assert torch.isfinite(n.grad).all()
assert torch.isfinite(a.grad).all()
assert torch.isfinite(manifold.k.grad).all()
示例3: test_scalar_multiplication_distributive
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def test_scalar_multiplication_distributive(a, r1, r2, manifold, dtype):
res = manifold.mobius_scalar_mul(r1 + r2, a)
res1 = manifold.mobius_add(
manifold.mobius_scalar_mul(r1, a), manifold.mobius_scalar_mul(r2, a),
)
res2 = manifold.mobius_add(
manifold.mobius_scalar_mul(r1, a), manifold.mobius_scalar_mul(r2, a),
)
tolerance = {
torch.float32: dict(atol=5e-6, rtol=1e-4),
torch.float64: dict(atol=1e-7, rtol=1e-4),
}
np.testing.assert_allclose(res1.detach(), res.detach(), **tolerance[dtype])
np.testing.assert_allclose(res2.detach(), res.detach(), **tolerance[dtype])
res.sum().backward()
assert torch.isfinite(a.grad).all()
assert torch.isfinite(r1.grad).all()
assert torch.isfinite(r2.grad).all()
assert torch.isfinite(manifold.k.grad).all()
示例4: test_geodesic_segment_length_property
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def test_geodesic_segment_length_property(a, b, manifold, dtype):
extra_dims = len(a.shape)
segments = 12
t = torch.linspace(0, 1, segments + 1, dtype=dtype).view(
(segments + 1,) + (1,) * extra_dims
)
gamma_ab_t = manifold.geodesic(t, a, b)
gamma_ab_t0 = gamma_ab_t[:-1]
gamma_ab_t1 = gamma_ab_t[1:]
dist_ab_t0mt1 = manifold.dist(gamma_ab_t0, gamma_ab_t1, keepdim=True)
speed = manifold.dist(a, b, keepdim=True).unsqueeze(0).expand_as(dist_ab_t0mt1)
# we have exactly 12 line segments
tolerance = {
torch.float32: dict(rtol=1e-5, atol=5e-3),
torch.float64: dict(rtol=1e-5, atol=5e-3),
}
length = speed / segments
np.testing.assert_allclose(
dist_ab_t0mt1.detach(), length.detach(), **tolerance[dtype]
)
(length + dist_ab_t0mt1).sum().backward()
assert torch.isfinite(a.grad).all()
assert torch.isfinite(b.grad).all()
assert torch.isfinite(manifold.k.grad).all()
示例5: test_geodesic_segement_unit_property
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def test_geodesic_segement_unit_property(a, b, manifold, dtype):
extra_dims = len(a.shape)
segments = 12
t = torch.linspace(0, 1, segments + 1, dtype=dtype).view(
(segments + 1,) + (1,) * extra_dims
)
gamma_ab_t = manifold.geodesic_unit(t, a, b)
gamma_ab_t0 = gamma_ab_t[:1]
gamma_ab_t1 = gamma_ab_t
dist_ab_t0mt1 = manifold.dist(gamma_ab_t0, gamma_ab_t1, keepdim=True)
true_distance_travelled = t.expand_as(dist_ab_t0mt1)
# we have exactly 12 line segments
tolerance = {
torch.float32: dict(atol=2e-4, rtol=5e-5),
torch.float64: dict(atol=1e-10),
}
np.testing.assert_allclose(
dist_ab_t0mt1.detach(), true_distance_travelled.detach(), **tolerance[dtype]
)
(true_distance_travelled + dist_ab_t0mt1).sum().backward()
assert torch.isfinite(a.grad).all()
assert torch.isfinite(b.grad).all()
assert torch.isfinite(manifold.k.grad).all()
示例6: euclidean_stiefel_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def euclidean_stiefel_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.EuclideanStiefel]
ex = torch.randn(*shape, dtype=torch.float64)
ev = torch.randn(*shape, dtype=torch.float64)
u, _, v = torch.svd(ex)
x = u @ v.t()
nonsym = x.t() @ ev
v = ev - x @ (nonsym + nonsym.t()) / 2
manifold = geoopt.manifolds.EuclideanStiefel()
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
manifold = geoopt.manifolds.EuclideanStiefelExact()
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例7: birkhoff_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def birkhoff_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.BirkhoffPolytope]
ex = torch.randn(*shape, dtype=torch.float64).abs()
ev = torch.randn(*shape, dtype=torch.float64)
max_iter = 100
eps = 1e-12
tol = 1e-5
iter = 0
c = 1.0 / (torch.sum(ex, dim=-2, keepdim=True) + eps)
r = 1.0 / (torch.matmul(ex, c.transpose(-1, -2)) + eps)
while iter < max_iter:
iter += 1
cinv = torch.matmul(r.transpose(-1, -2), ex)
if torch.max(torch.abs(cinv * c - 1)) <= tol:
break
c = 1.0 / (cinv + eps)
r = 1.0 / ((ex @ c.transpose(-1, -2)) + eps)
x = ex * (r @ c)
v = proju_original(x, ev)
manifold = geoopt.manifolds.BirkhoffPolytope()
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例8: poincare_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def poincare_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.PoincareBall]
ex = torch.randn(*shape, dtype=torch.float64) / 3
ev = torch.randn(*shape, dtype=torch.float64) / 3
x = torch.tanh(torch.norm(ex)) * ex / torch.norm(ex)
ex = x.clone()
v = ev.clone()
manifold = geoopt.PoincareBall().to(dtype=torch.float64)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
manifold = geoopt.PoincareBallExact().to(dtype=torch.float64)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例9: sphere_projection_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def sphere_projection_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.SphereProjection]
ex = torch.randn(*shape, dtype=torch.float64) / 3
ev = torch.randn(*shape, dtype=torch.float64) / 3
x = ex # default curvature = 0
ex = x.clone()
v = ev.clone()
manifold = geoopt.manifolds.SphereProjection().to(dtype=torch.float64)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
manifold = geoopt.manifolds.SphereProjectionExact().to(dtype=torch.float64)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例10: sphere_subspace_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def sphere_subspace_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.Sphere]
subspace = torch.rand(shape[-1], 2, dtype=torch.float64)
Q, _ = geoopt.linalg.batch_linalg.qr(subspace)
P = Q @ Q.t()
ex = torch.randn(*shape, dtype=torch.float64)
ev = torch.randn(*shape, dtype=torch.float64)
x = (ex @ P.t()) / torch.norm(ex @ P.t())
v = (ev - (x @ ev) * x) @ P.t()
manifold = geoopt.Sphere(intersection=subspace)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
manifold = geoopt.SphereExact(intersection=subspace)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例11: sphere_compliment_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def sphere_compliment_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.Sphere]
complement = torch.rand(shape[-1], 1, dtype=torch.float64)
Q, _ = geoopt.linalg.batch_linalg.qr(complement)
P = -Q @ Q.transpose(-1, -2)
P[..., torch.arange(P.shape[-2]), torch.arange(P.shape[-2])] += 1
ex = torch.randn(*shape, dtype=torch.float64)
ev = torch.randn(*shape, dtype=torch.float64)
x = (ex @ P.t()) / torch.norm(ex @ P.t())
v = (ev - (x @ ev) * x) @ P.t()
manifold = geoopt.Sphere(complement=complement)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
manifold = geoopt.SphereExact(complement=complement)
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例12: sphere_case
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def sphere_case():
torch.manual_seed(42)
shape = manifold_shapes[geoopt.manifolds.Sphere]
ex = torch.randn(*shape, dtype=torch.float64)
ev = torch.randn(*shape, dtype=torch.float64)
x = ex / torch.norm(ex)
v = ev - (x @ ev) * x
manifold = geoopt.Sphere()
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
manifold = geoopt.SphereExact()
x = geoopt.ManifoldTensor(x, manifold=manifold)
case = UnaryCase(shape, x, ex, v, ev, manifold)
yield case
示例13: torch_dtype_to_np_dtype
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def torch_dtype_to_np_dtype(dtype):
dtype_dict = {
torch.bool : np.dtype(np.bool),
torch.uint8 : np.dtype(np.uint8),
torch.int8 : np.dtype(np.int8),
torch.int16 : np.dtype(np.int16),
torch.short : np.dtype(np.int16),
torch.int32 : np.dtype(np.int32),
torch.int : np.dtype(np.int32),
torch.int64 : np.dtype(np.int64),
torch.long : np.dtype(np.int64),
torch.float16 : np.dtype(np.float16),
torch.half : np.dtype(np.float16),
torch.float32 : np.dtype(np.float32),
torch.float : np.dtype(np.float32),
torch.float64 : np.dtype(np.float64),
torch.double : np.dtype(np.float64),
}
return dtype_dict[dtype]
# ---------------------- InferenceEngine internal types ------------------------
示例14: symsqrt
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def symsqrt(a, cond=None, return_rank=False, dtype=torch.float32):
"""Symmetric square root of a positive semi-definite matrix.
See https://github.com/pytorch/pytorch/issues/25481"""
s, u = torch.symeig(a, eigenvectors=True)
cond_dict = {torch.float32: 1e3 * 1.1920929e-07, torch.float64: 1E6 * 2.220446049250313e-16}
if cond in [None, -1]:
cond = cond_dict[dtype]
above_cutoff = (abs(s) > cond * torch.max(abs(s)))
psigma_diag = torch.sqrt(s[above_cutoff])
u = u[:, above_cutoff]
B = u @ torch.diag(psigma_diag) @ u.t()
if return_rank:
return B, len(psigma_diag)
else:
return B
示例15: __init__
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import float64 [as 別名]
def __init__(self, device=None, model_path='./model.pkl'):
super(SMPLModel, self).__init__()
with open(model_path, 'rb') as f:
params = pickle.load(f)
self.J_regressor = torch.from_numpy(
np.array(params['J_regressor'].todense())
).type(torch.float64)
self.weights = torch.from_numpy(params['weights']).type(torch.float64)
self.posedirs = torch.from_numpy(params['posedirs']).type(torch.float64)
self.v_template = torch.from_numpy(params['v_template']).type(torch.float64)
self.shapedirs = torch.from_numpy(params['shapedirs']).type(torch.float64)
self.kintree_table = params['kintree_table']
self.faces = params['f']
self.device = device if device is not None else torch.device('cpu')
for name in ['J_regressor', 'weights', 'posedirs', 'v_template', 'shapedirs']:
_tensor = getattr(self, name)
setattr(self, name, _tensor.to(device))