From f544ff26a66aa1d4762eb90431a44fc8aa573eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=87=E5=88=BB=E5=B0=8F=E5=93=A5=E5=93=A5?= Date: Tue, 7 May 2024 00:23:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8E=9F=E6=9D=A5?= =?UTF-8?q?=E7=9A=84API=E7=9B=B8=E5=85=B3=E7=9A=84=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=EF=BC=8C=E5=BB=BA=E8=AE=AE=E7=9B=B4=E6=8E=A5=E7=9C=8B=E8=8B=B1?= =?UTF-8?q?=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/2.0/docs/README.md | 30 +- docs/2.0/docs/amp.md | 595 - docs/2.0/docs/autograd.md | 53 - docs/2.0/docs/backends.md | 53 - docs/2.0/docs/benchmark_utils.md | 53 - docs/2.0/docs/bottleneck.md | 48 - docs/2.0/docs/checkpoint.md | 53 - .../2.0/docs/community/build_ci_governance.md | 28 - docs/2.0/docs/community/contribution_guide.md | 228 - docs/2.0/docs/community/design.md | 112 - docs/2.0/docs/community/governance.md | 216 - .../2.0/docs/community/persons_of_interest.md | 427 - docs/2.0/docs/complex_numbers.md | 53 - docs/2.0/docs/config_mod.md | 19 - docs/2.0/docs/cpp_extension.md | 53 - docs/2.0/docs/cpp_index.md | 65 - docs/2.0/docs/cpu.md | 28 - docs/2.0/docs/cuda.md | 134 - docs/2.0/docs/data.md | 53 - docs/2.0/docs/ddp_comm_hooks.md | 53 - docs/2.0/docs/deploy.md | 10 - docs/2.0/docs/distributed.algorithms.join.md | 53 - docs/2.0/docs/distributed.checkpoint.md | 53 - docs/2.0/docs/distributed.elastic.md | 45 - docs/2.0/docs/distributed.md | 53 - docs/2.0/docs/distributed.optim.md | 53 - docs/2.0/docs/distributed.tensor.parallel.md | 53 - docs/2.0/docs/distributions.md | 53 - docs/2.0/docs/dlpack.md | 93 - docs/2.0/docs/docs.zip | Bin 0 -> 662154 bytes docs/2.0/docs/export.md | 53 - docs/2.0/docs/fft.md | 46 - docs/2.0/docs/fsdp.md | 53 - docs/2.0/docs/func.md | 67 - docs/2.0/docs/futures.md | 53 - docs/2.0/docs/fx.md | 53 - docs/2.0/docs/hub.md | 53 - docs/2.0/docs/jit.md | 53 - docs/2.0/docs/jit_utils.md | 8 - docs/2.0/docs/library.md | 53 - docs/2.0/docs/linalg.md | 117 - docs/2.0/docs/logging.md | 53 - docs/2.0/docs/masked.md | 53 - docs/2.0/docs/mobile_optimizer.md | 53 - docs/2.0/docs/model_zoo.md | 53 - docs/2.0/docs/monitor.md | 53 - docs/2.0/docs/mps.md | 41 - docs/2.0/docs/name_inference.md | 53 - docs/2.0/docs/named_tensor.md | 53 - docs/2.0/docs/nested.md | 53 - docs/2.0/docs/nn.functional.md | 53 - docs/2.0/docs/nn.init.md | 53 - docs/2.0/docs/nn.md | 53 - docs/2.0/docs/notes/amp_examples.md | 423 - docs/2.0/docs/notes/autograd.md | 14786 ---------------- docs/2.0/docs/notes/broadcasting.md | 138 - .../cpu_threading_torchscript_inference.md | 137 - docs/2.0/docs/notes/cuda.md | 1037 -- docs/2.0/docs/notes/ddp.md | 149 - docs/2.0/docs/notes/extending.func.md | 493 - docs/2.0/docs/notes/extending.md | 842 - docs/2.0/docs/notes/faq.md | 152 - docs/2.0/docs/notes/gradcheck.md | 5429 ------ docs/2.0/docs/notes/hip.md | 156 - .../2.0/docs/notes/large_scale_deployments.md | 132 - docs/2.0/docs/notes/modules.md | 758 - docs/2.0/docs/notes/mps.md | 47 - docs/2.0/docs/notes/multiprocessing.md | 171 - docs/2.0/docs/notes/numerical_accuracy.md | 132 - docs/2.0/docs/notes/randomness.md | 167 - docs/2.0/docs/notes/serialization.md | 417 - docs/2.0/docs/notes/windows.md | 265 - docs/2.0/docs/onnx.md | 53 - docs/2.0/docs/optim.md | 53 - docs/2.0/docs/package.md | 53 - docs/2.0/docs/pipeline.md | 53 - docs/2.0/docs/profiler.md | 53 - docs/2.0/docs/quantization.md | 53 - docs/2.0/docs/random.md | 53 - docs/2.0/docs/rpc.md | 53 - docs/2.0/docs/signal.md | 28 - docs/2.0/docs/sparse.md | 53 - docs/2.0/docs/special.md | 53 - docs/2.0/docs/storage.md | 53 - docs/2.0/docs/tensor_attributes.md | 53 - docs/2.0/docs/tensor_view.md | 108 - docs/2.0/docs/tensorboard.md | 53 - docs/2.0/docs/tensors.md | 53 - docs/2.0/docs/testing.md | 53 - docs/2.0/docs/torch.compiler.md | 95 - docs/2.0/docs/torch.md | 53 - docs/2.0/docs/torch.overrides.md | 53 - docs/2.0/docs/torch_cuda_memory.md | 53 - docs/2.0/docs/type_info.md | 63 - docs/2.0/docs/utils.md | 15 - mkdocs.yml | 120 +- 96 files changed, 34 insertions(+), 31233 deletions(-) delete mode 100755 docs/2.0/docs/amp.md delete mode 100755 docs/2.0/docs/autograd.md delete mode 100755 docs/2.0/docs/backends.md delete mode 100755 docs/2.0/docs/benchmark_utils.md delete mode 100755 docs/2.0/docs/bottleneck.md delete mode 100755 docs/2.0/docs/checkpoint.md delete mode 100755 docs/2.0/docs/community/build_ci_governance.md delete mode 100755 docs/2.0/docs/community/contribution_guide.md delete mode 100755 docs/2.0/docs/community/design.md delete mode 100755 docs/2.0/docs/community/governance.md delete mode 100755 docs/2.0/docs/community/persons_of_interest.md delete mode 100755 docs/2.0/docs/complex_numbers.md delete mode 100755 docs/2.0/docs/config_mod.md delete mode 100755 docs/2.0/docs/cpp_extension.md delete mode 100755 docs/2.0/docs/cpp_index.md delete mode 100755 docs/2.0/docs/cpu.md delete mode 100644 docs/2.0/docs/cuda.md delete mode 100755 docs/2.0/docs/data.md delete mode 100755 docs/2.0/docs/ddp_comm_hooks.md delete mode 100755 docs/2.0/docs/deploy.md delete mode 100755 docs/2.0/docs/distributed.algorithms.join.md delete mode 100755 docs/2.0/docs/distributed.checkpoint.md delete mode 100755 docs/2.0/docs/distributed.elastic.md delete mode 100755 docs/2.0/docs/distributed.md delete mode 100755 docs/2.0/docs/distributed.optim.md delete mode 100755 docs/2.0/docs/distributed.tensor.parallel.md delete mode 100755 docs/2.0/docs/distributions.md delete mode 100755 docs/2.0/docs/dlpack.md create mode 100644 docs/2.0/docs/docs.zip delete mode 100755 docs/2.0/docs/export.md delete mode 100755 docs/2.0/docs/fft.md delete mode 100755 docs/2.0/docs/fsdp.md delete mode 100755 docs/2.0/docs/func.md delete mode 100755 docs/2.0/docs/futures.md delete mode 100755 docs/2.0/docs/fx.md delete mode 100755 docs/2.0/docs/hub.md delete mode 100755 docs/2.0/docs/jit.md delete mode 100755 docs/2.0/docs/jit_utils.md delete mode 100755 docs/2.0/docs/library.md delete mode 100755 docs/2.0/docs/linalg.md delete mode 100755 docs/2.0/docs/logging.md delete mode 100755 docs/2.0/docs/masked.md delete mode 100755 docs/2.0/docs/mobile_optimizer.md delete mode 100755 docs/2.0/docs/model_zoo.md delete mode 100755 docs/2.0/docs/monitor.md delete mode 100755 docs/2.0/docs/mps.md delete mode 100755 docs/2.0/docs/name_inference.md delete mode 100755 docs/2.0/docs/named_tensor.md delete mode 100755 docs/2.0/docs/nested.md delete mode 100755 docs/2.0/docs/nn.functional.md delete mode 100755 docs/2.0/docs/nn.init.md delete mode 100755 docs/2.0/docs/nn.md delete mode 100755 docs/2.0/docs/notes/amp_examples.md delete mode 100755 docs/2.0/docs/notes/autograd.md delete mode 100755 docs/2.0/docs/notes/broadcasting.md delete mode 100755 docs/2.0/docs/notes/cpu_threading_torchscript_inference.md delete mode 100755 docs/2.0/docs/notes/cuda.md delete mode 100755 docs/2.0/docs/notes/ddp.md delete mode 100755 docs/2.0/docs/notes/extending.func.md delete mode 100755 docs/2.0/docs/notes/extending.md delete mode 100755 docs/2.0/docs/notes/faq.md delete mode 100755 docs/2.0/docs/notes/gradcheck.md delete mode 100755 docs/2.0/docs/notes/hip.md delete mode 100755 docs/2.0/docs/notes/large_scale_deployments.md delete mode 100755 docs/2.0/docs/notes/modules.md delete mode 100755 docs/2.0/docs/notes/mps.md delete mode 100755 docs/2.0/docs/notes/multiprocessing.md delete mode 100755 docs/2.0/docs/notes/numerical_accuracy.md delete mode 100755 docs/2.0/docs/notes/randomness.md delete mode 100755 docs/2.0/docs/notes/serialization.md delete mode 100755 docs/2.0/docs/notes/windows.md delete mode 100755 docs/2.0/docs/onnx.md delete mode 100755 docs/2.0/docs/optim.md delete mode 100755 docs/2.0/docs/package.md delete mode 100755 docs/2.0/docs/pipeline.md delete mode 100755 docs/2.0/docs/profiler.md delete mode 100755 docs/2.0/docs/quantization.md delete mode 100755 docs/2.0/docs/random.md delete mode 100755 docs/2.0/docs/rpc.md delete mode 100755 docs/2.0/docs/signal.md delete mode 100755 docs/2.0/docs/sparse.md delete mode 100755 docs/2.0/docs/special.md delete mode 100755 docs/2.0/docs/storage.md delete mode 100755 docs/2.0/docs/tensor_attributes.md delete mode 100755 docs/2.0/docs/tensor_view.md delete mode 100755 docs/2.0/docs/tensorboard.md delete mode 100755 docs/2.0/docs/tensors.md delete mode 100755 docs/2.0/docs/testing.md delete mode 100755 docs/2.0/docs/torch.compiler.md delete mode 100755 docs/2.0/docs/torch.md delete mode 100755 docs/2.0/docs/torch.overrides.md delete mode 100755 docs/2.0/docs/torch_cuda_memory.md delete mode 100755 docs/2.0/docs/type_info.md delete mode 100755 docs/2.0/docs/utils.md diff --git a/docs/2.0/docs/README.md b/docs/2.0/docs/README.md index a79e166a6..949d11408 100644 --- a/docs/2.0/docs/README.md +++ b/docs/2.0/docs/README.md @@ -1,4 +1,4 @@ -# PyTorch 文档 +# Docs 文档介绍 > 译者:[LordQ](https://github.com/lordqyxz) > @@ -6,12 +6,30 @@ > > 原始地址: -PyTorch 是一个针对深度学习,基于 GPU 和 CPU 的优化tensor库。 -本文档中描述的功能按发布状态分类: +要求如下:(相当于介绍页面包含:名称 + 链接 + 介绍) -- *稳定版:* 这些功能将长期维护,并且文档中通常不会有主要性能限制或差距。我们还希望保持向后兼容性(尽管可能会发生破坏性更改,但是会提前一个版本会给出通知)。 +1. 需要介绍: 每一个链接 需要 1~3句话 来介绍它是什么、有什么作用 +2. 要包含下面的内容,展现形式可以调整,怎么美观怎么来。 -- *Beta 版:* 这些功能被标记为 Beta 版,因为 API 可能会根据用户反馈而更改,因为性能需要改进,或者因为操作覆盖范围尚不完整。对于 Beta 版功能,我们承诺将该功能推进到稳定版。但是,我们不承诺向后兼容性。 +- "Pytorch" : "https://pytorch.org/docs/stable/index.html" +- "Torchaudio" : "https://pytorch.org/audio/stable/index.html" +- "TorchText" : "https://pytorch.org/text/stable/index.html" +- "TorchVision" : "https://pytorch.org/vision/stable/index.html" +- "TorchArrow" : "https://pytorch.org/torcharrow/beta/index.html" +- "TorchRec" : "https://pytorch.org/torchrec/" +- "TorchServe" : "https://pytorch.org/serve/" +- "TorchX" : "https://pytorch.org/torchx/latest/" +- "PyTorch on XLA Devices": "https://pytorch.org/xla/release/2.3/index.html" -- *原型版:* 这些功能通常不作为 PyPI 或 Conda 等二进制发行版的一部分提供,除非有时在运行时标志后面,并且处于反馈和测试的早期阶段。 +例如: + +## Pytorch + +> docs 访问链接: + +这个网站内容介绍的是xxx,他的用途是...方便用户查阅类里面的方法xxx + +--- + +* 原翻译的历史 docs-Pytorch 打包下载地址: diff --git a/docs/2.0/docs/amp.md b/docs/2.0/docs/amp.md deleted file mode 100755 index a66478ae7..000000000 --- a/docs/2.0/docs/amp.md +++ /dev/null @@ -1,595 +0,0 @@ -# 自动混合精度包 - torch.amp [¶](#automatic-mixed-precision-package-torch-amp "永久链接到此标题") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -[`torch.amp`](#module-torch.amp "torch.amp") 提供了混合精度的便捷方法,其中某些操作使用 `torch.float32` (`float`) 数据类型,其他操作使用较低精度的浮点数据类型(`lower_ precision_fp`):`torch.float16`(`half`)或`torch.bfloat16`。一些操作,例如线性层和卷积,在“lower_ precision_fp”中要快得多。其他操作(例如归约)通常需要 `float32` 的动态范围。混合精度尝试将每个操作与其适当的数据类型相匹配。 - - - 通常,数据类型为 `torch.float16` 的“自动混合精度训练”会同时使用 [`torch.autocast`](#torch.autocast "torch.autocast") 和 [`torch.cuda.amp.GradScaler`](#torch.cuda.amp.GradScaler "torch.cuda.amp.GradScaler"),如 [CUDA 自动混合精度示例](notes/amp_examples.html#amp-examples) 和 [CUDA 自动混合精度配方](https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html) 中所示。 但是,[`torch.autocast`](#torch.autocast "torch.autocast") 和 [`torch.cuda.amp.GradScaler`] (#torch.cuda.amp.GradScaler "torch.cuda.amp.GradScaler") 是模块化的,如果需要,可以单独使用。 如 [`torch.autocast`](#torch.autocast "torch.autocast") 的CPU示例部分所示,数据类型为 `torch.bfloat16` 的CPU上的 “自动混合精度训练/推理” 仅使用 [`torch.autocast`](#torch.autocast "torch.autocast") 。 - - - 对于CUDA和CPU,也分别提供了API: - - - -* `torch.autocast("cuda", args...)` 等价于 `torch.cuda.amp.autocast(args...)`. -* `torch.autocast("cpu", args...) ` 相当于 `torch.cpu.amp.autocast(args...)` 。对于CPU,目前仅支持较低精度的浮点数据类型“torch.bfloat16”。 - - -[`torch.autocast`](#torch.autocast "torch.autocast") 和 [`torch.cpu.amp.autocast`](#torch.cpu.amp.autocast "torch.cpu.amp.autocast") 是1.10 版本中的新功能。 - - - -* [自动投射](#autocasting) -* [渐变缩放](#gradient-scaling) -* [自动投射操作参考](#autocast-op-reference) - + [Op 资格](#op-eligibility) - + [CUDA Op 特定行为](#cuda-op-specific-behavior) - - [可以自动转换为 `float16` 的 CUDA Ops](#cuda-ops-that-c​​an-autocast-to-float16) - - [可以自动转换为 `float32` 的 CUDA 操作](#cuda-ops-that-c​​an-autocast-to-float32) - - [升级为最宽输入类型的 CUDA 操作](#cuda-ops-that-promote-to-the-widest-input-type) - - [更喜欢 `binary_cross_entropy_with_logits` 而不是 `binary_cross_entropy`](#prefer-binary-cross-entropy-with-logits-over-binary-cross-entropy) - + [CPU Op 特定行为](#cpu-op-specific-behavior) - - [可以自动转换为 `bfloat16` 的 CPU Ops](#cpu-ops-that-can-autocast-to-bfloat16) - - [可以自动转换为 `float32` 的 CPU Ops](#cpu-ops-that-c​​an-autocast-to-float32) - - [提升为最宽输入类型的 CPU Ops](#cpu-ops-that-promote-to-the-widest-input-type) - - -## [Autocasting](#id4) [¶](#autocasting "此标题的永久链接") - - -> *CLASS* `torch.autocast(device_type, dtype=None, enabled=True, cache_enabled=None)` [[source]](_modules/torch/amp/autocast_mode.html#autocast)[¶](#torch.autocast "此定义的永久链接") - - - [`autocast`](#torch.autocast "torch.autocast") 的实例充当上下文管理器或装饰器,允许脚本区域以混合精度运行。 - - - 在这些区域中,操作以 autocast 选择的操作特定数据类型运行,以提高性能,同时保持准确性。有关详细信息,请参阅 [Autocast Op 参考](#autocast-op-reference)。 - - - 当进入启用自动转换的区域时,tensor可以是任何类型。使用自动转换时,不应在模型或输入上调用“half()”或“bfloat16()”。 - - -[`autocast`](#torch.autocast "torch.autocast") 应仅包装网络的前向传递,包括损失计算。不建议在自动转换下向后传递。向后操作的运行类型与自动转换用于相应前向操作的类型相同。 - - - CUDA 设备示例: - - -``` -# Creates model and optimizer in default precision -model = Net().cuda() -optimizer = optim.SGD(model.parameters(), ...) - -for input, target in data: - optimizer.zero_grad() - - # Enables autocasting for the forward pass (model + loss) - with torch.autocast(device_type="cuda"): - output = model(input) - loss = loss_fn(output, target) - - # Exits the context manager before backward() - loss.backward() - optimizer.step() - -``` - - - 请参阅 [CUDA 自动混合精度示例](notes/amp_examples.html#amp-examples),了解在更复杂的场景(例如,梯度惩罚、多个模型/损失、自定义自动梯度函数)中的使用情况(以及梯度缩放)。 - - -[`autocast`](#torch.autocast "torch.autocast") 也可以用作装饰器,例如,在模型的 `forward` 方法上: - - -``` -class AutocastModel(nn.Module): - ... - @torch.autocast(device_type="cuda") - def forward(self, input): - ... - -``` - - - 在启用自动转换的区域中生成的浮点tensor可能是“float16”。返回到禁用自动转换的区域后,将它们与不同数据类型的浮点tensor一起使用可能会导致类型不匹配错误。如果是这样,则将自动转换区域中生成的tensor转换回“float32”(或其他需要的数据类型)。如果自动转换区域中的tensor已经是“float32”,则转换是无操作,并且会产生没有额外的开销。CUDA示例: - - -``` -# Creates some tensors in default dtype (here assumed to be float32) -a_float32 = torch.rand((8, 8), device="cuda") -b_float32 = torch.rand((8, 8), device="cuda") -c_float32 = torch.rand((8, 8), device="cuda") -d_float32 = torch.rand((8, 8), device="cuda") - -with torch.autocast(device_type="cuda"): - # torch.mm is on autocast's list of ops that should run in float16. - # Inputs are float32, but the op runs in float16 and produces float16 output. - # No manual casts are required. - e_float16 = torch.mm(a_float32, b_float32) - # Also handles mixed input types - f_float16 = torch.mm(d_float32, e_float16) - -# After exiting autocast, calls f_float16.float() to use with d_float32 -g_float32 = torch.mm(d_float32, f_float16.float()) - -``` - - - CPU 训练示例: - - -``` -# Creates model and optimizer in default precision -model = Net() -optimizer = optim.SGD(model.parameters(), ...) - -for epoch in epochs: - for input, target in data: - optimizer.zero_grad() - - # Runs the forward pass with autocasting. - with torch.autocast(device_type="cpu", dtype=torch.bfloat16): - output = model(input) - loss = loss_fn(output, target) - - loss.backward() - optimizer.step() - -``` - - - CPU 推理示例: - - -``` -# Creates model in default precision -model = Net().eval() - -with torch.autocast(device_type="cpu", dtype=torch.bfloat16): - for input in data: - # Runs the forward pass with autocasting. - output = model(input) - -``` - - - 使用 Jit Trace 的 CPU 推理示例: - - -``` -class TestModel(nn.Module): - def __init__(self, input_size, num_classes): - super().__init__() - self.fc1 = nn.Linear(input_size, num_classes) - def forward(self, x): - return self.fc1(x) - -input_size = 2 -num_classes = 2 -model = TestModel(input_size, num_classes).eval() - -# For now, we suggest to disable the Jit Autocast Pass, -# As the issue: https://github.com/pytorch/pytorch/issues/75956 -torch._C._jit_set_autocast_mode(False) - -with torch.cpu.amp.autocast(cache_enabled=False): - model = torch.jit.trace(model, torch.randn(1, input_size)) -model = torch.jit.freeze(model) -# Models Run -for _ in range(3): - model(torch.randn(1, input_size)) - -``` - - - *在*启用自动施放的区域中,类型不匹配错误是一个错误;如果这是您观察到的情况,请提出问题。 - - -`autocast(enabled=False)` 子区域可以嵌套在启用了 autocast 的区域中。本地禁用 autocast 可能很有用,例如,如果您想强制子区域在特定的 `dtype` 中运行。禁用自动转换可以让您显式控制执行类型。在子区域中,来自周围区域的输入在使用前应转换为“dtype”: - - -``` -# Creates some tensors in default dtype (here assumed to be float32) -a_float32 = torch.rand((8, 8), device="cuda") -b_float32 = torch.rand((8, 8), device="cuda") -c_float32 = torch.rand((8, 8), device="cuda") -d_float32 = torch.rand((8, 8), device="cuda") - -with torch.autocast(device_type="cuda"): - e_float16 = torch.mm(a_float32, b_float32) - with torch.autocast(device_type="cuda", enabled=False): - # Calls e_float16.float() to ensure float32 execution - # (necessary because e_float16 was created in an autocasted region) - f_float32 = torch.mm(c_float32, e_float16.float()) - - # No manual casts are required when re-entering the autocast-enabled region. - # torch.mm again runs in float16 and produces float16 output, regardless of input types. - g_float16 = torch.mm(d_float32, f_float32) - -``` - - - 自动转换状态是线程本地的。如果您希望在新线程中启用它,则必须在该线程中调用上下文管理器或装饰器。这会影响 [`torch.nn.DataParallel`](generated/torch.nn.DataParallel.html#torch.nn.DataParallel "torch.nn.DataParallel") 和 [`torch.nn.parallel.DistributedDataParallel`](generated/torch.nn.parallel.DistributedDataParallel.html#torch.nn.parallel.DistributedDataParallel "torch.nn.parallel.DistributedDataParallel") 当每个进程与多个 GPU 一起使用时(请参阅 [使用多个 GPU](notes/amp_examples.html#amp-multigpu) )。 - - - Parameters - -* **device_type** ( [*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")*, *required* ) – 要使用的设备类型。 可能的值为:“cuda”、“cpu”、“xpu”和“hpu”。 该类型与 [`torch.device`](tensor_attributes.html#torch.device "torch.device") 的 type 属性相同。 因此,您可以使用 Tensor.device.type 获取tensor的设备类型。 -* **enabled** ( [*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)"), *optional* ) – 是否应在该区域启用自动广播。 默认值:`True` -* **dtype** ( *torch_dtype*, *optional* ) – 是否使用 torch.float16 或 torch.bfloat16。 -* **cache_enabled** ( [*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)"), *optional* ) – 是否应启用自动投射内的权重缓存。 默认值:`True` - - -> *CLASS* `torch.cuda.amp.autocast(enabled=True, dtype=torch.float16, cache_enabled=True)` [[source]](_modules/torch/cuda/amp/autocast_mode.html#autocast)[¶](#torch.cuda.amp.autocast "此定义的永久链接") - - - 请参阅 [`torch.autocast`](#torch.autocast "torch.autocast") , `torch.cuda.amp.autocast(args...)` 相当于 `torch.autocast("cuda", args...)` - ->> `torch.cuda.amp.custom_fwd(fwd=None, *, cast_inputs=None)` [[source]](_modules/torch/cuda/amp/autocast_mode.html#custom_fwd)[¶](#torch.cuda.amp.custom_fwd "此定义的永久链接") - - - 自定义 autograd 函数的 `forward` 方法的辅助装饰器( [`torch.autograd.Function`](autograd.html#torch.autograd.Function "torch.autograd.Function") 的子类)。有关更多详细信息,请参阅[示例页面](notes/amp_examples.html#amp-custom-examples)。 - - - Parameters - - -* **cast_inputs** ( [`torch.dtype`](tensor_attributes.html#torch.dtype "torch.dtype") 或 None,optional,default=None) – 如果不是 `None` ,则当 `forward` 运行时在启用自动转换的区域中,将传入的浮点 CUDA tensor转换为目标 dtype(非浮点tensor不受影响),然后在禁用自动转换的情况下执行 `forward`。如果 `None` ,则 `forward` 的内部操作以当前自动施放状态执行。 - - -!!! note "笔记" - - 如果在启用自动转换的区域之外调用修饰后的 `forward`,则 [`custom_fwd`](#torch.cuda.amp.custom_fwd "torch.cuda.amp.custom_fwd") 是无操作,并且 `cast_inputs` 没有效果。 - - ->> `torch.cuda.amp.custom_bwd(bwd)` [[source]](_modules/torch/cuda/amp/autocast_mode.html#custom_bwd)[¶](#torch.cuda.amp.custom_bwd "此定义的永久链接") - - - 自定义 autograd 函数的向后方法的辅助装饰器([`torch.autograd.Function`](autograd.html#torch.autograd.Function "torch.autograd.Function") 的子类)。确保 `backward` 以相同的方式执行自动转换状态为 `forward`。有关更多详细信息,请参阅[示例页面](notes/amp_examples.html#amp-custom-examples)。 - - -> *CLASS* `torch.cpu.amp.autocast(enabled=True, dtype=torch.bfloat16, cache_enabled=True)` [[source]](_modules/torch/cpu/amp/autocast_mode.html#autocast)[¶](#torch.cpu.amp.autocast "此定义的永久链接") - - - 请参阅 [`torch.autocast`](#torch.autocast "torch.autocast") 。 `torch.cpu.amp.autocast(args...)` 相当于 `torch.autocast("cpu", args...)` - - -## [渐变缩放](#id5) [¶](#gradient-scaling "此标题的永久链接") - - - 如果特定操作的前向传递具有“float16”输入,则该操作的后向传递将产生“float16”梯度。小幅度的梯度值可能无法在“float16”中表示。这些值将刷新为零(“下溢” ),因此相应参数的更新将会丢失。 - - - 为了防止下溢,“梯度缩放”将网络的损失乘以比例因子,并对缩放后的损失调用向后传递。然后通过网络向后流动的梯度按相同的因子缩放。换句话说,梯度值具有较大的幅度,因此它们不会刷新为零。 - - - 每个参数的梯度(`.grad` 属性)应该在优化器更新参数之前取消缩放,因此缩放因子不会干扰学习率。 - - - - -!!! note "笔记" - - AMP/fp16 可能不适用于所有型号!例如,大多数 bf16 预训练模型无法在最大 65504 的 fp16 数值范围内运行,并且会导致梯度上溢而不是下溢。在这种情况下,比例因子可能会减小到 1 以下,以尝试将梯度带到可在 fp16 动态范围内表示的数字。虽然人们可能期望比例始终高于 1,但我们的 GradScaler 并不能保证保持性能。如果在使用 AMP/fp16 运行时在损失器梯度中遇到 NaN,请验证您的模型是否兼容。 - - -> *CLASS* `torch.cuda.amp.GradScaler(init_scale=65536.0, growth_factor=2.0, backoff_factor=0.5, growth_interval=2000, enabled=True)` [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler)[¶](#torch.cuda.amp.GradScaler "此定义的永久链接") - - ->> get_backoff_factor() [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.get_backoff_factor)[¶](#torch.cuda.amp.GradScaler.get_backoff_factor "此定义的永久链接") - - - 返回包含比例退避因子的 Python 浮点数。 - - ->> get_growth_factor() [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.get_growth_factor)[¶](#torch.cuda.amp.GradScaler.get_growth_factor "此定义的永久链接") - - - 返回包含比例增长因子的 Python 浮点数。 - - ->> get_growth_interval() [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.get_growth_interval)[¶](#torch.cuda.amp.GradScaler.get_growth_interval "此定义的永久链接") - - - 返回包含增长区间的 Python int。 - - ->> get_scale() [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.get_scale)[¶](#torch.cuda.amp.GradScaler.get_scale "此定义的永久链接") - - - 返回包含当前比例的 Python 浮点数,如果禁用缩放,则返回 1.0。 - - -!!! warning "警告" - - [`get_scale()`](#torch.cuda.amp.GradScaler.get_scale "torch.cuda.amp.GradScaler.get_scale") 会导致 CPU-GPU 同步。 - - ->> is_enabled() [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.is_enabled)[¶](#torch.cuda.amp.GradScaler.is_enabled "此定义的永久链接") - - - 返回一个布尔值,指示该实例是否启用。 - - ->> load_state_dict( *state_dict* ) [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.load_state_dict)[¶](#torch.cuda.amp.GradScaler.load_state_dict "此定义的永久链接") - - - 加载缩放器状态。如果禁用此实例,则 [`load_state_dict()`](#torch.cuda.amp.GradScaler.load_state_dict "torch.cuda.amp.GradScaler.load_state_dict") 是无操作。 - - - Parameters - - -* **state_dict** ( [*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") ) – 缩放器状态。应该是从调用 [`state_dict()`](#torch.cuda.amp.GradScaler.state_dict "torch.cuda.amp.GradScaler.state_dict") 返回的对象。 - - - - ->> scale( *outputs* ) [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.scale)[¶](#torch.cuda.amp.GradScaler.scale "此定义的永久链接") - - - 将tensor或tensor列表乘以(“缩放”)缩放因子。 - - - 返回缩放后的输出。如果未启用 [`GradScaler`](#torch.cuda.amp.GradScaler "torch.cuda.amp.GradScaler") 的此实例,则返回未修改的输出。 - - - Parameters - -* *outputs** ( [*Tensor*](tensors.html#torch.Tensor "torch.Tensor") 或 Tensors的迭代) —— 按比例输出。 - - ->> set_backoff_factor( *new_factor* ) [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.set_backoff_factor)[¶](#torch.cuda.amp.GradScaler.set_backoff_factor "此定义的永久链接") - - - Parameters - - -* **new_scale** ( [*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") ) – 用作新的缩放退避因子。 - - ->> set_growth_factor( *new_factor* ) [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.set_growth_factor)[¶](#torch.cuda.amp.GradScaler.set_growth_factor "此定义的永久链接") - - - Parameters - - -* **new_scale** ( [*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)") ) – 用作新的规模增长因素。 - - ->> set_growth_interval( *new_interval* ) [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.set_growth_interval)[¶](#torch.cuda.amp.GradScaler.set_growth_interval "此定义的永久链接") - - - Parameters - - -* **new_interval** ( [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)") ) – 用作新的增长区间。 - - ->> state_dict() [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.state_dict)[¶](#torch.cuda.amp.GradScaler.state_dict "此定义的永久链接") - - - 以 [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)") 形式返回缩放器的状态。它包含五个条目: - - - -* `"scale"` - 包含当前比例的 Python float -* `"growth_factor"` - 包含当前增长因子的 Python float -* `"backoff_factor"` - 包含当前退避因子的 Python float -* ` "growth_interval"` - 包含当前增长间隔的 Python int -* `"_growth_tracker"` - 包含最近连续未跳过步骤数的 Python int。 - - - 如果未启用此实例,则返回一个空字典。 - - - - -!!! note "笔记" - - 如果您希望在特定迭代后检查缩放器的状态,应在 [`state_dict()`](#torch.cuda.amp.GradScaler.state_dict "torch.cuda.amp.GradScaler.state_dict") 之后调用 [`update()`](#torch.cuda.amp.GradScaler.update "torch.cuda.amp.GradScaler.update") 。 - - - ->> `step(optimizer, *args, **kwargs)` [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.step)[¶](#torch.cuda.amp.GradScaler.step "此定义的永久链接") - - -[`step()`](#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 执行以下两个操作: - - -1. 内部调用 `unscale_(optimizer)` (除非明确调用 [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_")迭代早期的“优化器”)。作为 [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 的一部分,检查梯度是否有 infs/NaNs.2。如果未找到 inf/NaN 梯度,则使用未缩放的梯度调用“optimizer.step()”。否则,将跳过“optimizer.step()”以避免损坏Parameters。 - - -`*args` 和 `**kwargs` 被转发到 `optimizer.step()` 。 - - - 返回 `optimizer.step(*args, **kwargs)` 的返回值。 - - - Parameters - -* **optimizer** ( [*torch.optim.Optimizer*](optim.html#torch.optim.Optimizer "torch.optim.Optimizer") ) – 应用梯度的优化器。 -* **args** – 任何参数。 -* **kwargs** – 任何关键字参数。 - - -!!! warning "警告" - - 目前不支持闭包使用。 - - ->> unscale_ ( *optimizer* ) [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.unscale_)[¶](#torch.cuda.amp.GradScaler.unscale_ "此定义的永久链接") - - - 将优化器的梯度tensor除以比例因子(“取消缩放”)。 - - -unscale_() 是可选的,适用于需要修改或检查向后传递和 step() 之间的梯度的情况。 如果未显式调用 unscale_(),则梯度将在 step() 期间自动取消缩放。 - -[`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 是可选的,适用于需要 [修改或检查](notes/amp_examples.html#working-with-unscaled-gradients) 向后传递 和 [`step()`](#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 之间如果未显式调用 [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_"),则在 [`step() 期间将自动取消缩放渐变`](#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 。 - - - 简单的示例,使用 [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 启用未缩放渐变的裁剪: - - -``` -... -scaler.scale(loss).backward() -scaler.unscale_(optimizer) -torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm) -scaler.step(optimizer) -scaler.update() - -``` - - - Parameters - - -* **optimizer** ( [*torch.optim.Optimizer*](optim.html#torch.optim.Optimizer "torch.optim.Optimizer") ) – 拥有要取消缩放的渐变的优化器。 - - - -!!! note "笔记" - - [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 不会引起 CPU-GPU 同步。 - - -!!! warning "警告" - - [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 每个优化器每个 [`step()`](#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 调用,并且仅在累积了该优化器指定参数的所有梯度之后。调用 [`unscale_()`](#torch. cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 对于给定优化器,在每个 [`step()`](#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 触发运行时错误。 - - -!!! warning "警告" - - [`unscale_()`](#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 可能会将稀疏梯度取消缩放,替换 `.grad` 属性。 - - ->> `update(new_scale=None)` [[source]](_modules/torch/cuda/amp/grad_scaler.html#GradScaler.update)[¶](#torch.cuda.amp.GradScaler.update "此定义的永久链接") - - - 更新比例因子。 - - - 如果跳过任何优化器步骤,则比例将乘以“backoff_factor”以减少它。如果连续发生“growth_interval”未跳过的迭代,则将比例乘以“growth_factor”来增加它。 - - - 传递 `new_scale` 手动设置新的比例值。 ( `new_scale` 不直接使用,它用于填充 GradScaler 的内部尺度tensor。因此,如果 `new_scale` 是一个tensor,以后对该tensor的就地更改不会进一步影响 GradScaler 内部使用的尺度。) - - - Parameters - - -* **new_scale** (float 或 `torch.cuda.FloatTensor` ,optional,default=None) – 新比例因子。 - - -!!! warning "警告" - - [`update()`](#torch.cuda.amp.GradScaler.update "torch.cuda.amp.GradScaler.update") 只能在迭代结束时、在 `scaler.step(optimizer)` 之后调用已为本次迭代使用的所有优化器调用。 - - -!!! warning "警告" - - 出于性能原因,我们不检查比例因子值以避免同步,因此比例因子不保证高于 1。如果比例低于 1 和/或您在梯度或损失中看到 NaN,则可能存在问题。例如,由于动态范围不同,bf16 预训练模型通常与 AMP/fp16 不兼容。 - - -## [Autocast Op 参考](#id6) [¶](#autocast-op-reference "此标题的永久链接") - - -### [Op 资格](#id7) [¶](#op-eligibility "永久链接到此标题") - - - 在“float64”或非浮点数据类型中运行的操作不符合条件,并且无论是否启用自动转换都将以这些类型运行。 - - - 只有异地操作和tensor方法才符合资格。在启用自动转换的区域中允许显式提供“out=...”tensor的就地变体和调用,但不会经过自动转换。例如,启用自动投射的区域 `a.addmm(b, c)` 可以自动投射,但 `a.addmm_(b, c)` 和 `a.addmm(b, c, out=d)` 不能自动投射。最好性能和稳定性,更喜欢在启用自动施放的区域中进行异地操作。 - - - 使用显式“dtype=...”参数调用的操作不符合条件,并且将产生尊重“dtype”参数的输出。 - - -### [CUDA Op 特定行为](#id8) [¶](#cuda-op-specific-behavior "永久链接到此标题") - - - 以下列表描述了启用自动转换的区域中合格操作的行为。这些操作始终会经过自动转换,无论它们是作为 [`torch.nn.Module`](generated/torch.nn.Module.html#torch 的一部分被调用).nn.Module "torch.nn.Module") ,作为函数,或作为 [`torch.Tensor`](tensors.html#torch.Tensor "torch.Tensor") 方法。如果函数在多个命名空间中公开,则无论命名空间如何,它们都会经历自动转换。 - - - 下面未列出的操作不会经过自动施放。它们按照输入定义的类型运行。但是,如果未列出的操作位于自动转换操作的下游,自动转换仍可能会更改其运行的类型。 - - - 如果一个操作未列出,我们假设它在“float16”中数值稳定。如果您认为未列出的操作在“float16”中数值不稳定,请提出问题。 - - -#### [可以自动转换为 `float16` 的 CUDA Ops](#id9)[¶](#cuda-ops-that-c​​an-autocast-to-float16 "此标题的永久链接") - - -`__matmul__` 、 `addbmm` 、 `addmm` 、 `addmv` 、 `addr` 、 `baddbmm` 、 `bmm` 、 `chain_matmul` 、 `multi_dot` 、 `conv1d` , `conv2d` , `conv3d` , `conv_transpose1d` , `conv_transpose2d` , `conv_transpose3d` , `GRUCell` , `linear` , `LSTMCell` , `matmul` , `mm` , `mv` 、`prelu`、`RNNCell` - - -#### [可以自动转换为 `float32` 的 CUDA Ops](#id10)[¶](#cuda-ops-that-c​​an-autocast-to-float32 "此标题的永久链接") - - -`__pow__` 、 `__rdiv__` 、 `__rpow__` 、 `__rtruediv__` 、 `acos` 、 `asin `、`binary_cross_entropy_with_logits`、`cosh`、`cosine_embedding_loss`、`cdist`、`cosine_similarity`、`cross_entropy`、`cumprod`、`cumsum`、 `dist` 、 `erfinv` 、 `exp` 、 `expm1` 、 `group_norm` 、 `hinge_embedding_loss` 、 `kl_div` 、 `l1_loss` 、 `layer_norm` 、 `log `、`log_softmax`、`log10`、`log1p`、`log2`、`margin_ranking_loss`、`mse_loss`、`multilabel_margin_loss`、`multi_margin_loss`、 `nll_loss` 、 `norm` 、 `normalize` 、 `pdist` 、 `poisson_nll_loss` 、 `pow` 、 `prod` 、 `reciprocal` 、 `rsqrt` 、 `sinh` 、 `smooth_l1 _loss` 、 `soft_margin_loss` 、 `softmax` 、 `softmin` 、 `softplus` 、 `sum` 、 `renorm` 、 `tan` 、 `triplet_margin_loss` - - -#### [提升到最宽输入类型的 CUDA Ops](#id11) [¶](#cuda-ops-that-promote-to-the-widest-input-type "永久链接到此标题") - - - 这些操作不需要特定的数据类型来保证稳定性,但需要多个输入并要求输入的数据类型匹配。如果所有输入都是 `float16` ,则操作在 `float16` 中运行。如果任何输入是 `float32` ,则 autocast 将所有输入转换为 `float32` 并运行 `float32` 中的操作。 - - -`addcdiv`、`addcmul`、`atan2`、`bilinear`、`cross`、`dot`、`grid_sample`、`index_put`、`scatter_add`、`tensordot` - - - 此处未列出的某些操作(例如,像“add”这样的二进制操作)本身会提升输入,而无需自动转换的干预。如果输入是 `float16` 和 `float32` 的混合,这些操作在 `float32` 中运行并产生 `float32` 输出,无论是否启用了自动转换。 - - -#### [首选 `binary_cross_entropy_with_logits` 而不是 `binary_cross_entropy`](#id12)[¶](#prefer-binary-cross-entropy-with-logits-over-binary -交叉熵"此标题的永久链接") - - - [`torch.nn.function.binary_cross_entropy()`](generated/torch.nn.function.binary_cross_entropy.html#torch.nn.function.binary_cross_entropy "torch.nn.function.binary_cross_entropy" 的向后传递)(和 [`torch.nn.BCELoss`](generated/torch.nn.BCELoss.html#torch.nn.BCELoss "torch.nn.BCELoss") ,它包装它)可以产生无法在`float16` 。在启用自动转换的区域中,前向输入可能是“float16”,这意味着后向梯度必须可以用“float16”表示(将“float16”前向输入自动转换为“float32”没有帮助,因为该转换必须在向后反转)。因此,“binary_cross_entropy”和“BCELoss”在启用自动转换的区域中会引发错误。 - - - 许多模型在二元交叉熵层之前使用 sigmoid 层。 在这种情况下,使用 [`torch.nn.function.binary_cross_entropy_with_logits()`](generated/torch.nn.functional.binary_cross_entropy_with_logits.html#torch.nn.functional.binary_cross_entropy_with_logits "torch.nn.function.binary_cross_entropy_with_logits") 或 [`torch.nn.BCEWithLogitsLoss`](generated/torch.nn.BCEWithLogitsLoss.html#torch.nn.BCEWithLogitsLoss "torch.nn.BCEWithLogitsLoss") 组合两个层。 `binary_cross_entropy_with_logits` 和 `BCEWithLogits` 可以安全地自动转换。 - - -### [CPU Op 特定行为](#id13) [¶](#cpu-op-specific-behavior "永久链接到此标题") - - - 以下列表描述了启用自动转换的区域中合格操作的行为。这些操作始终会经过自动转换,无论它们是作为 [`torch.nn.Module`](generated/torch.nn.Module.html#torch 的一部分被调用).nn.Module "torch.nn.Module") ,作为函数,或作为 [`torch.Tensor`](tensors.html#torch.Tensor "torch.Tensor") 方法。如果函数在多个命名空间中公开,则无论命名空间如何,它们都会经历自动转换。 - - - 下面未列出的操作不会经过自动施放。它们按照输入定义的类型运行。但是,如果未列出的操作位于自动转换操作的下游,自动转换仍可能会更改其运行的类型。 - - - 如果一个操作未列出,我们假设它在“bfloat16”中数值稳定。如果您认为未列出的操作在“bfloat16”中数值不稳定,请提出问题。 - - -#### [可以自动转换为 `bfloat16` 的 CPU Ops](#id14)[¶](#cpu-ops-that-c​​an-autocast-to-bfloat16 "此标题的永久链接") - - -`conv1d`、`conv2d`、`conv3d`、`bmm`、`mm`、`baddbmm`、`addmm`、`addbmm`、`linear`、`matmul`、`_convolution` - - -#### [可以自动转换为 `float32` 的 CPU Ops](#id15)[¶](#cpu-ops-that-c​​an-autocast-to-float32 "永久链接到此标题") - - -`conv_transpose1d` 、 `conv_transpose2d` 、 `conv_transpose3d` 、 `avg_pool3d` 、 `binary_cross_entropy` 、 `grid_sampler` 、 `grid_sampler_2d` 、 `_grid_sampler_2d_cpu_fallback`、`grid_sampler_3d`、`polar`、`prod`、`quantile`、`nanquantile`、`stft`、`cdist`、`trace`、`view_as_complex`、`cholesky`、`cholesky_inverse`、`cholesky_solve`、`inverse`、`lu_solve`、`orgqr`、`inverse`、`ormqr`、`pinverse`、`max_pool3d` 、`max_unpool2d`、`max_unpool3d`、`adaptive_avg_pool3d`、`reflection_pad1d`、`reflection_pad2d`、`replication_pad1d`、`replication_pad2d`、`replication_pad3d` 、`mse_loss`、`ctc_loss`、`kl_div`、`multilabel_margin_loss`、`fft_fft`、`fft_ifft`、`fft_fft2`、`fft_ifft2` 、 `fft_fftn` 、 `fft_ifftn` 、 `fft_rfft` 、 `fft_irfft` 、 `fft_rfft2` 、 `fft_irfft2` 、 `fft_rfftn` 、 `fft_irfftn` 、 ` fft_hfft`、`fft_ihfft`、`linalg_matrix_norm`、`linalg_cond`、`linalg_matrix_rank`、`linalg_solve`、`linalg_cholesky`、`linalg_svdvals` 、 `linalg_eigvals` 、 `linalg_eigvalsh` 、 `linalg_inv` 、 `linalg_householder_product` 、 `linalg_tensorinv` 、 `linalg_tensorsolve` 、 `fake_quantize_per_tensor_affine` 、 `eig` 、 `geqrf` 、 `lstsq` 、 `_lu_with_info` 、 `qr` 、 `solve` 、 `svd` 、 `symeig` 、 `triangular_solve` 、 `fractional_max_pool2d `、`fractional_max_pool3d`、`adaptive_max_pool3d`、`multilabel_margin_loss_forward`、`linalg_qr`、`linalg_cholesky_ex`、`linalg_svd`、`linalg_svd_eig` 、 `linalg_eigh` 、 `linalg_lstsq` 、 `linalg_inv_ex` - - -#### [提升到最宽输入类型的 CPU Ops](#id16) [¶](#cpu-ops-that-promote-to-the-widest-input-type "永久链接到此标题") - - - 这些操作不需要特定的数据类型来保证稳定性,但需要多个输入并要求输入的数据类型匹配。如果所有输入都是“bfloat16”,则操作在“bfloat16”中运行。如果任何输入是 `float32` ,则 autocast 将所有输入转换为 `float32` 并运行 `float32` 中的操作。 - - -`cat` 、 `stack` 、 `index_copy` - - - 此处未列出的某些操作(例如,像“add”这样的二进制操作)本身会提升输入,而无需自动转换的干预。如果输入是“bfloat16”和“float32”的混合,则这些操作在“float32”中运行并产生“float32”输出,无论是否启用了自动转换。 \ No newline at end of file diff --git a/docs/2.0/docs/autograd.md b/docs/2.0/docs/autograd.md deleted file mode 100755 index ff2d8db7f..000000000 --- a/docs/2.0/docs/autograd.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/backends.md b/docs/2.0/docs/backends.md deleted file mode 100755 index 8e4234c59..000000000 --- a/docs/2.0/docs/backends.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/benchmark_utils.md b/docs/2.0/docs/benchmark_utils.md deleted file mode 100755 index e1e71d251..000000000 --- a/docs/2.0/docs/benchmark_utils.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/bottleneck.md b/docs/2.0/docs/bottleneck.md deleted file mode 100755 index ca93277f8..000000000 --- a/docs/2.0/docs/bottleneck.md +++ /dev/null @@ -1,48 +0,0 @@ -# torch.utils.bottleneck [¶](#module-torch.utils.bottleneck "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - torch.utils.bottleneck 是一个工具,可用作调试程序中瓶颈的初始步骤。它使用 Python 分析器和 PyTorch 的 autograd 分析器总结了脚本的运行情况。 - - - 在命令行上运行它 - - -``` -python -m torch.utils.bottleneck /path/to/source/script.py [args] - -``` - - - 其中 [args] 是 script.py 的任意数量的参数,或运行 `python -m torch.utils.bottleneck -h` 以获取更多使用说明。 - - -!!! warning "警告" - - 因为您的脚本将被分析,所以请确保它在有限的时间内退出。 - - -!!! warning "警告" - - 由于 CUDA 内核的异步特性,当针对 CUDA 代码运行时,cProfile 输出和 CPU 模式自动分级分析器可能无法显示正确的计时:报告的 CPU 时间报告用于启动内核的时间量,但不包括内核执行所花费的时间在 GPU 上,除非该操作进行同步。在常规 CPU 模式分析器下,进行同步的操作似乎非常昂贵。在这些计时不正确的情况下,CUDA 模式自动梯度分析器可能会有所帮助。 - - -!!! note "笔记" - - 要决定查看哪种(仅 CPU 模式或 CUDA 模式)autograd profiler 输出,您应该首先检查您的脚本是否受 CPU 限制(“CPU 总时间远大于 CUDA 总时间”)。如果是 CPU -bound,查看 CPU 模式 autogradprofiler 的结果会有所帮助。另一方面,如果您的脚本大部分时间都在 GPU 上执行,那么开始在 CUDA 模式 autograd 分析器的输出中寻找负责任的 CUDA 运算符是有意义的。 - - - 当然,现实要复杂得多,您的脚本可能不是这两个极端之一,具体取决于您正在评估的模型的部分。如果探查器输出没有帮助,您可以尝试查看 [`torch.autograd.profiler.emit_nvtx()`](autograd.html#torch.autograd.profiler.emit_nvtx "torch.autograd.profiler. emit_nvtx") 和 `nvprof` 。但是,请考虑到 NVTX 开销非常高,并且通常会导致时间线严重倾斜。同样,“英特尔® VTune™ Profiler”可通过 [`torch.autograd.profiler.emit_itt()`](autograd.html#torch.autograd.profiler.emit_itt "torch.autograd. profiler.emit_itt"​​) 。 - - -!!! warning "警告" - - 如果您正在分析 CUDA 代码,“bottleneck”运行的第一个分析器 (cProfile) 将在其时间报告中包括 CUDA 启动时间(CUDA 缓冲区分配成本)。如果您的瓶颈导致代码比 CUDA 启动时间慢得多,这应该无关紧要。 - - - 有关分析器的更复杂用法(例如在多 GPU 情况下),请参阅 或 [`torch.autograd.profiler.profile() `](autograd.html#torch.autograd.profiler.profile "torch.autograd.profiler.profile") 了解更多信息。 \ No newline at end of file diff --git a/docs/2.0/docs/checkpoint.md b/docs/2.0/docs/checkpoint.md deleted file mode 100755 index 01d87ba65..000000000 --- a/docs/2.0/docs/checkpoint.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/community/build_ci_governance.md b/docs/2.0/docs/community/build_ci_governance.md deleted file mode 100755 index 236222ea4..000000000 --- a/docs/2.0/docs/community/build_ci_governance.md +++ /dev/null @@ -1,28 +0,0 @@ -# PyTorch 治理 | Build + CI [¶](#pytorch-governance-build-ci "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -## 如何添加新的维护者 [¶](#how-to-add-a-new-maintainer "永久链接到此标题") - - - 要成为维护者,一个人需要: - - - -* 将至少六次提交提交到 PyTorch 存储库的相关部分 -* 必须在过去六个月内提交这些提交中的至少一项 - - - 要将合格人员添加到维护者列表中,请创建一个 PR,将人员添加到 [感兴趣的人](https://pytorch.org/docs/main/community/persons_of_interest.html) 页面和 [merge_rules ](https://github.com/pytorch/pytorch/blob/main/.github/merge_rules.yaml) 文件。当前的维护者将投票支持。批准 PR 的决策标准: - - - -* 合并前不早于两个工作日(确保大多数贡献者已经看到) -* PR 具有正确的标签(模块:ci ) -* 当前维护者没有反对 -* 至少有三个来自当前维护人员的净*赞数*(或者当模块的维护人员少于3个时,所有维护人员都投*赞成票*)。 diff --git a/docs/2.0/docs/community/contribution_guide.md b/docs/2.0/docs/community/contribution_guide.md deleted file mode 100755 index 0c9100f01..000000000 --- a/docs/2.0/docs/community/contribution_guide.md +++ /dev/null @@ -1,228 +0,0 @@ -# PyTorch 贡献指南 [¶](#pytorch-contribution-guide "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - PyTorch 是一个 GPU 加速的 Python tensor计算包,用于使用基于磁带的 autograd 系统构建深度神经网络。 - - -## 贡献过程 [¶](#contribution-process "此标题的固定链接") - - - PyTorch 组织由 [PyTorchGovernance](governance.html) 管理,贡献的技术指南可以在 [CONTRIBUTING.md](https://github.com/pytorch/pytorch/blob/main/CONTRIBUTING.md) 中找到。 - - - PyTorch 开发过程涉及核心开发团队和社区之间进行大量的公开讨论。 - - - PyTorch 的操作方式与 GitHub 上的大多数开源项目类似。但是,如果您以前从未为开源项目做出过贡献,那么以下是基本流程。 - - - -* **弄清楚你要做什么。** 大多数开源贡献都来自于那些自己痒痒的人。但是,如果你不知道你想做什么,或者只是想获得更多熟悉该项目后,这里有一些关于如何找到合适任务的提示: - + 查看[问题跟踪器](https://github.com/pytorch/pytorch/issues/),看看是否有任何您知道如何解决的问题。其他贡献者确认的问题往往更容易调查。我们还为可​​能对新人有利的问题维护了一些标签,例如 **bootcamp** 和 **1hr** ,尽管这些标签维护得不太好。 - + 加入我们的 [开发讨论](https://dev-discuss.pytorch.org/),让我们知道您有兴趣了解 PyTorch。我们非常乐意帮助研究人员和合作伙伴快速了解代码库。 - -* **找出更改的范围,如果问题较大,请寻求有关 GitHub 问题的设计评论。** 大多数拉取请求都很小;在这种情况下,无需让我们知道您想做什么,只需开始吧。但如果更改很大,通常最好先通过[提交 RFC](https://github.com/pytorch/rfcs/blob/master/README.md) 获得一些设计评论。 - + 如果您不知道会有多大的变化,我们可以帮助您弄清楚!只需在 [问题](https://github.com/pytorch/pytorch/issues/) 或 [开发讨论](https://dev-discuss.pytorch.org/) 上发布相关内容即可。 - + 一些功能的添加非常标准化;例如,很多人向 PyTorch 添加新的运算符或优化器。这些情况下的设计讨论主要归结为“我们需要这个运算符/优化器吗?”提供其实用性的证据,例如在同行评审论文中的使用,或在其他框架中的存在,在说明这一点时会有所帮助。 - - **添加最近发布的研究中的运算符/算法**通常不被接受,除非有压倒性的证据表明这项新发表的工作具有突破性的成果并最终成为该领域的标准。如果您不确定自己的方法适用于哪里,请在实施 PR 之前先提出问题。 - + 核心变更和重构可能非常难以协调,因为 PyTorch 主分支的开发速度非常快。一定要接触根本性或跨领域的变革;我们通常可以提供有关如何将此类更改分成更容易审查的部分的指导。 - -* **将其编码出来!** - + 请参阅 [CONTRIBUTING.md](https://github.com/pytorch/pytorch/blob/main/CONTRIBUTING.md) 文件以获取有关以技术形式使用 PyTorch 的建议。 - -* **打开拉取请求。** - + 如果您还没有准备好审查拉取请求,请先创建草稿拉取请求 - - 您可以稍后按“准备审查”按钮将其转换为完整的 PR。您还可以在 PR 仍处于草稿状态时在其标题前加上“[WIP]”(“正在进行的工作")。在进行审核时,我们将忽略草稿 PR。如果您正在进行一项复杂的变更,最好从草稿开始,因为您需要花时间查看 CI 结果,看看事情是否成功。 - + 为您的变更寻找合适的审阅者。我们有一些人定期检查 PR 队列并尝试审查所有内容,但如果您碰巧知道受补丁影响的给定子系统的维护者是谁,请随时将他们直接包含在拉取请求中。您可以了解有关 [Persons of Interest](https://pytorch.org/docs/main/community/persons_of_interest.html) 的更多信息,他们可以审查您的代码。 - -* **迭代拉取请求,直到它被接受!** - + 我们会尽力减少评审往返次数,只有在出现重大问题时才屏蔽 PR。对于拉取请求中最常见的问题,请查看[常见错误](#common-mistakes-to-avoid)。 - + 一旦拉取请求被接受并且 CI 通过,您无需执行任何其他操作;我们将为您合并 PR。 - - -## 入门 [¶](#getting-started "此标题的永久链接") - - -### 提出新功能 [¶](#propusing-new-features "永久链接到此标题") - - - 新功能的想法最好针对特定问题进行讨论。请提供尽可能多的信息、任何随附数据以及您建议的解决方案。 PyTorch 团队和社区经常审查他们认为可以提供帮助的新问题和评论。如果您对自己的解决方案充满信心,请继续实施它。 - - -### 报告问题 [¶](#reporting-issues "此标题的永久链接") - - - 如果您发现了问题,请首先搜索那里的[现有问题列表](https://github.com/pytorch/pytorch/issues)。如果您无法找到类似的问题,请创建一个新问题。提供尽可能多的信息以重现有问题的行为。另外,请包括任何其他见解,例如您期望的行为。 - - -### 实现功能或修复错误 [¶](#implementing-features-or-fixing-bugs "永久链接到此标题") - - - 如果您想解决特定问题,最好根据您的意图对单个问题进行评论。但是,我们不会锁定或分配问题,除非我们之前与开发人员合作过。最好就该问题进行对话并讨论您建议的解决方案。 PyTorch 团队可以提供节省您时间的指导。 - - - 标记为第一新问题、低优先级或中等优先级的问题提供了最佳切入点,也是很好的起点。 - - -### 添加教程 [¶](#adding-tutorials "永久链接到此标题") - - - [pytorch.org](https://pytorch.org/) 上的大量教程来自社区本身,我们欢迎额外的贡献。要了解有关如何贡献新教程的更多信息,您可以在此处了解更多信息:[PyTorch GitHub 上的.org 教程贡献指南](https://github.com/pytorch/tutorials/#contributing) - - -### 改进文档和教程 [¶](#improving-documentation-tutorials "永久链接到此标题") - - - 我们的目标是制作高质量的文档和教程。在极少数情况下,内容会包含拼写错误或错误。如果您发现可以修复的问题,请向我们发送拉取请求以供考虑。 - - - 查看[文档](#on-documentation) 部分以了解我们的系统如何工作。 - - -### 参与在线讨论 [¶](#participating-in-online-discussions "永久链接到此标题") - - - 您可以在 [PyTorch 讨论论坛](https://discuss.pytorch.org/) 以及 [PyTorch 开发讨论论坛](https://dev-discuss.pytorch.org/) 上找到活跃的讨论。对于开发人员和维护人员。 - - -### 提交拉取请求以修复未解决的问题 [¶](#submitting-pull-requests-to-fix-open-issues "永久链接到此标题") - - - 您可以在[此处](https://github.com/pytorch/pytorch/issues)查看所有未解决问题的列表。对问题发表评论是引起团队注意的好方法。您可以在这里分享您的想法以及您计划如何解决问题。 - - - 对于更具挑战性的问题,团队将提供反馈和指导,以最好地解决问题。 - - - 如果您无法自行解决问题,发表评论并分享您是否可以重现该问题可以帮助团队识别问题区域。 - - -### 审查开放拉取请求 [¶](#reviewing-open-pull-requests "此标题的永久链接") - - - 我们感谢您帮助审查和评论拉取请求。我们的团队努力将开放拉取请求的数量保持在可管理的范围内,如果需要,我们会快速响应以获取更多信息,并合并我们认为有用的 PR。然而,由于人们的兴趣很高,对拉取请求的更多关注总是值得赞赏的。 - - -### 提高代码可读性 [¶](#improving-code-readability "永久链接到此标题") - - - 提高代码可读性对每个人都有帮助。提交涉及几个文件的少量拉取请求通常比提交涉及许多文件的大量拉取请求更好。在 PyTorch 论坛 [此处](https://discuss.pytorch.org/) 或就与您的改进相关的问题开始讨论是最好的开始方式。 - - -### 添加测试用例以使代码库更加健壮 [¶](#adding-test-cases-to-make-the-codebase-more-robust "永久链接到此标题") - - - 额外的测试覆盖率值得赞赏。 - - -### 推广 PyTorch [¶](#promoting-pytorch "永久链接到此标题") - - - 您在项目、研究论文、文章、博客或互联网上的一般讨论中使用 PyTorch 有助于提高对 PyTorch 和我们不断发展的社区的认识。请联系[marketing@pytorch.org](mailto:marketing@pytorch.org) 获取营销支持。 - - -### 分类问题 [¶](#triaging-issues "此标题的永久链接") - - - 如果您认为某个问题可以从特定标签或复杂程度中受益,请对该问题发表评论并分享您的意见。如果您觉得问题没有正确分类,请发表评论并告知团队。 - - -## 关于开源开发 [¶](#about-open-source-development "此标题的永久链接") - - - 如果这是您第一次为开源项目做出贡献,那么开发过程的某些方面对您来说可能会显得不寻常。 - - - -* **没有办法“声明”问题。** 人们在决定处理某个问题时通常希望“声明”该问题,以确保当其他人最终处理该问题时不会浪费工作。这在开源中并不太有效,因为有人可能决定做某事,但最终没有时间去做。请随意以咨询方式提供信息,但最终,我们将通过运行代码和粗略共识来快速推进。 -* **新功能的门槛很高。** 与企业环境不同,在企业环境中,编写代码的人隐式地“拥有”它,并且可以期望在代码的生命周期中照顾它,一旦拉取请求被合并到开源项目中,它立即成为该项目所有维护者的集体责任。当我们合并代码时,我们是说我们,维护者,可以审查后续更改并对代码进行错误修复。这自然会带来更高的贡献标准。 - - -## 要避免的常见错误[¶](#common-mistakes-to-avoid "永久链接到此标题") - - - -* **您添加了测试吗?**(或者如果更改很难测试,您是否描述了如何测试更改?) - + 我们要求进行测试有几个动机: - 1. 帮助我们判断稍后是否会破坏它 - 2. 首先帮助我们判断补丁是否正确(是的,我们确实对其进行了审查,但正如 Knuth 所言,“当心下面的代码,因为我没有运行它,只是证明它是正确的“) - + 什么时候可以不添加测试?有时无法方便地测试某个更改,或者该更改显然是正确的(并且不太可能被破坏),因此不测试它也没关系。相反,如果某个更改看起来可能(或已知可能)被意外破坏,那么花时间制定测试策略就很重要。 - -* **您的 PR 是否太长?** - + 我们更容易审查和合并小型 PR。审查 PR 的难度与其大小呈非线性关系。 - + 什么时候可以提交大型 PR?如果某个问题中有相应的设计讨论,并由将要审查您的差异的人员签字同意,这会很有帮助。我们还可以帮助提供有关如何将大型变更拆分为可单独交付的部分的建议。同样,如果对 PR 的内容有完整的描述,也会有所帮助:如果我们知道里面的内容,那么审查代码就更容易了! -* **对微妙事物的评论?** 如果您的代码的行为有细微差别,请包括额外的注释和文档可以让我们更好地理解代码的意图。 -* **您添加了 hack 吗?** 有时,正确的答案是 hack。但通常情况下,我们必须讨论它。 -* **你想接触一个非常核心的组件吗?** 为了防止重大回归,接触核心组件的拉取请求会受到额外的审查。在进行重大更改之前,请确保您已与团队讨论了您的更改。 -* **想要添加新功能?** 如果您想添加新功能,请在相关问题上评论您的意图。我们的团队尝试向社区发表评论并向社区提供反馈。在构建新功能之前,最好与团队和社区其他成员进行公开讨论。这有助于我们了解您正在处理的内容,并增加合并的机会。 -* **您是否接触过与 PR 无关的代码?** 为了帮助进行代码审查,请仅在您的拉取请求中包含文件与您的更改直接相关。 - - -## 常见问题 [¶](#frequently-asked-questions "此标题的永久链接") - - - -* **我如何作为审阅者做出贡献?** 如果社区开发人员重现问题、尝试新功能或以其他方式帮助我们识别或解决问题,那么将会有很多价值。使用您的环境详细信息对任务或拉取请求进行评论很有帮助,值得赞赏。 -* **CI 测试失败,这意味着什么?** 也许您的 PR 是基于损坏的主分支?您可以尝试在最新的主分支之上重新调整您的更改。您还可以在 上查看主分支 CI 的当前状态。 -* **最高风险的更改是什么?** 任何涉及构建配置的内容都是风险区域。请避免更改这些内容,除非您事先与团队进行了讨论。 -* **嘿,我的分支上出现了一个提交,这是怎么回事?** 有时另一个社区成员会为您的拉取请求或分支提供补丁或修复。这通常是通过 CI 测试所必需的。 - - -## 关于文档 [¶](#on-documentation "此标题的永久链接") - - -### Python 文档 [¶](#python-docs "此标题的永久链接") - - - PyTorch 文档是使用 [Sphinx](https://www.sphinx-doc.org/en/master/) 从 python 源生成的。生成的 HTML 复制到 [pytorch.github.io](https://github.com/pytorch/pytorch.github.io/tree/master/docs) 主分支中的 docs 文件夹,并通过 GitHub 页面提供服务。 - - - -* 站点: -* GitHub: -* 服务来源: - - -### C++ 文档 [¶](#c-docs "此标题的永久链接") - - - 对于 C++ 代码,我们使用 Doxygen 生成内容文件。 C++ 文档构建在特殊服务器上,生成的文件被复制到 存储库,并从 GitHubpages 提供服务。 - - - -* 站点: -* GitHub: -* 服务来源: - - -## 教程 [¶](#tutorials "此标题的永久链接") - - - PyTorch 教程是用于帮助理解使用 PyTorch 完成特定任务或理解更全面的概念的文档。教程是使用 [Sphinx-Gallery](https://sphinx-gallery.readthedocs.io/en/latest/index.html) 构建的来自可执行的 python 源文件,或来自重组文本 (rst) 文件。 - - - -* 站点: -* GitHub: - - -### 教程构建概述 [¶](#tutorials-build-overview "此标题的固定链接") - - - 对于教程,[pullrequests](https://github.com/pytorch/tutorials/pulls) 触发器是使用 CircleCI 构建整个站点来测试更改的效果。此构建分为 9 个工作构建,总共需要大约 40 分钟。同时,我们使用 *makehtml-noplot* 进行 Netlify 构建,它构建网站时无需将笔记本输出渲染到页面中以供快速查看。 - - - PR 被接受后,将使用 GitHubActions 重建并部署站点。 - - -### 贡献新教程 [¶](#contributing-a-new-tutorial "永久链接到此标题") - - - 请参阅 [PyTorch.org 贡献者教程](https://github.com/pytorch/tutorials/#contributing) 。 \ No newline at end of file diff --git a/docs/2.0/docs/community/design.md b/docs/2.0/docs/community/design.md deleted file mode 100755 index 69a80d561..000000000 --- a/docs/2.0/docs/community/design.md +++ /dev/null @@ -1,112 +0,0 @@ -# PyTorch 设计哲学 [¶](#pytorch-design-philosophy "永久链接到此标题") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 本文档旨在帮助贡献者和模块维护者了解 PyTorch 中长期开发的高级设计原则。这些并不是硬性规则,而是作为指南,帮助权衡不同的问题并解决开发 PyTorch 时可能出现的协议。有关贡献、模块维护以及如何将分歧升级给核心维护者的更多信息,请参阅 [PyTorchGovernance](https://pytorch.org/docs/main/community/governance.html)。 - - -## 设计原则 [¶](#design-principles "此标题的固定链接") - - -### 原则 1:可用性高于性能 [¶](#principle-1-usability-over-performance "Permalink to this header") - - - 这个原理可能会令人惊讶!正如一位黑客新闻海报所写:*PyTorch 太棒了! […]虽然我很困惑。 ML 框架如何才能不痴迷于速度/性能?* 请参阅 [PyTorch 上的黑客新闻讨论](https://news.ycombinator.com/item?id=28066093) 。 - - - Soumith 关于 [发展 PyTorchCommunity](https://soumith.ch/posts/2021/02/forming-opensource/?fbclid=IwAR1bvN_xZ8avGvu14ODJzS8Zp7jX1BOyfuGUf-zoRawpyL-s95Vjxf88W7s) 的博客文章对此进行了一定深度的探讨,但处于较高的层次: - - - -* PyTorch 的主要目标是可用性 -* 次要目标是拥有“合理的”性能 - - - 我们相信,保持灵活性以支持在我们的抽象基础上进行构建的研究人员的能力仍然至关重要。我们无法预见工作负载的未来,但我们知道我们希望它们首先构建在 PyTorch 上,而这需要灵活性。 - - - 更具体地说,我们以“可用性优先”的方式进行操作,并尽量避免在没有清晰地权衡观点的情况下跳转到“限制优先”的制度(例如,静态形状,仅限图形模式)。通常会倾向于预先施加严格的用户限制,因为它可以简化实施,但这会带来风险: - - - -* 性能可能不值得用户的摩擦,要么是因为性能优势不够引人注目,要么它只适用于相对狭窄的一组子问题。 -* 即使性能优势很引人注目,这些限制也会将生态系统分割成不同的限制集,很快就会变得对用户来说难以理解。 - - - 我们希望用户能够将他们的 PyTorch 代码无缝移动到不同的硬件和软件平台,与不同的库和框架进行互操作,并体验 PyTorch 用户体验的全部丰富性,而不是最小公分母子集。 - - -### 原则 2:简单胜过简单 [¶](#principle-2-simple-over-easy "永久链接到此标题") - - - 这里,我们借用[The Zen ofPython](https://peps.python.org/pep-0020/): - - - -* *显式优于隐式* -* *简单优于复杂* - - - 描述这两个目标的更简洁的方法是 [Simple OverEasy](https://www.infoq.com/presentations/Simple-Made-Easy/) 。让我们从一个例子开始,因为“简单”和“简单”在日常英语中经常互换使用。考虑一下如何在 PyTorch 中对设备进行建模: - - - -* **简单/显式(理解、调试):** 每个tensor都与一个设备关联。用户明确指定tensor设备移动。需要跨设备移动的操作会导致错误。 -* **简单/隐式(使用):** 用户不必担心设备;系统计算出全局最佳的设备布局。 - - - 在这种特定情况下,作为一般设计理念,PyTorch 倾向于公开简单且明确的构建块,而不是易于从业者使用的 API。新的 PyTorch 用户可以立即理解和调试简单版本:如果您在程序中实际调用操作符的位置调用需要跨设备移动的操作符,您会得到一个明显的错误。简单的解决方案可能会让新用户一开始行动得更快,但调试这样的系统可能很复杂:系统如何做出决定?用于插入此类系统的 API 是什么?对象在其 IR 中如何表示? - - - 支持这种设计的一些经典论点来自[分布式计算的注释](https://dl.acm.org/doi/book/10.5555/974938)(TLDR:不要对具有不同性能特征的资源进行统一建模,详细信息会泄漏)和[End-to-EndPrinciple](http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf)(TLDR:将智能构建到堆栈的较低层可以防止构建堆栈中较高层的高性能功能,并且通常无论如何都不起作用)。例如,我们可以构建运营商级别或全局设备移动规则,但精确的选择并不明显,并且构建可扩展的机制具有不可避免的复杂性和延迟成本。 - - - 这里需要注意的是,这并不意味着更高级别的“简单”API 没有价值;而是意味着更高级别的“简单”API 没有价值。当然,例如,堆栈中的更高级别有一个价值,可以支持大型集群中跨异构计算的高效tensor计算。相反,我们的意思是,专注于简单的较低级别构建块有助于为简单的 API 提供信息,同时在用户需要离开人迹罕至的地方时仍然保持良好的体验。它还为创新提供了空间,并以我们无法在 PyTorch 核心库中支持的速度增长更多固执己见的工具,但最终从中受益,正如我们的[丰富的生态系统](https://pytorch.org/ecosystem/) 所证明的那样。换句话说,一开始就不自动化可以让我们更快地达到良好的自动化水平。 - - -### 原则 3:Python 优先,具有一流的语言互操作性 [¶](#principle-3-python-first-with-best-in-class-language-interoperability "永久链接到此标题") - - - 这一原则始于 ** Python First** : - - - -> -> -> -> PyTorch 不是将 Python 绑定到整体 C++ 框架中。 -> 它的构建目的是深度集成到 Python 中。你可以像使用它一样自然地使用它 -> [NumPy](https://www.numpy.org/) -> , -> [SciPy](https://www.scipy.org/) -> , -> [scikit-学习](https://scikit-learn.org/) -> , -> 或其他 Python 库。您可以使用您最喜欢的库并使用 -> [Cython] 等包在 Python 中编写新的神经网络 -> 层(https://cython.org/) -> 和 -> [Numba](http://numba.pydata.org/) -> 。我们的目标是在适当的情况下不重新发明轮子。 -> -> -> - - - PyTorch 多年来需要处理的一件事是 Python 开销:我们首先用 C++ 重写了 autograd 引擎,然后是大部分运算符定义,然后开发了 TorchScript 和 C++ 前端。 - - - 尽管如此,使用 Python 工作仍然可以轻松地为我们的用户提供最佳体验:它灵活、熟悉,也许最重要的是,它拥有一个可供使用的庞大的科学计算库和扩展生态系统。这一事实激发了我们最近的一些贡献,这些贡献试图达到接近 Python 可用性曲线末端的帕累托最优点: - - - -* [TorchDynamo](https://dev-discuss.pytorch.org/t/torchdynamo-an-experiment-in-dynamic-python-bytecode-transformation/361) ,一个能够加速现有 eager-mode 的 Python 框架评估工具PyTorch 程序只需最少的用户干预。 -* [torch_function](https://pytorch.org/docs/main/notes/extending.html#extending-torch) 和 [torch_dispatch](https://dev-discuss.pytorch.org/t/what-and-why-is-torch-dispatch/557)扩展点,这些扩展点使得 Python 优先的功能能够构建在 C++ 内部之上,例如 [torch.fxtracer](https分别为://pytorch.org/docs/stable/fx.html)和[functorch](https://github.com/pytorch/functorch)。 - - - 这些设计原则并不是硬性规定,而是艰难的选择,并锚定了我们如何将 PyTorch 构建为当今可调试、可破解且灵活的框架。随着我们拥有更多的贡献者和维护者,我们期待与您一起在我们的图书馆和生态系统中应用这些核心原则。我们也愿意随着我们学习新事物和人工智能领域的发展而不断发展它们,正如我们所知道的那样。 \ No newline at end of file diff --git a/docs/2.0/docs/community/governance.md b/docs/2.0/docs/community/governance.md deleted file mode 100755 index 046e1ddf3..000000000 --- a/docs/2.0/docs/community/governance.md +++ /dev/null @@ -1,216 +0,0 @@ -# PyTorch 治理 |机制 [¶](#pytorch-governance-mechanics "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -## 摘要 [¶](#summary "此标题的永久链接") - - - PyTorch 采用分层的技术治理结构。 - - - -* 由提出问题、提出拉取请求并为项目做出贡献的 **贡献者** 社区。 -* 一小组 **模块维护者** 驱动 PyTorch 项目的每个模块。 -* 他们由 **核心维护者监督** ,谁推动整个项目的方向。 -* 核心维护者有一个 **领导核心维护者**,他是包罗万象的决策者。 - - - 所有维护者都应该对 PyTorch 的设计理念抱有强烈的偏见。 - - - 除了维护者之外,还鼓励社区做出贡献、提出问题、提出建议、审查拉取请求并出现在社区中。鉴于贡献和投资意愿,任何人都可以被接受为维护者,并提供部分代码库的写入访问者所有权。 - - - 技术治理与业务治理严格分离。技术与业务治理的分离确保了任何个人或公司都无法“收买”项目的技术指导。此外,技术治理流程中的成员资格是针对**个人**,而不是公司。也就是说,没有为特定公司保留席位,并且成员资格与个人相关,而不是与雇用该人员的公司相关。 - - -## 模块维护者 [¶](#module-maintainers "此标题的永久链接") - - - 模块被定义为 PyTorch 组织内的 GitHub 存储库,或核心存储库 [pytorch/pytorch](https://github.com/pytorch/pytorch) 内的目录。每个模块都有自己的维护者组。维护者组负责审查和批准提交、改进设计以及更改模块的范围。每个维护者组可以采用自己的规则和程序来做出决策(默认为多数票)。模块维护者有权对其他模块维护者做出的决定提出异议——特别是当它影响到他们时。当出现争议时,模块维护者组应对争议提供合理且公开的解释、相关论据和解决方案。在模块维护者自己无法得出结论的特殊情况下,他们将升级至核心维护者进行审查。升级由核心维护者按照其规则和程序解决。 - - - 每个维护者小组应发布其模块的公开信息(愿景、粗略路线图、设计文档、任何争议和争议解决方案),以便贡献者和其他感兴趣的各方了解项目的未来方向并参与讨论。 - - - 维护者的职责包括: - - - -* 分类模块的高优先级问题 -* 分类、审查和落地模块的高优先级拉取请求 -* 支持与模块相关的公共文档 -* 运行公共开发者会议 - - -## 核心维护者 [¶](#core-maintainers "此标题的固定链接") - - - 核心维护人员应该对 PyTorch 代码库和设计理念有深入的了解。他们的职责包括: - - - -* 阐明项目的有凝聚力的长期愿景 -* 以所有相关方都能接受的方式谈判和解决有争议的问题 -* 接收 PyTorch 利益相关者提出的广泛变更请求并评估/接受它们(小模块级请求由模块维护人员处理) - - - 核心维护者作为一个群体有权否决模块维护者级别做出的任何决定。核心维护者有权根据自己的意愿解决争议。核心维护者应公开表达其决策,并对其决策、否决和争议解决给出明确的理由。 - - - 核心维护者是 PyTorch GitHub Organd 的管理员,在 [维护者](https://pytorch.org/docs/stable/community/persons_of_interest.html) 中列出。 - - -## 首席核心维护者 (BDFL) [¶](#lead-core-maintainer-bdfl "此标题的永久链接") - - - 可能有些决定核心维护者无法达成共识。为了做出如此困难的决定,核心维护者中有一个指定并公开宣布的 LeadCore 维护者,在开源治理模型中通常也称为 BDFL。 - - - 首席核心维护者应公开阐明他们的决策,并给出其决策的明确理由。首席核心维护者还负责确认或删除核心维护者。 - - -## 提名、确认和删除维护者 [¶](#nominate-confirming-and-removing-maintainers "永久链接到此标题") - - -### 原则 [¶](#the-principles "此标题的永久链接") - - - -* 在通过贡献、审查和讨论展示了该组件的强大专业知识并与该组件如何适应整个 PyTorch 方向保持一致后,模块维护者小组的成员资格将根据 **优点** 授予**个人**。维护者小组中的个人必须表现出与 PyTorch 总体原则的强烈且持续的一致性。 -* 模块维护者或核心维护者没有任期限制 -* 如果他们长期不积极参与,则将模块维护移至“退休”状态的简单标准。每个模块维护者组可以定义适合该模块的非活动期。*成员资格是针对个人,而不是公司。 - - -### 提名流程 [¶](#the-process-for-nomination "永久链接到此标题") - - - -* 每个模块都有自己的进程。请联系模块维护人员以获取更多信息。但是,如果没有确定流程,您可以通过提交[此表格](https://share.hsforms.com/1fh3SpHFMR2ihEBQ2orgN8A4tvhy)向核心维护人员提出请求。核心维护人员正在满足每个三个月。*如果您向核心维护者提交请求,您的请求中的信息必须包括以下项目: - - - -+ 被提名者对模块的代码、审查和设计贡献的深度和广度 -+ 被提名者与维护者、用户和社区互动的评价(正面和负面) -+ 维护者对支持的一般评价 -* 然后核心维护者进行评估所有信息并做出确认或拒绝提名的最终决定。核心维护者的决定必须得到很好的阐述并且是公开的。 - - -### 删除过程 [¶](#the-process-for-removal "永久链接到此标题") - - - -* 与提名流程类似,社区中的任何人都可以提名一个人被从模块维护者职位或核心维护者职位中删除。 -* 一个人也可以自我提名被删除 -* 核心维护者(不包括利益冲突人员)将请求或汇总以下方面的更多信息: - - - -+ 他们在项目上的活动(或缺乏) -+ 他们对空间的想法不断变化,这导致与项目的总体方向相冲突 -+ 其他使他们不适合成为维护者的信息,例如行为准则问题、他们的项目范围之外与项目价值观相冲突的活动 -+ **利益冲突**:孝顺或浪漫关系 -* 然后核心维护者评估所有信息并做出确认或拒绝删除的最终决定。核心维护者的决定必须清楚地表达出来并公开。 - - -### 提名核心维护者 [¶](#nominate-core-maintainers "永久链接到此标题") - - - -* 任何核心或模块维护者都可以提名某人成为核心维护者 -* 首席维护者 (BDFL) 负责评估提名。 -* 首席维护者请求或汇总有关候选人成为核心维护者的实力的更多信息: - - - -+ 来自其他核心和模块维护者的支持信 -+ 来自 PyTorch 社区内利益相关者的一般支持信 -+ 任何适合候选资格的新相关信息 -* 首席维护者评估所有信息并做出确认或拒绝提名的最终决定,明确公开阐述其决定背后的理由。 - - -### 删除主要核心维护者并提名新的主要核心维护者 [¶](#removing-the-lead-core-maintainer-and-nominate-a-new-lead-core-maintainer "永久链接到此标题") - - - -* 绝大多数核心维护者 (75%) 可以选择删除主要核心维护者 -* 在删除主要核心维护者后或在不可预见的情况下(例如主要核心维护者永久不可用),核心维护者遵循排名选择投票方式选举新的主要核心维护者。 - - -## 添加、删除和重新调整模块和项目的范围 [¶](#add-remove-and-re-scope-modules-and-projects "永久链接到此标题") - - - 核心维护者共同负责在 PyTorch 组织中添加、删除和重新界定新模块的决策,无论是作为 PyTorch GitHub 组织中的新存储库,还是作为 [pytorch/pytorch](https://github.com/pytorch/pytorch)存储库。 - - - 他们邀请社区成员(包括他们自己)提出此类变革的建议。这些建议是开放式的,但应该有一些基本的基础工作,以提出令人信服的变革理由。以下是此过程的示例方法: - - -1. 采访研究人员/利益相关者,与社区交谈,收集问题;2.阅读论文、参加会议、根据经验构建示例管道;3.创建一个世界状态 -- 确保此更改是必要的,例如添加一个新项目或模块值得维护成本;或者删除项目或模块不会从 PyTorch 中删除太多价值;4.创建提案;一旦提案获得批准,该提案将涵盖维护、开发和社区计划。 - - - 核心维护者对提案做出最终决定,并公开阐明决定背后的理由。 - - -## 决策 [¶](#decision-making "此标题的固定链接") - - -### 无争议的更改 [¶](#uncontroversial-changes "此标题的永久链接") - - - 主要工作通过 GitHub 上的问题和拉取请求进行。维护人员应避免将更改直接推送到 PyTorch 存储库,而应依赖拉取请求。核心或模块维护者批准拉取请求后,无需进一步处理即可合并拉取请求。核心和模块维护者,如 [维护者](https://pytorch.org/docs/stable/community/persons_of_interest.html) 页面和 [代码所有者](https://github.com/pytorch/pytorch/blob) 中列出/master/CODEOWNERS)最终批准这些更改。 - - - 向相关专家通报问题或拉取请求非常重要。强烈推荐来自给定兴趣领域的专家的评论,尤其是在拉取请求批准方面。如果不这样做,相关专家可能会撤销更改。 - - -### 有争议的决策过程 [¶](#controversial-decision-process "永久链接到此标题") - - - 给定兴趣领域的重大变化需要打开 GitHub 问题进行讨论。这包括: - - - -* 对 PyTorch 框架或库的任何语义或语法更改。 -* 对 Python 或 C++ API 的向后不兼容更改。 -* 对核心框架或库的添加,包括现有库中的大量新功能。 -* 删除核心功能或平台支持 - - - 核心和模块维护者最终批准这些更改。 - - -### 一般项目政策 [¶](#general-project-policies "永久链接到此标题") - - - PyTorch 已成立为 PyTorch a Series of LF Projects, LLC。适用于 PyTorch 和 PyTorch 参与者的政策(包括商标使用指南)位于 。 - - - PyTorch 参与者承认,所有新贡献的版权将由版权所有者作为独立的作者作品保留,并且不需要贡献者或版权所有者将版权分配给该项目。除下述情况外,项目的所有代码贡献都必须使用此处提供的 3-Clause-BSD 许可证进行:(“项目许可证”)。出站代码将根据项目许可证提供。维护者可以在例外情况下批准使用替代开放许可证或用于入站或出站贡献的许可证。 - - -## 常见问题解答 [¶](#faq "此标题的固定链接") - - -**问:如果我想拥有(或部分拥有)项目的一部分(例如功能区域或域库)怎么办** [线性代数](https://github.com/pytorch/pytorch/tree/master/torch/linalg) **或** [Torch Vision](https://github.com/pytorch/vision) **?** 这绝对是可能的。第一步是开始为现有的项目领域并支持其健康和成功。除此之外,您还可以通过 GitHub 问题提出新功能或更改的提案,以改进项目区域。 - - -**问:如果我是一家希望在内部使用 PyTorch 进行开发的公司,我可以被授予或购买董事会席位来推动项目方向吗?** 不可以,PyTorch 项目严格由维护者项目理念驱动,并明确区分技术治理来自企业治理。但是,如果您想参与赞助和支持,您可以通过此参与 PyTorch 基金会(PTF)和赞助。您还可以让个别工程师成为维护人员,但这并不能得到保证,并且是基于绩效的。 - - -**问:PyTorch 项目是否支持拨款或支持独立开发人员使用或为该项目做出贡献的方式?** 不,目前不支持。然而,我们正在寻找更好地支持 PyTorch 周围的独立开发人员社区的方法。如果您有建议或意见,请访问 PyTorch 论坛进行讨论。 - - -**问:如何向项目贡献代码?** 如果更改相对较小,可以立即在 GitHub 上打开拉取请求,以供项目提交者审核和合并。对于较大的更改,请打开一个问题以提出建议以进行事先讨论。另请参阅 [PyTorch ContributorGuide](contribution_guide.html) 了解贡献指南。 - - -**问:我可以成为该项目的提交者吗?** 不幸的是,当前 PyTorch 的提交过程涉及与 Facebook 基础设施的交互,只能由 Facebook 员工触发。然而,我们正在寻找将提交者基础扩大到 Facebook 之外的个人的方法,并将在有工具存在时提供更新。 - - -**问:如果我想在会议上提供 PyTorch 教程怎么办?我需要成为“正式”提交者才能做到这一点吗?** 不,我们鼓励社区成员随时随地展示他们的工作。请联系[marketing@pytorch.org](mailto:marketing@pytorch.org) 获取营销支持。 \ No newline at end of file diff --git a/docs/2.0/docs/community/persons_of_interest.md b/docs/2.0/docs/community/persons_of_interest.md deleted file mode 100755 index 1eb405561..000000000 --- a/docs/2.0/docs/community/persons_of_interest.md +++ /dev/null @@ -1,427 +0,0 @@ -# PyTorch 治理 |维护者 [¶](#pytorch-governance-maintainers "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -## 责任 [¶](#responsibility "Permalink to this header") - - - -* 分类并修复分配给模块或库的高优先级问题 -* 分类、审查和落实分配给模块或库的高优先级拉取请求 -* 在 [discuss.pytarch.org](https://discuss) 和 [dev-discuss.pytorch.org](https://dev-discuss.pytorch.org/) 上回答模块或库问题 -* 维护公共用户和开发文档 -* 每半年或每季度召开会议并分享会议记录和路线图基础 - - -## 首席核心维护者 (BDFL) [¶](#lead-core-maintainer-bdfl "此标题的永久链接") - - - -* Soumith Chintala ( [soumith](https://github.com/soumith) ) - - -## 核心维护者 [¶](#core-maintainers "此标题的固定链接") - - - -* Soumith Chintala ( [soumith](https://github.com/soumith) ) -* Edward Yang ( [ezyang](https://github.com/ezyang) ) -* Greg Chanan ( [gchanan](https://github.com/gchanan) -* Dmytro Dzhulgakov ( [dzhulgakov](https://github.com/dzhulgakov) ) -* Nikita Shulga ( [malfet](https://github.com/malfet) ) - - -## 模块级维护者 [¶](#module-level-maintainers "此标题的永久链接") - - -### NN API (torch.nn) [¶](#nn-apis-torch-nn "此标题的永久链接") - - - -* Greg Chanan ( [gchanan](https://github.com/gchanan) ) -* Soumith Chintala ( [soumith](https://github.com/soumith) ) -* Joel Schlosser ( [jbschlosser](https://github.com/jbschlosser) ) -* Alban Desmaison ( [albanD](https://github.com/albanD) ) -* (emeritus) Sam Gross ( [colesbury](https://github.com/colesbury) ) -* (荣休)Adam Paszke ( [apaszke](https://github.com/apaszke) ) - - -### 优化器 (torch.optim) [¶](#optimizers-torch-optim "此标题的永久链接") - - - -* Alban Desmaison ( [albanD](https://github.com/albanD) ) -* Joel Schlosser ( [jbschlosser](https://github.com/jbschlosser) ) -* Soumith Chintala ( [soumith](https://github.com/soumith) ) -* (emeritus) Ilqar Ramazanli ( [iramazanli](https://github.com/iramazanli) ) -* (emeritus) Vincent Quenneville-Belair ( [vincentqb](https://github.com/vincentqb)) - - -### Autograd (torch.autograd) [¶](#autograd-torch-autograd "此标题的永久链接") - - - -* Edward Yang ( [ezyang](https://github.com/ezyang) ) -* Alban Desmaison ( [alband](https://github.com/alband) ) -* Jeffrey Wan ( [soulitzer](https://github.com/soulitzer) -* (荣誉退休) Adam Paszke ( [apaszke](https://github.com/apaszke) ) - - -### 编译器 (JIT /TorchScript /FX /TorchDynamo) [¶](#compilers-jit-torchscript-fx-torchdynamo "此标题的永久链接") - - - -* Elias Ellison ( [eellison](https://github.com/eellison) ) -* Michael Suo ( [suo](https://github.com/suo) ) -* 曹亚楠 ( [gmagogsfm](https://github.com/gmagogsfm) ) -* 詹姆斯·里德 ( [jamesr66a](https://github.com/jamesr66a) ) -* 杰森·安塞尔 ( [jansel](https://github.com/jansel) ) -* 龚巩 ( [ jgong5](https://github.com/jgong5) ) -* (emeritus) Zach Devito ( [zdevito](https://github.com/zdevito) ) - - -### 发行版和 RNG [¶](#distributions-rng "此标题的永久链接") - - - -* Fritz Obermeyer ( [fritzo](https://github.com/fritzo) ) -* Neeraj Pradhan ( [neerajprad](https://github.com/neerajprad) ) -* Alican Bozkurt ( [alicanb](https://github.com/alicanb) -* (emeritus) Vishwak Srinivasan ( [vishwakftw](https://github.com/vishwakftw) ) - - -### 分布式 [¶](#distributed "此标题的永久链接") - - - -* Shen Li ( [mrshenli](https://github.com/mrshenli) ) -* Pritam Damania ( [pritamdamania87](https://github.com/pritamdamania87) ) -* Yanli Zhao ( [zhaojuanmao](https://github.com/zhaojuanmao) ) -* Rohan Varma ( [rohan-varma](https://github.com/rohan-varma) ) -* Wanchao Liang ( [wanchaol](https://github.com/wanchaol) ) -* Junjie Wang ( [fduwjj](https://github.com/fduwjj) ) -* Howard Huang ( [H-Huang](https://github.com/H-Huang) ) -* Tristan Rice ( [d4l3k](https ://github.com/d4l3k) ) -* Alisson Azzolini ( [aazzolini](https://github.com/aazzolini) ) -* Ke Wen ( [kwen2501](https://github.com/kwen2501) ) -* James Reed ( [jamesr66a](https://github.com/jamesr66a) ) -* Kiuk Chung ( [kiukchung](https://github.com/kiukchung) ) -* (emeritus) Pieter Noordhuis ( [pietern](https:///github.com/pietern) ) -* (emeritus) Mingzhe Li ( [mingzhe09088](https://github.com/mingzhe09088) ) -* (emeritus) Omkar Salpekar ( [osalpekar](https://github.com/osalpekar ) ) - - -### 多重处理和数据加载器 [¶](#multiprocessing-and-dataloaders "此标题的永久链接") - - - -* Simon Wang ( [SsnL](https://github.com/SsnL) ) -* (emeritus) Vitaly Fedyunin ( [VitalyFedyunin](https://github.com/VitalyFedyunin) ) -* (emeritus) Adam Paszke ( [apaszke ](https://github.com/apaszke) ) - - -### 线性代数 (torch.linalg) [¶](#linear-algebra-torch-linalg "永久链接到此标题") - - - -* Mike Ruberry ( [mruberry](https://github.com/mruberry) ) -* Mario Lezcano ( [lezcano](https://github.com/lezcano) ) -* Ivan Yashchuk ( [IvanYashchuk](https://github.com/IvanYashchuk) -* (emeritus) Vishwak Srinivasan ( [vishwakftw](https://github.com/vishwakftw) ) - - -### 稀疏 (torch.sparse) [¶](#sparse-torch-sparse "此标题的永久链接") - - - -* Pearu Peterson ( [pearu](https://github.com/pearu) ) -* Nikita Vedeneev ( [nikitaved](https://github.com/nikitaved) ) -* Ivan Yashchuk ( [IvanYashchuk](https://github.com/IvanYashchuk) ) -* Christian Puhrsch ( [cpuhrsch](https://github.com/cpuhrsch) ) -* Andrew James ( [amjames](https://github.com/amjames) ) - - -### NestedTensor (torch.nested) [¶](#nestedtensor-torch-nested "此标题的永久链接") - - - -* Alban Desmaison ( [albanD](https://github.com/albanD) ) -* Christian Puhrsch ( [cpuhrsch](https://github.com/cpuhrsch) ) -* Driss Guessous ( [drisspg](https://github.com/drisspg) ) -* Joel Schlosser ( [jbschlosser](https://github.com/jbschlosser) ) -* Mikayla Gawarecki ( [mikaylagawarecki](https://github.com/mikaylagawarecki) ) -* Natalia Gimelshein ( [ ngimel](https://github.com/ngimel) ) - - -### MaskedTensor (torch.masked) [¶](#maskedtensor-torch-masked "此标题的永久链接") - - - -* Christian Puhrsch ( [cpuhrsch](https://github.com/cpuhrsch) ) -* (emeritus) George Qi ( [george-qi](https://github.com/george-qi) ) - - -### 快速傅立叶变换 (torch.fft) [¶](#fast-fourier-transform-torch-fft "此标题的固定链接") - - - -* Mike Ruberry ( [mruberry](https://github.com/mruberry) ) -* Peter Bell ( [peterbell10](https://github.com/peterbell10) ) - - -### CPU 性能(Torch Inductor/MKLDNN)[¶](#cpu-performance-torch-inductor-mkldnn "此标题的永久链接") - - - -* Mingfei Ma ( [mingfeima](https://github.com/mingfeima) ) -* Jiong Gong ( [jgong5](https://github.com/jgong5) ) -* Xiaobing Zhang ( [XiaobingSuper](https://github.com/XiaobingSuper) ) -* (emeritus) Xiaoqiang Zheng ( [zheng-xq](https://github.com/zheng-xq) ) -* (emeritus) Sam Gross ( [colesbury](https://github.com/colesbury) ) -* (emeritus) Christian Puhrsch ( [cpuhrsch](https://github.com/cpuhrsch) ) -* (emeritus) Ilia Cherniavskii ( [ilia-cher](https://github.com/ilia-cher) ) -* (emeritus) Junjie Bai ( [bddppq](https://github.com/bddppq) ) -* (emeritus) Yinghai Lu ( [yinghai](https://github.com/yinghai) ) -* (emeritus) Vitaly Fedyunin ( [VitalyFedyunin](https://github.com/VitalyFedyunin) ) -* (emeritus) Jianhui Li ( [Jianhui-Li](https://github.com/Jianhui-Li) ) - - -### GPU 性能(Torch Inductor /Triton /CUDA)[¶](#gpu-performance-torch-inductor-triton-cuda "此标题的永久链接") - - - -* Natalia Gimelshein ( [ngimel](https://github.com/ngimel) ) -* Edward Yang ( [ezyang](https://github.com/ezyang) ) -* Piotr Bialecki ( [ptrblck](https://github.com/ptrblck) ) -* Christian Sarofeen ( [csarofeen](https://github.com/csarofeen) ) -* Andrew Tulloch ( [ajtulloch](https://github.com/ajtulloch) ) -* (emeritus) Xiaoqiang Zheng ( [zheng-xq](https://github.com/zheng-xq) ) - - -### NVFuser [¶](#nvfuser "此标题的永久链接") - - - -* Christian Sarofeen ( [csarofeen](https://github.com/csarofeen) ) -* Alex Jann ( [jjsjann123](https://github.com/jjsjann123) ) -* Piotr Bialecki ( [ptrblck](https://github.com/ptrblck)) -* Natalia Gimelshein ( [ngimel](https://github.com/ngimel) ) - - -### AMD/ROCm/HIP [¶](#amd-rocm-hip "此标题的永久链接") - - - -* Peng Sun ( [sunway513](https://github.com/sunway513) ) -* Jithun Nair ( [jithunnair-amd](https://github.com/jithunnair-amd) ) -* Jeff Daily ( [jeffdaily]( https://github.com/jeffdaily) ) -* (emeritus) Junjie Bai ( [bddppq](https://github.com/bddppq) ) - - -### Build + CI [¶](#build-ci "此标题的永久链接") - - - -* Nikita Shulga ( [malfet](https://github.com/malfet) ) -* Eli Uriegas ( [seemethere](https://github.com/seemethere) ) -* Alban Desmaison ( [alband](https://github.com/alband) ) -* Mikey Dagitses ( [dagitses](https://github.com/dagitses) ) -* Omkar Salpekar ( [osalpekar](https://github.com/osalpekar) ) -* Zain Rizvi ( [ ZainRizvi](https://github.com/ZainRizvi) ) -* Nirav Mehta ( [mehtanirav](https://github.com/mehtanirav) ) -* Andrey Talman ( [atalman](https://github.com/atalman) ) ) -* (emeritus) Zhuojie Zhou ( [zhouzhuojie](https://github.com/zhuojie) ) -* (emeritus) Edward Yang ( [ezyang](https://github.com/ezyang) ) -* (emeritus) Karl Ostmo ( [kostmo](https://github.com/kostmo) ) - - -### 性能工具 [¶](#performance-tools“此标题的永久链接”) - - -* Adnan Aziz ( [adnanaziz](https://github.com/adnanaziz) ) -* CK Luk ( [ckluk](https://github.com/ckluk) ) -* Taylor Robie ( [robieta](https://github.com/robieta) -* Xu Zhao ( [xuzhao9](https://github.com/xuzhao9) ) -* Geeta Chauhan ( [chauhang](https://github.com/chauhang) ) -* (emeritus) Victor Bittorf ( [bitfort](https://github.com/bitfort) ) -* (emeritus) Gisle Dankel ( [gdankel](https://github.com/gdankel) ) -* (emeritus) Natalia Gimelshein ( [ngimel]( https ://github.com/ngimel) ) -* (emeritus) Mingzhe Li ( [mingzhe09088](https://github.com/mingzhe09088) ) - - -### C++ API [¶](#c-api "此标题的永久链接") - - - -* Joel Schlosser ( [jbschlosser](https://github.com/jbschlosser) ) -* (emeritus) Will Feng ( [yf225](https://github.com/yf225) ) - - -### C10 utils 和操作员调度 [¶](#c10-utils-and-operator-dispatch "永久链接到此标题") - - - -* Brian Hirsh ( [bdhirsh](https://github.com/bdhirsh) ) -* Edward Yang ( [ezyang](https://github.com/ezyang) ) -* Dmytro Dzhulgakov ( [dzhulgakov](https://github.com/dzhulgakov) ) -* (emeritus) Sebastian Messmer ( [smessmer](https://github.com/smessmer) ) - - -### ONNX 导出器 [¶](#onnx-exporter "此标题的永久链接") - - - -* Bowen Bao ( [BowenBao](https://github.com/BowenBao) ) -* Aaron Bockover ( [abock](https://github.com/abock) ) -* (emeritus) Gary Miguel ( [garymm](https) ://github.com/garymm) ) -* (emeritus) Lara Haidar ( [lara-hdr](https://github.com/lara-hdr) ) -* (emeritus) Lu Fang ( [houseroad](https://github.com/houseroad) ) -* (emeritus) Negin Raoof ( [neginraoof](https://github.com/neginraoof) ) -* (emeritus) Spandan Tiwari ( [spandantiwari](https://github.com/spandantiwari) ) ) - - -### Mobile /Edge [¶](#mobile-edge "此标题的永久链接") - - - -* David Reiss ( [dreiss](https://github.com/dreiss) ) -* Raziel Guevara ( [raziel](https://github.com/raziel) ) -* Linbin Yu ( [linbinyu](https://github.com/linbinyu) ) -* Ivan Kobzarev ( [IvanKobzarev](https://github.com/IvanKobzarev) ) -* Tao Xu ( [xta0](https://github.com/xta0) ) - - -### 模型压缩和优化 [¶](#model-compression-optimization "永久链接到此标题") - - - -* Vasiliy Kuznetsov ( [vkuzo](https://github.com/vkuzo) ) -* Jerry Zhang ( [jerryzh168](https://github.com/jerryzh168) ) -* Supriya Rao ( [supriyar](https://github.com/supriyar) ) -* (emeritus) Zafar Takhirov ( [z-a-f](https://github.com/z-a-f) ) -* (emeritus) Raghuraman Krishnamoorthi ( [raghuramank100](https://github.com/raghuramank100) ) - - -### Windows [¶](#windows“此标题的永久链接”) - - - -* Guoliang Hua ( [nbcsm](https://github.com/nbcsm) ) -* (emeritus) Teng Gao ( [gaoteng-git](https://github.com/gaoteng-git) ) -* (emeritus) Peter Johnson ( [peterjc123](https://github.com/peterjc123) ) - - -### Apple M1/MPS [¶](#apple-m1-mps "此标题的永久链接") - - - -* Alban Desmaison ( [alband](https://github.com/alband) ) -* Nikita Shulga ( [malfet](https://github.com/malfet) ) -* Kulin Seth ( [kulinseth](https://github.com/kulinseth) ) -* Ramin Azarmehr ( [razarmehr](https://github.com/razarmehr) ) - - -### PowerPC [¶](#powerpc "此标题的永久链接") - - - -* Alfredo Mendoza ( [avmgithub](https://github.com/avmgithub) ) - - -### 文档/教程 [¶](#docs-tutorials "此标题的永久链接") - - - -* Svetlana Karslioglu ( [svekars](https://github.com/svekars) ) - - -## 库级维护者 [¶](#library-level-maintainers "此标题的永久链接") - - -### XLA [¶](#xla“此标题的永久链接”) - - - -* Jack Cao ( [JackCaoG](https://github.com/JackCaoG) ) -* Daniel Sohn ( [jysohn23](https://github.com/jysohn23) ) -* Zach Cain ( [zcain117](https://github.com/zcain117) ) -* Brian Hirsch ( [bdhirsh](https://github.com/bdhirsh) ) -* Gregory Chanan ( [gchanan](https://github.com/gchanan) ) -* (emeritus) Ailing Zhang ( [ailzhang](https://github.com/ailzhang) ) -* (emeritus) Davide Libenzi ( [dlibenzi](https://github.com/dlibenzi) ) -* (emeritus) Alex Suhan ( [asuhan]( https://github.com/asuhan) ) - - -### TorchServe [¶](#torchserve "此标题的永久链接") - - - -* Geeta Chauhan ( [chauhang](https://github.com/chauhang) ) -* Manoj Rao ( [mycpuorg](https://github.com/mycpuorg) ) -* Vamshi Dantu ( [vdantu](https://github.com/vdantu) -* Dhanasekar Karuppasamy ( [dhanainme](https://github.com/dhanainme) ) - - -### TorchVision [¶](#torchvision "此标题的永久链接") - - - -* Francisco Massa ([fmassa](https://github.com/fmassa)) -* Vasilis Vryniotis ([datumbox](https://github.com/datumbox)) -* Nicolas Hug ([NicolasHug](https://www.github.com/NicolasHug) -* Joshua Michael Maranatha ([JoshuaMichael](https://github.com/JoshuaMichael)) -* Joao Gomes ([jdsgomes](https://github.com/jdsgomes)) -* Philip Meier ( [pmeier](https://github.com/pmeier)) -* Victor Fomin ([vfdev-5](https://github.com/vfdev-5)) - - -### TorchText [¶](#torchtext "此标题的永久链接") - - - -* Nayef Ahmed ( [Nayef211](https://github.com/Nayef211) ) -* (emeritus) Parmeet Singh Bhatia ( [parmeet](https://github.com/parmeet) ) -* (emeritus) Guanheng George Zhang ( [zhangguanheng66](https://github.com/zhangguanheng66) ) -* (emeritus) Christian Puhrsch ( [cpuhrsch](https://github.com/cpuhrsch) ) - - -### TorchAudio [¶](#torchaudio "此标题的永久链接") - - - -* Moto Hira ( [mthrok](https://github.com/mthrok) ) -* Jeff Hwang ( [hwangjeff](https://github.com/hwangjeff) ) -* (emeritus) Caroline Chen ( [carolineechen](https://github.com/carolineechen) ) -* (emeritus) Xiaohui Zhang ( [xiaohui-zhang](https://github.com/xiaohui-zhang) ) -* (emeritus) Zhaoheng Ni ( [nateanl](https://github.com/xiaohui-zhang) ) -* (emeritus) Christian Puhrsch ( [cpuhrsch](https://github.com/cpuhrsch) ) -* (emeritus) Vincent QB ( [vincentqb](https://github.com/vincentqb) ) - - -### TorchRec [¶](#torchrec "此标题的永久链接") - - - -* Dmytro Ivchenko ( [divchenko](https://github.com/divchenko) ) -* Colin Taylor ( [colin2328](https://github.com/colin2328) ) - - -### TorchX [¶](#torchx "此标题的永久链接") - - - -* Tristan Rice ( [d4l3k](https://github.com/d4l3k) ) -* Kiuk Chung ( [kiukchung](https://github.com/kiukchung) ) - - -### TorchData /TorchArrow [¶](#torchdata-torcharrow "此标题的永久链接") - - - -* Wenlei Xie ( [wenleix](https://github.com/wenleix) ) -* (emeritus) Vitaly Fedyunin ( [VitalyFedyunin](https://github.com/VitalyFedyunin) ) \ No newline at end of file diff --git a/docs/2.0/docs/complex_numbers.md b/docs/2.0/docs/complex_numbers.md deleted file mode 100755 index a44f851c9..000000000 --- a/docs/2.0/docs/complex_numbers.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/config_mod.md b/docs/2.0/docs/config_mod.md deleted file mode 100755 index a271beb3e..000000000 --- a/docs/2.0/docs/config_mod.md +++ /dev/null @@ -1,19 +0,0 @@ -# torch.__config__ [¶](#module-torch.__config__ "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -> `torch.__config__.show()` [[source]](_modules/torch/__config__.html#show)[¶](#torch.__config__.show "此定义的永久链接") - - - 返回一个人类可读的字符串,其中包含 PyTorch 配置的描述。 - - -> `torch.__config__.parallel_info()` [[source]](_modules/torch/__config__.html#parallel_info)[¶](#torch.__config__.parallel_info "此定义的永久链接") - - - 返回带有并行化设置的详细字符串 \ No newline at end of file diff --git a/docs/2.0/docs/cpp_extension.md b/docs/2.0/docs/cpp_extension.md deleted file mode 100755 index c200f6fd6..000000000 --- a/docs/2.0/docs/cpp_extension.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/cpp_index.md b/docs/2.0/docs/cpp_index.md deleted file mode 100755 index 26442c541..000000000 --- a/docs/2.0/docs/cpp_index.md +++ /dev/null @@ -1,65 +0,0 @@ -# C++ [¶](#c "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - - -!!! note "笔记" - - 如果您正在寻找 PyTorch C++ API 文档,请直接转到[此处](https://pytorch.org/cppdocs/)。 - - - PyTorch 提供了多种使用 C++ 的功能,最好根据您的需求进行选择。在较高级别上,可以提供以下支持: - - -## TorchScript C++ API [¶](#torchscript-c-api "此标题的永久链接") - - -[TorchScript](https://pytorch.org/docs/stable/jit.html) 允许对 Python 中定义的 PyTorch 模型进行序列化,然后在 C++ 中加载和运行,通过编译或跟踪其执行捕获模型代码。您可以在[用 C++ 教程加载 TorchScript 模型](https://pytorch.org/tutorials/advanced/cpp_export.html) 中了解更多信息。这意味着您可以尽可能地用 Python 定义模型,但随后通过 TorchScript 导出它们,以便在生产或嵌入式环境中执行非 Python 执行。 TorchScript C++ API 用于与这些模型和 TorchScript 执行引擎进行交互,包括: - - - -* 加载从 Python 保存的序列化 TorchScript 模型 -* 如果需要,进行简单的模型修改(例如拉出子模块) -* 使用 C++ Tensor API 构造输入并进行预处理 - - -## 使用 C++ 扩展扩展 PyTorch 和 TorchScript [¶](#extending-pytorch-and-torchscript-with-c-extensions "永久链接到此标题") - - - TorchScript 可以通过自定义运算符和自定义类使用用户提供的代码进行增强。注册到 TorchScript 后,可以在从 Python 或 C++ 运行的 TorchScript 代码中调用这些运算符和类,作为序列化 TorchScript 模型的一部分。 [使用自定义 C++ 运算符扩展 TorchScript](https://pytorch.org/tutorials/advanced/torch_script_custom_ops.html) 教程逐步介绍了 TorchScript 与 OpenCV 的接口。除了使用自定义运算符包装函数调用之外,C++ 类和结构可以通过类似 pybind11 的接口绑定到 TorchScript 中,该接口在[使用自定义 C++ 类扩展 TorchScript](https://pytorch.org/tutorials/advanced/torch_script_custom_classes.html) 教程中进行了解释。 - - -## C++ 中的 Tensor 和 Autograd [¶](#tensor-and-autograd-in-c "此标题的永久链接") - - - PyTorch Python API 中的大多数tensor和 autograd 操作也可以在 C++ API 中使用。这些包括: - - - -* `torch::Tensor` 方法,例如 `add` /`reshape` /`clone` 。有关可用方法的完整列表,请参阅: -* C++ tensor索引 API,其外观和行为与 Python API 相同。有关其用法的详细信息,请参阅: -* tensor autograd API 和 `torch::autograd` 包对于用 C++ 构建动态神经网络至关重要前端。更多详情请参见: - - -## 用 C++ 创作模型 [¶](#authoring-models-in-c "此标题的永久链接") - - - “在 TorchScript 中创作,在 C++ 中推断”工作流程要求在 TorchScript 中完成模型创作。但是,可能存在必须在 C++ 中创作模型的情况(例如,在不需要 Python 组件的工作流程中)。为了服务此类用例,我们提供了纯粹用 C++ 编写和训练神经网络模型的完整功能,并使用熟悉的组件,例如`torch::nn`/`torch::nn::function`/`torch::optim` 与 Python API 非常相似。 - - - -* 有关 PyTorch C++ 模型创作和训练 API 的概述,请参阅: -* 有关如何使用 API 的详细教程,请参阅: -* `torch::nn` /`torch::nn::function` /`torch::optim` 等组件的文档可以在以下位置找到: - - -## C++ 的打包 [¶](#packaging-for-c "此标题的永久链接") - - - 有关如何安装和链接 libtorch(包含上述所有 C++ API 的库)的指南,请参阅:。请注意,在 Linux 上提供了两种类型的 libtorch 二进制文件:一种使用 GCC pre-cxx11 ABI 编译,另一种使用 GCC cxx11 ABI 编译,您应该根据系统使用的 GCC ABI 进行选择。 \ No newline at end of file diff --git a/docs/2.0/docs/cpu.md b/docs/2.0/docs/cpu.md deleted file mode 100755 index ff94fbcc3..000000000 --- a/docs/2.0/docs/cpu.md +++ /dev/null @@ -1,28 +0,0 @@ -# torch.cpu [¶](#module-torch.cpu "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 该包实现了“torch.cuda”中的抽象,以方便编写与设备无关的代码。 - - -| | | -| --- | --- | -| [`current_stream`](generated/torch.cpu.current_stream.html#torch.cpu.current_stream "torch.cpu.current_stream") |返回给定设备当前选择的 [`Stream`](generated/torch.cpu.Stream.html#torch.cpu.Stream "torch.cpu.Stream")。 | -| [`is_available`](generated/torch.cpu.is_available.html#torch.cpu.is_available "torch.cpu.is_available") |返回一个布尔值,指示 CPU 当前是否可用。 | -| [`synchronize`](generated/torch.cpu.synchronize.html#torch.cpu.synchronize "torch.cpu.synchronize") |等待 CPU 设备上所有流中的所有内核完成。 | -| [`stream`](generated/torch.cpu.stream.html#torch.cpu.stream "torch.cpu.stream") |围绕选择给定流的上下文管理器 StreamContext 的包装。 | -| [`device_count`](generated/torch.cpu.device_count.html#torch.cpu.device_count "torch.cpu.device_count") |返回 CPU 设备(不是核心)的数量。 | -| [`StreamContext`](generated/torch.cpu.StreamContext.html#torch.cpu.StreamContext "torch.cpu.StreamContext") |选择给定流的上下文管理器。 | - - -## 流和事件 [¶](#streams-and-events "此标题的永久链接") - - -| | | -| --- | --- | -| [`Stream`](generated/torch.cpu.Stream.html#torch.cpu.Stream "torch.cpu.Stream") | 注意: | diff --git a/docs/2.0/docs/cuda.md b/docs/2.0/docs/cuda.md deleted file mode 100644 index 0f19c132a..000000000 --- a/docs/2.0/docs/cuda.md +++ /dev/null @@ -1,134 +0,0 @@ -# torch.cuda - -> 译者:[sci-m-wang](https://github.com/sci-m-wang) -> -> 项目地址: -> -> 原始地址: - -> *斜体表示译者添加的解释或想法。* - -这个包添加了对 CUDA tensor类型的支持,这些类型实现了与 CPU tensor相同的功能,但它们利用 GPU 进行计算。 - -初始化比较简单,可以随时导入,可以使用 [torch.cuda.is_available()](https://pytorch.org/docs/stable/generated/torch.cuda.is_available.html#torch.cuda.is_available) 来确定系统是否支持 CUDA。 - -[CUDA semantics](https://pytorch.org/docs/stable/notes/cuda.html#cuda-semantics) 提供了有关使用 CUDA 的更多详细信息。 - -|类或方法|功能描述| -| ---- | ---- | -| StreamContext | 上下文管理器,用于选择给定的数据流。| -| can_device_access_peer | 检查两个设备之间是否可以进行对等访问。 | -| current_blas_handle | 返回指向当前 cuBLAS 句柄的 cublasHandle_t 指针。*cuBLAS是CUDA基本线性代数子程序库,句柄(handle)可以把数据、函数等连接在一起* | -| current_device | 返回当前选择设备的索引,*即GPU号* | -| current_stream | 对于指定设备,返回当前选择的[数据流](https://pytorch.org/docs/stable/generated/torch.cuda.Stream.html#torch.cuda.Stream)| -|default_stream|返回指定设备上的默认[数据流](https://pytorch.org/docs/stable/generated/torch.cuda.Stream.html#torch.cuda.Stream)| -|device|可更改设备的上下文管理器| -|device_count|计算可用的GPU数| -|device_of|将当前设备更改为指定对象所在的设备| -|get_arch_list|返回这个包使用的CUDA架构列表| -|get_device_capability|获取设备的cuda功能| -|get_device_name|获取设备名称| -|get_device_properties|获取设备的属性:*设备标识、设备状态、设备位置、设备类型、设备连接方式等属性*| -|get_gencode_flags|返回编译这个库的时候使用的NVCC `gencode`,*gencode包含arch和code两部分,分别表示虚拟架构和生成代码*| -|get_sync_debug_mode|返回当前 cuda 同步操作调试模式的值| -|init|初始化 Pytorch 的 CUDA 状态| -|ipc_collect|在 CUDA IPC 释放显存后,强制回收显存| -|is_available|返回一个 bool 值,表示 CUDA 当前是否可用| -|is_initialized|返回 bool 值,表示 PyTorch 的 CUDA 状态是否已被初始化| -|memory_usage| 返回一个百分比,指的是采样周期内读写全局内存时间的占比| -|set_device|指定设备| -|set_stream|是一个设置指定数据流的API| -|set_sync_debug_mode|设置 cuda 同步操作的调试模式| -|stream|上下文管理器 StreamContext 的封装,用于选择指定的数据流| -|synchronize|等待 CUDA 设备上所有数据流中的所有 GPU 核处理完成| -|utilization|根据 nvidia-smi 提供的信息,返回在过去的采样周期内,一个或多个内核在 GPU 上执行的时间百分比| -|temperature|返回 GPU 传感器的平均温度,单位为摄氏度| -|power_draw|返回 GPU 传感器的平均耗电量,单位为 mW(毫瓦)| -|clock_rate|根据 nvidia-smi 提供的数据,以 Hz (赫兹)为单位返回过去采样周期内 GPU 的时钟速度| -|OutOfMemoryError|抛出 CUDA 显存不足异常| - - -### Random Number Generator *随机数生成器* -|类或方法|功能描述| -| ---- | ---- | -|get_rng_state|以 ByteTensor 的形式返回指定 GPU 的随机数生成器状态| -|get_rng_state_all|返回包含所有设备随机数状态的 ByteTensor 列表| -|set_rng_state|设置指定 GPU 的随机数生成器状态| -|set_rng_state_all|设置所有设备的随机数生成器状态| -|manual_seed|为当前 GPU 设置用于生成随机数的种子| -|manual_seed_all|设置用于在所有 GPU 上生成随机数的种子| -|seed|将生成随机数的种子设置为当前 GPU 的随机数| -|seed_all|在所有 GPU 上将生成随机数的种子设置为随机数| -|initial_seed|返回当前 GPU 的随机种子| - - -### Communication collectives *通信集合* -|类或方法|功能描述| -| ---- |----| -|comm.broadcast|将一个tensor向指定设备广播| -|comm.broadcast_coalesced|将一个tensor序列(tensors)向指定设备广播| -|comm.reduce_add|对来自多个 GPU 的tensor求和| -|comm.scatter|将tensor组播到多个 GPU 上| -|comm.gather|聚集来自多个GPU设备上的tensor| - - -### Streams and events *数据流和事件* -|类或方法|功能描述| -|-|-| -|Stream|CUDA 数据流封装器| -|ExternalStream|外部 CUDA 数据流的封装器| -|Event|CUDA 事件封装器| - - -### Graphs (beta) *图* -|类或方法|功能描述| -|-|-| -|is_current_stream_capturing|返回 bool 值,表示当前 CUDA 流上是否处在图捕获状态。*这个函数可以用于控制流的捕获行为,例如在需要保存渲染结果或进行离线处理时启动捕获,而在不需要保存结果时停止捕获,以避免不必要的资源消耗*| -|graph_pool_handle|返回代表图形内存池 id 的不透明token,*利用该句柄提供了对图形资源池的操作和管理功能。使用它可以创建、销毁和管理图形资源池,以及在池中进行资源的分配和回收。这个句柄可以用于在GPU上执行图形任务,例如渲染、计算等*| -|CUDAGraph|CUDA 图封装器| -|graph|用于将 CUDA 工作捕获到 [torch.cuda.CUDAGraph](https://pytorch.org/docs/stable/generated/torch.cuda.CUDAGraph.html#torch.cuda.CUDAGraph) 对象中的上下文管理器| -|make_graphed_callables|传入可调用的代码(函数或 [nn.Modules](https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module))并返回图版本。| - - -### Memory management *内存管理* -|类或方法|功能描述| -|-|-| -|empty_cache|释放缓存分配器当前控制的所有未占用的缓存内存,以便这些内存可用于其他 GPU 应用程序,并在 nvidia-smi 中可见| -|list_gpu_processes|返回指定设备的运行进程及其 GPU 内存使用情况,并以人类可读方式输出| -|mem_get_info|使用 cudaMemGetInfo 返回指定设备的全局可用 GPU 内存和总内存| -|memory_stats|统计指定设备上的 CUDA 内存分配器数据,并以字典形式返回。*PyTorch 中,内存分配器(Memory Allocator)是指用于管理和分配 GPU 内存的模块或组件。内存分配器负责在 GPU 上分配和释放内存*| -|memory_summary|统计指定设备上的 CUDA 内存分配器信息,并以可读形式打印输出| -|memory_snapshot|返回所有设备的 CUDA 内存分配器状态快照| -|memory_allocated|以字节为单位返回给定设备当前占用的 GPU 内存| -|max_memory_allocated|以字节为单位返回指定设备的tensor占用 GPU 内存的最大值| -|reset_max_memory_allocated|重置GPU的最大内存使用量。*并不会实际释放显存。这个方法可以与`torch.cuda.empty_cache()`函数一起使用,以确保在需要时手动释放显存*| -|memory_reserved|以字节为单位返回当前内存分配器给指定设备分配的 GPU 内存| -|max_memory_reserved|以字节为单位返回当前内存分配器给指定设备分配的最大 GPU 内存| -|set_per_process_memory_fraction|设置一个进程在GPU上使用的显存比例,*限制上限,浮点数表示*| -|memory_cached|停用; 参照 [memory_reserved()](https://pytorch.org/docs/stable/generated/torch.cuda.memory_reserved.html#torch.cuda.memory_reserved)| -|max_memory_cached|停用; 参照 [max_memory_reserved()](https://pytorch.org/docs/stable/generated/torch.cuda.max_memory_reserved.html#torch.cuda.max_memory_reserved)| -|reset_max_memory_cached|重置指定设备缓存分配器管理的 GPU 内存最大值的起点。*训练循环等需要多次迭代的过程中,可以使用reset_max_memory_cached函数来测量每次迭代的峰值缓存内存量。结合torch.cuda.max_memory_cached函数,可以计算出每次迭代使用的缓存内存量,从而了解模型训练的内存需求*| -|reset_peak_memory_stats|重置 CUDA 内存分配器跟踪的 "峰值"。| -|caching_allocator_alloc|使用 CUDA 内存分配器分配 GPU 内存,*申请显存*| -|caching_allocator_delete|使用 CUDA 内存分配器释放 GPU 内存| -|get_allocator_backend|返回一个由 `PYTORCH_CUDA_ALLOC_CONF` 定义的激活的 GPU 内存分配器后台数据| -|CUDAPluggableAllocator|从 so 文件加载 CUDA 内存分配器| -|change_current_allocator|将当前使用的内存分配器更改为指定的内存分配器。*Pytorch默认使用缓存分配器(Caching Allocator),该分配器通过缓存和重用内存模块来减少内存分配和释放的开销,某些情况下可能需要使用不同的内存分配器来优化内存使用或满足特定需求,在调试或提高性能时可用*| - -### NVIDIA Tools Extension (NVTX) *NVIDIA工具扩展* -|类或方法|功能描述| -|----|----| -|nvtx.mark|描述某个时刻发生的瞬时事件,*用于在CUDA应用程序中添加一个标记(mark)。标记是一个命名的位置,表示在CUDA应用程序执行过程中的一个特定点。通过使用`nvtx.mark`函数添加标记,可以在CUDA应用程序中创建自定义的性能分析点,以便在分析和调试过程中更容易地识别和理解应用程序的不同阶段和执行路径*| -|nvtx.range_push|创建一个新的性能分析范围并入栈| -|nvtx.range_pop|从性能分析范围堆栈中弹出一个范围| - -### Jiterator (beta) -*Jiterator是torch.utils.jit模块中的一个类,名为_JITIterator,它是PyTorch中的一个迭代器类,用于在JIT(Just-In-Time)编译模式下迭代数据。* -|类或方法|功能描述| -|----|----| -|jiterator._create_jit_fn|为元素操作创建一个由 jiterator 生成的 cuda 内核| -|jiterator._create_multi_output_jit_fn|为支持返回一个或多个输出的元素操作创建由 jiterator 生成的 cuda 内核,*作用是根据给定的输入参数和多个输出参数创建一个JIT编译函数*| - -### Stream Sanitizer (prototype) - -CUDA Sanitizer 是一个原型工具,用于检测 PyTorch 中流之间的同步错误。有关如何使用它的信息,请参阅[文档](https://pytorch.org/docs/stable/cuda._sanitizer.html)。 \ No newline at end of file diff --git a/docs/2.0/docs/data.md b/docs/2.0/docs/data.md deleted file mode 100755 index 169592213..000000000 --- a/docs/2.0/docs/data.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/ddp_comm_hooks.md b/docs/2.0/docs/ddp_comm_hooks.md deleted file mode 100755 index a379be03d..000000000 --- a/docs/2.0/docs/ddp_comm_hooks.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/deploy.md b/docs/2.0/docs/deploy.md deleted file mode 100755 index f6c4df85c..000000000 --- a/docs/2.0/docs/deploy.md +++ /dev/null @@ -1,10 +0,0 @@ -# torch::deploy 已移至 pytorch/multipy [¶](#torch-deploy-has-been-moved-to-pytorch-multipy "永久链接到此标题") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -`torch::deploy` 已移至新家 。 \ No newline at end of file diff --git a/docs/2.0/docs/distributed.algorithms.join.md b/docs/2.0/docs/distributed.algorithms.join.md deleted file mode 100755 index 535bd32d2..000000000 --- a/docs/2.0/docs/distributed.algorithms.join.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/distributed.checkpoint.md b/docs/2.0/docs/distributed.checkpoint.md deleted file mode 100755 index 4c360786f..000000000 --- a/docs/2.0/docs/distributed.checkpoint.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/distributed.elastic.md b/docs/2.0/docs/distributed.elastic.md deleted file mode 100755 index f3c4d5aac..000000000 --- a/docs/2.0/docs/distributed.elastic.md +++ /dev/null @@ -1,45 +0,0 @@ -# Torch 分布式弹性 [¶](#torch-distributed-elastic "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 使分布式 PyTorch 具有容错性和弹性。 - - -## 开始使用 [¶](#get-started "此标题的永久链接") - - - Usage - -* [快速入门](elastic/quickstart.html) -* [训练脚本](elastic/train_script.html) -* [示例](elastic/examples.html) - - -## 文档 [¶](#documentation "此标题的永久链接") - - - API - -* [torchrun(弹性启动)](elastic/run.html) -* [弹性代理](elastic/agent.html) -* [多重处理](elastic/multiprocessing.html) -* [错误传播](elastic/errors.html) -* [Rendezvous](elastic/rendezvous.html) -* [过期计时器](elastic/timer.html) -* [指标](elastic/metrics.html) -* [事件](elastic/events.html) - - - Advanced - -* [定制](elastic/customization.html) - - - Plugins - -* [TorchElastic Kubernetes](elastic/kubernetes.html) \ No newline at end of file diff --git a/docs/2.0/docs/distributed.md b/docs/2.0/docs/distributed.md deleted file mode 100755 index 609501c5c..000000000 --- a/docs/2.0/docs/distributed.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/distributed.optim.md b/docs/2.0/docs/distributed.optim.md deleted file mode 100755 index 26973e0a8..000000000 --- a/docs/2.0/docs/distributed.optim.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/distributed.tensor.parallel.md b/docs/2.0/docs/distributed.tensor.parallel.md deleted file mode 100755 index 1c8443581..000000000 --- a/docs/2.0/docs/distributed.tensor.parallel.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/distributions.md b/docs/2.0/docs/distributions.md deleted file mode 100755 index 21a56ec27..000000000 --- a/docs/2.0/docs/distributions.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/dlpack.md b/docs/2.0/docs/dlpack.md deleted file mode 100755 index c8fc2b443..000000000 --- a/docs/2.0/docs/dlpack.md +++ /dev/null @@ -1,93 +0,0 @@ -# torch.utils.dlpack [¶](#torch-utils-dlpack "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - ---- - -> `torch.utils.dlpack.from_dlpack(ext_tensor)` → [Tensor](tensors.html#torch.Tensor "torch.Tensor") [[source]](_modules/torch/utils/dlpack.html#from_dlpack)[¶](#torch.utils.dlpack.from_dlpack"此定义的永久链接") - - - 将外部库中的tensor转换为`torch.Tensor`。 - - - 返回的 PyTorch tensor将与输入tensor(可能来自另一个库)共享内存。请注意,就地操作也会影响输入tensor的数据。这可能会导致意外的问题(例如,其他库可能具有只读标志或不可变的数据结构),因此用户只有在确定这样做没问题时才应该这样做。 - - - Parameters - - -* **ext_tensor** (具有 `__dlpack__` 属性的对象,或 DLPack 胶囊) – 要转换的tensor或 DLPack 胶囊。 - - - 如果 `ext_tensor` 是一个tensor(或 ndarray)对象,它必须支持 `__dlpack__` 协议(即有一个 `ext_tensor.__dlpack__` 方法) 。否则,`ext_tensor`可能是一个 DLPack 胶囊,它是一个不透明的`PyCapsule`实例,通常由`to_dlpack`函数或方法生成。 - - - Return type - - -[*tensor*](tensors.html#torch.Tensor "torch.Tensor") - - - 例子: - - -``` ->>> import torch.utils.dlpack ->>> t = torch.arange(4) - -# Convert a tensor directly (supported in PyTorch >= 1.10) ->>> t2 = torch.from_dlpack(t) ->>> t2[:2] = -1 # show that memory is shared ->>> t2 -tensor([-1, -1, 2, 3]) ->>> t -tensor([-1, -1, 2, 3]) - -# The old-style DLPack usage, with an intermediate capsule object ->>> capsule = torch.utils.dlpack.to_dlpack(t) ->>> capsule - ->>> t3 = torch.from_dlpack(capsule) ->>> t3 -tensor([-1, -1, 2, 3]) ->>> t3[0] = -9 # now we're sharing memory between 3 tensors ->>> t3 -tensor([-9, -1, 2, 3]) ->>> t2 -tensor([-9, -1, 2, 3]) ->>> t -tensor([-9, -1, 2, 3]) - -``` - - -> `torch.utils.dlpack.to_dlpack(tensor) ` → PyCapsule [¶](#torch.utils.dlpack.to_dlpack"此定义的永久链接") - - - 返回表示tensor的不透明对象(`DLPack 胶囊`)。 - - - - -!!! note "笔记" - - `to_dlpack` 是一个传统的 DLPack 接口。 它返回的胶囊除了用作 `from_dlpack` 的输入之外不能用于 Python 中的任何其他用途。 DLPack 更惯用的用法是直接在张量对象上调用 `from_dlpack` - 当该对象具有 `__dlpack__` 方法时,这才起作用,PyTorch 和大多数其他库现在确实拥有该方法。 - - -!!! warning "警告" - - 每个使用`to_dlpack`生成的胶囊仅调用一次`from_dlpack`。多次消耗胶囊时的行为是未定义的。 - - - Parameters - - -* **tensor** – 要导出的tensor - - - DLPack 胶囊共享tensor的内存。 diff --git a/docs/2.0/docs/docs.zip b/docs/2.0/docs/docs.zip new file mode 100644 index 0000000000000000000000000000000000000000..4cac60e72d5addb67440a358acaaaf1f87b6ee10 GIT binary patch literal 662154 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

|280qpcjqEK2?zg6v% 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

NpdKsMD$n^*2-o}6N;c*uxt?IB-^iC_XzN;Z>I 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�Q$lr5);y3XUrB7a3k-!NunDK) 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∾HTwYcaus}P!j-gKF<$46EPoJQ zNl_i0sfrjkB2**C7l6B{8rnDXK?lZL$#0Kl!B^Z3F`xFbeF2XPk?z5bycRKfj8;ZD zER{qIkR~=dwO2^a>$d_B#&rBA0@QJwx;I$7m0e8mmiO0@t7Z?8FO*j6X0UKNX2b;GBMLb?HUd$p7`6UJ4M7goE)u=5#OHk9O|$0 z9lkBfwf*=!c>36;;;I?73ol0}ak}tl&lw;xl1>l5EPNJUaKEC40`8{9_D^tJcAbyf z+gr`?nmFPnaBBuJ1n7ef7e%^dpUwYBw0w`_alID$(_$7t)5@87{{do76(!Yy5jd(G zOrjb`_FYY78OvMvOn5LenAq!DHJqK+MEwES-K0jUl6E*&gRsxkFtBcZ`;8(~#-xva_DUy4uo!ZJL%BhOTwl}_bmE}Qa{8l|Da-&+M{@Y; zZVy%4`JKU%CEYnrE**uQ!HI9j?~gy*_O2s=IDB=BR*KFLc@#y2+h-#f&w>w6exZ+U zW6F=yW|!G^eQ6z=|D;1-YMElb0?nbWEbE4H#qQ|S&fEnkDY0@Ny~?AlxkfgVq8A*e zzBQOdm$h$IdS}M*#whg?ej3t*weN3@vR`mTYdpwG>`p~y>_PvqN00lZr#*dtE4DFYe&C(o*j((E=OPVLe##=jV`YZy&6>!L`eu=JxR842^H^$vqm-Y`{&R zc=&Az;1w_4V1J{wW)QD7IlG%Ps`4SjSv!U0hRDO0Oj41Sx@N#M5arAVd29`Db$8Sp z6iBwm?Z+NTn59!4yx{^8*=k|@lZ>>2*ho?_?zIG2QWF_VMN!hUOO##+sY=Jtge-qA zTCmH@2Iv~84N?hjbx!mh<_PjKNHS5c3LB1DsE;l)0Gc46-#;$Uqd(XRAS-(uZ1_ zbdj_Wfie_|2__!_{6ZEBzwsfv8Zv$DNdx1@#^N0t04tMlOpA}MjC<bsQgSS$|b(DAR3?kX|d2Mrx`sc0=EboH!+Wg_}Cx>_y}PeF%0=liXc z&<(^+4-1WDsTmr#JH71At4}5G!?yb?zoSer)lK*A_eVKC*bF1D(KAnnYY76j=_OR6 zkn57eO=zbROql!M|Ad4j9x_%T&;bDcGfMy8kiAFue<7h@I{*N*{|?!WjqUY}>}+iG z%cF`6*YDNd*T4`&0M|PKrn}WOc#Z9dPT54Okwo$72OUTvl-uReNAevrAlAj)a(|gBpZ$Sbi<_bkfj5(6x5pM>XG~c*T9$v@B zcA)t{M@ok6S*WdR2?DQ+{_sJ0M3P>1S%b?PCN9<~WNmMfeguALbJh20Qz2i{1X+LC z%AmN|B9pQ{ewusf3u#T=T|-{J>)iRc;DBr~%1cL~y_Q0*@E6IsX26j(d11@fDa3~r zljuAsmBwi<-?KTp#+uyzy{aF)=>q+x5J4KSbi|>*uYp@+oOHT-0Q*A;BmlVwQF_6x z9HQ~FtSHWTl2yqqx@)M6bn`Rh^$nwRumSfsKh~Cf8C#TGY4a6jw1Do-4!|2eK$$E< zp(;Ti{9F!JM$*S3YOgmb8t)R8%Iw<|`D}ru(#TUvuVcRqB@gZF@beQ9LFC0IkRO0y zPifg&%QnECS9OeuzmvDSvQO_QxY+bY`11>_3wte%i3QaR%~)D#_#$KKYB6m=0sFsN}d2z5bx<>NKWy{%#_a0dd5pV63x^! z(*dqPAk)D-qPI&rY?h&URgvZ%v82r7{BhSlOuo&at^?etizG z#X$zn7XQSzG?a2MyxDR_S;+MzgeE}zhqo6>YZN^zn1^8$8Td*FP4f2$_}2$F!K7Wx z**Pc;k3=Ydi-~!1*$E)1je8hb9zX>^Ac4p=8hE!~_}iA>*49f567V065jZS;`lheC z728s}>VV-xT4bw{0G8ao5)-xQ>*0SXBW%E9iDDj2OC0CbpySn#T=Q=^11oPY|Jzb? zfTkMhZ60inX7bPq@}i0ilWPrGMgt@H%zp;d-bd_dMaV?j>)EE0)YaWsI1<9-)A^Df z<~#d`ae)|8!@* zW2soB*SjY{d%Zb|LiBVHDjjEult!=7Pe}#ePuJ~<1TljLrBjBnJGupIlQx63SC>FH z!cx46A{^!VJpCA%55WPu1*=DI*2-;T9+nq2#zYy#at6#kmcGcnjZw{cMH^d?c)*h6 zXgsW8T31yq^hv-^1GeWSe&bj9u}N%9gRw`AR+L9dW{3J*=098G?5o?DaNv4F)Cu^LRXr&Gqfzo+LC+Z%|)p)=bsrWe)-73D%WQpIlBCEhv5O+F3Ek^b`8_07FII zU!)3GR0{eHM`6!`qE2OO>Y!UW5lsTN`4%P{-K-rPNPv9yITyInKLQ;TR= z#T>k4S<&QlAFP$na>j8p^RHrzCJ89geVgDGQ)ynvWn}?7XR+|Q-|o6yvH@= zwKOp>85kl29*7+!P0@DN6E?`WB3OmE&)J)u?^qZ z4f9*LQfp~$R?gvai!BKDcTc55P7FR%8jap zyB{!Uj}c=YrQg>BH++z2!Mg4Xlde8RwdTY4L6(1t&HZ?Fkd^~^{Z^v<6p-FkKY$P9 zZj>jjlmmy8D_^!%5r91vq?{SEHSdZmCzLFiggPPkO)kXZ_0;)vg*UCFTh#oG4Bes(C?<3F(mw!I-%X^DRN@>5=0jcpUrfj4{@z3@ahPPm}748dnRtLC%(00E|* zUpYKNWa*X61)9rO{a8Q6^ZTM$3QfA0UOG&o7$?^VdIi4y6g72cw4BqlCcvpGeyVHb_1*uXH4c`;3GQdT@{8WlfvUJF_i?|dQ^h@7=UA^np z&L$ArbeN}C4pffX+MZ(;V^?}U42BVu6WDZ_OncPH% zS{}PUh9t3(Rn(1r^YTm%e}W%W`65rq(tZsNVuO6f0M8-)JJ4<3;YI)Eufw+F)phOJ za|ZK3=Y)gIZlda1Z!&|`>VVB`pO|6VIx<;q4?R>(?T7WPE~O#ZA?b*&kjuVoD{AzU zK8UHI^wx;w4rXuJMb(Fq~=|(PwY)HPh-j28_xG6W8?!n7&Yw8gOo`J z5Zd0*JL}UNgBG4F>O9&i?QW=+Qu91k?`JLXfL-p>HVXlTJP2C4_KDlza@pULr>DTUS!VB%kt~w-Be1{Gs(#fqQ|2O1 zI$)!3g+I0<=+_U>Lzc7eJ$x7{vc!W9cNx(UL!dpP#z!FM{;tZxLOJTi*%)@~%?ZtF zIT=*4wwqYj@ry}yqcZmC*TJ5&>5?>a5*vZ z;N=`i%^~Pu)dKB+b$>Vz*NT%Zh{l$PPrEp_C=Mi*xack_Slz(M9w=>x_>g62gzy{2>*-xOj_h?SOc^w8FI94f*xz(RDZmxstFImpw*XwxV!WHw5=5 zbr-lBIZT0^&Y-~~%%sFH<2z10EU za?iE(*iTGP04UJ)m3q4nnww*dCua30OkP++v&L)uDxn^Yt2zI43U7%oheDRo#ceka z9(xFzDW-z{_-XH@7esZw1I3*q@goN~sDhPWp_5tW#$66fqkDHpnu9`1WUK{ra%Gd~ zCR-%bESd`_7gn2Q$LFLk_X-C=AWesoom+zBu26BXl#=P=pM@~M?o0Z;fZI zdPUK#a8tTy;ZQKeRV2fcNK`Zz4eav5vuCosBYyu$I-Ez4lPQ-&hw4)D#0~Ewx*?4@ zzeiLLe^H5^3xYc+tcc!h8&4BOByq5{D=tdSRx?zO2(G%%-f;%tzpK0zuV{mlk;q#D z4ufXiU=1YuKn;tET5Aq)Da7Naib^3SYvqcG1YTpvB#FsbcydO&cE>k1RUK|gC(H~Y zj#x+^z8@VpMl%OV7dMV(dJ)Kysku9ZbQDY%Y*eVfJN52Skon0{>SM6zA!6k zVuZRTP9)qc`a#ir($V)|2eL3VV?Txm`w@LgFd$i{S@e74EuH6C3Z7)5W1gJM(2EKL z$0YfaooHVW-#cAk9>lJ6>-mEgIX@oE`dZHZ3=}Ty1`?&TS9uu)An>wCOy*$-YYkFm zgm3LlUKL}5@-Kv4)DxZ$ zIu~y;I6;}HU=h~*+R5#`OIs_wUomnWW&lZwfjq}>IE(v|i?{HLQlzSeFgqW_HUkY~ z&Xy#Xy;ZQ|a$=Qzqcy30s;RLrLT;Ll=K76}k9iW1P4v8&!D=Q2mhg&ZQZJ)y;Mx0& zssn?>G@Ax2RH#O(N29~I2_B>`HxVrfe4@CbA~+yHhME>I79-a}Sy>xs%9JOZg~(AC zxf3i&EE2Q~81_2xJZFnwbLm$g?X{x4U|zzuzE%i{KR&c_I4y3*t3)~1>_h67k>b7S zsyQ(^wCjfgHlV7p-+ZxG1||P{7e0}C=Ac) zmqMH)C{|Zpoq{`w(N%)*hSg`@?|af?p0_eI+HqtSyl)lH4bgL{dDZy^sI+?)fuKm8 zC;PJG+TQmL4`G38kb_sb>}}s@hiwOC^if9jK)B?5#Or%<1uQ#sznvzQy*DsoYXr^n zzI;VL_jJv6;*xa4FvDc@8I2N!k00<%aET_kWNh79IkdRsbU9lZZ9G&xN!rFa0KkLi zU3g;`w(`-2PVZxOZ4*bVhAQ}dp%tmhi)y9^j9|NjauRz zhWa?ex|#dx^N1d;I^-xi3{%HD!5s*~z9CCC)a!&s^nw`ayb4CZt-wPLstIl+PiEmu z7r9J2KrK8lVV;kI?XHG{lbUcfp{r$ND%NxDnszpeNQMvKsp!2SF)0j^i#G6qq z*5O3AdbcKwB=|bRLN!HI22WVAnaqStZwW|B(f%n9-X?;}4Cibot6>1BVU+y~ia4|)>mh^@ zNbE>E9jbj_m*?1-2luXT23IVl>#O0w3T;{rLcRqHDDd{Mtwc63CCGi7ldFqGkS6d2 z|5NXtH@yDb8w>>eoph3s(H9vZ*kmY?eI#bATn=bi5|x|UKaDOH|2g3pWg8;XE1tMj zNEPvZAB^H7l~-9Csm)8V`Qqh{yUBV-MXNKeRBiVsm(eHA`*r*d?$2@}b376`f#f(O zVoD&16avpcwo(<1ulVhK2|;v~o6<=M)916(yhghDp&jNHFdb>U-S0pnf+X!hNR+Wj z3Lc6?&N{hZWNM#H>N9bATY1v+*hOf0 z=55qw)Zz`-MtdLiGSQLWeep3WgIzj+K75}&TxfpE3@|Y*g*|B7d2=ZS-s#-OHHm|x zh$`ZmKAvUXeJPYzyQv>eVrIusrWW?F`}6FH5K|R05QyjH{oOa2zJJ97F}xrC0wM`v z9QYuAHGb3*w`2;B`(doe$Od@W2PpN#GG4|PFjb@w(F4k*y?v3o56JsQkDh0>VY1h< z9Xh?Gxa_JSe)a~%NsU+RdUnDF#~Woll9~RhYxBDdZ&o3>dUKvmQ(JU8_yoeFWk)eC z-u&$j^_bI(Dq~MO;{dY6W4<&l)v+DkBwz-4Dwhc&8CH=ns5JyarphfU?E%eHM}_9} z1%{scATp%q+MhW(O^bQvW1G5ch#X}!=aMW6MB}P#g%LpO%jD^(Yqbw!?1#GmNJcI!AF{RkBqPNI*R^jqWbH5F$P@ zoc}!Tiv)^Mj)g}&u9^aR*8?0GFpPMvL-$Ua_jw7b-GWRm8|0hgsIobR_=BD&wj1aL z%`cHdr$u@pgJn(Yz;=G9lY_W;cq&It2tq~jxauH>E!u-e1lPrR3KSxASHOfO(kBF-2iiAM0j+|_`8V}-a&W=t`l7*UMezV}z89gz zv8!U^1_Ia7+c)Q!);B}Kz$aopI^C*Y1}13i*N#We@e>c4+UXxYad1z+6 zIz(gA+sOow-k_RVW<0oqfIx%AE=qnqT zFKxQPY^7SVcfcBw~D7teZ}%c+1y{v2FeZ_uyc~J zs+5+)0G%A;F(skAMANo;xL?81CGTN7z3&&Tk*VD^ttSy}z|v`;dhG7s3niu7k@D(5 zK_GCQHQ{3!XJ;3pQPi@@BhWz&c$^c-S{tYtU7`2j@HHQ$rG-PE_A$U8Wtkmt8sAJW z6d~!KAr@O8irj#sdPzk`z4~x$KW8q8_|&_jCJZS^=--;t@A_am-X63lbu`ci&kNh# zDHaFX1p6#F7CQD$OufnYUBAG)nEjuA~e@f_mmfq|(8M6P;>l>B^j=T4>S91YTK-e}$lGsylx81MIODz1Jt!JfGQ z@9-RmM~4)RmYu0Q8cCnuoI`-1K5{Lt-jB$dpTseKU0@?X9X!g9zcX(mLpvYA9|k?P z-R$a9WRan{dqrb=VnWsk`654g*#te`!K6 z^}&$SIx(aLWL`#M-To!SkdNENML(%zxpHJjvVIi-_G2PPi1kdFFX1P~w&eZZ5Yy9n z+ezz> zA<*ku#Bn|F^TsJ)BtE~n7xnr|6QWJp9#ww~;9LA--hTyNH(UzEP3-9Rwb%Fg=9l^NHgSsXj~GgE7nn9UcMXVO_#&mMV>L3c zo0|@^DtrvzbR~KCGCF8TfuzPH;BSDMyhh?%7x1kO)lAXL@73J!2T(g10+Xk*xG1JH zlJmOLsa&CmVGLKbdVpJ`mgEX$o)pMw#EfoNqO}qG(x;8q4HjAy^RnB;<(Wi_<};BT z+>~WjW?}@k_}8}ai`k>p)&8rDubD=l$92Q_w7CNt#+6#$7RJC3j{^5A$R5%eg2XT; zrh2v!+t{G!M=DYwxv_YRo~K;6=0}{^|0QmCc<)Ha$e%EBi)&|f>*n_^=Vj>%2VnL} z&tb+dTq3o*Kt0kW$iS~_O0#|xuzlf2WfHR7Afjstj{qb8kl!& zKFCmdaFo|Ml59URfkb+gGHi#nGXxM!$wjHa;@eN|fgarGoj`hGe|kU$jtt&TWBws@ z^uHHMw}otaW@GtF>%X`eZ)$R-fQyeer zxwe}S)ARWPG&pB?@$Rs9JfXc|Co-b`COZGP6>w7$QjAkvYDDF!JomA&WUOo+vDl^u z-%3nf6qD$A^d8c{qT|(Y#f#KHswzrU$qYSY-$R&xt+-`LW%yh=L?)44fj&tf<9 zdc3+J{kpWhXuA$}=_o3aYx+#$xvoUKebZEW>ec!V-9-=D%e<`h4?g@T=xUr|^tw`j zI{q5bOT}o0Rl2rQLyFv#Q|Z~E|Ky}?c5@YmUAfpdLR4lWT<#eRY3NXC<@JI`-#zJJuKPo_5e4f)uZu_TPFs|SR7$L*oIbyHRa#@*?QX9#v z5-P~5z53tw=oD^8vZf1Q1p+I_w_+rlo&$q?7#eWn4EK{dyweP9NT zN>L;Fu}CpUTgu9tMdfVNKpSE6fR$T6&W2dSZsjUu@%&j^B{PUgm7#x95QL8_N$u-1 zmWhHy7o*EXlLvz+t%@ex2@j?0D&ye6@HRt2#8H|-CCH@5*mq=`GCr?XNU^;Bp2|Wy zmF~!GfiY863^!{ne;qB(Wpq!)D*gJ^_9wTd@rp4D(2Wb@5TfQd2@||xHx6}#@wd+dS{Y=5ou`wyg*mfidsr9?JG!KRY^Oe&g;bT zaC?Zq<|Y1@sY5MQ{^QqiIuh1sT>oxDk5?jFnmtXthgifriuT+!n{VeRK;T z{A!+2lPx%iF0sai0|*7S0%Ueu5;bO(U&izm4Qm20oR4|XEGAVx;H`RM{exXKTST&s zL{?pr(*k+BQknLNJ2m-*g2jaZ;*=-nxk2+vuEVb77TVapHlZUeRzEW8>fo)*593%r zcwY(fyw=eMFV$UPaC*ji1IIXay0L51z)}w;X?K6#n6&vKDjV$evy8fMINzg=Gl=Y) zd&jeoJOA04waZ0!VW>0Ih=!J>|eicjX($H+b}%E z=?fzYSbTKq-ChXL`Z@Lt;xtH}(`AHP>$oazQR{}svdv2_*Z1_sw?d-66$X(7U5s_Q zc+&*>ynY17zwdU~TmEz7=CPcoR6~g)K-$HmloBp*mrZ1-!hsYYk8mG6vp1?*BnT1T zXwL~7iZWJ)A1~}az>GqxIka8vcGuYc)<0!xz-4Bcw37?OG=Z+?Ejvhi2%kMoxlYl7 z4x5V)NY?v!0nXY=q3Le1H44A`Luz-dx-p3vI({WZE+-$h;{{&~Cf20h;32LO95}ZC zaayj&JU1eEEfHTZR4^m7&ZUK>3NS5)OvPC9k5*OI>~V#4-M2+bK?D;z<9r?=QNPMwslGw~q0<#VsNn8%md3`Y zul=*q;7M4|a`-f{FV$ixaWiYui(=Bn1>PIR2^^10SY8B}>^}J%E#d+6&k;2a;?F=p zDO$B!_g2l&oL|jRMQcLLHHw%k=B1`MmBqkAZdT|`;S0*Z%jS{8-zQd2~yJ9}Q zcKiFo66hTCJ+I##H(DLf*Y8;=!`?QpN!H01r_@#bf1Teh8uJa6%~*%@w!%palnK}T zO>4eIi2JCHP7lraK-MH)co^W(zBD> z9%iD!f8W9W+GpBqqksJSi{t@klXO+|_6Sq|>MUyJCj9i& zIu=~C6a`gXjhEIMnmvMP?|U;w(Y!Gv4JniGbt7a~*4_-+27OE*1p2!i{<_b42Yew) z(5J&bf#L`+U?sqt%+Z3$?0j6*woAEGW#3Mj@-f$y)44L>xTT$SWkA4pdVR7!D#V&< z6jvsq1rOoA;j_(a4D^(3>nn8@d7{tCCqcwaL>6)sHoHl{Tog#79`mTBYbnaSsYoHd zJ>P&7evpb*;3@@eK}eHl!OD_?!FxMsM>wmcd9TG&SM^*nC-3lHcC(+*zJ8E#P`0cy zjpUB7hY9rF$WqNd93)83He@0spHK4Tj2j!END%ngv*&+AIS)WZb=%Q~k8O;g@_>gO z`KmM@R18DNv{R}so{I%!0f zS0gNLr~zEisG^P9Kna7G5Mu{0)xn}7Z(^^$$ycqdfF(Gu-eaI5R?j;?^wQ=J@-RZE z$H8uDPZAiz0A@CteQw5x_mz!#sFwX>@je^P1SMgB7z;h?x#{7JkWQXvP#u}DsTvYV z##U1$vUHuQ*cP}W&?TSj293^Ts2Nw09)!~)fir6rY8w#ao&mk_(rC0*=)>g)%g`A+`!Svv@;?oDUO#5tto?lmSL&yXH zCFrN=I)sh=`_+h_>wd}QejEghg_1N)Y;0$qyIs^Zd!(?SCsd2tdeoAEsYD&+eU9E^ z6$FX-t*&%^GUWo&OTCE>ZcpQw;SKgJzLs|A#D*8W2q;s6=*wn40r|DX;{CvOH=*z5 zmeUuauF)VA#Ak>&0%J=kV@W2HBPvm6F&u%!+gW*6q(j@YDi=|*Q#gDULW0Hut{;I? zpfNmpV2mwhpir;i)e@s(ol*4Vx>PIy-Nq`tm<7T^o5OFw)5BQx#9jgd1-avrKHjb zw&O%)9*NIvJD{vLvZNm_iJHoO5Fz4B<^f8i)6bT{Ie|r?Df2NCmCwY+LWxMX=hB2@ zI)tjEU|=-Inz+hat~*EIgZl+0hyaS%SyV1IRVOe#O1!%>MQ30HW|ArSHeH#uYTrS+ zORG#Ji(J^S5>-SY1eLd4p!$F%roRkI6*;%jqpHP}WKb7FK^b#5EGh2sOS}W{>2VkbanXXdm>Q^IAC-{Km$tM^VILaeUeVa zFe|aFEW1P6W8TENAR=0q-uxDKvSRxYI|V=rs+*Y@JbFqia>9b_1^w<6LI)*%+@k$s zq0_d8?ZeHS16aAy_8lim+4ugH)hos2^(K(2#(h#D>h& z!Z+hH9Tn;Y>%as&fl>+}Qf#)WBxLK+c1y$7xI_TzB9I538iL4tc~DJ0BJ?);(aHKs z)mR6Z;l_VWh>TTGP4ZI(yo)g9$@8b*&#_h(`yIG>Qm6=zno9}Gxgdmfcm>oM^6rw~ zJXQ2DX$c^Q8k=#+Rr>LALFGjm5&7+w8AU$S)N!0i@)3qR0$K2tDQRwa3M%Sn=?~47 z#q%5$U$UM^`$y_L&)Fzt^7A$UQN^=j_U|=SpTm%wbE9AR8G|$zn9P;_peewD;fGci zS1Rh^@HJvqRUP$_i@{0hf1$FV00MX>WnWeT0*oL~0Bi+=&4_D4v^fT;*1^Lbu(y4B zP@+=A%H6_M2J5BHXM(V5-9dUlq_0S3s7UU-hYG&Lj|2Mw3xS8sUE_C>lfacsfdyNs z6Am0oH(5_>lFDF^mX_oDf47Ykr%QT#cHgG??GA7mrSd%as{4IM1oS1*aCt`un@=uES)p+mn%HPcwOlFf@=! zqux5+*9ipw{YouQ_dLsqNxHa=zSl8-gO@t?()^8+7>2g+Z79Ka%O~BJv5|t*^mqaR z`mQW0GZAZ$NFkF`2PK=+bGgz^cWHa=t|4G;7>s@Rq6--PD?^CK=>{l2GjVwJ#rGcp z{0QsqnF$8~@E@7`KLMQo{}aG75&!_`{}sT7CbmZAHU^GXdM?fu*8iVZKKq~S&H1ZaIG#h8(~Q877NY?@fJ>DYlnfH^NJp1dr1 zxa=Db7|`!u?}0@RPgJBYHOLA`K%l_lC%M?x^-S?Qm^*f@D#d-o9tVFZX&q|^eW6z)Z9~JzMx(|_x}KVK!d-R&_dz3uS<;t`}za1&y`#M z+`sL4vp?FM2&-?O-sBATvMW}TFwXmSw}Csnpuj*N*rx^~zG$qs9C zp>PE19oGU~VYPJ-U!T?=zS-8+)^29(@T*5@k8Azf zjo%Ff;_=_LwJYBz@4_QhOANF;>kUV{0%5;=>}GTS_>I3tBdYx@9OzQR^hAM2S772qm%s6lpLMJ8U@SDCg`yGHQ#JC1>sKVv z@7MZbYM?uQqmv(nfoF+8uX^Jn`Nj9~e}D2HfBP%E^(wb+#iNN>P`!QI<7YXFcM!=s zh-3{C%ipw1BJ`U?JTHsjsZ{n+3z9%lc&Hzaog#s43W&L0o-)3@S0BwNAK&=|M*^|T zi%ixS+qO0)jD`LB!XES$rGgm$hIPVxUSTFG#>$vTy%bLd_3E5nJ%-_6K6s5C3KPcM zo-wxseSSEau!;vFGgx0toh4gZ0=|cUHytrG7#dI;e>e7I%UENng$-DtSjvIo!bTLN zP)L(|_kbSPmr{CZT&(0kH0nb+USm@;FDy>4j^Iv4*Y(m4?593k5EEsQehO=a**bmJ z@if!I7+y2ivi#UJ`R)i)tG+pG4&^VBn zS00<|xOj8y5U7BQ+?q622a&5IDPz6VVdOT%qkAwBE|rL*AKsIKl39dpKp(x71adMV zaN7q5Fa(eTwhc=FQX&1ul0bN#wLVl8L+g0dcrqxCzeUNI zPQ#c@0^y6P18P81#Dj_E=K+*ZP-9gwRd8T%g_)l> z=dwtHPum?);7!k)~^ zjPYni6c4TE8?X;+BWG@vfdVYC=Irwiqx}Pcn5qD0pcOZl0-hc*E5p#rSgb)OmUNi* z`VU7_uwcEih4M4Ei~FlDZ2>ini9xZs#1>0z&BGkLVe5F2cgvEhd>9Cadt;$Uw*nN! zRgt~JnZ~o?{y54cX)_X@CX&X^T;2o22`kl)j!qaG2FdZY3d9^xi0w=@7MX1>-mry~bVPmN5* zI^J!11R~M&+vN#QTPv>uy=^-={`Pi&0Jq?4ti1t!5N!CsLjd9-2XU<<9O{Y%Vs`+6 zbZd9OGq5X!UdkJuPy{G|ZIv&s`8uz9-|&Ki{VqA9ph6Mfff8)k0BoU*)^^OPA{rDT z81k5wgUI4%Tn{TKbDft1GqW3(T1p~A{Coz9=(#PFHI{S zzV(*Zn8n4CJp*mnuW#&&=YtM4(M{0ul{Z6?U^vmON&sQz$G}^N!l6xCf-jP^sDlV2 zFST@7cPP@!3zy&R{;&yHSko?$P(beXTR16w+{TY9@NuiXCmaoEmzh-Q=t)F^X!9h+ zs3%OB zib@%uq~{?@kj?)5@u!N&FG4>wq3NZ1Wzi~ZA;OT>s9Ws`B*L1Xh^_o^v@E8dKs!+w zLdOBqk+0Krk8~Keu_$)>#Hmh#6|1lK26l+eK2K!zh z3#2OW_p2&PE8|(9K8W0T)ip!cQw;^nYeTLWNP%Y+sSS!Y_k=h3_ zFp?F37XTBO7>EpO_dp|&qO6xp%f;e%$rTPuA`zc$1OOC<6CN2u8^+xt23Wf4GQ^+xZIJ#Z?txKD-`6Y80M6G}H_Ob5asnTM*(Ub5xD1DFSXg(4dB z4^?LU0HQZ=TE^lG#egG#m0Fnhp5mbakc+sxldoY!d})l$h{;{v07fP0c^M-UmSvc0 zJRb$gbO8`XS3imK$|uk<}7%j|~;D(6lW;Jsd0t(<&E4RTk+1d+qVUi$Y zOBJ+Wv$=Y57QJWYz8EcoK#9x&N)wTl10RuIXp#|9OJn^IURkvnk;-yJ&H4$>5tTN* z3=S7#?9x3^-4sU|j#!NKBgV_0efC+Ka>k$kRU$V!>GL{#`h31KTfXi7LoKE7G>I0E z32)t>EiF;X?Acpe(qe)5Zh=Eex+D^0PCs1Jj~>cstuSPZAfWkQ!ScK|pzZPjoPR|_ zOpzyJAw;YsfrMczVtj+6Z+?P7!R8P}=@>O|3J1o427qXdxip$Ck}FKO6c0HgVnA#- zd&nxSe9-X+1!!y)=UA^f$-q&&lS;yj1hEC3#rQaDhFk?L!P*|SCWaiHu(n6Qk2uS; zdF6_Ib8NvCkblXLQUavO|pef5zjm0D6_AaBOP zCTcMy+;E>$IdghM9Ax$CinX_9RjZ`AX>0?5#7d46E5HJCY7}*ItSGWo2+@JX4x1Pd zJAPN`WGJMUro`?la73iPL51MF(|So9BZaxs$vyFgz!(_mX<#+*OQr&>&8PLnijm*+ zJ4qp#$3_iXeq^j>DaU<-^V`P4I;VsCLlJ*05g~N$Zt#xp>TAge`?|u>;OA<0V_6sH zh)?#pC~GV|+SWtk*@m4##DpZ~9d<_=Y0;x(eKx5duNo6~(Mhi)_39J^m7@Gak`bPQ z0ssaw%iALT6dX7VbaFW?du*BYqa8c$v~BWd6d{AT)1n&0%SaRDhVo9^mwh1!5M2-7 zSDNULmNTveVj8q2LVCRPtS1^%{0e9S&F-P~_~W6kRquO_RsReXf!%>?g12rc9yyZo zHjnLfOtJAYXAEaJ56#I3Ffxr;zA+7AQ?a_h!iUmHNji`}Csl9l<&XjHH1i=~+*xs) zs&7=p;Y({{Lob2J+5tnSmmioZCb%cuKmRQ{EKVa;WPzK_0y_g)voi5))#zg1P-b zq<29!kz}riUXp6`7(fzmq%t{P-Zp2~cu~AvS7M8q*pOV#HnYv=!vSMu4UB`t9X5q< zqRmHQeBJ%T1cIe^TeJ!J15%Kz=+zm{egjFse02T`rjdsCF&_&mSj+<6WZ(suN$M-f zoYcH}GHLB?lMa&icW{^EpD>B~V1l{N{B?-W`CNuoJc(RNvm|(&eEj#xyOg~`+JX}$ zBl34p+E_$Ee-1xywe!&JXWFX&R0HuuOzl_EPo3U`e+Q%e{ow3e?WNV4-LEf?_=9%# z*EZO|?)(B7hUocm~i1u!~iEVpc{ta6+i` zXc{rr^oTL^l7S$G@etNh#uh_Rh_&uLBhS4I3v&Wj3e`Bxrq_;@|B}>IBpQ311c%ET zp#!Mr2o)+jyhld@W3u}DYJxEbp>4~U#`p|$@K&snDqL~Vh? zvz81VXW4Arwt%>+JOYukm>+f+QiexPF$wPzCu3||7_%Oy6kAs4eA+Q%e(;o943ra3 zsT)rNkqAI^jc_$5q;Rv0IIU#L1G6ygyx5N;T#h)Xrh$)JxP?_aH0K&Q0e8wBBnLT0 zXiBeC80te`Og$4KA_5H4!8r&W<2v3Q3!N8}5*b3;?qTU14ijju+9ud_1P~6p7uqca zuK%E8dbL{?dr+0e>H^Dv0NA#BAGj^j3s_F^0HE!ZS;@nUjfbTtAi2mfSp3$!Q>&r; znX9J$5DRtp(pfzxbdhyb07U7LiY#-ZsDY)JbG<0$#RFMOLP3zySUtodEd6?I)%tcG z&k+Yg!Oz1gO5b3Pv$lM4fn1Precm{zAY3jUiB#4YL&_WZ$Do4x(YjTeu|Y0{^)1B{ zYzeUX;AjTeV}4VX$CVIhr6yr?KIN1N>WNXTJ%CMaJp}TxQDE(^fAbu4n8gJ#xK#Et zP_ z7&_mfKd&drz({sCb$*Jp6bpZ3X`S*kGCV7J5pufpjF zl-Bnz;rMtic6=x2z4>bdD3>gpl-U=_=}4l#3!EglOU!F4kg$=FX@dxv=PZreIBy3R+X;7@U_WV=0F zu*UWdp8EYUbs*;VdwGHF_0=UKkB3skR}isY)v0;yZ;&DWI%)5tX)enFZhaviD2L6! zosQU!jmd+?v9Z$vE$mdzn9qYUf{9v3cq?PZSW^1T(-ifiQ2dqa2(a(T*aZ=9yNhIJ8v&Lw=LGq(1^|)uZ4?)4Z&Q~x zfRj~h%G)_*_v&HN8>iuUJb$^QjKo8|kx)-47>Hm%(+iK|Z@7g7GgXM|c36a1W~}4; z`q2^cYc9?E(2p>o)zDq>{1HG*VI{BiN8)peUA?!B^_l zNtBX_vRK0;8xP`6N=Ych2LXUws}-?Zs}B({Pu7h26=?%#Ow?RJmtQMjGn7u>zg~aW z$uDy8Dhn`{)ui@i8q7{oDiQ4E;6xlmRv;op6wQXBCusxFP>Y57{XlS_GjA3w9w?Us z%DHj?k;C$yUM^$EK?V%fgF+47tZ{!4bTr{?;s`8daHk%rLipst+a)ZkfHA{5sAUxu_kf4AC|==I0% z^mj$Warst8_kJoti-*2Y{c!|ZEpOGYPI-&?;naTcLGRA))rc`5(0?Th-Wv3FvdWHOxMu9ju`h_W7tw9WS2menEbXm1LvHe6iR%av+Xu zi*yHK-J!45Zh(|_pjll3RrVX}qj=?KVxDF3mtkS+s?KHU`CTt^+HvM%W?7Ce5Ryt*+G>KB3l2TV`e0IeKnNjnF~1SsAy6ADU|~ogy3SpeSm? z&TuZlLQ79|*1ReNce4Hf?~4#)G5+EKJkD9MD9?f*A*yoH58!ZkKD5FsvdF<5!{OL; zgj8QBKyd0*U}Cf(eIdZZ#$^&J|Dj4cI+2Dg!x&Vg$%kp~vH9$dX##!+pW6kSP9>OJ z8ZE&o8j4T9N*l(OUX66CUbNz-qYJ9q64juwZ;N%ll4%k9+8m4U4!L#w-&z|sXTzc@> z*>q55v9#lk<^B{1$JJlVANlB#-T7|m)E*a^E-s>Oxr~9;a!&S^(@*uKNxU9JmkKCf zuxBhzx$m5{xF=t?8i|JDs>gdew_h1$UywKNR>NAriT?syA}0vGm>2(L@`N2JD4&|FOTks@f@tp$=d_I z*DKFt@KCK7t2MM{D>>;iA50ii55SXiPSD(dWsl41Qa8Co$_<&GO{1 z?ZK4JC$WUeFh}OCiE|=94WYux%X9V|H?W(+g-lj)1S`HsQy5E`LwPRd!3tpvbeEle zBm=Uez-cO$)H%;)_;TenJ@D{K7Pk5ToPp>D13b!3t+r?1WXK37v) z>3ylY@D$sg76>#S7=aC+~Azj(RqBGb~X3?13w2_j7HGjrX`E;=MBRFk$ zxiF`lUUw5!ET)as!KN#}AGRLh+hHFD%iIzTWOau7$^(7-6=MP=5eWsOU|~gimoIVA zKLU_7#%jP`Ie|=Lf>c37vbZjGWmzc4=V-TDgju2v+xBC9Gli6(d|=%iapmKBjFj2x zQf>vS`d8PT;IpMXo6qp|<5jD87Yp6D=6~xb!ptw%lVj47^@PIE*54EP#cYs|r~EMj z$~}~(6#B{hIi|OdSIxO4u{)wT`%>^<2H@ji&g+nfFj^qTtWXMLh|lhS(~PsK&%n0W zr(uDCUzBTFED(wJL}UFwhH*}(i+G1D;~h2l#kUUJT(hqeP$o+nXwGQ38hIMmm?#V4 zPLOd93T+UC!4zA7rM}C#5&D-R@aR)!+Ssh5clq)QkB$G51)bX&s~hHW!9$fUOPFVM zRZTEbz*N@wIwixB*0%>@6aWYS2mp6r zoL2w<00000001NJ0RRdBAOK`Ng@UT z1^^{8b5lhv+$2(@ENUgSZ?r5fie-tbSap9&g2wV`{=$8>bNY0nL4u1snHqaCHqm|h ztj~G&<)A8LbM4)+&VF_3|9f*fa*%$u!p{Sx`6s0ZBh^Q@%6Bf7mX?bvL)B~VN>`p9 zh&DByRF%c6mBFF^TEBCuJT~HvuDMH-?zN}zztfTKLZLT*{P5wfRH3`CE!LjxIsE%n zGSl_P?rf$j4Sz+OPC^gWhb!fo1$TDIy*mi~{8WF|JHS&)_9olAo%T#Do9jA!EOz8@ zN47nGxU>HxeeGVk?>@g=|7-k+KFAl6ZD|L-i**-z(kGjmnhqXRrDx|Wn@h6fo@_^7 z+G#Z#vE|B})UWx1s()#B=^d-Ya%daiW$X=USOY2wje24^#w*eBHGUk2~G z3-^leE<-==+o$f(TX%fuuY>2Yi}LiV;__H=`9*Pgt@7+#dF^6x?G609G&%*#X>KmR zeCAHRt-QToS$^T(p8M&nBq@{`r(X7|hS=H|}^3b3oHxc0dG;9Pn7 zK78KX3`3OGr=d}0^LBA{M*4<1EZnQ!9x7d%C~nNcAh4K3BGHuU>CNT}33yh*`79Zsi;$5WY9As&z9 zoph%>$A9vDy-qF?jhXjR?-jI+^(J%49(6*QoA%Q=OR8O-1#L?Ih=v{W~gts^FurrtK@vfL`b$+0yEt^iY$6-&~9o%zypzuK|)1~0E zOu@-?s8-dU?1ecwc~$6kU?M%qOd-{tSJ_T_z=JmVd+boh&6u%&&Lw-hKhbmZH;nM- zFwcYPUs7G&t!d|slU6AhJJ;iMq>=>(wxkzEcQOS!eiixnw^5iC^%{8B)SH7ZBZ0ZZ zy0B@q>A-;lP4s63_xtbqVUDLVeLeBMypzkHIC>f;*PDh9y0hsHCwHol%yl`16aA;5 zEki_YduR|(77C^@wZjjR9UURf+mq>Zyt6OUj+2#7vH*)o*sB2;+EO^VpJzK9 z*o%zAHxy3iOfsG7P=XuU;dPy(!B>1Tb*_cJi{1rjQnzLgZl?Tvskpp~Po{?9!^-VD?zs_na2?uL z7M9$N>+a$TBU;mjQ7oe2*)ezM8+%6hcILJFnWJGod~d+N^4sZ)u--HawQ zImT=3f2j`Cd2t}BfG$91pX0BbuM2+UeR@CvK`D*Bb4Qot9qdB1bYrCS@G;DtchgUE zfbiLiDb3!;m$VCJ*+ghoh-Tr2BB5J*3>~;58>Q<@m3PBdUwo9m^~8!-O>U4exNggYIF1Mi5i9}GOy%d{TA)(|z0{@41ryYi;8IqlBeNKpInFSo|!MeLX$=h9roU7u- zCUG63QvitiT0_6`X9RYvH22WGdlR1VA5re#W;y^$i>p^ki<7`}xHIoyt*{NH(W}L^ zm$Jyw8Fy{9xO@fPBAhSI7gxsI@s;Y(1kQ7ItaN=;`6h@PH~+-FbiZ<80|s%YzP2{X zoZG=rQgk5fDQq2V8XnKW1=yhn)m^)i|SUq1bwAAY$Tr`SMGEJ^)x~3ESm9JC8e7^VWwH?mjI| zT(4YtTe?40em>!DJOTiRsqj4ELue0>=#CDT?oCBtLyF52aM(PpD2N2m7Duy|1q1R& z`1SgY^4w+ESL~JEBFNvv4dn^Kfgs3kEWj-3C@SgG9qCd){PDqa*lJjCz%JP3B(M5tod8+`8jv>nn3{W$OAm-C#x_+UME8Y zNFv3RXYTNAIaQWN&gN1DU;@Twm2cm|dAS!R;q*%n-eSjsjn9XP2lfxR3Qfc} zn0ZEejw^G;S`1Uo{}6e~#aVm+{&b+%F`T*~PQY58RDrw7+&M7G1*caXJ+3}#|3hCY z=cr_m2}Q;kd1B;hfQMCyoj zV5S)3Z$Jitflw^!Yp0QAI)a7NzdMK0Y56wan@+)|bteld+gHG;W&3j8w!t6@#>$@M z*~6bO4Kr|iU%rs-N&V3=!aPbNI%lk zqC`f}OkC;w98w^rVN1gR;_l?l_e2K}^IduCPTtrd?!N-JyRtb0ydz#FVE#52O4BPg zYr&VSbYlte@V-u-i9B*^u@YjM>B{2M%EA-m4u16?9$fJ>_I-4VR$pkq1fUzXQy!v)O3b;$vqV>m(lU$5=w*!Az)bE)0}F+DdbgF~iq zWpfG+5!wUJD?eN)Zr)X;!)x)|6dHPepTPJms-#S3bdsB#~x*a3= zMitBCs9i~P^&}LjZ&C%pj54)YPJbMcAqBg2^%x9RS$tdiX0CK`65$Q5=;l!M;TnrP z{>O}#)sgYy+U4@vgnNIr{BW>*|7m4$ z7@6K34MglAY&5WerHO^|+BMi&q>?Oz>{YzGgu#^FW<5!zDv8Ci|E6W=gtjDqyU0nc(ev_0WBH4mbjLc1d)b^t^oW4Pb1hEOIr2^Qpb0{uaT@8hjg-3sf4r z=1zbtEBpX}cIm-7(zjdhVB&xacZ6o}I$kKez42WfMs4+K$#dvd5vR zwKUK>@nTjpytTf*@qyj59=?IjL$(YsNu4bdt`Hi4O!CaPX*?(YfPWdh1&HM@gSU^X z)}xJ%jwo&G;ju-{_%vz6Ut6s>+gIrAvterc2N9l6y`9wmBZ}!$B7cS2Z8nE6LBIPH zh0ytFZUziM_3oq62sY!?j*K1AvGt)v?z|b(z&75d$Qa%JawYZsa)S}J2^Yzt{0?Dz^y5lYt%UW!}*s;V#v|mIFW-M+k^8AE*zxiBD z0L!a*7|RRprLTY;f*qz22l+1AXa^W+cj7v-Mx@Fsu3fP$68P}l&7DrtU3ud!uE32K zEgwn8J~If*yF88M@zU%J%Lv?4PhXl?ub^TGp4%!R_^HQ+KT-EWtX!k|_k-$pNy}eH zivU~j{s9iVMGe$rvVl%V=zWNqKhS?;%Kiq_{92pcfF7F_IdDOZ0U+k{OlF z0TbtR027igsBEWvlL6e6Z&CTII*a=D417jMqzc`+Y+qM5>V$e&yN>=(8L=lYvriv; zJ9be0yxVF20*3B{-VWthfzJj3!)ZlQF~|PI?5`&!!ROd>EZeJ2oKS~+`2Emv-}W9v zW3n*63TZ;Bt*<~<4AN!EM}bes`rzx8e&u7nc6t`l`H2(WRF4OaSovEj1H(<;L891I zh(uxdUu2y;YbkdQL~or*Yffl0dh! zvUyAEdhsf=fxq--%$-Cku>+(~9hq>4ZyQsiJNlq{`w8lkH#gi%517aV5ElO%{_8GhK0N7{PW?Z7BShUW)N5$SKif z)>qV8aDqODFXGhVgnv9=C!V^&`@Dr@&l5C}mZ;H0|2r%#nJJ)okHyM7U&OvV?h0(( znPj@pA$2n?)ie8LvS+asH|JKoC-_x@X3Q2!Kssj}-shM%Dt}5XY1}w203PP!xS0t$ zbvTudES&;>NcTCkeMIkzcd^)=q_{T3?h~b%O*WS>B{qOwIzMMFAA{W~cYX>Woo^C* z32kX+*Z*xxXWI_8e2W{p~F4j9>I36BNFQ*sqq?5}4E|P(1 z62b=QepSwJZNM8H5( zDbns+he>h(3|hT239_Cb@5x)hVGQM!BHxYTfa7^re#qqu&DTb5tWl`h{l zoW7scXM|gq;cwNhC)=>;AZnfBrK1f$+uN8si(E8uXF04vD%(r93%dMyHgo3i&yt1q zZuKe9Ph{PHUegJ@Yf$6iFymwkpEw>&-Yj1l+iZy&GlWa zyav6*+miWIJEBFs71fbRfRfWHQaAj7FxDUX&}&=fOw508E?dYVTin{&ujMbmudQ}V z9$|2p{djh>1a&x-IRmuN!;6Z2R1X6d1i4Kd%^1#LO8oW6+KYcsp*j=o{mN#r~-F4hyyN*BIC6Vv()K>VV+*7OOGhWc!P z`~wstA9s|L0L!a*mzO4O1qtJ;(xpr6MX3_MVqU4=FiYGo>Ut89e${kR9f_)D)sG6A z^So|G1F&xPJ9amR*!soS-|&}=|G0ltG_72Ar>>MHzeHu%;&kQR1;DArm0Pfd#s*MY z9zq=r#l^4&%zTccZw!-Z%_laCEs7}Rj!pnwo?kr_GznWmJ0#xFo`ttAP#h2)9?0qF z5UH^(037P@<}RD|=;9*k8rUYDD1s#ckGB}W{Ljwu?s#s_BNc=X8-dh`mTjBS5-u-u@m_WE`h!Ss6?<@ z#&HY|ln8rqieVRHC2B`ueT05QQ7lgSJ?SJcwm|(t52X?`Rsut0vMS%hzIx;bm@4!E zfl?e$g8rJoRR6p$mxG7tffm~2Y$iQ`HdfT(SX&Ob_P5Tj|CRep74l6W8KVXQx&aO! zl{RRNg)Wc#_LHZ!6P*c8J!<3}?arq^6JxKFIm4&o?U`){B`U!meAL_PWIAB_ynzwZ zX|yrb$(AY)a`ZaGwgQJBfONu#H0)!1)IHAzcP)Nq^s$hu*Ti1GFnN^DMBHjIiht z93o%wdh0Z}ffgCZ&RAEX(#f8-j-={8t}FnK?qD10r~(n$wI~ZGY0X9T_7f1ntLHY| zp^4J1cO0A$5Y{;&ViyboDgd+~4Ah$WIbc8B(c3H+Bja%8etG(SO(+d(RM;H~#840| zOgt5{m3C(lW^~W=BzsGvH(-SwQI{7m_c>$;b3{ z>CzMSF}2+l(UnX)D(-+Mzxl@SW3UPAduv<(aqUxA-PP;vtMeevz}kdr;o`g)=ku_n z(!E)h_HA!2l~L}{1+<>>x(U6aHe+=ho>w-f$_pS-KcmR5(c2u$;GVlf`VLgZ?qWg3 zqxvmLMmjLcdXbBE?IQl3O2+>qr#*fp4vcHCrW zAwBV~CWIR9ohhd^WOG;<>pMGWrf3)5%eNiz`gG5$iv;Ex3CU(Til^dML4K{cS(o0R>qQ5O7sx%LnF8dT()?q@ZG7`*=gc;iXD`F0LnLzk zG2kq7I&g38=&S}kKz-Q;V$6JV6NC(%jbMPdV|nq5RC_^tj{dGY+3UdZ^lG_>9v}nS zo9yDtq&`Q!hMO0XU!aA@?`jSlz~|jgriDzg3H>Q>RpP|t^gHc+1u-1?zHB1SqP1P5HJ@ zF1oM6BVc>r-~Pv1go77WsDu5L2-zKQ$`SpH*r*Qi6aw+ka=$g_B~xiefxwy!{){7| z3w`2$BJ|$lMnQHwP9SwEU&yr()SYH&(zL;0(%EDON;HvV)X%&I!^D_n1SW@D8*VYf z++s#^i@x4F9gyM3St=s3<8c6iTwo}E1gRk7b^QyJf+P90C3j{fODv}P!4$3Us8n$0~h!gmzzT;MT#F-IGj0OQz@;c?^R*|y)yjmDfCwL{l@Ws;GE zPN@DGHN1GE+8Y_6Dd0N8I;yiU!c|-CtBvri(YDym8lM^#9$7=!U5dWa@Juc>HHkV z7HYHOF{SnBrz`Qsz=)|geKEK*14_x5K z-d_8-N$a`AOll*62^84NlOPiX^{H`S zR|A{KX=hmDg*&MH$!GKnYb5I_Zy~a~>` zCkQR~w`MzA>qzTcd*`4n-N*%kzjxwyM2ZIEk(E6YkQMC`FSr47T5Hq!6xP4 zjM^LV=tj3CvY2{-?_`R#!y}A#1JEq|ueg4PFz^e&+vSG~98@9NsS88y@VCX~%eKK8 zHiosEcG?79DSkWjO?7&KA~}XpSNQfRXDO^cgWEHT{X8Bl-Iu%KC3U%re%%zKI*T`H z@m%TFmD1=9cX9&%rirnNla1u29~Ay+XcHH0R1c=5-M~2i3l!7lX#E*!E%6F0Pn3u6 zm(GvzmjD1n5%uihG}yc=>aeO0|M2jHPju?ogC#5m(K$y6GXRkrepJGs0a3m|?* zqce2TP%lK5?Q_-JZ>zUn$&mwm^<*=xy{SScdiTOT@zTh&Ci{Rr%rPKsb60RB4;MIE z<}ZV@d8dG3Fq`wR4b_LM?&>6;wozgel$eGRIShpG-eq)kxcLCS5TAan*I_bjK4Gj6 zKT(o_-{tu+Hj1NeWCkE&w4Q?1OqI`>5gQIOKZW?2=8V1bpG;_8)cSB12F<^eh{5ON2&fakUXn|BPY`>2ohHdfpamZ!a?!7ZfE8O(vS zS8u*{C$9nwqT3j`2eRUr@|11D(h$`?95r6OFk2M%1JgB$e@=-H$(1i*5W!Ax$<$$V zR7wLD!{a3HrQTGplf#FH`5^%1nZw799R2&&UpVbfPaB}aqaPkU_75MBk}O&od7**f zgV^7z%C~PLoF5Bcw3|0S!8fR(WbTALH`t9D%^Oc9SlK8klxD5vkfMFT0Gd3N@Q-=a zBBS+$AjM>?lAFUf-e3!Z74)4!k94>dO|9zZ*&Ig1WSl%v8m&Ot#_^Nk1YHN8+`(Oc z`^sH?=FUGWt~@Y<3T#ZjDt)_9KEJXHl_UQ$!R0zvtiT?xvAF!CPR2APIFcX=Q6_B} zY(hlsL+TRd#W9N%Vs`cc#zAJ5aU7aj_59=F$|%1w+<9pev*_AUJtj_`57EBO4JtwH z-)B?0#_^+^hB*BQ8`XMUY#f7sp_i;}WXtpCkAstynyA%LnhRv&PC+E~= zC)p;$2uMvCr*QNiSnmg`iRmZM*mUl6#I1(jQuRaVHG^e<;Xy8OZuHN>L&q!}=Ogj!s)=bzJ={n@u}O%d9WpPKw{2EQN(&2v0_P z$zz(Xp0-q1U$!sr%lT=NUsxVtcY&-LjCkS%A`k*bV;r+DOz_6uyUb_^EjLro_(Nt4 zDud%mcd^?Q- z9CgB&g4>AG-|Do)ZY(akZx<@#7u=cGnEp{Yz4=r+n~5TSPi!=QER%pS?%pe|J^}s# zZ#-wa2+yaVqKyWB6l zVrHTI@}*9ggU`{n%ZVYF@n!apvhy%i!Sq{`=V6H)8wsm~MKH*g#>dJ-&kfgJeRQ!j zd!LO?7DE}v{|03al(v8{nuBU3wb+5rkT*!DGGDMyQwnievIAvgk04SG!hJ{xDyfTn zd5gS20iu2aV+qP!kx-Szd3W+D-it(UM_WR{^)0SHD6ie;C6_J@mSz{3Xa&fUyRwXT z2DaF8mc{!r@_?OpO}e4b-NO&5b4#o>bAy@i=Jw^CR`|7@NX9%Mpf6}k-1iJ}Zu5_g z{SaY>xJ8`!(nfjVp+84Y!?C!WnG-1Z>>P{grPV3Uo+*C1I@3^bZ33ku9gxN|bjKz@ zU}KMu(#<#adR1xcGWzyTTrbT(HD>4rgIgOW^%EY*(ti4r#~4V?@Z&V~WSx!iNdQ@B$iPktV}@E!{V7;}$N$ma;YGy`lR|Q@5e} z2i3oKI})jf$u*D$i>LmuOpZ3?S z_&(EzGAEt4VW2tteXnFMrM*XUV;YVkCn@iFq$o7}41aqGV$GSczh^#Bf1eaPDSXhDJp-)2!E$xBM*gvP zNd5_IRA8t4wjykY z8euhYd@ggnj_or7J+@_~8*`fC)hr>!>Wq^kVg?ZENCx5)>JvDp-fX^L9(bqj$4Q#J z2J$=3Q@WEvHr`1VbIl=n33)xnF-KtmAionkSXhL1K)^+%ESDN9r$X#jL)X80G z-gD}~(1mGZg}6N09=2XuOZ3JgYy_M#Dvx05#KO2wR#=_KEE4MdEQW>gnT^S+gLhEB zz4WT`2GH~U;_5KxJUtak4Qxu#s_zw%fvA{?H1;+NMctgGks@zg3?-7#Fc8ZYR!X<7 zdC0S;ws6ZQ=(f{i9l(LkZ1zBlI`Fe3QW-*N@I-rg!P6$ZT|W!tr(<6_%*bTI{6$G_ z32-pe^6X{o?l8kh3^1-743iy@g&(YxCKi0^eae?2{<@{NYnWhwcFN<<1(cB$j@IL- zgW`%WQ@T$|3FJ%PR%ypsMMV(%b9rr&#dsco*=(Kub|OG$De2uJdO;4}wx@-G)~jCw z#Gr!H*e!I7njE^$%Yd0D0+m7BSA*5tQy`+l+R~|>6xY=uRir-uR-sQ(wj;2@yL9uJ zB$s>v68t#;bU=&0$-}QDL6-isL1mn?R{?xuT{6%xonz$#{BOQ~27B^n6(~2Uu_)gvrU!dCDv}0CUcw}iiUl`Oi(q!%SJ_ZD zdztoCq>H*a9X`&goNg8UXYVlyDC=0sC~X2hmxwx zkLknmY7}k3glQJcn=T0|NU=E&rf+7tj+J-{G1A9${&H%^_fp|%ps}_C`&Znm-Zmta z&iffC{3X0naEp9tQi6$4Wv|eK7dU#^BF^ebxjao0Bb*q|uc_7kNBRC!^H1<~leK4X z?ENYdMc-5V=>Ys6KlLX=!d^8@kV+az-?Twhy!knsipFKxbl2Vx+30%(j8$~ya_yEoXR>JBx=h;rKfjl zkvqwTmyxW@Kebi3?uAK9871XHi~(D0;pJy*?)qSWry$)nYGSc3=vs(q4T?s1Zl!ov z6w7oXE1#`~qdTN<-F|9&08csvD?F1}D5=xoi4&|C+9JZ1RV?h@9UzPp1KE{OU0IQv z2wdu`e|ls|U4&FkXWkr}{JNgt9%+o~Lvg5hqWj0$gnWfa@-a?kM$V3oLmq|&bvBuY z9?qg*eik(^NLQQ=4>#%=MC*aRfdLNXa2Hn)jBKRO=3NP;e>g`j9HP3`85QQyBs@D8 z2%;)o_(lvO8Vs48VL&d84Zd3I!E_>>Bc;A?%^BD zX+I_T!uS~a3BV)x4{K^sRYOay|G8N-rmrV1+sAg1-5;+#X>D{7sW2};N!yd~A>f4P z^ChX9DXxwKR@iaEof>yv-2;ZxOU6LC65Xd8ARHi<7cmYSwjU4dyUbU22J2)s8aZ~G zq(4NVI0J=tQ3^P|=p_5K&M({L*DuWuvIk7rt8?YS0oLh&BlZkfn2yDEaQNVGI@Oj- z<^~Ra!0DQhs2j(ef;ZRe)`cTzl8o7 zDgrt?=nmn6tq&%t5y2yC@Hw|E41j4nq%)KgZ!Mxg#exy$%^#6Uu2U1`=akcJMGI_t z+JTWznH}L}>|{R<>Z52CRct<59h^etYaXlq zCEC=lKmPQWt)KquCqMh;Zxhi#E_0P=Pl$lZ9hYZN--!OTlwuEk1~xX?=gQq2@+n0z zJIf&a5z)GmJPeP1XE{fr$Glk#s|ZMIcVpe2LpY>$RiA&`pMtq_DH70V3XDx~7zZ>M5YI%HnH1)zt8B(cvl2uyR_U8aol7_D6MsXQ4gE)C!Y=cygLcx86oZ8en&-F%kyLE<6rzz z$&DBuLhzp*vw0>okYW?@v-FV9Sn2XtDj8J<4e4g3%VX$Cv^HA)da?ZCraSpq2Sv-M zk`Vd%FlM;>%kYc!H=g!Ay% zVJ)4<%@CFeCMN_ZIlVwYZy@x+*3%F|Sdu(Q%|2B?0Usd$aoU{Gz%1`g%^fs=R z*Ss8k#SL`x6m=7z7p-Bla%^9k1I$vo@*KbvR;X2r10bLRWVUC~i8|fdiS_xmQz`l( zp9>W+{G&2%;R1%}k4@l?O)r+l&ou{zZYF|$AH+AL`-I0ia2(DLiB2a9UZgxV>_X}8 zLoU~eUgwiQoe&#(V9B-1sKhNX=9-r?UUq_jNi5Txh!)F8y#hj5ypR?8q_aDLV9-y6 zSE87Xs80H5NsY!yg?wpBe9baW7q;?LO7&dpd{beEGBK^IUr}i+I5MD32e^ub`bmot zLEe1SR6BA0(s<+>|9;BH;&pcP!w;#uc)Tr}O~>O#e?nHRf)s|#(pxsjHQe<-aL@8_ zlZ1DYw93Jqhib9}p$#dSOCh(MM{^X0khVFTR5qDc#D`OcWdUA=zOYrC*&NMmQXwlAPwuWJ2`4v+ohwSiT=iR(e5|S zz*xg<@)j0(^3=#=D&k-l?uFg)Ooc#6=fOBqJCnU)E+}wGrBXPhEkKX$DP%`Dvjdl{ z^iU6wkg2Q4W>SG1+X8PyJ1jA=v0!-%Rqx&o!A5x`nma>AoN19`$B@nw#sP`AvUH8b zwZKTcuE0Z+x}pvSf-)?&)+b+4j_cQ(Um0$HlUCsF*N89tQ|QM z@3N*=i|WY6$>W8Ur^gjuZa{9oN&+U_LB%b9Hz)kvHdtco!=uMq6#T29GF!$}uPbPI z6VfrVz_$T7a^3{Y;GJ!ynzbE@q11;FV%FCm7tlu|)4`diIxr(VVwDaD)5xK649yUP zSS0m=ohhz%H~hh^{hlk6MR#nAO%vr2&-NAkJ8F*B*ZB!PDEg$K_Mhj-d5BSGJanXb zgsrx5)Mt4J=`BVE=6XgDJWgE-spdG@9^$iw=(dc$tw9@~|JIWapSkbi?QI!YgUJs7 z`a@`F_2FAKf99iE0BDTfka~r{T!PXR z$N&c6dEr4+DnQhAj0?$gS$QSol&8<*=n#`v%lg(fsSg>6Vz{d(x`owgy%VUD^*KrTQ z7*5wbYChJ~6vD}3MT}o1Q|bHB_+zmOU}MvXhC)@d@n*B!m0WZDoE|?bz{XSO3dMD3AFKaRybSj#+3gd-rh1gyy$-}9f=g-^E^WzE-NVl2+Uk`Mo}g|oBD7fp31+psMAlcOTb!j~k<)+Q7> za0uQV;*6>VowAsGx@#O|aicpp<7iBM+(}7LsOCv9-fJJaWH(=|dIEwc<)&`O3Qrv^ zsyFQ<^NxOJp^^v<8%1Yzad4!HGd`+cS$rxv9IsxgERN{_BGJ((%5v3r!MhvQ1eriW9Eh?%Ba-UD`lMr5Pr;|^JLY77%j;DoK`O>y91N7ODLr} z9CA}IS&cB|Zw{ZLUMSm_myCXS`2Kj=^@KH21=WWkFF_wZQ#vh0@i!S%(S_XcfG3G~#&iU-A#>@O z$v4amXe*7AG_mj7r47-aqNd2tUZZxJ6kiw*%dQ=UqXVI*#;2*eb_*mSyau|@>I^!A zqOkauD34C|AVM7mqlfKvbjN#j!^84~p$ zUEQ%JFHKvU)1K5}W5O%IP#Mr38KCk8ZcFgG~lF9k?Mvu~a^e7dNg?J%lO++SCxKzv+xolpl8hg0c_W&90ngx8xC0YP^}uz^iy|`*%tkwOmsgRdAE*RR z4E}1tUooa#4?H+ z*2&Eqx&TB^ML|&Y;4f~$VUc-9zSeUl5=(EzoGI#66pHfbSFSngykiy=Pp7_ca8=oy zS+RN6lO%uhq&h>EAu4}>l}`#z47U&MePZzL~3zT#_D0d@@;q6z1e#pS0VVYmd7c={H$eI1>m^19$=l8C9)KCw;H* zCQ~^iaeuVgj?KH}>sVM%!4%3f3%0>s&*hk^KE6_Vu+FovXQUDb$!GYuiuk7zJ`EWr zVAq#IVpz!iB?i=zvmW9?8iKcr{g&7}6mCnV3%MHLbT%m-Y~IUl#;&Z4q9_=xnv%P(DrU>jGe~R zFZw8@*suOWbNwxhRcIu+mTjnf`9gPu)LxJrU+%is#z%|&KT$zMEtwDd1+VkBm~=ga z7du&(0SdWop*x6INiY0_ZyTa!(%UjfzF9``!w@#JCn zCJw(*hm7D%K@r9xY4I&5&2C6fW5qm?hHWLrL)##-4OsZJ3-;e*&ujve{?fBc6Je*BLg{KFCW*D*y1y~F8O zks~eYSX4zo5QF=0)M-8PA+nL#v*_+_bqu0nlF}RaJ3iv?>4@nGW_IMrQM)U%!=d;X z?*6|(OOU`@)LG8R;22I8?R!|Le@DYW6Y0G9)hua$*rUUJ zyWp;$=ZsPu`vcS(6Yyd`9sxP2gy@k4tGN24xca403c#z%!V<9{Z;YD240w{=O|if+ zr$N$@1ih(Nqg&c8$4>d&*X8ps;S6>75^)mZE(X6NsyUa<7GQBLs@Z3i!?mjuO^PBB zZa#n(QFZE6KHHaTcTS&<=<*7l9zO1e5_aD7KZ{B^nsB(HwXi4_z7~rMB0U>ETf0p~ zr^va~^AR=1IaZ-4T%+Rj)$$yRDSLT>C6}~cZOvcVMNFg)=-@cZb|zu8j4BcBzHLk> z6V1=|$l~&~>P@N!O5RkSY3k;K$^u%+*???}ot4d7s3hWKmzd-5V!+waZ^KQts5Z}l z+lI;OkRsM7LX!3U7L#bz72%vg-nP7QoDyd(7q{t~4=`kTafRxeQWYKAKRcsbtv!K_ z(zHit4yRoyKbS6m^+vUc{~HSDVhh)c?Brm#?Jde}hmJGp|5H@wI_pHm60-ve_vI&+ zfy62gMxMABcwyy&Dy~0phn^ZQ1DGMZ^s)D?lxThQwY#}dzWy{kkf~Y8|xu+Z@o3`gv3U=mMq`8QOiuReplEiT^y zh+}NUYoWS||3dl?%HWM_Tb(vdjRRshlxfWxb7@CRJ~72PN*}s zITBf~hR?Gf&htMHB@Z3viMJ>^Vf}Zz{`*h%adZ2l()O6N`|+PBrQ_dQ3Mh1jKm^}R z$gsH?(c-^m(1Z%lPGR2b<^bVt-Uqk!<`(S!=fEV9iW~kuO;{E<46Ft${w*tSOwna2 z%|B!eq_r4B^kv_<4R z^Fi$Bv8Y~DGBcpp<6o4)fd6`LyKOwqIk!n}nsVnZ#Iwm#I zZudd5+r(-ZB^0+a6VK-27$Ck&s*1e@X(?M`x2B*bv7JcYtIs*brUYruKk-~FD1o%{ zW~u-|y2Ge1L6_mlH{6n)Y6DNu<7jpc1!m9uOG*n2UqNvHmDVwFbfq1YC6TG*ug?w^ zHbt>Rsxe(lTQUd#|3`pVohOgYX~v@?Vr9258l+}UoB;nFXbRetYr8-TGaT+dx*HwP^zC-vHSXp3D(1;*90mh`g|UNF zpn^3^hHK_XwiLkfVBbU}+3L`QH3lct*kS-3gv;Oalqkr+pR(xu97p5Z z)2Ap_fCs)qbtWKws+2>D3)#AxL)C|CCJ(HY6&&Xa?D5QNGm}8Zti93acpP&rjEqpJ53y3vswgX+3OGO;EIxvNB|2sL|_s@2+ z!@3_QCUBwJ8{G>;^`^@z0-+oJR>;ZBbEV-wmu@|9mo8EwJ@SetU}n<_q61u41z48aoTZF*?hn2=rk-!(InIHX;5s>xA*$p=G(*OT+B! zhY8Ha-r=@T2}jQ2C=*5x8Y;>xVbpqs7}HOEm32)F#Id-;%AA7PA(6a8*HCZuRanEu zH7_;|?*m;@x)7(DsgLGHvP%n$F_V^1#ueSal@!M--su{d@wv0aW{`}Gzn8n=Rji4c z+o7k4LnIUnkTsLkynxBeE@?St7C68|(EscUPIG}u9je>RuBD|nqos3;=m&b~DUc)N z-&Uu9p424XqePX%?vP~5V1Yv9Je zFlNPBUT`mcC9>DvCJgk>9wVZBvzAUc~X=Yyh* zK)CQ8S#yKrRBb^|wI7!NlF5G{>ofFL?*k zIq1gh3G@_^LL&rXB-gwtuH9g=91YP2VSs8QAZLPV80PRZ7#YPe8|o0fqSN}`bw$mU z*N=)KIY|QcW){D(#`LZ($$_xh0*|x>W5(lEf%IzSY-4j~nGPQ9`gV>ir8?kp)^IKurt-jk1=@RQ@Fsqny zXpv@(Hahkf*jszZX$>ib;2K7^Q&IuusHEKHqpvH^heZqb_Rl)s&0T<)qcKhdVjlBA z)rTv`I1LJCn{y|x8a*2dgI@Vzyq=uy%nH*G+HX>fEWe;7>O#{A(czg9t9S2dt_yFX zr*$+sMlWgG@=$qdIB=~cxysE4oZE@fMCjgOFeX*sF!G}uoH;G#HugcCE6`e(3D^%X zZHNH~w%rXl)-nY?D73LPqgalY<+RESix?!leuujQY~br9pdowzWS?kQ2=Nvkl9FPW zrS6IH+o0+v{ajMfPy2neRFYDA!X%MaqHCIp8d}Y#l)WOTZAJT7!M@E+;sby-4Us-N zP|8UeN6}<)O)!Q$<6?=nMhSVQy&@7$j;VM+ck;$oh=kjkrVT9~Es(@S`s7A;@)9OW znV$-XyjoAH_O&zF(X%{Ti)8vS^r*=F_l(vB|0O`QsT3(RklpBYWXJxhd9v;L}opLDFIj>J|6 zYgO{tRR}o>c5o6@&Hv#dn*`5jB}q!q^C7!GFq4Jx}1D zTK%1*guCl(EQe1&%5~+B(?;1&Yi4g%g!H;7M6{@EKK5C%(EaPw7tZM@AW%{g5;P3o zh7QX*^(vl8jW?q;2Ni+tumjc*k+Yk2lRSw)QhoTQy!xDv@@zL;61yWDY-Ck1LCr8H z_Zc~CVUiLXk1@!XE~Uu6+9zZMFBXd#snstfogce8yMy zMFQ!F^KKiG^1iZM?I4!17r9>B71yxAAqf;3i-P>xKQD1Q7BhLkdFFu7tni!drVUAYsj+Zg+f#r890E){W$Es@DmHnM)_w zG^`6a%Z68FPT%eb4)?ffJ*xXdFxg>;_({mr4D?}#1`b%vl44gRe0rKc^5H7$q_RHM z>Zt^x3SVR=;f@2op9gf>)c0Wq{+px)TN{aYWgaenh5m&5vyV&z;*6|iALR$_M~FW; z=HYD?Pmi!IWXme-UvF;jyXOPy@GbOLOWB?QR0-b~2?ktc9B*vUr|f9{=At&^O99e4 zkX@B1bURiH)=t>85TrFONK0DtvM#O=W^A!~Vk5upFhowEu~-cMLw56zJas(<79o-=`J-A{p;Yl+FVRjaVC|~3F>v*gmSNLAeZ>nDsU&b$D>p3)mz#YTi0{d z9l8MAgZGn`Y?c8_QsHi=ULw>-U&|h92Pmf6LEO5Z-!AqhwG`D`DODK6aou$2$|RlwV7(PGL`dGK%HieTbuW}(KfqG$q&(;C+zJ76$NS~ev8C>t9U!Q> z7K-G^7t2>jC#JaU9~sM59=$3}%p((8ldxshl+L`~0WkqOv60rcvuR&0s_w`zI%f^lx>ooB=(TF`Qf_jG92&NaBh z)FV-$W>ydqnPImH`g4c!3V%~$QhZNT%G;DWRLb7bZK#ygWS0mcVZu2ZlsojsIPi); zrvZj17yT{>0VEP^ZYA0?aKRCXsZ3YA%>jxP4jd}jss==Y4FFC6R6|Cg60MTKQ2C;}ro4gz0<*k55VdX>N~?T z(xkytuFi}PiYr*nn4JfTt21UcM#oN3DZ<;7Zj6*3J~p06=uSU5S=n6rYmM%0e*`gf zAhU3=)OR5I`JKv7p=8S=I>A|6Q}zN9n+2nUO_gQ`|J_IV&I)2;PL=i#2Msv6nG_N3 z#w+*QgeGeKxH)nF#E?9o!(~eEU~_Q)0|@VTLuVU}3!%&%@eU{15pUO|YsZAc!Ge() zBn_scZ~_w2a9d*!B~h>q_T&jPR~mf_Fkc;+16;Lqop4f>FeEj?$`jY8XXUcj1W);4(tz0|3{2KAR z#C!V#mABA*DIJ3BS7E6{XEv)tDjU&xsYDy*li%3~f8-Bz(ush6Oiu$fWHD@PbYv>w z-(vuOBFDSt4+E^=c6^}WZ*7jUVXcfOOZ|^g$!O$fD+o-~(jL_+Gw*;+>>Uv7(#1IC zOcJEaWH0|G1ID*+^v0>(u56}zwCzGcY$ZX+^ zuIAlE^aGkg%uhpjV*cusxJ+T!vXy)lC^>;A3N}V@NCs`Vv3IM2=@#HVJ^b1o8sf-2 z9fmBs&VFObV|1B+nYe6iOv5thvea=7V>pDFH4&Uvr zz^65x0?4)i&^|le0)78Fl`rhJbNqJuDXaaMb5zl6@lNk{wuBG-{aS#r+raLy9u@Z4 zvi}Fin~+bZ0PmY#8<(}|!;ns)PtG~G^9{&hy6x~T5k+p#;J562=T&_TB6gR`6n3G9 zNM*tx8M^CCXOo47G>Cy7`NPmYcd9G#R3+j4Venhp>EFd9<;(DHn`y%VfVq?nF>3;YZBV1t3e{;sk0aSFLO8WFZ=sStUjdS23@syaz zFT?R?dlO9q#+-1jvBn~_O~fiC7gDy}4S4h7`s?Z)Q6XUvUrm-oPiR1U*)00CVdX^R zOsH(OiJ;7*hH)@mQ`n|h)+SCO;Ta9Gg#m-Jl7i!GEWX3_0RE%I-XsV^@)EKdzn+EdIH zibK-jV1;0(9|J3pdA?)|dix@w&Cc2T5Px5{imkBQT`O(O{oin}#JpYaV#!wQ+s!h= z{jFZD*}0Ibk=xEbSXp@qwjPVLRN6Ha<4-er}l&r zo;0&YcfktgLF(;O{A2k%?iAk?J3Do2&48?s^Hs_0Lk4v-nIe@bK;+#8qOA1a( zW-fu;bL=z7KckdCV+>8wcP`dwXe~D_|6sN!p(!E(`#=-*hXH}ynRhxkfwwz40uabk zWy<66zHyxgle}4=55e$Q``f!?PHqE5FpU^G$ z%4J}7OdxcCR}z*E{_s5wu2@AhPC0c-Yno4euHXM0riv9bPM>a3wGX5I?p4yO=t_lL zy^8F#WP4Puh?#S`-~u=~E^J5TXH5@OOE;aysi~> zwxMRMWICT!U8yq;71c}?@>1Rx30QkyF2@Y>No&fri;4gZ!g_L84GU04H`UF^Tc1Q* zFx^guiUcDc4==F}Bi!^*w=UP<1*ywll-RXuQZ-MG@==vaZb%fZ4O zHLLZO&FC;+b8hX~Ou^|d0CZ%MU0nL3z{L^!bjeb^*C^oVzw-q+2_z#eIP+v*Axkxt z;n;YqNOIAY4@FwpY6t7gT>Y{?iR!!>Xtqn~b@d!Kr4xixWIlr0c*V{`fbpyY5*3$e z)svH*7a%+6YYuDabut~;Rc}X|PM<`Ts;RV`*%ho=!>%q6EdYqN^0kdvTatq%GSq5Uj#@ z>VQlc8vGOfD+Yq1q*sYH9RPM0zdEfq?zgffd6n=wPPEX14Y20zi((xy^-z0J_@cE9 zfM}MGg4@D+(PVYfmKwAfk(CIW7C&yS6<$U4oPU#p{euZ)sFG-Upv6on900mg?cJ&~ zmCG0C^IRWbtpx4@%&t3^?d$4RAVE@PM;m^vKBxdshG9j%u(xX`tCC%0EPY(*w^j?B znZ0zo3I5~jfnfk~lJ9Zg6Rgfh{aVj;{m-bkwXg=Oat1w!G!v%GN3nGk1Nk=Cyv|gCv7ry^Xq=PZ0n*tLs~jYS4NfJM>2nli zPSf22NDx}$_N@4+d&FT7Yc3}2TUPZTuFMzuIyf@`Xm~rNE;A59QKejqDuk z2_6l&HE^80KOv?Gt7JN06r!XB03hf~bA=5S!&uE$*0mXfk}tPssnilCy_7D2&-dWc z)qvlY?Y?Ooze=-XTf0yGZTnPBJis{3m(R2^%J^!UZ9GB6i|HAV{Un@6oRk*3fLAN* zCmd+abhZau*c4wB(cP_FH!-)k?iyWe2yR)XF=a+;v@Y-2C6fm>5i7;Dw+zInqF7u( z4@RoYOgS2Kq|?|SPu(Oj3dGs&J^n?@eRZQ?YVHZ&1fHp&1*%#iiWqXDvQ;pw`V+mc zmBuyVIi7A@tKOLuiwI?8`dxc2)mu=UV%C^eO!YsITBCZ!J{T3uL5nm&Zn`!fg>9`) zS4T!9(fiu1%EA*q1g#q&D+HB0W|@n(MF5m|Ha!$*=YJN0}*b<7=|L z`~Op(4%<0+hQ_93=Ohg%m-J#q<4r|MD7`rjTc9)oRatJR;>1n@CNOEc~OFdG0 zZ3U=FuIsDF5(uHO*8D!ndg;N6p~8YUsbHKPufW#CvQ_RG$fuN^ry8-9kr$=WtDdi~ zr_avk+JPzw*R<@8$QYpq&A_K|w;R7;_( zi_nGAAK?yUl%JEY1hu9LYp;sSPuPpQwD2v*gY5%CBWDSM6A*O;eD$xL!zJpVJSeS9Gglvk|X+=U)fU85W)X&i3lROyw5(C5WE>HnHCHOCluXKzAm85^F)5`Dw_# z{&f4R?Ae2`C^1pXKuq1#MKspye7eD8-m`P=ljrV}JNVo->e)$*$UOloU~XJ9Nr~9Y zhWX3N=2UqBW6jZw#Qr^Bj!P*Oj?Bb%Pj0y5L#4|vrJ#x>DL`u`8O8{PtS1L0d+V!S z*f72a7%53r6SBQt%~+iZ)#M^IJ#Z_EI`I0FtOt}UoNaq>TnS46N~lnw1|=WK4rC9E zT<73AAXdZt8nMBul1G)P-Pt8ml+52w?6VX-fz_I#5+y7lzf?Y#OP*B*ht#pC2-@}x zJ+9mIKXIMp4>9F>reCrePLPKgdc+xV&d5p{tSbjf0oCljZ5_uB zZ$5B`zJafBWq|~}Tn^d9?V1FOCeDTWd0w~t3~96mxIua zq$4+}=jgfzbSEr0)Z&9s)#UyEdQyYr?I=e+CKL6>t`x8?JZn?LouP=+L>1SD zO4DzuGvXWMDMzdT+VL@%p6v<9(e_@6X3Fu804nMJ1y#^{pBGE@_C@#717W=ScghsS zlD%lP4dadE)wa?OfIj&n*&a6Ho}~8`ps#xO5o>N>v-(+3umcGxO$8c2Vq!;*^hc$N zS3oT4-;HNkX&Sk5_Lvc!AGxag+;b^w3OP}tHwn89d0El-^S%iJkveLeifNaZi~OpF2|v7w;$v?*)V1bcOT7%BlrYv-FFKKFlfT$5QEe5Uw;1G zVBGh%xWHmC26GSLn{|iTLjdPCCodEKt~MwT+_|&Z&TT+!Z&99&?Nd1EMlP*}b_c$E zzvs8>sL;l`r(nbK#x) zWMsSXLt{(rtr{M3=WoT?lClp0rgqoM7u;8a4MmxnTcv;68?9IeRoNV=Y;4$w#*c6` z*{R1v1E;wy-^>tX|l_;>xpg{4IvSjl6I#&A~)V zH*_gHh6X$Bmr?PA6w)+VZ$YAkNyRO-Ch14_rrL}#WQFDp3%+kmFtWlgI5{coo7rDc zhip884bZ!xZLN~A1jPU4XQEhRhyXbq;B)ChW%0VZa1ZqkbC*4DbYtd5iQmeVO6rk# z91uUosmTz-L)8m&e0U_yTWUp0nxsYhp5#EA6WnSYgJI=g#TtmF03t^WxK}}{c^!uSYKLK)G%JpT?(-y}idwBbD0olZ2w$HN0L`dmbzeaoa0k^z+?Y4$&D$or|s z5y&Ac&LPB7lgS5lMHnD=UP3$SAEf|^-fz4Ibm86c8#bN+S-<#hCIFFiRN)tWzfUZb z(^ucoxvBSka1+EaVZ-v6M*L|4^w7&R8b%Gx+lEWdGt(l0ykywnxgkhSe1k=M zHDhDinA1di62Y8jTk@AW#BAbr5tZ6uYW0WKSllZ7c;A~8v9HEtTQl}#8GV*+ENbQ0 z|5z2m_ZqkFHE!Q)+`iYieXnu*UgP$?#_fNd#;uNqjjg#m*0K3Zbg}lr9a{chq;IpC z#NzU0aqQGw;x^eQEeC?oQ=!PahGYTWR(@`qy3Lf(8J60FIm4Q-8~U#D{2~&R@f&ed zc}x33TlseoSBGjE3DmZDUwSa&jtpb>Ail;y8jkb%#A~a0HRx3x5W+He`O>LBIvw$( z#KP71n%8aEpqf$#_h<)Yvu9o%zs=jFi<9ovZ_0NE$*bb9cvMhwAaS5O>|VNGxv*jM zcj%fhz5=j_0^Z7-()bv=x3R}Yars*H=A6ucdy9ywz$_(R$i}mo^gz5X@5GG{$Eqsi z`kW|D>lUYswj*djJ}ONwmd4M4Kxc7Q+D?$^e1q zO(MTbcb{^ZkLt(-;4s|g`RB0TVR4NBbE3N9qswGstQKuP9WmkhhXe0yjA|b0YiS;M zrIblM2Y9S>PZH|~{LW3CVqQR44X9v+EH7Nl(k_XAvAEetWEhJ$x)#AhvEH?Ol+8GGg3G>x4C2lHiDD|(eb#;`blcomXxgmH`vXM5NCQC z*EaY1=jTtp$7#*za1@-5KmDE;v&=5t0BK7XIOQg6jAW-=otD&Slq}J!F2%m>Bp2wx z{KvXIRa5&w)=Z8)GqV^Dt~f|c@}$xZv20`V74kj`T3N=DIq1N>dWAE+RR%9qZeOLy z(IGS^P#mD-gS9>crceskU0LGlJof04{&Va(7WC6Li4a;lBkw_anqDb~roIbO()Uyr zA{-t8QJ9!9zqV>0vZN!*VK?p?T$4?A#8ZD6ybS+CKXJw&nDjCwKX->P*y(&*Y~eNA z7FE1^QNFTRJvZTA8Mf14TJHHQmT)o@|EjDzj6r4ZE}LE8{Gust6oO9z9qpFL(r`G3 zo6qeT>q~9s!2PQo`f&@k3SIP#rQm@3Nv_=o!=(qK9LQnx4&RxP=RGNJ!A|_*&WWFKw z+)Af#01DARpjeJZnVK?i*G|Ts0n#IuGszVRBuwVcQ45CIJ9rj+bugT(V=6T~4Hbh&<=kRUA#6}RZVf^?jN%(McdeugM__%@1H5~0RuOA|3337By>$Yj2WI@2!{$C zeAqZ#=r8sgGPa87$GFJl7w(u2@5khVX8~(z=&)7A5uDHbvzDm9lx}LSl&^7gdw`4Q z2YTAF=~O#oKHhsq(?Ng}d{VzhMgh@qB>ll;>H^EIa7)O2n+VI?V26f%#$Wi9M&x zpsk6sj#ogehrvhu_Y8i@Tc!=283@(bt5Z9LotWiu6%I#si)}F%WhvmSFZ?yS9L~;F z&y8Sex5X8VyVnYDd`0|)0SjOf@NYU3I}Dm6J3s3{dCjmL04%UYmCX^ANaf>cC)sIY z&80%bqpt%2-kxvTRFKd(Rs;|aV zu{8e}ST~cL-0T3ZgRc>#ng}{-N&vhq;(F=UEPytC=alN4O45Ei?morXZRwt~EaC?cGVTt8 z>v$hI7YtLoMv>*>Q=xT~z=7rVqcJ5F5oU(nT>WEkF45Kn3O})J+s2M<+sTe?+ctM> z+qP}n*|D7+-JGw!bI+}}yJxL`U0u~Z=9;6|Tw|0gvH{K~;E>0iT5+&(dg5T zfjrpbVVMp$M^a%~sQ2mk;)uuUF=<#`zNk{pozJO&>|{Rdw|!i6eLl4Bo?iW9lj`V4 zMzw#d-0Td3YAO$2witF)_;N;m+Q*P+vFV|oDlc5GO^L9~03|1KRg2QKu)pEmRS>5d zE=>0!@S$~5q+zh1c+^MrOeNqxIZVoob_9BPSQj_hLv^xyFza_y$Vc9Fpm!SmlWcKK zx`8HG(-U4SA+vHaKVLZ4_0(7DvSP!T?9llODrxYutpLl^tL~vqRr1sfxXdfT8f;gc z^Q&j#?nO1Wx7P8)C;9NE64y`fuRDXa6@Do;g`N299n(&_0UBVe%aw2K*&1Afalg-U z8}B9L=83$C4&w6H_R5<01s#1MY2cNtuSqTg@n1+IUlQ5~9?!K5z~z4a{UxWUQ6`_i z+pw)#=?{xdAZEA2P&bSIg+wbs$Gr4N*{1Q7NJ{9)pvR>dpgh-HwW!BDQ&dthc%)zmcg{P=aqlBiC&hKI4_9LWo z`nXh6vx&5+uLO;e6kUTE5$WlM)%VU-&|7S3jg7bKy}<48e?a`?n=ru?EZpGuY&$lY zX}oD;iUhwRB9Z@1qNRu`;1X2)=$3u$CX!SK+hdokfxShkln7@7bYD{tRP#0pJ--|r zO#T?9&j*^rS(_O>8A1aWN1X{v!uGZqnhBYV(bn$f;m#Z~gPsHu0$Pxdf1H9y1;M3$ zV@4bM5T>K5P3l!&Bg8v~NTl#KyMj{YmZk4ARE-b{`hc8Q$V0lAQg=94P=~ZsiHR~8V zUit1tciG~u-1<2PO}}Q%rSjf&-p6g;lq3X*ga1UetX7gbW?H{A^#n+($-t(CB~x@m zxCiI?p~X11+P@iLdwjm`+3(MDVe53(It;YI{ILRN1lh=1r@j6c9X7fowp$6gCFs@8~*B?&d@Mscd#|-7u?@N=@4V2ubb{7{!)r)?4b!!m>&Hs z=s{OkoSAkiE&8E60cc$l<#ENX8GkXfb#l-P_&L-%K9XN47liU(KJ8(v(VU!bI#pwQ zbp)0Yw`U9Dvvj;%>1sq(`Mj}MW)Dr^Wr}^xFLw!QlJX~Y>*`G#%!UC!u zN3y%La(;MmBW|dLx&rI_@QB81|c|u3eFho z(H+dl9pilNobAy3TXsuAY#A~IpCLKZd@%Adp?IlBePF*wyGARp{KKvVFJj$np&c(gKbUx7@M=1A+!s4+&SRq=}NqVp4-i zvF4P^#G~P^bj%osV$bhEm?60%D?&ip(v8_?VdrH>mcAS@VrPm;v8wi3lC z5y#Xwi4bu_KHd5^^U^c#4(AHOF*z8Gf@uH3{hbN&z9gV41Gp+sI3cR!Em0M1s0TU? z4=8i%5?~ofiKVng&B^j=BdY&Vu`A;t;+S68#<;%!F-@@Rhjo!uAFmAVr!<_)CpBHq zN^nl+d!s`8DBu%^!%|*D1l^5rMQ%8vxPE9(X($Uk?)idxG&-)y?jHFSTx4Q}huNzY zeYSvO%m&ai)`?`Lomk?DwlSrQ3^Sm3U50Ytm!$!x1qb~XTavncP&koM(5YT6miB@P%#Z|eNct3v;4Kq*I~BFmvY)(E zRP)=!2zW8(05_1x<$cBQL*Ac6rWZ6TVY0$JJQe5 zUO8CQ!k02BQcod^g5oRf)WQ`1%v#Tqbs0k*Lka5yw(`#S`xyDJ+2RRk8i+k6I$9+=V_j2}`6KN}8+d)2f_5qX{9fxfqx-j3`Lu_$8`K*Ub*;*^xH8)S+dP>$1EM#@-<4K*1#Ux$^Ysp2!$YA~%7umzmGk|gJ% z^|0%IXmQa_BMn#w*=->O&2Cws#3{LTO9{TW> zKvgiN)q&G+bvq|lsVlt{XcIIG+T!wHO_f0;D(e?tkg$Tm-yQ`_DP<*@-?eEFQEVNw z%E#Wd<0jSFh}WbcS-hnog-{$6eFfW4mdXD3H+w%`yC)!1;P<2)F?(5cKi%NT96!vM zl?Ti&|434%;kIarTK@wlIFo*YNJ+(%pAv)RN<9 zOHvGk{AcyNVBx{KZP&r;G;&wHYN7YSS?!Qc7FTx^A&DH-n%-gJYn;~j_<=Gm*7>2l zq~hogh41T0vD7C2S~_ghH|ZgCC&bKqngz6?IrdT9tyvuYqEQ)@Un(OlI60Ra6MY`@ zLf7EYZ~kXhyBVLbT!~_ud7<{7Q81)Mp|P4C+x_re{DODC8Ovh`|UqGr#|Z};Qg^T8?o z=hGKZcv7d6B#?6Vo4GyxidMk7m2l^LM2+&Etut^~eX_V1`fdmlnbtCv29p)sVL2%s z$y=Yfu#lOBYJ~9wDwqh|#U^WINd4z_s=srx5KMq|&;8-#ABb{N0<&eMD&&u@Dke%f z(<=uz>UX_bzQ+TS;Qn!ikbsKbWx$4sGWD!qp~_WT0UZjHNbaOQ*DkQ542f#q`v+pV zR>dy3RKRLkx~IQMP+}gc_XfnB*WlD3T28%D!9YcNvbrC#IG-ivyBv|$g%6Nd1eDIA z3Flbdj33CFkjkHhOej%8pmTr(3~($}b~}e^N9odP`9gL#o2VO6E+%&84lNbC9)H|x z-TO%rOw99~-c!D&21Jrm9%&0aT=n_{Vbp-N3wmjKdjzjWLYHJxQY@lc3_R@!blHso zWB*tnW0!b6UJl(I-hnWINutNE-_5oy%~GR2VmK#h*o_3DNt*tIkXY7<7M8r)2n=s8 z_8$h7rwq$#7D_GE0*{v|4LrV#lazwtlP4!&Pe?J@_sgzwlK zMMkOkmKJqO*8?c=bwi9I{SYX30$I!%hHvb49S@|wmx(UNehqjI$7FtntL)@bKkDAP zY~|ui%t_-Q`FxgYNrVd!vG~AtG#}H)p@0Hr=L9C`jlmp;(n5QQO7k=#c}HW9>>+?T z8YmEeEF|zr@xud-4!S5|LdH{9NM`ctMi|REBdTi7_6VwSP4T?pJ8qG~B#|9jiTY;{ z;s0`ja+ua_;9)bcVUIxeBPPeX^lmfdiMb_>(Q{-&ya~)a! zt(QFN+%+>Fy$nME7G2=R+kSqAkutKd5rHm|wIW^^$hYsRB9&s`giI&wkTN423nY+U zUMZ>oTMcr_(!r=ee_J8CCu5+@!n;Juizn`)H$=Hn6xAc=oPrPGQC0OHu110iW3{u* zAzH$8Gr+s;NnzdG5>PQIqou7z^J%*zx*tr|8>125w?c|rEf;qtDIRAf_hrGXX#yuhp%m?Eu)e891 z`%WBWA@WZ3;ePo?k3Dtua22&pk+KP7wi}54FsI0VzZO3dAMKBN)=u!@rWPh<<@};Zi|OBZ{Cq&T_n`hy zaI`hXmTtGW`gz1$@_lNAiX_x68O<^i&Hfl7(`t}B3Nlm@R+b2Yp}6NX|1qq`E^a^v7- z-AQ6O^pW9^E<`imj zc;26^T3+ZQ`Cle2VN1CjT@P~*uMG=jxQ@Y%%ZhC8G4^XWLnQOI9M+QqcO+dzUwDPh^xLHL&no~ zA&KJkcaIzKFQJ4y3?}A7^7K!G~OA;@Tqi zlsaoTpBqA&Ub`!ui-IW6%quV%kXBBA@}L4=?#^@twn>L({+f;T3UAaaHU?$`zBRI$ z^Cb(bp6ZiN!;vB(zzaM^Wy{&t*%*sgEL>TYsTE9vGQ3Er5gwgo4sO6Agr9(X2ts^C zTdhR87s|@>o<`GSj+L0zbnUbz_(Q&wE3TDebeALmdnVsfZ#VLjik}k3Y z#6EXoJ3^#1i^5!eKs_85SRvRv9I1Rg1b$HQ{DMxyzpF|h^Y*s|Me+U^N`l2k@U#|4z4|3mg5-oAsVGhqqZxlh#JBJ`d#Sb!~HU?-n4fi%N*WiIoNR<+mC`ni5@tJ zm6POcDXd8<{zxf6C~Uxf0b-e0w_7tKD?pRq-}}M~PMAigRN5C?VkGO~q#)4!nrt5@ zt2RDxocT;9sAt7(vQpaCp~bU0ydRh%VQwnagQwNm!>mvVG%P9vmt8ODO&ooan(g5@gV`nK_7@7%%$)xiDTZJ?PUg^%ZXhi*V3$fMvlZp~dE{#bhp#c_ zkPf@aWK(z;x z*~lx6s(HSp%6D{sWa03sT*83_uGV0m#-Xqy%F~A0$Rw%|{@AerTp{rcR`Cj|$|BD7 zGvgPRME#BOVLR*^McnQR+;`+uQd=yd9c!CzyBeNk7_Ui(BB^xDO9btLjej(fuo>0L zn%Y!6979fnaf`IyH;q8|I&WF~Ublw5>gYqxBpNfpH*1{@wYIu z>85wW5ieKx(=9LY(1$>gIW|XoA~U68<3{KpJLFUD8FttQY+sg$Yp*R|BzIyp&-p_( zI>=Ge2NhVgU=N`$AwZe99hYc<4f}_Hhrh>4NnMcPm0!vAs?g{xGDJlaxEw{S7fIt6 zl~GAnN*GM(aCuhb;%TmA-;5gPN;i+2(I*dBWE`vifw0=Umt4 zs6od+nJR_7%C@CnUL5{tu{sEQ6qOz);NKv1M2O#M#L41s^~DeGS2OnlD@a2?isLM_ zi}(WoBsV|+1!)jaQ~>19DfBx_9q|7@^k4x1Bmg16*v`m_!P&#!M9;$3)Q;Z9SXBiM z01x;MG&@(+8Ltm7NCVTnjphnrP@1% z?JKiZ(@&kc)z|n_P1n7TDXm5k=FYHh%QxO;$3^vg^Ezop58_oV1J`zgzp!SNEjMn) z9b@Obndr*J1i!K_X zV-3!?3|4A0*yWTr*3$5tUn8K9+Fub@wD92j^~5tJQd)!E_EhpP8yc+GqA2ApR-tjl ziab!j-Vr8paYJC@|v?Hi!ZENGh8O1j?n*oFjbCd9E0w}>m~ zff;0dQ3GPGsyiWIPV#@}gf&-ayKVie^)+d2cRA(VwUQ$UUJtdd^4z;o-{}*|VZ9z+ zU$EPb{3V=krzZ`R-}-L7y31+R>B$?i_VNO(-C-ru=lD9xKak*r1NUN&C3`v?sA;Lb z#!cs)D%B#TU({$}vQMGS5k*&3sWD@Krwu)f#TiT(3BB@h&syt!(L+1f;&KsXqr1-v zw8u^v$fpX;5s2vb0qcIwv(wjNiIjvae1d)}L!MN2qbE`d)yz#KQVJx8Pf|t{LuYIp z0>iA*Y>u2Ic!pfSIF%}LPAHDZ27=gc1vx@bnGtFeNo%dOHqyay3e@piido-FHaFC(0R=Phovnl6dRlN zdxHTi&yV%JgQ}?J4ti7nMy+;60@Zz2uzZxxxCD@2UtdAmY^$g9YW9qN|BLh%l*uBB zBn;>sXSe6xR`HUKC3>-6+4YzTXkFRN=gt@MX-xF-)i58+g_mmB(#hvg9}Gc0N_7q>wgK&P5*xht%4K)K>lw+Gcq?Z zva+|cuyy`#Mk{=XHu-P-pNw{;rLBykj_iA)E;A-fT211b#I7!*N?pFaQL+8U>X1i~ zo^%j%O+R9JxN|40dcOdNkQ7!!XXuv>D$Z|6@ZeyD<*z@+Gdel<7%lIQ>GKkho8zVr zO{gYCoUMG@dTxH(hcCqvjI6BZF=8VlgFE?(9;X)(dm4nqa3Aj<`4>KXuS5hNb4+WM zXfMs#!R@UTwX^2Q6`oiusWr_ZLAq}8^1a4?FyP3Z510S>=SbBVXR9(>p8bm4 zB5t>PdJ^i#%pVinC|`?iYK^}7#`wj90umfvkFL+c@TRtq2Z?S>4|0+tL_d#XsUkOh!F#%#X(1{Sdyo zUUs~c2r(0ibwAzLDOEkaJV{^YdlZ|lKzz=XwCOS@I_72SyaP-yG+lxCEuq3SLszjTvtYw>(vsS6ry2||Jgtf?osA?)^P|-g|nD{fV zW0c;&w5?FPqWLx<(Pg@bb;h9gA-G^R`^yA*q&XXA%f%O2Mi8O-zTtVhCPluPbUND# zr&g2Jf|Xrgy|Ksg&vWw`W>jwZayvoo@m0DtU&%CH<0lp`j$0N8MVi!hn{IHs<)=Wm zZADB;k4_$yeOGf1{ee>L$=W`ug*Y}m7)9WGxOO#tTBbIh@>2};*rXu_VQr7LVX=!W zCv#1zMge%DC3mV;M=_rbRW;kaJ^mSdjmfcYkVIA6L<#ieTNhjV==0(>=#4^QxlH{A zkraHXEW5^GFkSJ!K)lxGMCEc*x_b2BID0s(755RCVDvp$a;rKI#>{h7Xuj*oRbp_IDmH_0imitT4|#PyfDpqPG`* z4W#ExGKebuR}$#XyRKvf15#BF%9Kei#oL=;juObl>tk*^q{((hPA8nmn&HubZ{AP& z-IPa++v-(=9%NXlZuL4$=7BE`BAigKpEpXfoxp?dXHF_ZP-p-t!5sW2o*%LOMU;_n z@gZNIkocPfxT5_fq8U?3&)%@^*MhvV%^i3<<_jMtd8VJh;NX4XDP#zjL&wQQFAUJu zLZ1K!CLG*20zn6OE@)Wcp<`RzZq?7l0@u6y@7lF45y$e@6%iFtpc6bOCHLXGZ(#Tjpk2T&P^%pp@_WD0{(hh_0R z_T~=wpMFXccP&UpU;z-=$K+oHuv$_9Dj!n8qF-YoS}dLO zQNpMVU{kOY8V0fJ@BtxMfsnjnw;^q4ac-^KyWC5xmY)qSdZ3V%iJH$~SKpE?w+XHNci3 zZx}2|2Vr{B1#?~;E>+ktq!7@kBDDT0$i5(J+^ z`7V4o>u&;1p<|m{6ht}+_L!F`?gj&*Kza65q>O9>W6mf7gJ->Dc3 zqTDbNnczOoVx?1yS07_F^f&_V7`DJ_dI&@i@*rSuPkKZEzWy`09r@z|xA1JOvWcDL zT_r4SJ~ywzfoF7TDibZ*YXoG)K%~yB=|u-7`{mFrirem+F~`cIv4?*g$y<=oQv*rcfJb+ z%$^V}z_n0=7)+8f{}pJ@nQ%W7LjYP0)Ug(V5;#nfMHPkTj%QCIrs_JVi(wiIicq%IH zoEOi+%S2+439}fAWRa}PIEA&I1qGcbbk-}bgv}XpjBW;7MrGdzA=TL?#PJbw8V(1+ zQ|OXd4o1MDr_V?%*wK}{a@2=@+V^5A!dEm{DjX*Djd}8s(_8+Q`}t_%VJs^b8?7)j ziIo&zC3--ef_6zmMx6;pw==0E$(xq;Tf9eq(Z)xNr2R-8?yW=iw)LX_m(BtJmJb?y zl()Kt%oU~^WtO;5(3018i=FS8@(6+VqA?iuXW27*=>i)@;^ocy>}+&r*XQWk#p`-6 z;Z#&AQeD`*G09_V5|rJ}HfZV=9<)xXn<;OgM~v{a z1x$M((ejEA8ed_U^}7xx7;D1QLykKVHm%C}F;T<@llxbybQ)C~iSjR_m&j{=FMqQ; zaH}t}B^F{<^#fxc_>;{EVhRCL2q7&r-qFw#mhV@N=RSwJOxc)Y=FPRh40r+Pt}v&g zVE8vO95XAhNPx&Z!;O_xMg&QXN=qpQ}>(+ za;#Mc&ug110jeHDpDIPKr_hV2iv$;{JIN`SWN_^ewFjuO@7K=oIMha(JV%ftn+GVh zfZuSIuXmYR@5M&$sJ^w!4j{1LMCiAH@uELunCDd$qs0o}R{prUN+~84}!>8u7MSmRfck0p*I>RaS#s zyku_}$q*88{r;^ykj*C&dTe$dCi3$MemH!PS#xT_75{VmxK&yHWkWF@LKi~uX^AKl zj9_Q`pI*q)^_yV04GgvA=R*;j=Ew(Zj!3O_9_ArKH=*pt75N02t8ExUc&w54je(9e z&Ysy5$fbF!dOrVdcilV%BqURRi!W4MFwd#Ml)yhj>d3o);V4*_GxtwxS=nR>*`NY* zQ6g8rJM)!OgN|)umYKV#EbB@9yCK}Ezomii;)rcF&Om5<&vfI0{T@HqaN%D-u8jCm zazBZAWk=t$-E8c*Qo5=asjyvju!FPqicze277vuhfsq#=F|8guROg}kI>8ZrYEcbP6J37$+_oI_1L59{ zT-Q8atRgDCTzvF~zSdenQaptX&NbA%#{|O&gWfUnd##-Ps6}QXiETD8?3AU2$n)ja zmiG4Q1vXK{Nxu}a>A84x>#`FZo5Auuh3QMJsvIBSYz6e2?_JzxuK=_2AM*c)v2w{? zxhTN{0RQ2o|6{BL+W%v$cOU=&{C^p%lIV|Hw&;J^YQRObN%>FwXZ$~G)g@8Z4p|X3 z^yPtu++mRoDSC1w-W+3O2#magnV#AvGQyR5SVTv*xLBCmyZH|=3u+mis0{=*)fDXB z2j)$?li70bUb{Dzk`osLm(oeCe7$k_NL(5UuCL> z`^#k=4(#nUoyYgp9g#r--FKk{?r-fb4}$ks3th;(flBQfQ~#aN$mk9T<$f{R39t7Q z_7vg$<+%>|$f~!S_v<(HqB&E2(hz4f`sZ(kztFn8iC~}xrmbtlB{EZXI|0CSQO`B~ zwtcEW8qJ#l(5jhh7IzM}A&?LiZNYl2U9#Y!3NZ7_PqI|N&-)B-jf4uHjy#-9wdUl5 zS#0P7y2-;~DzZZ45T;w(7fK#5e}cWX#p43))phJM`THn4B~2UzjpZWNHZ(x5g58c3 zy3e1voo}MO>N|#}X7TTinA6Cal#LZiJQLG=R@Msc!7RI#(Ere@LeH^i)CPW)C6atf zAEWlGl-D4Y3N6!(9TR4TW&>fOL!adFI>&GsYpnri7MQW?xme+q8Q*4D;$^hXL12+{ zuzLSW3Nf~nL4Xhdc0YZVuCprSZ1v>hCk_(k(~6;w`kon+>s{QSXW1BP8n%GTRjIs7 z3hSphn1ZX;WHo7fBUkl|m-K)O89$#|)L=^2P34T}8pegIMFc6aSF%qd7S8^KT%)FM ziQ5FEB+%LX^-t7sii0Ar7me$S-9HSMy;k^4~9@m<#k6M3cD)o z>jK#dL16{*{{sal3o}~->;FPQ?JnBnzwv*d5R)P+ zk0OZafAfi!^elw1{c9wN36~=w4HG2}F2R8Ny2jcpbK3@S(4de_z#lsZQmE3uU?@(> zus}4D{0sF;W)sD)-@>fritSQ-p{etM?_q}JrZd|bnxmxHJh8eG6Pxh;?91lR_FDt=@#|W@d?gyeu_-- zOBR-VPPzUbs>zCL^I=X&riXiBJj17YQ^RF_^|K+;$vIvQtD9wsVz~v^n6tl>r$X`-(hagJZ zJ=Qg?GjV;qqP?AvYa@awVPT!;WPhwh8E8G<{(fa!=R=GMY1~yOp?he@-9)u803{U^Nf4=^nQVU>s^`1OlW;Pc>2;Hi!+zRmnp~oVsyG0NM1m`Q#Vf-%&y$C)(_}c>RlVLG z|E}V7a2*%#7V^cxP)IIM=fYcX1B6w?%kr@Q#V0VQ_|8pG|JEzfcA=ksX0)vuD6qM3 z$hb-%s=-HA&|t{IRlfAy$*+|QM0?jA@!3hmEa2mlS%m$w#t9@7YV z>xx}|oiG%FH4_w*fU(@l$f;S#Zn&u(4l9r?gabo*tb-p|ZnEzf5DVfML0K;p61Cr} zA2cE<-DkxC@P&DlZH`5@?CFFiPPU*8fDW~e%>cY?Led+7m`4{m21H{CBdjwlH)waP;^uM6A!EO>BPRKjZ&_NVCR;JkC1W_jT{V$Xgx0U0r~hrQ5QC zD5++3hI65Hfv*50f;)hH#K=R2T1nNB(DybJ5%NX=0|zH*wc`_5tf7LtZ zblr^~IvQG2K}3iOr4?~BD?W*LY@T6S(ZnHp(r~+Zb{02UxY6qC zr$@QNzjk$@2=Udcy1hd)dq4l{pqqbZ@u;Mf~UpgRt_ur#G`q} zF-7zgtUJi7mUpnJnt8J!Evg`z_u)NqhPUls>5*G_ek++GAXQ!_nYj5BRowh!oln&r zjY&tl(9a;9XNnQEfEU0f`5?q@f2E1j0OT3kMv-k}7H+H@bOn3CyIr)J+JxTTD+U*_9n?aeVSZG?!{p(V(@ zOuN0+%+{E4rX-F-Y7Do8a{1!sGJ;Y zL->3IIlGYF)Bor$f*eVeL%uItGKT4(7cpsuMf5vibT(r7=7zuRg|pt(gt-3G#k;h^ z#~`Gs(xCml$>C*BTu){m6$>UW4yv9HKRP6b`YR<2;oa}j=f0C*dACVCLtFUH?B&bx zB$NO1xrS%%@qKifj?NEvserxNmlHkmQF0D!HyCkUK|1bF2m?6hoD!$Lu!3d2h8^lh8X}4|z&qYsDaLHoCQk@U;bRp~wlJL?RYF z3~a~aY_*_)Bi69t!^JLRMNprWD48J%#BB9WaiR&Crkf5-JXg(bmVi~bIVbpNiN?6< zhA}+GmbSSEd3A3YVAES*jR6H|_`7}1Kt5jGop9=vz!N;mTL$Zd2a&~#{t ztd-n1!1ZMTWARwdGOdMrR>t(D#=o&=qct`w6G;m&X%i=oO6JU>hOLI14`Olc4A15- zkURl20=xtHfZ_x9*EDdyVl&b2RRi|Fl4I~n7 zAQYLi+8otyWsTQYyX$*rE_<9Bnz}#%PdME901NkWS%!f*FQ=NCA1e%;>V{ri4{Gmj z_dcA6i#T9kgpK@z(M@4(g!ysXK;q;n3TgUo zXZ8^+W=B=*QOOfJs^AJ40?7||q5*BW2T7$5boPuUN2ngahtx@Afz#UZ-x|YFK0KmK zj7E@0$5ZhyHEy#ocXi)m9YSb>3Kd+?&I0J@Do;eyi*33T8il$n#f5C-Bg4Z%s zEPcNaGt@3Z2oo$PMnW)_t*xH-20!9pPosGf8TeN>jjbWfeLXw{kX4@n4P;Wv8U!;! zU;zH0-*W^522#g?{SL^dmw;`T6w%_b)sWw2ht%FD4GSMj9j%6gcgL?s3pST(Qzw?S z3HBR_&eyHOzzz@P^dnTV{A1IWW!atZJxF?+-_6hf2Uc^Cp^>Hm((BIISl*x7Dcwf) zfqKN13W-n?wP@s>kgD$+Pf)-g4g=W7Q4O-`P6&-0A*WY!=U75IO&;8L_mjc999$bF zmRchLnY`9MDgRM4#^356`0E#yvS= z7fWP)Qe=oR;+~1Sl^w^Q8MzR4@UqSN8*{VDf@_B+;b5H*cqm|t49k0U9s%zezsw#E zEv+o`FQt1pHw~E}S`_my)RG^}9So9L4B;e?t-=usnnPhe+Eg>Y`(;@?Oy}ZC&l3@i z;WW%iZ%ts-ct;aD{p3G1?S*+U-aBM)swNUMGC}bHX{cHZaNMMZChO?l`r7cS0_H}~ zCtjV%w@c`z-_NW zk2F-b1pg_3Le}Sg75x-H|0#3+R{)Ku{I38K`{B|5ZvkXuXKUeX=lI_OD0w&9l4)acsfJEup%xH$_rEX=vJL4JAa`_Y zYoKA7?c|t^#&xoUdocPIeo`fs9iOaz2J%l->^6rZa;`$bi6x!qS;{B(*|il5qTaT% zb7kXauIu{|upckxb)C{aFQQk!DK<9^aq`bEL_OX(Cozf)^SInbOc%0w@$f!H#;2*j z`s^qsK^#d%22C>J7TbTk?p@>lc^mE6{re|&*)xA9UP9E`c%$c9X?1j>*lINdB+rZY zNtoZE`A1o^BeAs7H~!&dqp9A^Jj-Q@i`5dxF?}m1p(nEh$7k@G$S#+$Ru4_kY{kO# zhxq1}&)om3io~M3!wCP+gWp%OlA4NZ#^zU%m;9-;n zO(|-yd2G&hl4R3A);T#n3(gY77UkZc;8g3f&(!j%uI`sAG>Vi!;;)cBiVbFrGGm;& z>d>9btx=9tg9Sw4+!`e+DMd=qe#Pr1Ee$j9t`(BKDsqRkoWCYbnePQP>1$d1z|j%3 zj*j@gRdmI1G-xMB#UlxUq7&RO+9q3=;~6G~m}P_8X_Rqz*2&%af*3WZXXp9^f29|j zb>74NEPSU*HYzKnck14WThxSO3zGA0mpU=E96+QSrr%;k>z4~(ZwLvF%k*(P!o$oe ze?v(m%#@rx7pb_*wm$nk$`VnJxTna`)CsYn<@LXuV%rv5W@T}KzU%{t6mIlz zL46DQ%fd%ioH&vGxRqE?!BYkFM#>M9WFQgY zI-3~}8R69byR^kn2Qf&FOfa>~<7@sg(vIT1jT_4z%*q-+TLd-E)AHzr4H==Em)!d+ zrNJR+hLOL3Gc-86d-HL7OaFF!KvSGpRQ}7vD-bXBEDFw+%2>)!47K^YND%4k!~JEZ z+tcD4N0)IO4E?S#8FB&yh^Ko0uT(5L!l~t$#F3kym-~%iw~TiP`b2pkdFT+2F(;nA99YgcsDr(is0Pdk2IrD+X{(zW`*MMXlqj7V`LM z1D8#;<4h5J2hYQX#O*sSL}vK`0exz$6H`?FN^&7UHd)`@WxuW?D;Nv#(_C%cBO!l4 zY-Wl<1o89+pOQzpL+|JyF@o@wT8(=K}okge0wk`rs zq)7b-kxBrQHyh;?dau3D49NVf)F0HGQHsnNDUH=ae?ZjFpDY7?C*4_03zCj3KWVH~ zGi{oMQC(%G#GL|2Uo4BRv=RjkI~)picS1$jK^DJ&@z0|=J0u;x)L-@tJy7VAor(0+ z`%V_EjhcYVXHso#BrR#dx^;`s)^#hFSWatQ#*`ozcc`ByvNme%W&}-IniHHul`FB2 zPRu<}t179KhQj6>kjO9eaJ9x2RuA(Z$Z&^Mnaq1DbTEe;eKq$d-#MT?Eku;#Qx8F6 zoaW+zCC?{D1lISE<2q=s;1_y9*Ldblb>%8u4UYyX2OZINo?C<#qAEhCPL5p6L&YY3 zX2_F~A_I#K`kRPYlc7fxvJ@F1!tzO=9&%1My2A?LhmkXrWe0(Eg>O;&{ zt+rsnh+WZ~szcGuij>6S(d}M4>m;ZABLW3v1nOFWJfiIb|4tIO`~a(QSa-9YHeGo? zOrIvg)!FZvr|r$?;W+simI-<)DKCq{^}96UL;vO9t%X0Ub~5}ry>NGl)smYbS{nE~ zG;9KvWQy)+dTsU;J5sn!Gbtfjui%|<49I&T116-yh#b7*k}J6p2xn=-Q?J> zdTFZv^wecC#&g4Df=%|dH6Ybzf)zf0=vqfuRuX_!HIXP>{TW6Vv(3Y(2z$>OZiH3; zUPF>@K`3JETMw^|`=$MhyU+^S22%i4C>D^Y86?l}{9zp%M%z#%fr30g%$qeg)b;yGTjwK?rItf{WnhNh0%z~5yi-X%b7sV~y> zjQ-#}e)GBxVNaTWXrl$wvNpZmHFr&`Isw>}I+N=`CA<(i1oJDbl$;97d+Fa5nBBLM$Gp09OI9(g7<#~yoP(iKkW zQM(Y(nDGjttTj7DZgDg0>kq9)k8VLkDfQn$&J_v#qSQaY50LEN1ljOa=VsVL%9Os% z9U-`E@IQuDI^T6@Xl&{EEkt>Yb<$1lQ*69_+!4eytPKD^kzh&efI%ugCixA(L&gS} zu9(xM_wFtzBZFoHQ6hx+_(|2_%+o(_LR&jc;I7>WEvkE{H4z)b8yaf}|( z{r2hK#}fc=fjWHW&r_no8pwp5@4Ano&O$dO=v!5OwFJgG$lFO_={c3E*1@{XEIxY2 z75VP=<3KRHWqYr0>fZ)d5b$AS&@}?DCAjY^wW1@-t|92|B6*@v4BDwmrF!raK6x9z zwb0mQc{@+?C@Fr4o@@ck%^<`gUhNnyJ%zlLaSkuA{~4h(;77iI>ZENl6OGgFV59#~ zX}4sMB!R`_ELkD2%0fFisADegk4kw)E7&y!>biiZD^{qWOOzDn{;Z};IX}U&vN=)! z<=rpFw-SvTj<8%j;6fWGo(9eV0GxNS7%emil^4HjltkT4zRJEQN#=2z==VD*GtVJvj!=tsN2DR>~n0Tg=I$){96Gho3G z`n$BN&@_LBzow^VX>Nb$9WW-Iap|93aUOx6DHh|gZusceN;bsjq>|zv}Nk*Cf)PMirDEm zb$!2_xyVuJGD$mv)ppbYxKh5r&~mitA-tW9V;6FbcgKpqti|8zKVXBhu^1@Hx>odK zqh5T?$V=AE>tSd>AWA#^`+q>qsXP-3D`)_K|H$?K7V;tL|1IRh0slv>-^kd`%J%;& zWJaAv8OQuv|JnbSj#pHn7^jz*scVoBryU!wRdVa_UVJ?6)NQg=p(q2HJUdM}NisrH zqWX)!fmWFhgSHq_v0`RLn=*2#}$lzN#0{-=G|+m^7J_KQi|J|YjfuN$DI;k*up3&2?a&- z{Ib+E#VCpFob>ec!qk}Tq*&GX=(PA0Ks`gtg&$dmZtLCarK8l5jXQf2fMpb{1oq!V zwV{Baqo}1L?(VMwCvRdN;P0fbBLnZS&+9%i?(587CwF!mWPYsvj0j1jL`4EAF#pokDC7TH|101BeRls7vNeeNAAu~)|9^BX!yLWI ze+b+E73kR8ToGHnWzW@T*xHjyqd~yre!}y3^|_+c!@{7Wqo88PlTql7Ukvh0T?~sB zqoR`t#H6`@4>ohU)1NML*g6$9jMTtKg3nmuL&;Zv#^Lc~Itiq0^5yRohZfyf*JS%? zmS>CS&G_L#ryJAKw>1T(c#-hrug~HISI!7IrH{juhPMR|4lPfQY8rL}8{4DiV6mp> z%CqU{7b`2eu>H3PBiGmCjFzOn*AmWTI=13Twdq~!@;_foa)s$q8E4^z?erLaiXF!b zKB9iL)z|HNHB}U!hgGd0M2XlIs7K3_fsppJVEdo>o0Kzh2B7}G3`^EQ2L5ghmr90t zKS~^U68&Q5kxScMKYdy~D&1T!1$gC7b;K5Wqx`NN2k&Lmd|^ zK`X%r`h&4N)vdPE=k*7h;KS4S)0xP_`J9&fpidX!Px84&3_-u}BLmJ`s6LOXVC&M2 zf3PhqtYcu%T~?>&wJ&GDr2e(@FrnWHhDOYqE0YUPu70zGQ{0l>YpkY+2QS3C(Fg;) z3=O82#XmsbWPu^6-aymG%qf!xHT!h7xelLO)7QwvgUD?pLXZ(to{3A+*=SML?E2Gv z1$LJWEb#BYM7-JR`j9I{+K~iX$%7BoTt<;!4v2`BR6;XK->JzqtOS}yb97CtiPfh%-cxOK+upCbhjqRTN?|1uxTNDpRUz0%`NoxI(# zkJeFZ2g{aJb*b09!JO^qZsmigfBcL*x!`fUjCOz4w|7O4OWDmDB8R4S8T{HYxG%*- z(R37QSUjPc3W2U4u{m<2_e*>4c7MEPc6_UDXB_bBR|>v%_C$abb=lDHR@w5_m*$~9CDUtxqJDQbCF*sZ*1`e-XeVy@{5leU&k>-$nLTlRo$l^* zSnm96L%e#nszDRMQwuztQyh?rOitU?qOGY$b5M0dWzf|>gPq&Z+64?b4lTaYviDsA z#U-e*`xNl;Y`62?_VNPlNFTJ-qj~)R%p!_2_{mS!9>Mp^kUfRk{Cq<@`uG|&K+Ayv zq>FvcFZvMH-eVI{vka$JRK7f)+$`$1Eyb+TQfWy?opv3E+U zpeY`P8 zWAUqYiS`$L%$bywo%Q(5M1ZSA*OATmm%h{?zMy|=D=U#7bl<9rvq=>_D{ChKkU$mz zsOdpiIb`_}@LzeqHC^(*<_msjgR?OmjZ&HuSlNgT>ih7;ULkUzT&co6Ej=?*!!jdV zBO+a0O!_VWIpJ{q%HLJ##g_s2HxGWS9e;Rf!gueBl+jAq@9AWH$z#GN=wkrM2M(^r zd*V7?`p&OJlF6HPBMg^!`m*{M5^Rb#Dx^ejyBg<&yzM*y41d%uq*{orxPeyEDNc^4 zFKhntjp?s3SAok#NmpwgPTmb=U{0UzeChIs1;U^7wTPK!Hl4v4nOAEY->hJrJ*Ia5 z{qm2~L(zbSmvGfhO);rLkL`N`JnAPqkLquc!(dshaWh+6aYQJ*kfu^l>Y*mC^17Kz zofZ<-mHTlg=*SGX^?X#?Z_BhjcH8vU{6=M&Vub@81o#BXJ@na{=oY z0Z<(2`UuNMGUE>n0_3R8xYVSOJ9j5^o$Tn#Tp=ak)2F~4+acE0zU$DX0a6jy zZ&8dqF)>@%qA?Zj?9alWLuN%4LbVt@IzGpKQy`>3GY{L0}Sb z=%c`g1uUAVO+FFfhbdrfsfW19_ZUNhN;h)O@co&+0w4yERuL5UaRsD(o1R`cLup$X z_TTK_ygOzG!uboXX@8gRL9~l)U3a)i#CQ&)tgd@JvXiW0Q(W8b06oMu3GdYDAVjku z0i3vUz`R`#|$Eu)Yp(zqB5v>(ew&aIGG%kMU zH+@d3;}6Ht+BywIYz-eLL7b-jy$loikYZdS?2epjFaMK~r@cviRm1qF|JP77jYrDy z0<6uq&hR0#^&!*IDj8Mh#4nbCz{wQYCESFlI5A%CLvO{tnKDq<_dGz$SHQv89H9x` zEz!@&k{jBg+ReF+p)DBEKN!`-`l;Vco&e21Fk)SwrDzONME89-f%ADK3xJd(V8hx9 z4TXWG+R3w}t*3^TYE9Ex=&-VZw2vA6=#C3$3J{V(A_;+t=6FsR4<9%eH2dFm2>@Tj z*72+HH$WN|5XHso_2$Ws z&HfDYF{EQx)DqsGCIF578Ja&$HT*S$;wuBOQJGW>rUvOs?Mg?bfBw8dp6B+W8?a2c z-uN{EW+FS$m(f`I>}Ggf0bq*@8~jrg9WKsTN&4#D_J$gsU1NQceH2%xaKL_D0FCeE-?qh7{KOoUDvMV=+ZV4-8 zjB}OA3untzmT)5m_fB^@&3UsMYhW^o`HtBspGJF_%7`$BbmJu5%U}v* zrp5aJOZUb98?h4Tc)Qa8rYZrgeiqAU836M-_GV;m9(BrWTb1@$t3IN(n%ckFK0SRAJ-AyI{w}9y73gah1FXZ-f`+fQ2pzl{E4j{zfDDn`qVeM6l;&;` zf^&so=VZUm#q0(K$i?3Q(Bu#^{SjxvLV^WveEIU*#S9+3xw&ac#DigJ+}mD4X5|zy zV`O8xOY%?k8G0()0zSRkK;;C)bZR$HE5Cyr6|()On0*mhnIpR)pm&nFF(`JVCB zJn&qJpLW5%BZfG=g(&s$v9X&g=0@ zS7_0{d%myr!kAb4gzjW1c5HVDJ$M^CcnfHeulKoc3tRDte#@tPa6~Sjum}(g4l^pe zOHWqY>uXEHTfwbqWTPf4Z6gj&yqT~vp^2%2=WmQtL=V4g-Rvnkx-j4GkZl+m|0(as zbXW<@>!VM$#&`x+XdHt__1liL3@feO!fQlgo;#>aKxwF*0_aFXJ8;YK1BoO`o-E{e zz=1M!195SGdyd8_`?01J=PDC~>953=OSXM&lwOLl6dL>elmBtP3#!6-?~}-!P+2*o zaA0}Tn^3P!h(uOdu^0;R!De4)KkW7AAZkQ{IO}4Dpcgt9afDslLLBm7y4{*$}5hGJ>cg{2z zWFkvpl9aKcXWag)D!|J^vI3bw@~D-?T{7Z*rjIK6@ZC4=A?G#><<1%|WgB4de8FzijD(>5X+H52hai;K~+4Z!`vA+f99b(B( zv4d7b=y0~Rn#jORB)?9Wu*F<5Hi19`fda6C!8DE+bnqjy<4U3|jJy^2_?LlGG~A_LFKn+a&?XFF$jQJ!2zqAE1!~$S ziC7q{=FMp}JD99SGnX)lctYqM{ZNUG5{}#i@F`}Wp@!Dqz$Z7rr-L&wB7Bx9Se>FL zMl^-mY^aXMM+DKE71d_YJ>Mj`+Jc`g9h?|&=>jAk197t+!?0vWi2O`Ab z*zgQEzj-Ni8VQL))e*quMHuCe+9Y^p1I5Dn#&{&u%1bx3mEG-ckZzjOV}pZVi(Qi` zn7cLY)Qv|K!f(gK#=@H-*F`L0$oK++`Lf@;gKDZuYeIu$U-CS2w*%TFbTa;X=2dnH zPTEUV=Kx9(DM=jso_;Wdde?$s4O5`{qzalf^IZ%jN9kO51m-zTm3ic!__`4B8{3s_<)yke$wWv$rx3_ZAIzmm96S$o`P!)R49}E~Y zoso{Gt>Dz*K4AL0(~E=J_yoetJIZQO%!DQ_<_W8&i0LJl0nPwkE)Fmc5tkv?l+?$# z#BC2Ci(~-T50cxqM2pE%UeGp|NM9%Fq-8V3-MBT}_irf6$tCjiLYiSW@wCt$2qIvh zyr2KN@tdDEPGdbhE~TCKhf{8uY{xd^@#hO?O4~fB?7FbwEkMd6{2M%OK%M;6s;HyD znQPXw8mTVNiA!A{6z^dzD6o>VL%VMCLDPvrvPo_V+O1;%;U`Z)aW{;muV{~wI~HU} z-*p*g&fn;12{<6`vFdO%Do>-=760WbF2lZTGgU;d2Lv;>VXt)KkO16)ozCaGYOBV3 z1-4Emj2qKdfm zvlnpeEbD(p68FF9Y#{4EC%0o$oB8LRTaE+_Cd=4qCpR#sZ2y63UXxi{b!aWdSPW(P z4XR@jUFqXaqjR{h1L@aobe^HmqY-hGE22n;7$Ff@jFdL9i;x110GssJ=+5Zc3fab% zwFx=9*yC;y#`>i8w^0&Ioya@ig=S^8F2Q7G9B-vEEFc%l*sfO6wyp}zjfYm$XUHxz89p_eOj?aVE;PJk|rm z)-E|*885;X`ir04o$UhtsS{3bdPZibeRrq+Onv95Frm~h4fq_0vZD!1sw!Pml>%PrSudMLYUb;SqqqJkaXsdXrD>n^rG&Hgr z@UD7pTJu9@yss!;d9!}?-b@w1vwVE+3G^)Q{qg}hY0r+10YV^N$8tRMMT>Bd0C3s%uzoh=yM9 zb5OTs&|Q?UUm#~ZS1Ne;_(05Rih3S}$KjaGi^#*rgm%UxvhGKD-0&xX6dTxZ@@6i( zfqLR$(7#3ZEWcotAf#c*C5a}qTNRaz`d)iBDehvfzD4XYLT*fGh?)S+SjdpHmC>3aBTv0%9z9 z?TUZ%vg_Za*m$c$lrx_bN5DeMF;wIN*N|0}ZifvEw_!sqsX`wnW$>fU&YcCWZ6MPm z`w!%#k1>R#C;5p9q~B)E;jOV|EC>C*3SOjrUaeq{8?$M1VOgL28?$S;H`P7aJo3r} z`Ni^suW_jHnGM90!(Mc!sIJeb0;crEl^h4SNYrA46i=d6gNLgQFA}Xo!chhjgSVo#(w$Mk0`PoA19P6kO?s@I4cT7VoO&Tq3n3~ev4hl~FPIMmZFfi}KK$n|USUHxnUx)u^(mB3~e zJI=qQ>F&p5hdlxo48;p8S}`@QiqWWC02R2#PQFw~&$aJw)1p_wxb0+G7_**$9yA|( z?LJBqARLz*T+a3s$jK-K?zX4OGZdLv$yAniqj^z6fC2d4?G48^Av`fm0}BMQ;)aI8 zjtvBZ;0lc0*7ovr$eG*{-2XyK1{eKfrlT$JX#0irZwjlj^Q9++95|!!v`w6vB@@4&jRFoUeCr$Lwmf z2EHh!Xw5Ps0)hzQxq@rWT`Z%335G!JmP`2x;?mphJ?h0-=7ng2iYKR#Y-QTguGc$` zcviww$7k!io%CYACyu9+SoKip^VQVGP2?ROo%*ka?QDr;6n-^o1593D0Q-i8aU0X? zMUI#jJ5sl}@x5@x@MoyR)<@!N>|8s9X&ls*@g zQv|+{$z#t7+mS^XLIRjO!AaoYj4YQzi5}=l`B;&-k=6xZ&h>isQKgE%BJt$_>?W?J za}Cy6TDmL9FMd@DiM6(HTH>!nyPcP*=765w66K9f0&vF4Y27dtMum%*NTFdaP-qs+ zeNy~JpH^AlTDg=P+nf1NwlrDhP`wJ3vSHLtO6_g>(+aEwyACsz#|?27tO$>qwtW&khj0#2+-P)}hh0Mq#R*ZjY> z(zEi2fM4TP!F;=sAFy5l94s=QJ~3%dbGx1x{;^~+pY-s={aZ7q&5;0KiQM?J_nZ~_ zOUL1Tk@bwzl_A0el^sLQ`d8_W8Sdgk7Ost4)+5i?bcM+E+z&7Mm`4VGAOyr#akv<- zOU}s-OUCmLTb6eysePI>t(lJti@C$tMS``dU>1Z(VQy(86$7yHY%Wjl^7F((9*yE2V^-A~UgswvhY|HG!)fgfcbVk;Bu-*gvFCzy5NLyFU- zD9#57OtZOKct<`8FKD#%38a2az=g!($Yn*zh1>X3We8wbeW9XQYQ-{3`uA*3__h}w z%$O64l=8}f_{$r-(dqBo%Qnpo{g&NwE9EJHEUiUrU>-fUb@|)MAV&y>unHHGh`8jp%y1HKs?O7l3)Rw;Oi24e|aPF`BDZd9EcJH z5vFalh!MrKphK>FSWxOkMK`V5C!rm7F9j7eR62IgF+mQRtx4Kg3ykhSZ{pZ;mQIlt zA+!UP8pcXtnsJ(PXOovs;v_0w_nLxr*Ro{4JQ19Fue4#unZkWat5SdR>JI!TSUpRC zxL!UE%AW~gHdEDzO39PxN;>q;8wUnV;2d#WhnwONfO(}3PLmqj^O)%D-7kdT#Q~1h ztHlC&_NjU69If6ylTRlSO!AQF^V5ZHTx{B?*pIc`=SeHe2lMr4%DBUfDf%IfDHt{d=>U47$PrKc2-_5WDF4fn zF!E^t2gZ*wsD;bnREo%fMV~VNZiSisE2bE!roaMX=Hof6uOI3t%mMdTl;#;^G2g~Q z&`p-~pq@b?ZNIg1vMgnrhrq|OC=jt~U!No~?eh*5#+ehy5;$q3un$=*iRA0eJWyWM z7Yrozh4``>ZHmYYwdaHXJ2)hS`SdaqOO`#$vdgaKyy{FE^so2cRr_PKX~s-;x82Xy zIrAyj?5BVBK!Ladxdqq3!0Hl8S?zBS`vv_*jzVC5(GQU9s?kU}%ArKW$|aCel4;M; z>uS}eCeCJ|T3}Tc!Jy4!ZFM>O1pYvLj_f60%2Oe=qK3C>%u9u&Nw)Z*uQ7kn-_Of{ za!HXkI3G#IXLxx@2An(yGb3&H;8EP(-w$1eu2R*zrby`t_L~IW6+yP%PbeJ!gU#GH zwstEY%d69DaE#<`iY489VUl#9e6-l-0DaPr!}OxOOaB69%-ei*fxdl|u|ac`5+!J2 zpa43ob`U0lov6Vx!w21=Sz$y8qYbw%S>e=gM}V9F9w$U&WHnQ(+va{Dvm*}>9wp85 zUOQ@f)Mb`tV?zbq(In74?-{w~1B@?hes;h7l-drenFVFzl$t=3^8)n_twtPle}4YI z{WKCQ4IvXnavu3p1&|r-xM9u+ha4b;>T79ECIbd^yxvYSCmdzkVAM8 zfSdm|0pu}>3tbq%KHTU*L7G(}%k{$Ghk0R?gr*=+96B~j-vgMv!evYN41M)2d!Fn; zk%y|Rt?d#q!iZ?e86de{`EM>eS7zi)S}qNd9=Dd#C&22S|2+MBF_zl}YIugb`pD0) zOVkO!lNzj=eSGipjt`*Tf*}w6TyTFIlmBeWT;GvCu%`x!i^l1U(HSL)-$F?R<@H@^ z$5S}6q$7+iAhsOAyrZo_PA9GHHZ+?1H+Kuy0Z$=iRL7b?nXz4)+jFkThR`%(!3CMM zh5|{FnV|;)HqwX;wzHEP%uOM_MWe3Mt#pS0AkZbZq35R3&M?_2(0bu|J z9oUl%j3Wy0*v=;}8A~1`uz_<%Xo9JPNPSa76ORG!@emGQ1u4q=;P2scL$Fo5}K7+fm{ixq$g(k^^k z!3De`D6CZHY_I6x?9~q;3X_A|-CW@lV~?>oi**7BcxFvhy>L}zaZ;(w$hs#rBIM*bEgB4Sxh-*$1a=^T3TKe z)^Xe~M7X2mzDOvxH}QjDyb9q%=w2N?jBVyl5N6Zzy;UVY+P1ipMe(W^Xc#m0L#uy- zm)dM=wC(9SXvZ#5+$Qcky6d`TBDoQ&BN9`86ptP6`a%~O!@eK59EV3|-6snoy}dyffzCvTsacZILv*7E9u#gc$a*TF zr-qO74?s?!Bueopp3GpF^;Jq42ki{NM1WZ@!5~~(yDFo&RXVyy>UqFo5{0J7u~&Fp znc5utwY+yh=Bg$P*LMGKPJBNQ`+|d#we6uec(&RW;G_%%zDCx-O-O(}B}1XJs0lcG zR|-P1U%sUHIBt1%gSei)v3{qh-d|T9{7}e-rgP`0cfB$)B8JTz`G3#}DJ%$^cZ(3rAEryHfUk%B9$B z;vpW}9elI9A37b9?!l>5CE>Q#d>1E8XB2KuJxa8ewVo`8I#p4&BU~*$)O**bsUE*= z9!JUyhaxCT~yljlV%-p8?+1FpshfBLDt@T z-lSJF1c)J-dEKT|Tm*N4eicQ~9JtD{G-`4bL-C~?Mw&5*icXalmKFaiD~6?3a_UuU zRX9qEXHIIN`nO!bY~uokgI<}CTcYLI;OA#yv~`*Vj2P^cR`f_SM8NjQp^lE-d*zaj zFmQybuIouLoOxnXeyyv;mi8ROVr#?JCtIl(^Qz{Sjt!vu7a>l+WrcftYeX}idwXKD zDimV1NKu@TY}=Mbr6Q`_PP}Aq%L*&^D=1LO_J(`fb|-bJYI#lo`6aU456a3QE3?RL z*dQMU?;D$M(o~tjDr*~Wna8&LV@lxiGTPaPzrin%@HHYOfnQSf$tV*v?0Xij6uqCS zEl(CPx8eJ&mRdOxgamsrW_K_1r#*m9D7PooD`S^~J$~{B5b*CDcv8(%1}Aq0%I`mW zpg%ngU3?l?>6CM0Xx~t&wrVp(rhN|T@iBW25HVc-(rzz9O zrPcktv9vF_x6-EC#%IlXkW8i5U8$rGj^0s(B#s~Oy|~E#EBOichyGlCdAr-((vi$PmubD|AGwHz&(#x{bM zl|@ToPve_scno3-`fAvK6l}k&G?sp#gGRrbKFtAObbi_>_CKGCu-rO}koI86Tzz{? z)I&l~6^%pQ`B~nIrwJSv*=)UU^s1UNWji87|HJP%=5ajCvf%*(0N>iCJ&Tnwe^Ogw zuTJTht&h_{6neKRZUhYNB9AK84LV%DKymBl zY^bB`dptq5(r0KF&R7~PVN>s?Y?{`44@EoCVA`(`f?-Z#!Cp48@is8-cCbhvFpq+j z4ADPIkqi_P=lS+ZHSBM)$9B=Yb>+p|2Q=&j)xHjYW+hgj=#k%T%5sRp4p@9wJ~ld9 zxhDWvH(~5>q*{7)%MUQIRwmybn*&CNeKv^2O(Qv7UisjenJk5>?3p!m-}gAM2km96 z=!5d|i2OB9F5@)9pW^?yoe*J~Kv>wkO#WSoV)%)&EL@-g%J}{~e8?TGTRC4b?W1PS z{(T9owY_s(ZTC-J&G&8W;n$i#ZjXRW@lwLrFgp4P0wD!&!7@K?*O-|FF3?prw3t z2VfhSMu#OH3pjV3y#+snQC+8La0*h@WP{DW?;g96VVxjvsA=Ju z;rB}~?pcYngh~K1r+$ZW`9q6BH@BjM@;PI zl8F>vBwwmtuxz0@;t3Nlh7a$raac2=fyvNky?9{6BR zS_@`4a0ZPDIg>)!_{Ui;6Jse*(s9B#YsB~qO_9pZbI;v}ub)0q0o7vPG@TFR`kVuM z*bh;X{8Jd{QOj~-xCm_F+~LZ6bIf?6drFytNY>(P&SM7LO+SaSjfJ6O-SSnEPexBH zfCy^uD1bf4)eo(K)GnoDbg5J|Pu0g1yvxZ^^#{tQdA8#LDiMM`mBHWJ1p>!OSpo*- zPPOlG|Mo5g#6m~Y@DTlVhe~qtar`>9T}5|&;(I{(IFouML0_|=k&5e!Dc{%q$a?}Q zepeT`aqtsJRoQyA(eLQN;{jztT+=PoLw&+7K~WAC&K+g4pXB;bh-!wU7fsK%X9u#_ z$dzLwDA!nb=nN$!_DqNEpUCL8gtL7}_FA8UJ1t9eh2iI!a2J#Uq7J)}^7g|>oC}be znMWgML|mba-*WVUxrpXFWB z2Av9%ekC6ZGVFiegcvh=RW;;ZF*`2b9Ss%z*c@Q!oJ5hcC)>^SDI?v}P&g;i;goGn zaXpn3PWCvA2SgjKAXFTzr^(u~|0BnV!Se9r z4$7CSw!qFEy?!4G`%rpT_w}h#wD-q2bHqg6lS5*f2PyN1NM2x#C!ne>I2cxk`PJ%u zc;Mhx_m#^=_T#{BE2o8tXA2kG54U+#RLpBxWA-7QW<=cebwx7r)n8mvy=m*{m96T1 zRgJ0j$`kv6Bl+W#Qtv5>__~IQ`2`b1X1HK)WclF3E%}ZNSZJQs`5wd?gV&?JSDQH2 zXN_zg-Veujs#vwMELG!v6a;@j^;1Vv_AWs{VQUo=*5%$?=hG)%b-OOFRF$^(Cg!Un zxedVg)=UMtc`QZkJY~mUR9J}1_*RLXOG2Ld4+|Xvt?u1x^e-nyhtbdg<%E)jQZD*_ zEY7O)SgYuJ0>o}lku9!cv*PKa6-nV1rHG3Sh|X32L;4h`9>ya;W7^HbvTAN6d^e$H zm92nb9iQ*-bFUru-1|pMS7y+?AeK13h}Uy%of@K#&1ZTCPdS~-;=4YvRW z`fC4q`^}OOHf9T+&4feKW3A-ud((XnC(rbRs1H_{ZN+w$obH-lPVG-ICL{(#nf&EE z@+i#>kSg0EBE+z#%s36>^KXn<*CC2WGLsLk1gTJ|->!^45^Gt7V!jlI+ePNC_sb^V z7v0?9hg95G#?+LVzCrYOHE;F7mMKr#94oocc&lz**~-4IKmoOfP;zg;(eMAU>}se` zwko9q0Qe8({(tA+W6%Hq(EkghH?+03vodzmwQ;sKFm`bKuV&=`a+&_Wu<+Gt|D2}B zQGHfx&4h|on9e4a%hQq)OSSM`^mic`16jc21&OfqGrf`Y2<;IEPT+uG(DItm#c6a9 zu>30?6xkMe3QNDCIeE63JJe{z+33(OCeIg3XWwV6HxOq?#zg>Oe;zHyHf~_0rND+( zU-p)U!Z1?gusLVrUhgmNTRJ{NP$DLzt2$gnRb)1-&?W&E9&DS;MGTo;>FKfWlqcZnAlhk07ho)dl7KHU1(5nVEe{QFah9}3$dN)Ll;52@IiTd znPa47LY6=+&#WiHy16l|Dpx71WsS*D7cYw2roAEyOffl>A+;m+w2(eDa%PWZJp2 z6hQmf?DwICNI8f2*3ucNr!ID*+jE^HehS$Ftn)t}J&av$3{apk=ju$dcMxiq9{3X< z+f*sp;9h8wib0=^`oIt(J1-mVI#yl#yA7<^*(qX_ATMYL@bm|m-SDpVjK;Hus?@GN z?2y#C*l$t&+rE^5w1?NfQoxAHlMwhov3^m#*da)9mE%!FJ6m-YJ*fbO0FX(qENQp$ zAzwi&h*+a0jJY#UFrlqvOTtp+*ak9progsLK1cffi%^rbqf+^R9|TJUy*4dmJeJe> zg^UQSSPtWjDLBz6<|?;NGkxm`Q6+S6KAgKn#c)Yo5u~ABlo>nD38l7%Vz^AYz0-kn#$GF=(Z8< zx2&ffNTLMf*roczKD~m+7kKE3inZCMZpYXB_17%R~?-OUV zF>c-U2uw3(Ase=ubBT*in3NQ##^YQoPT9X6b0elj)4sWoKJ=z`%>-TYbzh)|>!g2SnA$Oe4;kF-(Sd1+Bum^w{`UVPG|1@0aIBz8_GV7nyHD z0x>odp2*|*LQx8gh_Ev0Zy)VR)Q!HPJKH#(=ix|*fYSZ%YK^N7dItdO?1yWHW^eb8;9@!LA0;=-M(30YG2BjobL5?%{m;yG~ud8dK)R4d^#K6*c{M4qekdC;% z$k06B5@ZaDW9=*tNzT%;8jQ^smmp+MHM(VHMj}r&6e7FaZHRlTSAPUs0g`((nCYDY z6y^){1V;Ancy}NWtrF_nNPe*}f;!j(=$<(gif9czH@7t=1_nPJp*(|3eZn(n4W8^A znWIQ4*$COo^fiq7U~vmvoTg5k?QT5wueJ^??Za#ck(`?vpSSb#+e5q*BZsHw zb`LHsIM>!u*uOTRqt`C;@5rvdZ*y_ckPh?&7$nl8RTG;Ubc=h>m*`&dqdtQx@^Ggv z<*vCi34u@EMhK_vKu@7BE|=+q^+GBQMvq%h;VYtTfZI7f-%A&iI77_#ZLKFsy-o-= zhk(@`iHw7P`|y(pRwHPEgX`7t9imu?RWKe)?vNp(e}Hs*${&R%rjcf>6z4&85dsb75QG4VqFc}cte5$st1)oarF_v`nS^x+HBC(j z0T3fmV%u_s{WKm#zw-0Gg*jOCW23@fMiHOGkAlZh8Bv#=RA&;S{)I?YZi{ujp0(m~ z9ATQ3jF6?fMKW7pmf2|8*Q0KJVCTKVw5yrZ`u&iaI$~?sbwyUwSew6C+ouxPDK*NJ zT#^>>gfbPR5`sSZ0F$dM6`Q;ZhJfh*sJR5qDO0JZ-0A_WK{O9RwKXg01o_P^)|YS*Z?d`3hnj-;lU<7m&<% z3Aa#x>vRKo;nFuUPcmG4TAUa>OeM4MkjvyPElcy6Wk;-T6DOVC7}cUtsD- zkdcr4xU7~CXvP~d+iKo7v&({8E-u&R_W}w<)}Y=O?9My4iFI;f0t;9hDpx+3BA6gP zD=A;r@OpEnHBmO6pmEHfJo|146DGq|hA<7l=&uhn(3cSyVUghIiOp8C{_npxnJYL- z>}+)omYx~i%TpVMyR0icuuSeK^Ao5ZrZKSIc{o_#LZYS0dvw(E3vm(yaXt5;Z zz1y%B7+nUOc&xQ(F+Sl%=R^^!}ih}OUK|A^iM^Bh4^E-anvXyK>s)-C~|0t{0D_(){_+zS^_=_i2C&^Kq44T(RKk)0g{MviIDh zWcJUKzL^4y%N+|)nW1u(j^f@WzL~7%#2m&5$=5!F1X3DY1MG@K>(|qw6Q2W9j!c;C zjD?dwjkjrKGea?ojFo`mpg&=_elNnEuO*5Md^?$?j2pv}w>;O65mPZhylT@KQ_M6# zm|Ag_(hDJnP_Y#rdtvWB>6RVPnso=Vx3L$u!72wCvFI>ADgL z3l^G}$Q@G&JjLi)kEI*)gb0Bs7`g_=d3^8#$Bd9up{|z!`o=Zqw-k|X;;V5MedDbP zhfA?HZ;=M~FaM@;whkqovTH&UXwQ~kPg?6;A1!XR2>d$TdRKp?E#=1RPT5k4QRH=Me8Mru|Fm6{pD9}~mn8))}v8^71ly(A8BBxCo& zsUGy4+KSW$DttjlDaBjEp&tFdy;Tg3 zY7`{lEC65F|7q5|67Q_|g#-ZjkCOavjrl*lFyG++htZ9dt*NQGjp=`B%l|UM{LlWs z`YfweHDxu_QG8xivo_G9fn`qW&(oYnS{98IuuBu&8ARkL76cgl(mBot?*p`wB9#FF zp*7?*sQ1?7+r!4cP)@77XWTDz)0$^P4grNXO<>}IJ+E!OFJG>wwP&vFWTY-et>7Yu zEn4k}e{o`8wv>C8SbHzYz||A(C%Ehx>%}BW1=opdm&GYow>Otr`^1Np!(Y8BNJakk zqI)S*1nbj=*3RdMw|Z_k*Y@rjILppNU6SJ{e$!WrbRPdd0E<9$zt2gB-D1P1-mU>e zkhjZXvH+K)7Ae4r^<<1av zr?SiCHjdlO&CU8r_mpj*tE-E9Hv60!awO#!PI=+m1aT#?~JVFf&Sad%E!&!fG>quOJwlgToC|)+taU6Z&yH2O$8vpUrh@oj`811o`?PjOZZ8r6Hz*1W7Zihv#yTd|vFZYU-79xvR zJAgGAl#jvZCBYqL!%;yu_d9r4B059c^=0GWhFry_Mqe_)F9-GqJFSv zHCf;}lICdsMSmIHNu>p;xFMWxv(O=#p(B;bGc=5!oKzu@X`~ksuVe-zie<tzA@_Yf|alTnss1zXlo+dh#$5cWs%s66&h(8FGb(UYM##F|a8xg-=X=D(UU(pOs zD-rri6tBnhM4G|4Z9=|;peoA2t5MCA6|0b!5;zZHe!CAX;%E4Vb zCb!}l9c~5b!O-&uGj4~)X*7K$5~a16hRysXvnO`b%miliD-ngW3~td+%(&c+DgBhg zG-ER>;6k-Z7Q^)9Im*M*3dwK7R_rP|JIvW3EN@1z0U;6;_exZXlr6NsclKFl-NuF^ zQLpHK$I5JggP0VU7c+BgDPDxgu22oN6a-6!hiv0o^BOxpjh#X}yt!9(N&P)C+Fa&l zNye}a(~~X@I0I`flM0xuqkOjofQkWgUet^x5kL~2cHd1yRB2!Kh4fB;f@w9NzS1?$<**gRe@n^(@ugLQs|@;v?kBEJ|W`&6o6DBD)v3D4R_pWHvZ0%Ks8YdC!M4vJlRueIrdSW!|Qel*6DH09KhKQ zmCNV>RXPo$wsY-jo-X(}6nqfezu-4-42Ry+ieY*IsYUVP58gAfQBvz6$NwUM>`nE+ zn<9yp*k+cvVwil`Zt%14qyBK%iB?ulv104_sA?1|Rth4E%hQqNuCaOY^wE%^-M6mcyU*H)rz`yuqM}+tI(vF=f^}jdqiIJZZVmixslCYV^O5`43P_ z2MD*L*5#=N008(8002-+0|XQR2mlBGcVL`X00000000003oZcw3;-YiWN%}0FJ^OO za4v0RRa6ZC2cz?hWiZe$W~1|rWp#K9009K{0RR956aWAK?R{x;Q&*bscm0Yp^oN#Q zMnE!4S7t~R9n#&YP69>J)iW-{pE9Utv@PGB`ZN>@HIzpe z${TYH@KFQ<;O~V?_@lWvWcJLP{k^bF>*lgGylAekR2~fBZ(-43%|9@wZ-*L0qiCpX zPnPEgW3AatXGaKsKOPeJAM5rEH{elXFi#?Hv~~ryY3k^VWm;NNnM8Bo?}^TQCU!BK z=!kV>Qpu*^LCmph=GaKABWtu6`KC6#&F>RU-(3WZI4ysR{{F;gfBx%P45^T)bOa9|*YIApsC5ZH!b_=XH!XS09(QrpyWZ zG7#pQqnDr!3}O!TR37!fuW)ZF+Y{EEC3Ez)*}p8#{(Gk=FAS76HXO>3$bO%^Ko>M| zK6m7!qeuTSdhFwmKmO;4C>0-@qgSoz$CbXP;_OMo==i3?Fq)mN7cX9nHpACB{5qOQ z9*GE;UHl*8%qj6rKGAB3kMRq04CcQEYpDr>YT>TAwpQA_Ti*Pke18F#`iE~$o|f0X z^m@=-7z45bf5hYQ(5Ih%Dw6FTnQWfP1%1(y&9v8`9(LoJ(0I`YYO_)Stk{408*Inf?=_l^=~8+o_| z;Yg!MWse_?9zA;W7!UG24B&1b{=QLk9sjsd{LgV7`CB8M%Vfi6kDZHfpHwE7gKpnP zbDiyB=d0*>Np8a0`l7kK(E(o&U_+sQ_=kTG&?KEqw~9lRg(v2Vu*=HP6?R_AVIZ7!Mmt>w`e@fCM9^_D>^c7`pZI=8!o#Q(D`Q9hQ3uzm_VO zw@PcnrS0kR%?Zgy2#?LtJJr5Xyb`z8&COABX`M$$grWxa_;>-#>qC{T=hpB;KpB_? zZWK<}({Bz8s|7$uXAd;5*|Ta*4Zz6i=2W)(tlKN*=1tfbV_zMJm`^TQ_ojev0&5nZ z{pI8d!DN(&6bE@XpO%vZvp3>uPi<0?xnS> z&^-K61Y1ZL$7`Y`;$$2rhEcdbbhi3$iSWk}XMP-MbEaCjj#n$LusJTQdsnK38MAMT zAdXNdtu4UL0fO?J7Vp9RL(nWfC@=C&GVNC`lWTCRj^Aq511cTf@7!? zunI+@Mc2yX_hH9>JpC8gtJCcxUkBCH1{xmz)(tpS9aManF!E=o|FZL;ZQYPCh1S9x zUaM?v!I8_E1xi5!!+?<1_>wi$E#m1+4B1~8fQ)E8i)ds$Tmo)fezjDdTf*fpPgj<1 zBB7mGHM{Qu87pnf!Mbsjg-7KFi_oQ9yaBipa0h5D)~#i;Z`54ArUtJRhOqmcC7z{J zES9!zmPeKWvADsG8Z#&FaIavIJ5B*8 zW%fK4ald?U9GN&^*G!+eeY^6c+j?=yLHyFzFdVml;}?8@fUY3F+NiE!CodN`kTui? zi&IbojNs2Y`U2v@PtG*uxuSU$7$n|n{dzh~k&mMG@~cw?SUW8gI8D; z-{NHz$D+qR66R(Bz;0t#sn}zUj+I_dBF*V}QQCN>C=VPgh((NbVdQvEE+Mu6hO8Az zYft}HnEEoAHWJyt6{gJ>m$1Y1OVzbwdH|zv;P_FmB^ucLY5hr zm=pEJQO4ll3lh%5H_e{QNHy0A)ypVpAg&Y5vo6gePJ?9fdXRx+KD=jcZs7IQX5rny z)Rm=G(ShLlw*Y-a>Imw;$y}}z#It|-mw)-_A3v=RZeAzAvbP8qOinsAfFRqLWGORj z4!>j|i8yiEXx8}e&SciefpU;&K2B0(TtpNZ5}i3i7dg2FQgCZ&6iz}XiwwOoP{y%d z&`c0Yv=TsQ{=#o5hXFB4EHU zoPwf3iqP;kOft;g9&_OiUo*V_%e~cScVH#ehk$+e5m4pHHKdOlBQPA#1pNV&y!42? zIafx_YcI>w1=zH8`K5Ka$L#&7w1!Bop98R*>fQ13lOo(ebMZ2)6vRk#^#wozkU5=> zenmG9@EI;H_FZ3bq>161<-zBSmCl_@XYz(PRDM2QSzMMFpa`{1gU5h$=_iClVW`I( zdxi(FFy@F5AQ+5YW1ffzx;>!?VRd|>vb5x(60W|yzvbS_!)Gjh@Oi*4t*Pggjb}`` z^=0sRkf49rGdl`Dn|G^#7Qom*fhN4M##gG7FyN4N^Ob`)(15lHWQ2EG-n>~b` zaAochf5KJXLw>D(W9}v;tgv5p7*$Q73@xwtp2ALm*t%z#y`SyS5nhk0TDf`51>H$co_-Tetd< zH`sTY_lG77z}V|UY|8*SsCxUAa}ksb56Crr7cL`oG)IaoMS{eHpeK?Crxi$C;q0&t zAV|A&P$UC$!A` z@yv;nu~Vl(irKtt-F;P^`VlV+Q2_-JyaKlT=Ko0&6u>yX`F&SG2M8Vni0|4+z*7G3 zmoLAJ(R$)Y0)cD8j+qf#FXw?k;~5guFOLH|9%1?~#c#G4^xuNh_&Sreflqe>zN)`% zqSkcKps;K`2jJr|u?*|mf!XsM#UGx}7Ft<=C~eIk>v&YK?my?*82g$VUgvjK}1k#&=IKU^iP7wf=ULhM=>7< zAh@^NGjOFrdotJ7*w$5F3?K}IEvJ(0$-Hh@q;p{u2cgv=98!Vk$Qp+w1A&XQ0IP+i zvcwHQuHKy>xfzzXz>HyIyF5Q={rCXQ27vo;n538i?XhOol*oWe+7*x$H-Lb_M%5Or zJFm;LaQ?m3!u|3{9}B3!Zt=F>?1wXf5rCIS-ppo?u_0^Wu{Jqu0h(0r{AevaB!PXT zTwK5b1`0SW$qm35QQYhAt@aEvSyW2^-d&yOAzDvNs<=|wzE8}O_dp}ffoM?|-i{KT zljK4f(vSNH$e;e>_h-I1$>d7l5{MwMfxcY4fqoSsslnKXOLIr`O6itN1C({-Shh8dRccmeiop42^)qA+Us+m%zCmnF$4caCa8q9t z5!kG9@eUSlm2Wz79bY{*dZ?*r6PM){`+Gs#t~{8BTaG%hZJJcLD3@mM#?67%j@CA$ zjC$`1DtGEC6dxnkweO0{{JFlOenN?ff1+7ozA!`Q=gqs$gb~6f-|Y>;sIv`T;5D2R zH94`jZB2ITZFnfs;Gh){F0_iePeD;{Yx;8K!2>Dq!KSCWQ8^}L0fD1BUO>?k$U)D` z%F>f^u@}C#x|gJcF?y+br{}Csrm7=cyup@WA;JNFT$9`Q0JIlI1icUPK=)6{pKGtr zX;gD%P7?&P(629pTC;{K3`M;NG&bA9qf!KnD;`#J1(ja1-s{`9uzs{5Lex><#BLnN)-Gu7)q=(T=WsTZSLpKR%L5 zp3f$-T}N6v(@ptgCY|FMu%9>-K21%VUh-Ie6ggqm zCCSG1A(pN|pfyKlK$rq;ibc0laRfwPbL)k9W7sOp0R>VQL`XDqQSV|;wQxzYIc1A> zc*w@MGCJsMMl*H)3NMn4NMSTDtPPUbeU&LX;y6l`8@(VLmR@gHep;=}p?wvtN|Udw zk;m|lIeHs*?**c~wIGxCbXOMFB!eLUBByeT8o&vq3ECXJV~z~sgW2?LGLepfSUDjL zW*g&`rN;n5mY3CikrMCXWnN5aZGe6yaY_Q@6QM3aT>QPzE#g_DsWY2{9}rFAtX-uu zX}q-^MsqCP*>0ph5rCWU8w;{Ddu4mvoV>>i5OMA+(Sq1C%75w*P*8#OQ%Cy%<-E2T z7&gb}L1&|$CcLfLOaP6m-NWWcFLo);fgBFU1d}?N6`` zX|X(_d|+JxA)`+mJ9_jhK?lHi?!RrkVI=&TMH=;22b2OIq6Ti5!^(=lh zTP+yBVO`eES9M{;55*eQPcAHTz79k*=jY#u6V1&@q-2Sd zoL(fdtD2xtg#9RD3YX8bO~qeaBwPigK?v?b*`vuWQF#HYtSBT|pw zh|ehRIk~?TCcM8hEZ}q22+4(t^Ia0=>0CaMZZe{*)n-}Gi-t}cIT%fJrkjndckhI6= zaUqjzRz@a~>j30vNjABloR?ccTuXPR64_+F3l0oWw=;*G5(qyZTMP+6u4Icg5}ux# zDaoXxJ&{hd(vgMuzSP7*mycyl9Q+Jmr{kbRL>~$^;=gcw8y_{KWY0#B@$A9Qdhqz1 zI2`&^NL`JkA$FQEdoC-#8OH-)V;lqkG-4{R8+@=uGoflscF7TOA;6_Uy~8DQF@R$N zr+iefej3y#la5wwq3*v`-n?P<{%8(us6{yTNw!V%qHSReMt6Z%3bQ1OvMi&&C`W=|a;xtd3RE+fcRw(s!UHiMY`2vHXNck;3f*L9|F8i!Eqh=b&0WRZX%2+^78 z#OW`Dv=fmH*yX237H|HZ_ryzJSW7<&`!M1ntRGqgeIINs!M$YG&OuxOl{pKt2MVpy zr!j(Rz$JYg08@=)2dto{1xNfO)3?Gmg;Bb%0(N1aKRV{>^?t{p@I?^>Qk1vVy9*=g zK)1R667R!xX=XzQuz_JIx~tnlGJGAORXK@%)x`)Zy-ANB!uxV4q9j`o+2l^cJ{dOh zi6)MI9&L>ZY|21{&K*XY$W|t;@eqNGR&|R;qwFXP8U%tJWK7#{m8E3i0`_rdHI2ec zJ&)H>ICwuDSri!4#`pQKGoj1XH4S#&GM4mlA{G}DQ@)h1Mv+CYTF^U6y_ zgeA#LHX@G~rT#V})gdUTM#O2;vF2nG;wOd}ebU zQ(f5A9>>Tbd7^2+gzumy0A{vyrf8>t{D;qH zK-?A=GuiJDh&jBde5FHx9H{r^I_*nKYtg1R64_KzqPczXqz=q;hU6`!d2MkWC&r^n zHXQ~@yrWGJiG*7Q6oU7nY4M?!Oe&SRn4|Aol3764B%V=%i5_~V0IM|uPI2XE12o0Dte=&peBl6Q0 z0C+Tuqb`N@gSEdF+0Hb2jOZt<$R(YSYDwCteqewC3cZ?vOVLJcAn7|zI6!xAjGS(D zyGjUsTQZ$_(ima(Y(hA&k?5x%i3Dpz{1tCk-bjaVL0OvyiWVc0C#x0D4zeA-oCrEQ z1Km?3Hn*e_twKYu5ZegYGGT9tP|el_1CU+d;(^3m49Qah=;Y|+>`Nf%5_sT%#3|9* zif!T4Q1wQrga9hyJ0qJ$WVWFKr`rTy(MoU>FGlcdy~n+*7G8d1WiXK{Zk+<{9E11HfW=@9s+!e>Ab1T^A_-7cgt0y-7R%$U+T>QfpTHM`U&sp}(% zfN zZlK@do#-&KhwT=J9oeA`1l+7|`*_$!_JX{?{_Tqk2@vegqwxdp7wGuOj?NS^U+j>~ z3XJ&!vX;MSpb;T0ojlg*kzw?BKQ7Hw3Bx4heM5-0`m2YdO%k5ef5(Bx8V<#Ii@=KEWkODD#&X$puVYUo{2C}4v?4RAd=_@d73OXBzxD?lO*-$5zw0gXYBybAhW1r6;+FK8KGF|I0)nF7t&Iw(Iq%8mt9gfEIPJ02DH>n zm?t(8so_JA#738U(FO^l*at1yYBC$L?bA*hb`^6Ayk09M$h@GKFgGA+&iEd*Q@r3o zmRh?TTVO95bgw{X&l)IN2OD=Y$Y1{e;82eZh;qPp&nHvKd{-k5^PK@S^n3=E;0(d1 zjgzKD z>nKgVzj$lzyHnIPMUtU$3u7j?u47<^GB;5ekTUm$%i}LZJW57&pv`E?;#cVi$4`Uw zl4?QYR?iv+W{l5Q3*+Wck2Uz*Wn!e54K_T5&Cw^Cw~V?-sQaD^%MT2obowy>DCJm|4&G6MYOtJ2mD&j^lJH4pgknYsJ|?kR_?1bOkwW08Km z=r*=52Px_(4uwH@@OnvE{kNpI*c&-t`A3!;be&F!MkybBnsSt**PbsHl&l?8E z9Y}Ovoi8s8lsD#703t_SaF7E)i2cD-_?aSMoq2ps_uONOtqCBDBCxfGOa`{msb-A^ z(~I%W>{RhAZj)H?)UBkV_b8SFj=htC8G4w<|?P;O8m?R2gU+_}Nsn@*#&HNxqR zIN=R1fFJ(Ug4MOx+o-G*wMM`gT@9u{P~%uQ(>p#P3B zU>uW&0e~F4pv5|=96?!};)xon(-YRhLs$gXI;`NTU&q&4E1MVYavG!mb$IDx`^8zvdWpY{NfD#~hnmL`X7p5H{J;)9pGMZH^Wq^2DYjTb@ILVhw z1`)u9b|pLI^6V_f*9Lld$YfC+eqE?2(;0 zslm*;ih!vbI=(Zf+%Kb4OK{TR_1{v7Sx}*k<5FRhYN5C~wKuuIH;h9Jq(#D6B*kA* z@*+GVKk#JyrdinhdGoIQo+Tn4a}FIUhC54vRi%~VU??6{KM(gkg#)}@c`y&eycWLg zCx`1EJ4gcU)!oS29;~x9Fh6gA18!g@uYHU$ECQ4F;se%EA0;SH-KYMT2H<_=%Z&!I z^!?I^U|C}a1NB%x2BM8zH^+v>QNeEUdxi(5M|jkfe|YG z&j5h<958!Jg|k>wh0@kb5N#@}KXI0YO5t*4;#&FHAlyt=@s;T^P^U-3C>dwf69n%v zm$+cqp)&zu%^vjsHLhtdBW&O;95;AneOP!2WAwa-~*xl{1W!9{&-7vEv3i`zg}G-eWaeG^t$M-cm0UI~gSTGmQR zh=6>X7ofxjS{uhsdO%4VVNj|xUJXc1qI%A)21x^L-yl~mEty0yAoZ1AwMUfC-aE*Q)#-cH$&~{a1M3`Au&RvIy`I%`XR01BRigl6 z9-#el7D-Kev%RLsr-~$lcc`1T8hP(h_Nkc$jI^T>i$GB-x~v-;AP#v99QdbqXh2QO zD7rDuiM=rU3>9gx^{QcWyGLcGcG*cBf)G~$RMNFM7nfIARbSw&i9xe#--#nWja;pY zL`uE}zS*Qc0fZ6b-H}kT0nhgQQ|bm%U&;Z@V(E!o&d4Hz`8=D=WRdvEAp)$mzDet3 zSo1HimJFEaNcvmTp*B=rJuJy8SG)_+z=6X1bWC)_W_b(bf1T`N`@>fr<&ch*ASNk< z)y=G)yisA!wRqB*N*~zq_z~u{Eud^M8H)HzeV<^Ld%4JcUVhgYJ6`)Iz2(VUK;B)w z_V)tknfQ&mAEH`N*5DJX|EbDpAj^lWubBNa)rnbYzaT|bQ7L{*QAQf4@4#?*6SFk_ z8ZtdQiP5>v!^C`z_aD+m@|oSKKmjj6cK;e?KoGRQ?d%{0+cmt{?fBGtkMEj0a`@UW zkodm&?VjBy#kq4Dg<$dUmrWo#5^Nc^m-I%I!aLX=Nrp@5JHSO8%s4t7(G7xoAR^rB z1Nr!0MLxU_-jaCmVF%k26{0(q9*>X|&_c5`2K=gM5BpiiIQ2T~AMcE!aJ8}hk`V5_ zyNZ(KC*AO&vO2Fnj;rVj-aHk53P4}9axBd10X}H@=Z?$0T(S(?$g-4JZH(KL=ZDdq zf+~1{x`BBq?Ljb;{oO0&=g-l4{`>*EUmRxV3%gRzg3MS%i{qq9=IB#=%ZJHk*4^c4 zuCjfEAM~-GS3A==bbBSXe)n9=g5a zyhqR=SiONu>!D&fI?UN!G12GfQ?8|;FA&d>-X2u{8uYF_e&6aJgL(H$@czhT0Ua{; z;5Q>*%=h%X&NeB#wf~L%y}qI!&;$CO-_BJUSUciCd)no{^d}f?V6N1OsnFI2%5%f) zKwnyiD~q+Gk3~e_3q19OGr_u;K`yKI?;l45#WgMm{ch`@^mJBt8fnF)@2XT?QrRqt zDvqmqHv+!6}6CgtFf(fIP8%3B*a=8@t{Zln)0TdEM zSmt&F9iXMUqmW;?e9CDRR5$`t33AD#!d&ImeAryRtE$|o2;YD-a|cxbc^Bg-1J}29 zg1KEz?#auvm#$lXTqpHGer@x~#o;kls)|Efn(2_&DHY+P{ zeS6~D&toUQ`0QJ!S-|$fnsuLEj3VylL0hWTN7kKoi0E-%r|SX4DeD|_wWK}!9J_S@ z$>9Nzu|&)PWY}rm=o{EhrS~OPXxJ_I>kSCaDBqWB1(9F>sqsO1QkjLlfZXl5#qyaL zj^%9K+oI70d~G58EahE@|6FA;@DCmzzfzA6|D&qg)#L32Ck4dB2Ztr`n^chOC9~2x z<=nYCL1EJ_|D+z>Wz42s$KIiXzDIB2st2Rh&hovws|5zXyR-R;Dw#UksEoj#+|8@J zQ$%N1FY})FbAOc9TY3xjPb3RX-QS?PCLS^z|0TR1`xHByQaVq_-l$glqb~wBnTxRr zQ)Mg*3Zp>HkHYNDt23bI#`HF3ci;PWu&%{B4oF3`huhKMRGh$HxvZkC4jfFN*_%g~ z1%#9_?V-vl{wP?k%8pLo)C!ZOb6pq00r=C+iJZr;yH^x4xil)Qlyhgvtvu_5+ac>z zZJYsElU3<7i7({`1>u8&;8GA|9=up4*9@)v>~n8wL@lsT!^WCI>T!J;`VKzmARly) z4?4&P9pvrnAZle;aiVVn-z$iR+Y9vzfd}L7Ts!&I!mP8VJ4@ngoZW#uCgy{0|7>(= z-?H`D+`6G5AGV_GJ!gz2sukkyg1+W{hDr@RGg`M-EZf@;)i3l>wV^{-*e+7^W`Gep zLPn{gO2wjG@?@v} z!uwMs?o~lmIP0!;P(^Cg6N{>{yc<{WJ!qUCvL^&&Pq1Fjo4rFZEOHQQ%VfTjdL$h( zYk&0ZyHn?~Mk|bFWSu4LQ<3uzw37gOIuUrjcq{e zO7~rJte>B;xn>fN27~aczAWc7dl%mp7jIiHZ>k74arTdyTrS!1$84h6L7YVP`{V^e znZ)_rkz>C*`f>E=KmG1^M@7WEZoik043;;4P^FQql>u|~s!Fc+p4q%Km@O`piM#jL)Rf z)#&y>l~Oq#MaKv3QXQYDEP+@!Tz%62_d@rcP%J{xq9diXLB3jil=86dUg}-{KgN*!gd(^V87cd zU#Bp9MZvcidoAop1D=m(LJnWPvVzV?a1Qj~E9cqnsXQU`DCJ^=6Og$rq`~=LKdKL( zMiC6HU|`J#0gFAR5O)Y<3=1TKcH*!70R?m3?F9GT0S=&6DfHL}N(|)T6|<+m{9q9i zD9p~8%eW|KLrld9rQwp9eWUCeCSS$*{!!2h(Ii(jKR{3zp-F;T$n0*rI53x##Q4sb zE{>64{Fxf^;g!nb19W?$0R(3oJ#prwP%BU{1>-+DFE{?U5zuA^@tszARdkooR-^N6rkGI~Ri92iH>JP{V zDtNG+WFtNXshk8w*aw-B5e1ietJfbRS>;>_^e1~mxqH~>L(eSifanr+IAg2Fjg!l4 zU#Ixq+70}Xmmr3finBoAtG6j}L(itUxNa5Z>>x4PY;}B5Wy}h6qvDNYPF`#JaitFf zI1ezr+yNz)tCdnNA`isQN`WQk0p`lWU!A_^BoxEUvbrCRUB+A5zwAG~Mo6BUEU;u^ z3x-a;!PuUr6%Ln;v~RqV5`N?N&b+}WAGVj*C>&ekpN%fEWS%~8=EPUAFHSc4Cig9= zmfEbA;TZZb=gM-gHL-{UF9?}R#SstST^Da{LqDS0=d&k(F`#@K@>$Dw57@de{rbdL zpVxxwF7ZmGA$3+#FT10*@J3N**5HHGCUXu_iz{aZsRk`$eNW|v0g|#KA>}yiU%*>4 zFl+1PqhOdy#vA-wV1DJjbJv6MIYzp;FQ%Jo!hFiv;QjBD_tqVAXJ2IHRbPvCsALg* zcIZ~GrCj1)$(lj=1GN;vGAme+&#_91E5l*YN#)m`92ymfF-MOF8JixKI7^jMHl&e( zlIU~3{9g}yC#N2HUhlx6w#F;u?gRjrlP1=Frix9#Ar5n;v`kvoaFq|CCykb58tX+~ z8f#MwrXFJkTPG?j{ ztEm1^EZ>{}!i2FF9CJm%W%$}tK=s~waft~y24#5KS%Z&}=&QVRb_z6U*mb%M-z*P4 zM0P}7jUIgYBJBX)WvFo?rUF62ElPM3OtR7BNq?3VbYMwLvC;4Kd<2@`gSu3~SGnvAPJRjezc0om?U zTDYCk-HBc0yHjcI*fjgbN$qN8e^#mUq$dsSfxiq&aA)>UI37_|`T=P;NW% z2FdN5M{u`;j0Y#)LcIo^3<23D*67rsvJ-ZClwaMKMn1c4-l1!tAvM_+t50sh`c+ok z+R6NW85!v6Yj0@d1d>VC0hs_8wKsQeU==^@%L=T&NmeJu0A8HH-5h&{+6!e_^G{v9 zjOE3C0k#IVht$Z6rl#sr^(U#+(9%B&yYXSrXy!amZkae6Z?ZJP6j zHU`M^$eV-B9}l6ju))t^CMJE%bi_m zOJ*$SU&Y)Gv-hioQR~hK#&mOqxXqbz@jl0xJ6p#LjMx_+97yGm`4t`&tox74m)7+n zbo`c$g6`rvCT4iBi0M1++?^ntc~VI*B)rq%5sVF?%SC^$^$JC9nX$%JadeS{-)h*z z5NK~;ef_vNdGd4^hY5qm9XSx!V=9OE`N=@Sa4>$S)jDixUkiV8inuno4pB)9Ajzooi-4{m+xW?k zJ+ALGf`uE;**J+1g(9;_;A-wvh}^cOK<{bi5_p)Z1yD^CT=e{qj)0(sQyCa#4eg$O z%m(F7Fd<7aULR5v+BNEX&jjgvOF&Zb-rf@48B4Ei_}VXPuV#O((5=C zq#c`!8Gxtz(7en~-o;nu#uK{$9!96S@*tw=y68>A$N|obEnXWeTpHHp{rPO6DQR3@ zqbbL0xa^^kPjIMLuQ4Yr#XKWpWE-?@{f2XSQZCBGQvt^?EyWF1b1giK^@tulATNucA^Amh@&|Dkq!&FEtf9rap>e-+Pv`}Z$Cn3uo3 zz51~|%}+*DNZMYX1p^=EIAl2>`8LN`vioqrOV9p{3_)+72QY|o6Gq*Pg1vED=u7=l zQb-D&<$9#mJ3W=9;;&>|a3t1)M|F&mbzbR+*|5FsK%eO%pQsK_QljAZun&(~zsN@| z7G3n;;#wiJprkl91#ZAIgx#U~lSwC1&i;a4RqH%l1vRg^&!EP&Hyd|Vl?~dZ4vt?| zH2`z;xj8MucXa>nQ=gUo!yivF?*hyn*~qoDr?-1vu>>#B^(1gcFi0Z zK7#)lljd*k$%)@F-@?ObbM_X8VO#yT*kc6r05mVItzjrQiK^z}We(V`_VuCLo9!jy z_~Ve#7YX4o77NW9O`Tb)6DzfRcBf&1!7hBS4`Gg8MdO@Z<`EGRI| zER59mP@pE0fSq-d*qENnVMJymL5mzr#JHrrfOveU zfHuQXvCa%L&4m#+8xw+ z%dgAD8|GNQUXch*dYgB-dMT%nQI<(A8>E+4;v_!&a^wW}^G3HGf~1Acep3UmQKvMj z9lqzOvxM$yy%T27W4nfrtC*2Kk;(ypg)Y_#@avwSg$e0gPF|{RvNuyD{;=H33sBFA zunbHcG_?UYkwY-)t<6Ie(b&*?yReN?c>U}g) zo%jJUs<=^ETvYMOu4R)mXF#dufLAt2@f+S!nm`o>z=AG|Vl198Z!v!wG9TYY^mfub z$kZ>mNS7s>Jnn4qQ{n5uEM2af0s!hR-hRH&sAB&_ePYanQ4vB!Pa;h}Z%%SaGn6Vw zCshZJRmWa0B6Wo;a-;+0x+QfqE3Q(}r`t+tP=AxfKzF#({KDWn~DWhN?80pOATW zfY*Ht2+&iU0SVy&(K&63k`?4iY)lms$j0t>=714yn)XH1>KDGAp=t5Z*PY>2S zZEj3j9wrzYy(Mkr7ZRz?J*&*%9xzZ{+`lL{)rIN)_RZj22c`un&|ag+hEx-2fe%k&=9i4xl`wEu4H!>5brE0Tc5c3 zY6unt27w+20ZL$$BsC#ur(jYDej_O5xDs`+xEk5jb^{ukQopaFtts-$&_r}=QUsPm8GXwdeU{^&@86%bEn~cgw8l^Yr65Air)UeoFq^?$gZGeLOz0OrF2({9e+jkj?ijH7+Cf`+O9nS>p(h3K_@w?|#TrF14~niCceIl=Dog$dDnd6k3C(-VO&#zV8WQ>*yPflOR-pn76wzc#W2z;) zEIGVnhk5Z1uIhZY-tj?#_ttQ7_2-Y)m^KEBXaV9M$Phi{H#1O=WIu#(*z zfySQ(9lo8Vj*cy`vFF)Uf#Obpq-gF8#XW~lSkZolsTzJSL zKHQr)awl-dhW<+IMeWg^Leofz%~1(shjCsntl!=rt=-+X=RbHQeH=zqkOlareeDWU zq_pcAemJ%7gk1$GQkA4mMkFVFR{XY&7$XgA3NY1hZVRv-)1Jf1!OMYjoxH_n7BFy9 z@Z_=f=zMPQiT@om0IFhs$rBkiJ;I+(D&qIniOQTl^Y7n>I?e2SoKiolzF1)3By-O= z$Z*5pzw^bo(O0ls9L!@BQZg7oKM&Hn`b12rKm$1uNV^eO!d%rf2Ryo1+K4RHVp;H@ zqI2S2z>mEB?r`%l>Wg+z^z{r<{r=N)?W)vNW#%R3hVjM%(xMP?@7-xhXefO?6)EF3 zh-CP}*^un3CrTMBhO_D~IW%4>S^Dg6Wb}o7Ypu{m$9;G3kcJ`CAVA8JA)_Vby1hwE zt;bsIq3CJuj1ULgXT32w9TC+k|DoBzS6;S;6b@DI$;=DkV+p1DKa1hF1>Igcv1MOX0a;qirG1+v$iVu2uxtZ0Uy$JebzD2}bt9z4QETrX4LD5H5HTJ4Hb+ zi)6MI&$sA4(Lb1Tsz=AQ9Y$Pxg)}xZ#mE@fxXE#AZ{;_or4P-DOX-8F1s<)L)I|_+ zKZdKcpc7`vCZG27G_bZVsT`xc0KZ&MpeHkkh`g}zT4H; z$%{)eT&;_k{&I~kbZmdu_@2Mt2*iO&rcNsyc^x>${=H#elpoc8Vi2sB;Pqq-ZbQbz z263iYD0`s#F*4;}BIgFoV>$7wAxn|rbT?L-zs9huI;iu7+sF*fvqAqETZ-+j0ddc* z1x!(Z*#sEx7}&^T2=}?-gS-nMNn8>#2+>sGzt@cMJ)lCuE;(I_Aqp$%*NA+%w zj_XaAmz2;C>`bjHJK{vD+v0}~13iEBs|MA`7>|3Kki;O&SuajB8zR(#0;tev0^8FV zEBg+*EXOkIA6c_<6DU)+{jXtGq=s}U4`;6<`R;{PMD#PfXb*Q|sym8=SYoaQa_(-;@QjFI&{Kp5s{y-rbOA7-Y+G{F;?JU4jz^Q z2a*popk8w%+F}WXNhT@Xn(o2ROaVHDKB?}Yo8jS0 z<+;pOXYf7Haj@-8My>j2e@YE5VuWFW^nm|B8~6afEIGU=ySF2Wd*>2mufF*zV7`Ed z!tbbu;mScIg$f@hli>lD#Y?UO}QU1_nSR=~SVN^sYqAS>LHlmN-VkRCjPQdh$OBGY_ zz(=PbAXU#<&K9SjG3A_giPm4ez-!9&@L@Gc(Iu|kHgA;RW?!#!=_zfmVV2>eNn$(i zhL(B9{di7YJzm0B4WO~xAoRJ~KId9%KtPAUOaGH9F69aL{ATHOEu#7ePTWGg@q4P* zD3T5hdvGg^wgJ-7H~ZxRxCU^bhk1mGP|6!0A;@9tVM%gVrn|8wlxz(rnhXXd(iUgG zbsUK3SLKdQR-%Z&>7tOH24c4)B|rxI3i_&wXV#_~I9}ee*;%B-bK)J{m@|J0hlRX3 z3}nY`={_+S1~KVuzo44iyOm}EHl{)bRnAAS0*Q|*=91+KNduPzd)0ZG4_6n4G)VXO z8ZnY;ExEQV={PuqtSvX7ry@`X@B`;A66|slxH&bgW+)eR3X(*-nmnNc!pR^Pc6%In zz!tX(A!v!){N=9yNQn;!Z1D`ZCy2p$yruCPNbI~>nNqNeZXAdm7%KkpDBqoZB zmr&pFt5HxPb2~-$ZAlnJtiC-3EuB}YQT4apv(3pE%McicgUz7ZZ;&yZ)R`V-uYwNM zWN1B^;tHRexDIdz0&oNnS<>kz3W>45-x4EdhH_;phdm@}I~^@m1XQT!7SZGK0Fa@O zW7$mCswr`EnJq^)QrkrEGV>xpqYn8}>Qoy{Tb#7xV=gwqI`zZ6091cu>L5r+9B`b= z?-2F3f(Fl7<7du57oNej&O;#Ydz+cUyb0cdxID0o!Fez!I#+k2y|*GA zMI7eaQE0w?6)wq5$0_32+vV3!*!WJ^FloYgyW+2*@RVXMC4f=o@~lwbh{$=X1urrS zafgGLJjp(q$-X5@^e4FgcR}HfG|uf$499(^8?bA}?O8uRk3H>FCa*Q3cd0NHgfE3=!*&R5e!Qs3>b`?#R{KsTMYC()Y4nxvx2D$~RM z-!-XTAEDP@JBSy{?yx{qwaB529-0gSr8Vq%eTm(g47J?x_FW zDwP8Z0zmp7tCW+msjac4`Tt2Q<*ll#nRoWrH+t)B1=|{aSen;aPujr!XI4hl&3TX8 z@0DpUm1JQo-Kaz>>2(rS0Sde3tQF4D^+1rVbp<={cr-9n*_BUf>m9oDdf%{D-PwP3 zsp{$xL~`$}l0|Fs-0!cKYkW4=3ANYG_&%xE@}%Z6=ih$?|8`veBZ?UNZClrFx9G^y zx*tooGOlN?4`-E5KKcY&S8=VZz1OH6^%yK8`nG!g%Gfzg;xKDwtS>)szdoI}I_1ik z{JNSS?dV65uX-#g6??ePD=w)DV}scCr1!135RFX>DIxgDn*{J?rT zplgnEHgeCT%4R+KHt%ID**9`;(5HMd!W+ucYa@2jmoM&vg-kMzp8{y50W z%C5V^8xQT$YH4ajzyFJSj^XMzz5(buUu({P|~32y|bb8j@ElmFMpV;=XX&a_atkW6zz^gE61 zJ<6BOjNC@C>)Y!~2?txy5&iF4-Mf2O`m&yOsK-rHq^WAOmtytH**DK_w9<{OlO#)% zyIwHt>#Zx&>yxMRiVZA9MBi-vD!rd-o1c@oJM=S*SdU1us(7nAvJKqp?Z!-kji(Y< zD?U9!pQE*l#m-t8etu0I?N*AhS}9xyrtb&6lj9hfdv7yPw|J{hBQ7tfa!6>pTRfMO zSTEx1qs%Q$SYtJXmM$m{!p118PZ+jmJpa^}TaEcU1K$k3_B;Lh{93J0TwWsmA1n2- za7k*U>D;z0>1#w!%+*n*8 zATePiT4;6%Yn~0T8R03r>n&8SHh)bUq8>^GK4;B4%zf^7^yt`Gy_iGrhBTZ#KDIXT z5g`wfz4jjlq4BkxeR7$?2ZIYiEC6;iMD#$`DJ00w-b_2|TK)$L#(*F_ zIt*z9Hy2A_96)g$m3@}kirD=uqB~Cf@Eq{xA>nRn-F;o#*%6|QM!;KTdls|3-wZkI zH$13Q{x#UdA2lCE`n1`WSIS}we&L~bgRtUOLOuGMowKvEK*ZBztj*$ymrUF|&M-?Z zesDY{%%+jtg zf5icCaw+1sL$XW>B0oSlKOUbWrPIQ1;FR$1e1Kvo^qO5oqb#+8+fR6xhZgAvpiwMfK&9+VR7;Ktw)>1yrpV^J6pRY z*KP=4-Q49P=K43B9Jt!Klf~Wq)q8y}H7a-i1<-GpJDkNPqW^b)wgw@V+1BvSw7k4g zv`p@8oSX6Bf0gp_`MA@ZTodQBC)LeZpb_!)-=!u>l%p|KYA8t9muwd)gn!K+VyN?rr?wkja(|_ zso6$EFvdrVpqy*u%Noy&lI!ZFO1o13EaMrDrhHgEYY=2q0!}UxeB&ADv!~AjDqhDH zPXP+MY;0I^0Q|K?H~T0vpkvYGc!@x}wf&V2nfKT2JZ|v(sKWa>Z9+cl*38^TawUB1 zBH`sozfqvs8kL2o1c1MGg1GG|<3_E9$&|U{uVPqCB)M4L(o=V!EpYT1(K9d@X$aY;|FfE4%3T+js;?T;@7MoF&*xZZt;K@B$XF9_EJ-1bk)6XIf8Y!qG0tT5DKG1%DeQLisWM z)Z=xs%ZAuD=L5TKG=7b8KkBZVWDJFM-J3$qbF&3YdUIy+!_`1hj99@&I-E|t5&ijI z5<>jSUl)4*y0pA)eeHXhFgyYy`o8@W@JXHJdu{kP(+&xnm~dl>ZR8uGz?!astaM)&HmSNFzM($Ls5dArVYT5ql$P zs_p#1UYuSql1hpvbD)ItD<^)ca@d2L2DF*#5w-Ci9zDY}9Cnd7Neo!0rw@Uai}g#T z9}`?V>|O;#(F+P<`xnxXrOpx2pTR&l=2l1D7NP!J{VxwrxWBjr3sRJz`Aoq%SH7RC zm-W35AC+8&-j~M{Tnc>)AhCiYJHEeqpC{=Y^L~D(@y<-o3HL~aX6lx#%rzfc7Cc$+ zV{R5j6032Q)QeK_eF(<2bMGy7<|Qm3OSpfsUjphNKvtwOaT1MN_x=qP<>=!N?Wg|P zXqB(u?!>yuaQwOy@(Px45RaAm(1Rn8q$D_jPJ9B5+^m9!<T!ciWR;I`A&!l$|0KgkVW#Fk8- zoEg+~S6Lk1=@gNWYc?X{JU$jH#Xd<6BZbyPR}7|+d_gG_Har6j1vBKlV$H83Ci*dt zdd{_bdHarx_}Jd743-UYH+-~yxb9PV9M-Y{8H@_;W?$eeT){8QMN z%0hJnBT@8PzkQU_oi@NrR^L};R!9QD=4Wxs9Y-K&KHGFOmdF{2ft z@f?|p)Ce@s|1Zvv>XtK>0zTD`RZCWkOE$j6q(_U$TBP|@tEqdmQRg`00m(P;0m2mI zulNIy%_`|Ya5qU*3I0{M&^jgvonjo0z+ca02s$O}+U4s>DAKv|?MmI8JhBmx&)+o7 z@^0Rza<p=kI6F8Ov*5z5L7fbjO9=RlN z9G1z?wF4Jz3u9KO{voRdj!pC(qO-~ICdHxpySY~_H#k@I!%@bn-xlMz<#l6EJ2{(E zZXI3u>Usi|MiLr{Yn(-Tc! zwk$yB$COCJI%$EY{1q(@LM%-3LU%brK@R_gy}Fokr6{I|r$1q)XM2iMC~9A%UPFd{ zF8At5llTK?()iNdKJKJDAq+vOnOjEwX3ar<*4D|c-qN9l3>CY?M>~YGeHJ;>BBfHRTPrt;G)-?ojpt&0=xxI6V3>>v1@=t0e3i7oNzKLy&lL<E_>bCt+G66@F} z#xsHJM|yTr4#^)x;dxr!+A2b$^O!WP2mm2T4fr7zglI?B0ZRz2#nU=1QqY=k>g{;U{2|4pZj@an~4Teu3@FrWlKmvY=LjL_S=?-dWka6=gU-C}aH|-ESHH!c=$F zFBhG&ZKC-u5i$WwT)Q5w{c!|6mdZ-wM7`9#ayC=S#R+tmcV?T@b!qHfUMqf{E?Iwv zl?Y*)IUESV`z}>x>!Ryt;Q>o*{_(ce8?z!R56u0>{&Fa&&O|x!C4#Iu);AJRxSQ*k z>~L_+eB-yTEgjV)IFi(k2BH9{fI-w9jo{*WBb?BhENOPf@S_Q-WdzQrI7rSX?O=po zN5N$5U-twTMR9HUU7Cbe zgA5wac5YKan1WGN@$NS(4Cpk9X6H0KofC{mX4h zaS9(ibS>h#J32@mCD}fEGW_7j*cZ=il{n}yBc=Iz?~X8gI-wY3VBU9 zy;{FVo@tfs-kFfVSgFq{N9gQC92W#c;8TgbnCxL{PLct2yobJ6s*`Z&ubu12oKFvLT)v&LWEh z6xb2e#@JwfV!3HD1+seRfq>7?z&;3GweG+m20k^>CbOyjbE+Ila{b-AN4m{5(583W zyuV@2`z;Hbn>GVDcn41UjpTB6B6oM_-vo%Sg*SPl%)v_ZHq6r^qJcURc!5F|D7=BI zgS;yS#<`x_#^=5toP3CXS?iSt#+636W;E~3(TE;q9^jv0@?gp*}Lr!0@OcTki~mU zrA~&4Ww}tI2!rt{$B`e@A5faEQAH~snwcqM0Z;GzRk1J&tO!m{rdLZ=t`-D{aHRqt*>SK|YG?gZf)PU}O|D{jBz*A~We3z4yCM zh~ie!oP@9^NA3yRg_&nIn)&vw5q~@e9)#I_Z7&cgdIaDGa~zbnrC8CaX(EUg+GiLk zCMh7naH?3838gV_exRXp7)4RV{^E10Jp||F(m@{7+u4%3O92I1GZk_l2yrfe&ViT5 z5e8Pu$qrZrU|C~8PXkmKMjb`e!$i+;t-w2Z8-Rw4!|3yyOZjKBiN;qz9yXBUU~J}H z>Cka9xMO0S0HZSISPJ_<{wJDbHT=NMpqkm!v!`f^#Vo0!E%wL)3Ezg5qz!A?yM&CA z_g&`hH=}S*r#w!g_ga)Ih-GYbvE}EDok=k73$|8NrBEv}0^jLKxd;#tkNx}c5NR~k zWVs4)XC(g8QN8gX3M7v7qj{Bmp~95N`34yN8jU}o-g5M)o=@msAL@?Xn$=tHd@K#l z3{0aeDu;L3;1a?kiUWU(uemUcsbw-N)I&0_E*}Syx>Eob;00%&fsQ3dAup&_eS6h9 z{hA<-pCKn)_Dn}*7;v&|>)7_TUA1(!!nMo$ zyjf}3?KYo*Xb>l^SSif=ms`V#1iNr8Pp*|Jc|NeHVR~-*#y=K}qYAX?V$2jr(im_s zPH}lo!1sx)u47Yg+mdq?=-k#RyLyI7sUkOh@W5Fn{yc9f;0 zQ+hw5ojeeIp=pdjE~KRSWQwUAzNIOgDSF!yo4fX$^%~Xg<{_>E&@KY?Cv^036(tZqs9mLEPy54|(EFWV1?dt=3TD6aWI)yTHtCTEKQyftEiybUMTJ`q8n zQDU=9@ZhZy%tX3me!+~zk*ynI&DDAe52RZ7q6?;|pg8^e1sS)$piwktR?F&((kx-m zj7QkRAcMk=aO~DPLxQhp0F_4x*GjuH3v5_Y6R8y9UQ(%P{+ColwL{vB>PwvU z=L736)RN0k3_LAe8cD&CPb50Br5cAusLGsPwLbS&R#t6Vz17CFq{fZ_qdh&E(}&3O z;|LS+gduS=87^e|q!kXlvMJB;2v$3mtrc|M{3A0}0OhUtm0YfD#F(3qhX&>9XX8c`> zK0XydLoib3{#ve5Fg4DR74_Jt#u@~2?cWE8qN`KB&+%SOV5U{zCNR3`Q+x1*hbdK3 zW|Ow$$pr$*zmOhS_5GoVw{YV11{?mO!=E&lPIpQ{qFEVnKKjycft55cq~S%{-!>&S27}OLUrZxGg+RrC_9kc=acyM5 zdVg^-{PIE%sE>vtl!<&FT_QI__4f<N?mT?LXH4uX z^0Bs10uCFW0jYe%CnkD{4CuGfPT()H(VBB+o9Nl6a?1ZCe z06>?)`Qe|`pcaA3_FenUC(Ev~J=8H}BlX7FJ#5`ET+V-&kOjFZpuq>DAR7}kH~v6% zea6xjKeF0#dNzR=xvE^-itZ6saLEP{R`!Ts`@Q_l>(dVV?!s7}{OfzJaP>FG*H|oS zqP0?=_rt(19QCUllZOS27B2Whd{`;IDN@do(TdWAQ^}%2mQ*)oy1 zV}i4rPwe0xAJ4t6`F(ME@c!Y9|G@H!Un3R#WBqsIV^YV2Uc(IoCkVu!%TNL(r7b|I8Us`F=&uw^wO6MqtVeUs9byQ}T6@9h$Zh>vu7z&cQn-9JNLzi;2=| zjF%wCOyFW}&T?7>izg#HG>-O1X3{22+FU#*x`fJqAg5xBMmO%>ru=aW_jVy?F;a@| z-XG?u{ zwmHu-1NwpyW51e9(gEe;Ys;5z;IzyO=V+$XLP;@Gh`?xHL*8zK1tp8wNLrn&H|nb_ z5|y`78k$2r;+ALL6cg3e#`mH@e6S03LIs;$!^vD=8-8)=rcTNnHU|&$ZW;=-iV(Em zyp%(Xs)thJhC#av+Uh)+t!slXQpj~I(#(@kb~1Ruvxg6UIQ`CA(*U>UST^j`66{XgY*=^_L^gHUA>-5v3J+Z zpBL!^r=0T<*BJ^uY=8k_BYDPi>>N}W_z+LG*pzyHnfXz+HZA6>84Giq2hXU3WP|M>A+0ah$j>E2Sx^Iu6Zo%YhKX+5G<@URZgY6&3^J9vW9obGWtTU_|dbqz)nVvBC zAg~A({{NR7d-(=5MYI?o3!)+b;q}A%xG=;fDFOM5B>8KI1VpjYihZF-8 zQn|g;{-nHiA$xT=XL9wxU3*DaX1w}fwmJQ=bcLRZ2QEwX5w6fM!$qL|`efVO)9z<#xmR?J3tX-(d`#~Zc9u^HXRHd0!d8$CI!b1!3LH0u4( zEtuy_V&@o2R+lseTZfcukZS2%$+qe(wA4JMS;pzswdXNu?}cpG%>68&c(eir&a3VR zKnOqWhG~V^Qe350;-%am&RBLWd^-K@!Ir1&xysorYT9D6-)udJ2{B>X1^7Vv0u)rn z=4IbO{`L(4WT%1~`*Uhpij*wRej&xg9Wt2YU#&9Cd6}eR=W5T{kqC=#+G6hznYwwz zk8SyW>)o6dZV}2uVVFe-^Mm@lp;D^ZWH_xqRlwR?_08Tb+s?K zK+MyeK|@AQ$k8*INv?3VRGIIDzVGL5zkeriQ?77P9Qn6>&0t>k7EPCbP2}Z4UPHtT zFbX!+1;C)UY{~^^5vi%foizmJ-<&8zKG0(#S(f;*<3e%Y(Ay`s`_9 zo*wS|iS<(i-<-gms0DG=%A@q7uxg?eM*T(&7I~#rJc}LAk{rcRi~wQpXOV(LHMqaI zP6g5zE6y&$XPk&33qe+d;VyQYgueG1{EOf(bLUqNbEm~$xE|9)J)%ck0q^7c!L+Np z`ZDH2_|$b~<3I7XRKd?w@L0)JB3DMcIO00>m?>~{g;EYwwQ65)H$+ZuSOql=m4@J& z4!qfmZuL)(sg%vM@VYzL5S{d04WStp+i09FHppzffciN`!OE%w7(C_7d5T%-ckoxw z9Q2ZM_diZTAl|YE(;a!R%{~Q3bQY3WM0K$)VjDLgxex)=oyzmR>LHw^Udc#zXql#$;ct2?wc2{$%G1a{-d5Vp-J zg19QC#rIHCm@;c41(7l{jm9yoyyX*_;ct&968j2+IH*vaVM)v z2PBuL(QYcYx*E$&Za6o{Sme-jAhT}3DMl!S*y9Jpi?PP=IUuU93sM7qX$MOE1{p+$ z5QQahwZ_^FU+tCmA#|k-8}JIKb2(2^m}szdZ2DBafDXQ&jK84s57WgNFjOCbuyhg* z*})sf*5<>R02>_$plfbd%RQlIqhe2-M8y@xr6bc?(7w)0t)cmZO+1Y|d`WY;p&Oh7 zSeAo&RiSt&ti1aev zX1Ka=>SUv67*`Zb4@oQUlydI>J5nF3t8}-Ma7e2n`p5*4IOwP`*f;n_8-s%|x zY}}4W2qHm?4BBrFTGkU9)et{pQ8d%i!U$M@+G_9lcX0r({P1=WE31k89M7}u$+*f@ zBD?hJ5V5WiS#I{r3HmSuYIr0=Wp+i+D8=24;7c-B2{|*rsw9Af^u}&XeW5e*PK{fF z$3K+?7RmZ7>tTSVxKUNf+_kdD8B9tk4M)2paoug2OG$egh#vXU$v2XVp-$G<_HY8d zIvG1u1YwIwTW-)mrvuMb+~w>gW`lX7mFCbD#o89_IGPGD38^~nM*|aROX$H5C45f- z(-fNu^2*@iRAc9~BsP+^ICPLqF=`Yj)vfK=Z(dk*&`OyD?5wmUCfQyaW&FGE2}jbP zr_M=-HAWyz|H}1qJGA28!rtO1hc58Am~=TK>o;B@)T%~|pt}Hj zAM+H&p-6|GR-h9F3I$%H0?H2jns*(=Uk(A8D5ug_6DvD0GU&*E8!A&z%PPJ=z%$0l zI4)d^zs9t+NZF3SG{7xmOy+wUk2we*i=Xm~hqr<;q5H@9-1Jd`(>*e49J`?*hLfDo zqPh7xj^OqnMEl8`2M4!%S;A82f}ztcXClTO%c^F>qTZ|VoI}?BI@3Phq|%|G)$qlD zBs~S15NiDCGFb+Q58JAL&$xNU3N{*zB6=x5^}cH#Z`H>Hk!0WKb&RxynR?gH*Dj zK;{u4Dz;lwRL+Y6i>KF0HCAy8@Z^^_{Ep4gL^r0QiMU)L?$4s9L8&@G%z>=CIodVC zk^u6ZC&wdXaV4qvn4zMY8hcj4dRAda&mLh`2fN8mDJMB z+ok_ageu3`wz}g{4T=f<2~f>Q1aLI(Rg?qKm-=+g?a)0Z%h^|;&8z!|@v~IU>-lXP zZG|~l4Ouv`+xisAP)U^o7Ge~&#Fusb+xf-^(Z6ocYFbwpYeNbzN}I7%#jF9AySc@{ z9WBJ|&G$*%iJuxLCBOwdwMb#obW=;5m6=9_B)^Pq)!h$BOe`aHUTiS}Z1jzLD(HNb zQ#i;8#!wqRfi{Y?3%qtG^%%pd@X3p#M&M!J4O0eGf6Hk(_aRIr5!4jwV5!&|pAGex zOIS@F_V4d0r#FWSy?4~{17cMTdQ?uo1T0#XFwNJPF$&=UieTu>%oPyL@bMwzZWkle=4yJUsn8xOO1U!L~Aw&jSD*;my(clkOfNHt{q3#ArI3AXnKX1Fya0L<$D00}{mWZRQN0 zSAIWXo6Ad&xr`l;hA%(zLWM3LFKDFVx#hkFln>MncuW)cVVpsQgiKtunQ}+pf^&u! zdIISUSV=fVKg`DmkfcYNpU3oksL1gN6n@|aK8Uaot4m~8(etl)#)efp`0C^04azTx z=|paQ#F`>o&=8IB+B=E1dij$og|d%ls-9AISdx+ewNAzmVK@&E?R^np7RJi++yuXr z-PyE$iGbc(*S9+JhC5?&rh{7(?M8{|OV8w}nA(D`#hTgSlI~0>!+B`ZZrFkrl=w}V zw>@rN&9;23I|Yl-LR5Ya|allf!AumDwFZ3@oU^ z{Us<^SC_6<3$sY*h(nB1k9|hH*R8aIW?|10NzWBtO}xfS>W?X-R?R%${!}%d8ipRwPI(xZ;4>M`l$=e>Do)TG|gELeUZl8CqzEg z0#>WjqRMH5V76AMNK%^*;^Ua}&E*@5X{Ve6y-wREu~vL4cTzn9xlv{f@Bm4f@ro(P zN~y&F02_Lp2?UCY@4OWGDbop2Iu)b#fOtg2Boy1z2PGC|R{M)%@KZbogA3owmpi2n zylsi`6%q+0~Wi)Q_$eiD%?%vD3=&2>pqSKqxmIt?63litgMik%&wv^5!VihK( zM(IjAdd!~pY#QD==&T2|-t~=m4c{~nf?D}5&ZDR((cFK#k3F=B{2I|bf{w02g-JiP zL47490dT?qUp25(C5L2dwz=5@i(A?2wl7BOx)ZWfBhWpEXx!qM7zWcjcxif9KbZk8 z7kEEHM9|J_3Th!fCDIGJzfnXZ%@N zLICDx(It?~TDgd_h{&ds>z`RRE$Z7Nb*$TF%R!4vB9NZTvna=SphSW$dC1$ZjJri5 zZy6m+2aJzwS7D~dZ^wS$3^rhm4nn954!j*F+A>OzFJD-bC337= z{lQNDyEeCF{K&mxr20#w^R2DwIw!Ha@B$wDJlCNv+f#k{?<=u*sY1S23_JCSzG`>EXT3-or$gbo~^>T|jsnJX@2n7$Ej}TVb)Igbt0GHB}Nq zA_19eh@2uRNn=wlq6&3LK=#9Jd6dsahT$kXpEZ^4V(gpA?M;E_)RQ6;1{Y4(cNbrTIo`)c^(1{;t`cuSuBTlx)@ z`7rgE42rIHybIt~tj;Ek=B;d!Oya${hg8+=Cn&f!{ldq4g@a`~are;i%VBnVoq7{> z6_ejTvhuc;LF4jtGRmHN$b2(MgyP%+%w_AbT-gW7)wC1^W~kNdPt7^VbB&7;>b{_5 z7r?PKmp_*fUo*Ao{robTW7wg3sL488EU+}D=JGdU41s$(J&)<%Peo;(Uo^?wvJmZI znwtK0MlGWat6$8zBv-WzKDHeQR`9Z3za)S3o>mHFs4Z4;J4MO<-_-eq2`L&ss>E_;OtVbgQdZ*ftN|S{e?Eg;!zABr zmwbaQhKvj2ws?tf)Put;N(STHn%4t0rdeY_044qIZ)dz(Y zKtYIpe~=hcEfXG`gHTgt$GX7%2t;3oWi%`{gyc&$6jN&Ns8&|H`q=dL^r?Z|I{CZi zYW&ay#@%ZYpKDIojwh>M(5041wy%&yNxzLGUYc@4!jfRpOwOfUHQ#a5O1rVE8nau= z>MvrGn)(VVH5 z|1>bH(KiR<6ka#7{@I%vfK5L4xPP=bLWN3loC`4T!r|l4Kgyh~gn%hypUhdLg2<5&BXo*C0qj zRY2%;jpu6-R1`2i9Qhu>$_OU8-fLy=`2QIDrXbOpX3Ms1+qO>Iwr$(iY1_7K8>emK zv~8Qy-~ZhkcP3(DVjlL(-VYg7J1cWlRj!pvPnGO1sYC>0?Zu^UH)DCQr?(s_h;b3= zE-p!qsCIxw5b&0TgPg9N4-IC=m?O_OT~4eVJSo#VFmrG4KqS!77*2%} z3GwdS9)!kwqt^%^c|b1r?LH=e@Hlaa)5{9KP0}r1P%5k2hI+1No5~rTwu!Ai(MGj znZ>KLA}9PqE32udN~wAP^^0Vdr$ZdlTZ(A4!kaYKWuw z{wWO1Fy9^oN!o_kDVep~g8m3okrh=w<<$`nWJlfmNrcL=ud;MtBO(te`p$2xVK=TEbW#+)t_Mcg%%HniYhOR0h zBq#%r<53XtjQm--?2+=3{jfDw?@YB8+dq#ie=!E$A9&7(>m2I~!qKM+`t{`)AWEIc zUg#lbxdW$^!$)Br@{44&5dDQoV4J`K&GgYe^tci&Egzi8B;mO5 z@TE9gS`6s?dFjZ0YDUTJFLuD=C)=@vu&?TGqs>*6HGTW87((4Pxu3iqP)^?ce0P5{ z^6tSq0_0-yk`cVIdFe<}Bz2#Gm`ub`AC(14%p*ssBcKc#4~m*$q}E!47CK4FGj3gf zG(HV;>oyx2(0d(*Y-g`@;B+~gNq+Q+jX&DxqRqFt*~mjnE)MnbrFv_#025Q z$kaOq69pyMv~w~6#mA2tU8`))2|ZW&f6Uu~5PuviqclyF5s?;Q8{FVg&$!V6dyZ!k zjuY7yQ>RCVsI#4B!XVVop*Y>r}H4UAtR>FRodyOXVeunl{ft8^2nuU-9!VtN!0;Xnbt`1C zR%(@?#a{PklXxKSPVs=NOuL{cAk0AA_@gbuBB<9t%~6_GXCl<~At5KM!Xa=zOrZhK z*e}GY>1IY)GY4 z!TI6jW`P7LpoW#HoOuhs^I(X9J}Sg=NW-|aWW=?sM8l(w{9#0s?V-^U<5MX@vLB^@ zjTxPqf*l>J6^3je0vix30Eb8JidyvT_)myrhFn$qR_U0@PMOGK`jdSyeMiscXmpoIbP;?A`y^})^2|>|LAK2 zOCT&e)3?L>CPgD~yF|iWFC3|tND;_jSi=JaIufrFOjKI@E6h4j z_1J>b)3vEr%G>hr7)bP(!DYk-(eY+&3?DHpT37tl8{#OF$-T-tpHOzG#NGZ@yb2iC zIiE=X3%pByCIElH=Z%6~MUAtYaNdg}JYy907=;N4nA4H8p)AnyLIvsC1eZ54VXw|A zgA6j+Zkuckt@Pw<=?#5kR;I14Hb$UU`DkR68+h^jc`(cy>RLBy%ztBs>_h%E@*|!~ z#`@0c%(b}y@$rvXP3Mj&uQv=H+Mhsh6VCm&H5;ko*pT#0&PT$M+5!ggvn2P%I8y`E z@$z!$GuGfq16b-BHMK*cIkiBa=GgJL*oRpBk-YE-4+YfV^c=@Op97J;(_N!^$KH*H zzhx{64YXahtLtpQJjVD?teAYYw~Qee*t4(~Ku0z$j`lN3-^*yVy0rOUe`i|%E_cmr zlr0Z+j1UBzH!VyALR=FR21qDL>U(pf(uj!bs>^s9gfqg$|UkmUvkCtyP|6K=6pUR=3&qYCL;AGiuhr2Hju~7-Z{LRfA;(7wppD$Av(ElBr<* zi2*V|*W8!zMeQdU%oYnw86NDee+s?siO07ajvtU8#s{5PJ%e&P8`HMR_m1q50A0@RS)Yd8|_Q2<3GoDwRf<15ol*q@dG&pIV-W}Qt zh$u&Eq(-4MT`AVzL?*QwUMs?v*t0_1q}F~4zz;}v%?|)I_fOx6csG$Ul4GBW7iN{y z@U#b=s^SH_HF1?ORoiNN-M^>sZgmw0Eg|(Np`Z4cNTXMfU$W=(c$s)2KayGw3K1y6 zzekOIyixt(1R*{@2=k2n_7Q^p3N_!@GmyVe$zsGmo|SWLWFa10Jq7r%?Z4)uwdjih zIduG5fbgvWC{H8b)_ge_LDW`I(#i_59}R`e5IT8!CNZO)1_F3IQYk5rGKZ?fC<0P6 z8FRTs;o*7EW1FPhI7)HOEqs@E!XhsAI5g?j6>w!`q}R&7Lw6+FarWwi)=F_u={n-t zQKZCCOO!wPswj!1RvnlXDkmg(lHpUr^R#xZl=qOB{f8+4wHCz#68HC5CdWLUJ#E{n zzQ=c0e(tjPR^PYf$1N31)^(S+#*a6mvWk1=ifIkT&01?Kc8At!QC;Ui88;0`BM@yT z+^CxLlDp#^1jpvJCqddV_y`BmK(vi5rc{Eb5bE(pOb}c44cI_D&+2qCcm5!XF+Wp| zxN56P{GyvjSVFI`Ucas5%`{``=2KDobyYLrx>3rId5zK>HQA5f|0ik?o3G*>Io$;I zy@6^50gYt`7aXB%Cu1!&UT@dx3B{xQEQb?an9pN83(|jg5}0llwof!Ub;cX#ixRS% zE0fSdHN0Q)ga>OT%sp*?$mBR=*l}wi)&!G%;M?Hjj$47 z`J5n>hGoW2#nVxxd(LB2v9U75&55b8b0Si-gfit}0Le+l_US%84Yo#ueEcbNnlv#N zDwFfmBdx)1oEv+vqWMi*MyFSA#8eR2_zJb>Z(s83D3o&h6R5pusbbEjv5LwdcS9B@ ziHYV0HpH;Dc77KJWM@(2Sj9UbRxks-&Si4I z6~{^2{vhiJdohCQ^@6g)g*ysqJD|E{T)iNKMmP^meTxW%vW}Vrzl8>9+ti@{)~?>4 z5U6ROm}_1F*&>#5eFt@q1#ypW{A9?hH1%ZcQ`yvovJS@4&fUQaUVMRW!lP<(B+xF4 zyn_ZUi=fuOPxrpa;0t#Rg&a|yO&qa-@^5~cBFT??4Aq-Q67XY+{X2p|a)ffWy4xWU zL|2kyAphvyW|&9;($D`(1pq*G=;D0M42Y>F>fJ9l89O>CV2AtNPbT8 zVRVcNX+xJTuC^*26bp8`W%vva<_?sYLS6;R;=%x7g&UMl(=lJQtHnb-)np%QpaT!& zJSblku-j8r`>4VQ^GEx9toD*A%#p6nTW14#^DWyOUL)PjfL~)BYNEn1KnhO|P4T9m zBYGH*bQw}ej#k+4(ZeYXUW#Y;H)%B`fKU>la%NvLb=a%#Ft(7U-I+-#_?qj!gaF%s z#2SCRy%**fijX@|81NUxy(p24^*_VJ#xQe@T#X8ql4tC!if9$KBr~rG|DR9 z_0tc63&69+B=;M;D3mSir^&q}`@?6uQ5&Ky_M$##UD|bTmNwG(Jt@W{$7_VXw(%JG z%|`E#h1R(?*(VO~Dj+=#ehMTLH`2X(>j;`1Y*$c)LD*<*X|GMY#)h`vF8VJL4z|WY zhz@@N+JJCn6?mn|;1{IqA@FhiuwI=0p;CrOt&eL4_rU(?+(;6XK}A4slLk#_-q5i^ zk{aF>xh0GjTlbI(Yb})Q81+1k;0{5NI0QzD{gKVW%BvC;jXxW!0zv$0Y%akoet{gt z#J1{)3m9Q(dNLFYK>>pon&g1O1U^OOHm&VXxkU z$*Z$PfYqx@%&F)h%&I;b>X~;iuL5z81k$MA@ncK{^iX;g8g?oTwSw?uXnjAEf=D~j za(u2sc$4|*4iZxUH6Gb3j@7kI)u@!Fd67`BteE}j3$IC;pi+@)(=jg3`MNW zEX8y0LC(Bb!q5V8o(pzQGnWr3+B3j->C6^(FtUBz0Rs*o2+uQGMMVm9=PrEjTcbj* z?lV=Ver_@${@m_3cu=mv@3P(X*%F7~!$ARVJ87RIwKx-R+}~H4ZnS(Tm*Td1c_~cp zO$Riqp{_xhd}VppND&D&lr~O%`sxubnxh`U(K*y)k(-vRqQJDEKvB{n|EHT}&Ptvf z=6$2IkrH_`mowDwLN+<|Iu~X~_~ZoCLsLIS$1nAD@U3NdqwRy^HQg$C=9L+vy3_)E{DQ#yy5k>o#?nSNCSRT)t=zri;u#|opn_BW@$zOx8(9KR_ zepK)?Z~stTk8L1S47(74*bva_At+H>?;w8Y&fC5&8I*ys7sY3^mbZ(yaj6--r+6{PvqgS*6P7Hu8Vwk$2$L)-O8 z4+ZG&uZ6o6CW@uj^$R&Tg-sJv>~8M`<7ADXqs^+qs(aVlLugNA;|EjABjgP_3ea$O}{(%hB(&JhUioZo$!FSP$#M7?i>FSi30Jy|e^) zIm7U`>I2Gp7?{j>BXTGu*=#aV3jCNx@*+^g5)YKAnbHfKAB<1sm`^A}E`PL-DuXIJVQ4b#9oK?MO*EEflgm;1?l7jEOQ2!j(k2UQlK0WW_l$7 zBVKlj65+2IN+rBp2XinMk#*DwcQHjY0eFCE_T@^J2xG}hYSnfPQP=Sw- zTnc;uHD6a98R2^GC035f+B38iA=4xIk~Lq?lT(PnX1Y|2p`EIwyZTrt*;JO)OprRA zfL{u!)#@uA`79Q_2-SnI&z5nMca3rxu2c?m7k?`Yx8xg`4O%4B@L#WsB(}Y#&q7su z6NUtKu`GSLqcMUMP4&j5GsC4pAj{n<)E`VD&{oKG9;KYjr!t6@ubu;7j?|Zhx3F+| z2Ub8ea>c&JX1;hm{Ods@_Ydt_81}B`n~>|(AGb2^m07|EYn)FAgy5-R`9Yk~47as8 zmGSoOlG)wJuh5qKh4sdh%4!Ap!VjF@l8usHT$i3@3E|7X!^gez z%1%XI+;WTn@*f@|%{;vhk=Z59Lh-@or=Pz>TMJuem27~#4>NK@5k=Xjln=#;b+PjZ zayeEe#A8=$Q%aPSf|Nb_1$B;)!kGjXDbtpSHF+2&z(4n>FR(`QAgeJUmi9o>QxTl+@IZb8Qgzhf z@41=9BrGAYu*CpASZzaiq7qZ`b*WKlA6`;s(vt0dXiT0M^&%^umY#DNr;(9De{hMxIz^|nAbJ0Om>M^70 zo;ifl*(?U1SCQ?`Mzz&8A=~{d^&9Av9_SQ?Ae5n7O{@lWvCmzZYJ+J&q45_c>*<^Y zZ3aI;Sr|D&Ja1?(@BD6bsuoF}gM-(U?%Ly^aVRCSY=$#I<`p$K{a$&da<lUZpuDU=d^-hHfx}FR?w4s}BtmT#M!Pze5pyQVVg@M~-GEh8{<$g|=62?i zH8*URi*JjTuPQoEQIf;huZCqa{cY<6;TAEyz$(ojS|*~*nN*u9&v*U$MuApFMtqmH z>RCx#hWkG+qU9192*-^YtfaM^)BQ@?Z(dqi_+|m@*7BZ*gE``cUDl>{AqSw|LEcT-<5Kvespv&|63`?*uu%#(ZbNh*~FO6&feL= z=6~1BDZGy|`R8$QhXw!yc>)9g06_r&0JzjXSHd1i`JUFBBh({7gSJoTcC(|c86SQw zX-MvN;9Og;kZLai99CZuoR1;-HBBBsi*Q6(=aC-jfdNw=9b_~h1f;Zh8hcFODX_Tcd`eaifrcKZOZ-8%!%JT$1m%QTg1-4OG=-o5+U z_6sA@s()Ho`?3cmeE4^FKfW^UFxF!=tB*%r6PMK_&ur^+BzXD!e(T$+XJKppE)=s9 zvMJN!`L1>-Bg^OlXixTT?8#R1RdJmw_z?pV;Zks77hsR%n|6}BZirWbEUuBJVrIv zOmaJKE{~=F;y4#~!7`qu@T9wL9QHk}y4;!o%aQN!kHKmL>i6y&+L-mNfAmTt#L~ZI zpVY2X%p8XXxF9RlDNtfd!UB2ne$yXDuLNV~G#v1?uwEx1orRm{adk89*cd3ym_)qO zhv5_Z!TbeCarZ?EJFn!-@q^?3X+{_|nG(Nk9;lZ-_dI{%ci6~zKR3=&7ectB1aH-# zapM-8q+XRD&e~W~RzTU!*jrN0ej1>@i^Z$5uTOrL@9v5HPy(Lot|2BylQ7${h|SLJ z%eAQ<$stmD)EtJYb>Sj`)I2>eRiY^d@7-Ji0erO9zSl1g3v63f&J=YF$Itz?$h-(a zcxT8vLv9-Ru2qI2C^ot8ArDfn5UOMkS7sp?e!zKse3&2K6W+)KCFhSxU?`=72W}79 zK_F8}JX<*Y$&)dUt2}s{HUhnzFVZQ_u+*uBbPECZq%v7yLf&)&&Ul>nKN1~lua9c5B=VqhhZ`^Rh!DL-s?~JT8QXj z5cW#!P*{kO4Ax-oEZLU34akjrA0zG$j5 z5hd2nER;!Gqb;=GR`UKenfv?;{j*iP6$=TD5=Bu+m&A-VGKi+&?E}slhYh+bt&)DN z*~+KklexhWjJ8YS-%EB@0h*J% zQr>srOsc@-KPbsUG}vxDV85Oce3lvqE|j>J;w?(s1Ehpi{@8%W2p^ z*m}x1`EcXCZPo#Eu=T+1mcebq2?YA^ z5DH>E`0KqTX1$hCQCgbq50t~4H4LGl?rlT^;%kF6QG7tmFrC3!_?mY1Y`^jl0g zW4SI&G0dmdSO8c4OKaaBd$$+t104bct46zhAh3Hb49)CuA5zH>CilG>oLug=dI(+F-^#*kUuPcntR@%va=@=164y!pAtru>rt9BsAS?=8 zMzl75)}Mv7kMOB~zxw2TcCsegWHjxOV&A?H=Un=YsyJz^Q&jOWo?9gwJ3XJw`cC86 z<-39N+4@W?;FV?nY!Lk_rKcg>aw}^1*n!oWLOAt21)zrGu-QQbC?()P}+u1ZjLP&{t7F06<>PmhfUMBPSX}oiGdvH%16L zYcizh0~ta5*`HUcNC6gL++<_m04(fUDJ5}c1cIDDDA@d5JP=V2@@T8F36blJi@>vK zHwM_@Xr^s3RbXEz#(#04Q|3xcA}?DM-fGG<8Rl^>DsF^w%G}q#ESQ}lYQ2Z2k>9Ck zgk6}+0ygx6{EO>NT_4X_OGpP8mx;#_CaESF|0*zW5TJgwk(a24KEKK=?q>v5Q0n7> zB&eZ|Hqelo`;C`wM-1;K}j4Vy0>83(9RhVXl_3*k8c;U`Rz zWkspPP?@&vlFbNmsdf&y4V^fei`P@n$Cu@%n~U4;4+R(KkrzI7y|G7>KPYj)5)b^y zZ{vF++))tg8yX)&Jz%~%$}RzZ<6lk2p}dkaOtcJV9X`m33=5r4TL{BosM?Q z?}#c!zwNLy?r6(3t9De_->u2Ha5}jJUs-fhp8v*vd$q0baHw{sCebChKSnN{x&2Kpx$x2m#O|3CIJ-9d_A#`B35;GQB3x?WmTX1N#n--IsR8_8~Cy zP$Bu%L3$mO$xJi7O7@GwV)?qn?Av6+{<;bQPA}5E8(D{KrNei2p63c@#xv}^c^xdD zzZ)3%6!V1daoYR=GIJ_$d7tkuJO~COwUhjHOFfcPckDsqvjC`?!0qcBP$3LiKEq1 zKqK=yZJ?J@Hvg(rExvb@=9maqmaLKvX1Dk@G-%479;X`~qHp6XY*9ak6QFHq-H0_I zh;Zybr5xj(v3`$#FpbmS7c|BFsSMl~F*=iYe7VbxTqQ|CKiOLEm`RxkhXStm#J!_N zio)@?%f@7}KCJ~^_WnmWpbKY4Qri9o+4-n#}y(GRW& zK>e`Ul%7Qx3v8w)M&lk8n85oKcFcS<4ejflJ5J!LkoF*j?-`Xm-ptv_*RRU|hJ4MU z#}`Z-|GZSFG<-v?m02zc-6t^|A1qVevR9E-iXTugQIdw(RZ89%bjmT;Q%qL-Zkh-m zb#iL4*VU8&KFx>`jgzEU*j!nBpdq3`af8Y|q+8-o1EFztlYJr`h+K+RoOX|Ln(ZS0 zfSv`)dkz7ScGRI_Y}Te)v;&W+GE`lFe#+DpjXx>XSOu&j9$Mz!&R-iRv+DQ92e-@S$Z>p+9QSY0h%t_3vTH9AL?yCZ>P`mN&-45 z3KDCz$z;;mX>k(g60PIRaC`LSgd*Rau8g<2#VD(UsLPI$WG?SgQe_XY0_Dy(#SFT< zZqzP&{?c3f_9Sg8(&LB`>K2m*|2iZ+_7`mXR4wM89OYw-fXyo$33EMxfgLR|Xrn`;Wy^0_{j$)^5DfxkTpS4KEIn|mR45f3!jaN& zh~HjlNl1D&QUEHL@l5=7Khgav{VD6xbxTPrM?Piw=O~5|tqgrcz5UqC8$_Ur-`n1E zM~Pz6YrTs=J+-jT05B)-M3GXDs<_m{5`F{ug}{eO#;!6{0pU13G-pEhZbN^k4q-V8 zlnljX;e?0V-ZBL_8w>&chE3=JFYnSIKVnf7|CFBR4e_x?vR5v}pQM*{;++yzGM?jo2As?f`BM6U-DzMvsT1n}m|)Enpqjn!@T5^j}F zzsS&c%2wnN0cWW-=l0WwB@b%9fqfs-(-CMt|cT7obv^3quYZR@Yb ziBeBb=>O}i9-ROiS?L82MsHw*?pGrlZA z0Uy2)J_K|&;7q3ft)uQ7 zyJeaB1+whaO;A5UrjkbaW?uiO`-eClz6UV4oY?-C3#C}g1Hg-mkrh@Jvum9|)yd$n zCU%~3qe&sEB{rjOH`S3?-GB*eN8rGTP~n^4JVjA-GR@4i0aIoUTVnaTv4fIuv$SH^ zD@X!G;IU8Kv*0>y=bzSV;4?&-ehDKZl$#LV58~0XrZ@l6dF3nS+{x3ypPo=7`V^&D z0z9}v?Pj?tx=|-%(Gk|rO$5va(sZ{`g^nW7@4=n*k@BvGlDw}rR6?tFN5%(+$wchQ zN|}Ont8_Q=yMU0uF&N5yr^EUM!6xD6QFYOUhfqL|e`&H9amY1t9as!d&>qq^=l7Jt z#=|O3?g0#t5eAhX!C8wo1|$8bjKz5n8&8RWCSt(L$}V#xIZ(A}(-LQ)u2v($DX5!TKmmUC@>4h74JgCye zBKLrrTNTHpmz?g{)vpl-t2{F<+zMMTt74;Kp*}d^@<)8Nbm3Tpl7>z(0E#pCuGh%L zXOm-T)7xo3pbTF5@u$v&8bw`23M2(&Gzm;Zprzghx~jawm+A)+PDi*#Um$#h<>#U% zo_!DQJ)TL8fA|RzV!|>jHJ2@4s%-0^kSZi77osuK-p5Y7hNYSp17x}ZH1G*9^>*Ie zv?N(YMUB!>iMVs&m-$hP83DlE%{F9s@g+zwxl@YT9%RzL<`jpQAIEgm@=;qUIV$@u ztIeeg2G!}?77t&vpdao4=;lQ#{ES=6K1I`Jk70n&cp9M81 zfHbGSnY06=!g&ctfnwHZ^r8i~SXeCmxPmNBCY^*;gFhfoVhJFQlK<9T?m%jVoXBh^ zXPvcQNaN@OrTbX8mb-I|lf%8XeF6>({TU*%Ks)-h)tl9st@_4;3@PtCF-)hNj047gqLIZylPq;~Z zQHA_$AvJ|4P4O!wm7socsAy93U&Qp!O!u+EF_Al)Yv${C@$XOCP-=&o+S&$MOs7Hq z8n0kVapo6ZH05g4;+{TB1fNF!X?2uzuU;n6O?RZHxxKNA(fN+ChYw=0mQUb}$9>lu z=&2uo_gT*{o6uLNtWxL1k0E|HWZ()MoSq1?s)xFAfZvYgvrm#w-$lTo$kz0{IqxK3 z^-E7{2D3cN)MID>LqpVrK4J-)K~xV~QW-=n!Si=22obMAAjwViFhF z)|y;aX)9DSk{9I(lH)bGkwrEyDw>O#12oK@Z+6uc$_wtv^|gr8*z{K6SKu#av^H%I zI$^I@MmOKI()pIgs_bl?Nr&Z$hb?$qgo?$!b4%|0U`$cC{1CMnEL(jr-zb6SsfTx! z2u|DLbA8-C8=H)aA`Gxb%Q&l$ycds`Es^w~@~Zfy_qg;;b9=w{)u1*D)5?OSC|SL{ zit(+wZ8k_wq5bW#XX|5|&qiiwn$~bBWwY+lPm88^r*3(Ylv(9BhEr$;5sHfc;fx|Zd0HFQ%8Mv*1jftLxt*MEliLKH9k7)do&bbrzNc^|; z7phgeB9f6pLsG^24%hj(1f7eT+HJ98dnY^%YCA{@z;quS2#xt%GJF$FM3HcO6Y05x zR>ETwQM~hoxObSL%2yIdCjjrOUfWf=&*b#Oq#}^ATB@UULFe;I?CELxDX8mqeIUK- z@8rmyeYS2YrCl@x^9@%D|`$*EG`3=mEM!-$*+gKVRJJBy0mRb zwv^ve&%3#aq2oPzc0GO%=H+{-TF7Ehx|b*4%GRw97HdvYDlb;^1OyCmx61QZDL)brzf|>*SNHv!AA-#UR8UtT(Bdw9OM{^b9| z1}~-Pk(ZZFo1tz)QiQ&j+0fb9k$$BeI);k`ZK3-!<@0{Dx+=;`%BkA;V$`(WKvjE_A{bPB3c79Fel%VJ z*WR@?-iI!4CQAE1z>tnxI1zCz>~v3jK4~#1Jh63k;nDd9voz8m)zAl|(EoN;_TRng zKWQ+$3q3bZoZz$DpDLJv2D-4N^~U^pt=#+-TYv!yKOMAP6=H@L?AHTKk-Y?+htI^+ z7V4-EN~J%GakuHzzkYm)&K~$k+XkYJ5cD(wUFK^*wyF(1?HAgw?Z=B%Q|0PwOjgSc zk@Jmd)Z|m^<^nsPCA~orobauhF_p6LQL2QmoWb`#6v|+weXjFFZq%jKOrAyM{kC?y z&sw`$!FBW8Nh7m$I0ravf1vGkPqYf?8t`5ihj5u~#xPr}KcukodSIS^;UQzTy652a ze%V?rcM+oHAhjHDwE*6aehkmga_hIdhhvQJCj{Hj=cUuHnE}pf`vH$$5Dx&{Mnm`7 zwVj|RkhBWR=o@9*oLWr=0*Xx93|GE+&`cA?9VKIb*ub>R!Xp+Ptur6B_N<6 zoOpCpl=@unZN}U!-;IZ<91A>bY%aI5qc)Aa>@7v^JY}YwNV+9%93^H4pt!#meLQm(w_%( z21kEK=?Ori1zg-Q%4LVC0s?*i;X0LbmLl&~8j^J$Okb(qys1pR=z#419Ba~ew@ zQo%ohVYcJjnK}`*bj+uo3|lw)SEz3@2mKwS$A(0;-%%WJ?vp$uN8DDJPqSuBKr@z& zL3K%ndS&^3oJg{edo z2m-j-U*#MNC9H`Oh{2Mumjx)40~q5#RswvdeZJzzZxqz;a)F^c{R+>PH^M^6T!1`3eV!3Kc~!6$R~NX6gT$ zv%jD2HH8^xve+^%rIbpW7Hi6Gnrtfnehk@KG#z4Hhw>g*Czx0Ul3-HVq*rhdHQsRP*3Z z%k&8-*Gl;uwj)0h!9Qes;=AEx!$I^Ms78(ixrz|R8rX3~MJs_n!~pH61-%5q2+p+s zxERU&qyf!e*h01)rE!0nbD(*E4f@uN*eS3801L!f)I@(W_-fUFz^nl2y0?c~%at?H zZ+ZVa_|pbI@x;#sD)~6(ILKvy59VX~#95CrV+P_3rPa#gBz%-S6e6AF&?XKTyf(fy zN9fhZI_p*lM9gxv%RnQUwdjb;21`gm;`&+fg>t}l#aWP%jnC4|Z_8^vo6mE9Qei+# z0-Nuyn%ioQAi^-(rf<>lTUD?Iw-Y>1Oq}wnVilWb7-g z0&K8`ivu%|tKPbadfp{MoTnOAfHC^n*JGm~Vv(2wHrn}R((VgHNzHBn3Avz!Rn&5k zQhB1W4V}--6kPr_a@lTkiZX%FGfFwIk!F)^El}dxs*9#X4VRDL6kDDsS4@+MfPh76 z@_*ILPuUnsFolV*LyvOFmWm@32th(55e1akLp(kC<$)1bFD^!;>2%11tKfuWR-tGw z%@r?KAskYG7%n+Z5YKtUT+jIT89O;V<(j3jortJJ-t#XtX{Rc4%9D6dL#~rCIETtp zUtZWOfdF)xPYDD#)3G>7;j{W!LRc2ErO_uCTe*DA2LG6XQ5QSBwPLil9v;Ow#C#u8 z0RXB2Obazg9%rH0Rfe~ZogzY#(-ccGZkqAF~(lqZ3jC?N_J7zB#50;;JZ zu%aR_Bo-`HL8J|%^cn%}&QN_8q@G{6J`Q_0!b-cO9i$ooqe7IRVt0{JVXm=`Qg_<` zG^?wxAZ%HQs7;(T^tq`X5zbn2)1n;`4u!MmzoPFO%)W)wKK5&qnB;@(aZ{H-pKG+4 zKAk}2plnM4LKrZlz@>VOMzc|qO0!XgLbK7?tR)J?DCQ`L6~NaaER*;NHwhS4n1>Lo z@k;IL(ci!VoN8W!N>LJ;LdwMCiZw7YehM>Z3F^Z1C6(QW3yj`W^l*79PBGQ-az(}T ze?9U(_WiAc=AA2Mje4de20yCC{a_9Fg$%mSeb^QcInUO5SV zXnZ|fN*R%Q0=2%xRi8P3qdBGYDXceng|%9AsM-N?523~#oP^J|FvZ^~#$o9Y9>3&@ zHj(28jGB2eF-6LO>?BIgWTuAK^tm;=Y{~wpB}oM44gxj003+$!2&+j4{Y1+{8gR+) z;?8-T!E0SrN!nVI4>C#7xCXg{iIfO#Cv*M=m8L1vS+^=;xO}c|yK0s3Cu!7H7S-oF zQ8BaC!>L)VW_ELUKoDHM8wgb;%@GRY*2)UHPQ}=Q!#35Qzpj(21w5Si{@(#J8q)f zJEYMDC;oAj;8x|yah6sqL$rKlzf3Zuw^e$%wWSn?5$p+s3Zs-FE;1>XrLw4bqQS_v zlcDSE40cfLK|@einW>X$>EFm=ibU;q8Q0tK&sRzBt}1In|5-)lJpoG6OVpUS_mW9w zx)QEa)MGss|HNCWffKt>5Q34diQAJ^uO_*XEv0U*r<}7?(SM^q*iNnk-z2Fs-gu|J zEQ_os3M1QFy1!`t#)TORQBe~RC?{~b{v*Dk(|)eh33riT#=;jk;(o1Xyj*3X-$En_ zYZgme6xF~GhfnDI$GHw!-fdLa{_O_Ck;MW9vGZZ2W49=6X*hkD1&Wxqpx>V{=0Zh) z{49KXD8nX9Mm1LAqcRB-<*GUHvIOUcY& zX8(mHLPm;zleN!vJU6=;^X_~nq}rxz+wWEAv||WP)+Ee)X%Lw&vjyI%CjmBcPU9(8 zt++TDF{cxhmjW3ePBvKrOr=g!c0SjL_HJQ;D2VF5WJ4PJhS1HbE#CzJe&%H;h3SjX zA3FWAFVMPkg=~LX5vD*lW0suOpob#bF?QaPbcM2W{yF~M@30KCyDHVqyKeK;TcL*2d^PWMQ)?=A3_Ct`KsX&Il(fwZ;y-3o8D%~gag|_ zmq57iVrZKDFfee zy!U9~U69z}ZOngy1ap}f7gOwr6Ta@~Z!$I3yvuJd^_op{_uMooYRS0u`1~@l0!4*p zN#zF`>xh-@;iaL{DHd2=Cf-9*qfuR^0tc_NfgP;HIlg?yrEU3k555A PeAz{hF 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 H0N?%(7uA#= literal 0 HcmV?d00001 diff --git a/docs/2.0/docs/export.md b/docs/2.0/docs/export.md deleted file mode 100755 index 50e315023..000000000 --- a/docs/2.0/docs/export.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/fft.md b/docs/2.0/docs/fft.md deleted file mode 100755 index 26a401595..000000000 --- a/docs/2.0/docs/fft.md +++ /dev/null @@ -1,46 +0,0 @@ -# torch.fft [¶](#torch-fft "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 离散傅立叶变换和相关函数。 - - -## 快速傅立叶变换 [¶](#fast-fourier-transforms "此标题的固定链接") - - -| | | -| --- | --- | -| [`fft`](generated/torch.fft.fft.html#torch.fft.fft "torch.fft.fft") | 计算 `input` 的一维离散傅立叶变换。 | -| [`ifft`](generated/torch.fft.ifft.html#torch.fft.ifft "torch.fft.ifft") | 计算 `input` 的一维离散傅立叶逆变换。 | -| [`fft2`](generated/torch.fft.fft2.html#torch.fft.fft2 "torch.fft.fft2") | 计算 `input` 的二维离散傅里叶变换。 | -| [`ifft2`](generated/torch.fft.ifft2.html#torch.fft.ifft2 "torch.fft.ifft2") | 计算 `input` 的二维离散傅里叶逆变换。 | -| [`fftn`](generated/torch.fft.fftn.html#torch.fft.fftn "torch.fft.fftn") | 计算 `input` 的 N 维离散傅里叶变换。 | -| [`ifftn`](generated/torch.fft.ifftn.html#torch.fft.ifftn "torch.fft.ifftn") | 计算 `input` 的 N 维离散傅里叶逆变换。 | -| [`rfft`](generated/torch.fft.rfft.html#torch.fft.rfft "torch.fft.rfft") | 计算实值 `input` 的一维傅里叶变换。 | -| [`irfft`](generated/torch.fft.irfft.html#torch.fft.irfft "torch.fft.irfft") | 计算 [`rfft()`](generated/torch.fft.rfft.html#torch.fft.rfft "torch.fft.rfft") 的逆。 | -| [`rfft2`](generated/torch.fft.rfft2.html#torch.fft.rfft2 "torch.fft.rfft2") | 计算真实 `input` 的二维离散傅立叶变换。 | -| [`irfft2`](generated/torch.fft.irfft2.html#torch.fft.irfft2 "torch.fft.irfft2") | 计算 [`rfft2()`](generated/torch.fft.rfft2.html#torch.fft.rfft2 "torch.fft.rfft2") 的逆。 | -| [`rfftn`](generated/torch.fft.rfftn.html#torch.fft.rfftn "torch.fft.rfftn") | 计算真实 `input` 的 N 维离散傅里叶变换。 | -| [`irfftn`](generated/torch.fft.irfftn.html#torch.fft.irfftn "torch.fft.irfftn") | 计算 [`rfftn()`](generated/torch.fft.rfftn.html#torch.fft.rfftn "torch.fft.rfftn") 的逆。 | -| [`hfft`](generated/torch.fft.hfft.html#torch.fft.hfft "torch.fft.hfft") | 计算埃尔米特对称 `input` 信号的一维离散傅立叶变换。 | -| [`ihfft`](generated/torch.fft.ihfft.html#torch.fft.ihfft "torch.fft.ihfft") | 计算 [`hfft()`](generated/torch.fft.hfft.html#torch.fft.hfft "torch.fft.hfft") 的逆。 | -| [`hfft2`](generated/torch.fft.hfft2.html#torch.fft.hfft2 "torch.fft.hfft2") | 计算埃尔米特对称 `input` 信号的二维离散傅里叶变换。 | -| [`ihfft2`](generated/torch.fft.ihfft2.html#torch.fft.ihfft2 "torch.fft.ihfft2") | 计算真实 `input` 的二维离散傅里叶逆变换。 | -| [`hfftn`](generated/torch.fft.hfftn.html#torch.fft.hfftn "torch.fft.hfftn") | 计算 Hermitian 对称 `input` 信号的 n 维离散傅立叶变换。 | -| [`ihfftn`](generated/torch.fft.ihfftn.html#torch.fft.ihfftn "torch.fft.ihfftn") | 计算真实 `input` 的 N 维离散傅里叶逆变换。 | - - -## 辅助函数 [¶](#helper-functions "此标题的永久链接") - - -| | | -| --- | --- | -| [`fftfreq`](generated/torch.fft.fftfreq.html#torch.fft.fftfreq "torch.fft.fftfreq") | 计算大小为“n”的信号的离散傅立叶变换采样频率。 | -| [`rfftfreq`](generated/torch.fft.rfftfreq.html#torch.fft.rfftfreq "torch.fft.rfftfreq") | 使用大小为 n 的信号计算 [`rfft()`](generated/torch.fft.rfft.html#torch.fft.rfft "torch.fft.rfft") 的采样频率。 | -| [`fftshift`](generated/torch.fft.fftshift.html#torch.fft.fftshift“torch.fft.fftshift”)|对 [`fftn()`](generated/torch.fft.fftn.html#torch.fft.fftn "torch.fft.fftn") 提供的 n 维 FFT 数据重新排序,以首先具有负频率项。 | -| [`ifftshift`](generated/torch.fft.ifftshift.html#torch.fft.ifftshift "torch.fft.ifftshift") | [`fftshift()`](generated/torch.fft.fftshift.html#torch.fft.fftshift "torch.fft.fftshift") 的逆。 | \ No newline at end of file diff --git a/docs/2.0/docs/fsdp.md b/docs/2.0/docs/fsdp.md deleted file mode 100755 index 69e819cf9..000000000 --- a/docs/2.0/docs/fsdp.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/func.md b/docs/2.0/docs/func.md deleted file mode 100755 index 7d870b8a7..000000000 --- a/docs/2.0/docs/func.md +++ /dev/null @@ -1,67 +0,0 @@ -# torch.func [¶](#torch-func "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - torch.func,以前称为“functorch”,是 PyTorch 的[类似 JAX](https://github.com/google/jax) 可组合函数转换。 - - - - -!!! note "笔记" - - 该库目前处于[测试阶段](https://pytorch.org/blog/pytorch-feature-classification-changes/#beta)。这意味着这些功能通常可以工作(除非另有说明)并且我们(PyTorch团队)致力于推动这个图书馆的发展。但是,API 可能会根据用户反馈进行更改,并且我们无法全面覆盖 PyTorch 操作。 - - - 如果您对希望涵盖的 API 或用例有建议,请打开 GitHub 问题或联系我们。我们很想听听您如何使用图书馆。 - - -## 什么是可组合函数变换? [¶](#what-are-composable-function-transforms"此标题的永久链接") - - - -* “函数变换”是一个高阶函数,它接受数值函数并返回计算不同数量的新函数。 -* [`torch.func`](func.api.html#module-torch.func "torch. func") 具有自动微分变换( `grad(f)` 返回一个计算“f”梯度的函数),一个矢量化/批处理变换( `vmap(f)` 返回一个在批次上计算 `f` 的函数输入),以及其他。*这些函数变换可以任意组合。例如,组合`vmap(grad(f))`会计算一个称为“每个样本梯度”的量,而 PyTorch 目前无法有效计算该量。 - - -## 为什么可组合函数会发生变换? [¶](#why-composable-function-transforms"永久链接到此标题") - - - 如今,PyTorch 中有许多用例很难实现: - - - -* 计算每个样本的梯度(或其他每个样本的量) -* 在单台机器上运行模型集合 -* 在 MAML 内循环中高效地将任务批量组合在一起 -* 高效计算雅克比矩阵和海森矩阵 -* 高效计算批量雅克比矩阵和海森矩阵 - - - 编写 [`vmap()`]( generated/torch.func.vmap.html#torch.func.vmap "torch.func.vmap") 、 [`grad()`](generated/torch.func.grad.html#torch.func.grad "torch.func.grad") 和 [`vjp()`](generated/torch.func.vjp.html#torch.func.vjp "torch.func.vjp") 转换允许我们来表达上述内容,而不需要为每个设计单独的子系统。这种可组合函数转换的想法来自 [JAX 框架](https://github.com/google/jax) 。 - - -## 阅读更多内容 [¶](#read-more "此标题的永久链接") - - - -* [torch.func 旋风之旅](func.whirlwind_tour.html) - + [什么是 torch.func?](func.whirlwind_tour.html#what-is-torch-func) - + [为什么可组合函数会转换?](func.Whirlwind_tour.html#why-composable-function-transforms) - + [什么是变换?](func.whirlwind_tour.html#what-are-the-transforms) -* [torch.func API 参考](func.api.html) - + [函数转换](func.api.html#function-transforms) - + [使用 torch.nn.Modules 的实用程序](func.api.html#utilities-for-working-with-torch-nn-modules) -* [UX 限制](func.ux_limitations.html) - + [一般限制](func.ux_limitations.html#general-limitations) - + [torch.autograd API](func.ux_limitations.html#torch-autograd-apis) - + [vmap限制](func.ux_limitations.html#vmap-limitations) - + [随机性](func.ux_limitations.html#randomness) -* [从 functorch 迁移到 torch.func](func.migration.html) - + [函数转换](func.migration.html#function-transforms) - + [NN 模块实用程序](func.migration.html#nn-module-utilities) - + [functorch.compile](func.migration.html#functorch-compile) \ No newline at end of file diff --git a/docs/2.0/docs/futures.md b/docs/2.0/docs/futures.md deleted file mode 100755 index a35b003cd..000000000 --- a/docs/2.0/docs/futures.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/fx.md b/docs/2.0/docs/fx.md deleted file mode 100755 index 7a4635d4a..000000000 --- a/docs/2.0/docs/fx.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/hub.md b/docs/2.0/docs/hub.md deleted file mode 100755 index 885ec6c00..000000000 --- a/docs/2.0/docs/hub.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/jit.md b/docs/2.0/docs/jit.md deleted file mode 100755 index e3fc8814c..000000000 --- a/docs/2.0/docs/jit.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/jit_utils.md b/docs/2.0/docs/jit_utils.md deleted file mode 100755 index 32a5a419d..000000000 --- a/docs/2.0/docs/jit_utils.md +++ /dev/null @@ -1,8 +0,0 @@ -# JIT 实用程序 -- torch.utils.jit [¶](#module-torch.utils.jit "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: \ No newline at end of file diff --git a/docs/2.0/docs/library.md b/docs/2.0/docs/library.md deleted file mode 100755 index edb2c392f..000000000 --- a/docs/2.0/docs/library.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/linalg.md b/docs/2.0/docs/linalg.md deleted file mode 100755 index ffb0c0e8a..000000000 --- a/docs/2.0/docs/linalg.md +++ /dev/null @@ -1,117 +0,0 @@ -# torch.linalg [¶](#torch-linalg "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 常见的线性代数运算。 - - - 有关一些常见的数值边缘情况,请参阅[线性代数 (torch.linalg)](notes/numerical_accuracy.html#linear-algebra-stability)。 - - -## 矩阵属性 [¶](#matrix-properties "此标题的固定链接") - - -| | | -| --- | --- | -| [`norm`](generated/torch.linalg.norm.html#torch.linalg.norm "torch.linalg.norm") |计算向量或矩阵范数。 | -| [`vector_norm`](generated/torch.linalg.vector_norm.html#torch.linalg.vector_norm "torch.linalg.vector_norm") |计算向量范数。 | -| [`matrix_norm`](generated/torch.linalg.matrix_norm.html#torch.linalg.matrix_norm "torch.linalg.matrix_norm") |计算矩阵范数。 | -| [`对角线`](generated/torch.linalg.diagonal.html#torch.linalg.diagonal "torch.linalg.diagonal") | [`torch.diagonal()`](generated/torch.diagonal.html#torch.diagonal "torch.diagonal") 的别名,默认值 `dim1` = -2 、 `dim2` = -1 。 | -| [`it`](generated/torch.linalg.det.html#torch.linalg.det "torch.linalg.det") |计算方阵的行列式。 | -| [`slogdet`](generated/torch.linalg.slogdet.html#torch.linalg.slogdet "torch.linalg.slogdet") |计算方阵行列式的绝对值的符号和自然对数。 | -| [`cond`](generated/torch.linalg.cond.html#torch.linalg.cond“torch.linalg.cond”) |计算矩阵相对于矩阵范数的条件数。 | -| [`matrix_rank`](generated/torch.linalg.matrix_rank.html#torch.linalg.matrix_rank "torch.linalg.matrix_rank") |计算矩阵的数值秩。 | - - -## 分解 [¶](#decompositions "此标题的永久链接") - - -| | | -| --- | --- | -| [`cholesky`](generated/torch.linalg.cholesky.html#torch.linalg.cholesky "torch.linalg.cholesky") |计算复数埃尔米特矩阵或实数对称正定矩阵的 Cholesky 分解。 | -| [`qr`](generated/torch.linalg.qr.html#torch.linalg.qr "torch.linalg.qr") |计算矩阵的 QR 分解。 | -| [`lu`](generated/torch.linalg.lu.html#torch.linalg.lu "torch.linalg.lu") |通过矩阵的部分旋转计算 LU 分解。 | -| [`lu_factor`](generated/torch.linalg.lu_factor.html#torch.linalg.lu_factor "torch.linalg.lu_factor") |通过矩阵的部分旋转计算 LU 分解的紧凑表示。 | -| [`eig`](generated/torch.linalg.eig.html#torch.linalg.eig "torch.linalg.eig") |计算方阵的特征值分解(如果存在)。 | -| [`eigvals`](generated/torch.linalg.eigvals.html#torch.linalg.eigvals "torch.linalg.eigvals") |计算方阵的特征值。 | -| [`eigh`](generated/torch.linalg.eigh.html#torch.linalg.eigh "torch.linalg.eigh") |计算复数埃尔米特矩阵或实对称矩阵的特征值分解。 | -| [`eigvalsh`](generated/torch.linalg.eigvalsh.html#torch.linalg.eigvalsh "torch.linalg.eigvalsh") |计算复数埃尔米特矩阵或实对称矩阵的特征值。 | -| [`svd`](generated/torch.linalg.svd.html#torch.linalg.svd "torch.linalg.svd") |计算矩阵的奇异值分解 (SVD)。 | -| [`svdvals`](generated/torch.linalg.svdvals.html#torch.linalg.svdvals "torch.linalg.svdvals") |计算矩阵的奇异值。 | - - -## 求解器 [¶](#solvers "此标题的永久链接") - - -| | | -| --- | --- | -| [`解决`](generated/torch.linalg.solve.html#torch.linalg.solve“torch.linalg.solve”)|计算具有唯一解的平方线性方程组的解。 | -| [`solve_triangle`](generated/torch.linalg.solve_triangle.html#torch.linalg.solve_triangle "torch.linalg.solve_triangle") |计算具有唯一解的三角线性方程组的解。 | -| [`lu_solve`](generated/torch.linalg.lu_solve.html#torch.linalg.lu_solve "torch.linalg.lu_solve") |在给定 LU 分解的情况下,计算具有唯一解的平方线性方程组的解。 | -| [`lstsq`](generated/torch.linalg.lstsq.html#torch.linalg.lstsq "torch.linalg.lstsq") |计算线性方程组最小二乘问题的解。 | - - -## Inverses [¶](#inverses "此标题的永久链接") - - -| | | -| --- | --- | -| [`inv`](generated/torch.linalg.inv.html#torch.linalg.inv "torch.linalg.inv") |计算方阵的逆矩阵(如果存在)。 | -| [`pinv`](generated/torch.linalg.pinv.html#torch.linalg.pinv "torch.linalg.pinv") |计算矩阵的伪逆(Moore-Penrose 逆)。 | - - -## 矩阵函数 [¶](#matrix-functions "此标题的固定链接") - - -| | | -| --- | --- | -| [`matrix_exp`](generated/torch.linalg.matrix_exp.html#torch.linalg.matrix_exp "torch.linalg.matrix_exp") |计算方阵的矩阵指数。 | -| [`matrix_power`](generated/torch.linalg.matrix_power.html#torch.linalg.matrix_power "torch.linalg.matrix_power") |计算整数 n 的方阵的 n 次方。 | - - -## 矩阵产品[¶](#matrix-products"此标题的固定链接") - - -| | | -| --- | --- | -| [`cross`](generated/torch.linalg.cross.html#torch.linalg.cross "torch.linalg.cross") |计算两个 3 维向量的叉积。 | -| [`matmul`](generated/torch.linalg.matmul.html#torch.linalg.matmul "torch.linalg.matmul") | [`torch.matmul()`](generated/torch.matmul.html#torch.matmul "torch.matmul") 的别名 | -| [`vecdot`](generated/torch.linalg.vecdot.html#torch.linalg.vecdot“torch.linalg.vecdot”) |计算沿某个维度的两批向量的点积。 | -| [`multi_dot`](generated/torch.linalg.multi_dot.html#torch.linalg.multi_dot "torch.linalg.multi_dot") |通过重新排序乘法来有效地乘法两个或多个矩阵,以便执行最少的算术运算。 | -| [`householder_product`](generated/torch.linalg.householder_product.html#torch.linalg.householder_product "torch.linalg.householder_product") |计算 Householder 矩阵乘积的前 n 列。 | - - -## tensor运算 [¶](#tensor-operations "此标题的固定链接") - - -| | | -| --- | --- | -| [`tensorinv`](generated/torch.linalg.tensorinv.html#torch.linalg.tensorinv "torch.linalg.tensorinv") |计算 [`torch.tensordot()`](generated/torch.tensordot.html#torch.tensordot "torch.tensordot") 的乘法逆元。 | -| [`tensorsolve`](generated/torch.linalg.tensorsolve.html#torch.linalg.tensorsolve "torch.linalg.tensorsolve") |计算系统 torch.tensordot(A, X) = B 的解 X 。 | - - -## Misc [¶](#misc "此标题的永久链接") - - -| | | -| --- | --- | -| [`vander`](generated/torch.linalg.vander.html#torch.linalg.vander "torch.linalg.vander") |生成范德蒙矩阵。 | - - -## 实验函数 [¶](#experimental-functions "此标题的永久链接") - - -| | | -| --- | --- | -| [`cholesky_ex`](generated/torch.linalg.cholesky_ex.html#torch.linalg.cholesky_ex "torch.linalg.cholesky_ex") |计算复数埃尔米特矩阵或实数对称正定矩阵的 Cholesky 分解。 | -| [`inv_ex`](generated/torch.linalg.inv_ex.html#torch.linalg.inv_ex "torch.linalg.inv_ex") |如果方阵可逆,则计算方阵的逆。 | -| [`solve_ex`](generated/torch.linalg.solve_ex.html#torch.linalg.solve_ex "torch.linalg.solve_ex") | [`solve()`](generated/torch.linalg.solve.html#torch.linalg.solve "torch.linalg.solve") 的一个版本,除非 `check_errors` = True ,否则不会执行错误检查。 | -| [`lu_factor_ex`](generated/torch.linalg.lu_factor_ex.html#torch.linalg.lu_factor_ex "torch.linalg.lu_factor_ex") |这是 [`lu_factor()`](generated/torch.linalg.lu_factor.html#torch.linalg.lu_factor "torch.linalg.lu_factor") 的一个版本,除非 `check_errors` ,否则不会执行错误检查= 正确。 | -| [`ldl_factor`](generated/torch.linalg.ldl_factor.html#torch.linalg.ldl_factor "torch.linalg.ldl_factor") |计算 Hermitian 或对称(可能不定)矩阵的 LDL 分解的紧凑表示。 | -| [`ldl_factor_ex`](generated/torch.linalg.ldl_factor_ex.html#torch.linalg.ldl_factor_ex "torch.linalg.ldl_factor_ex") |这是 [`ldl_factor()`](generated/torch.linalg.ldl_factor.html#torch.linalg.ldl_factor "torch.linalg.ldl_factor") 的一个版本,除非 `check_errors`,否则不会执行错误检查= 正确。 | -| [`ldl_solve`](generated/torch.linalg.ldl_solve.html#torch.linalg.ldl_solve "torch.linalg.ldl_solve") |使用 LDL 分解计算线性方程组的解。 | \ No newline at end of file diff --git a/docs/2.0/docs/logging.md b/docs/2.0/docs/logging.md deleted file mode 100755 index 543730848..000000000 --- a/docs/2.0/docs/logging.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/masked.md b/docs/2.0/docs/masked.md deleted file mode 100755 index 593763a0b..000000000 --- a/docs/2.0/docs/masked.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/mobile_optimizer.md b/docs/2.0/docs/mobile_optimizer.md deleted file mode 100755 index e82018d16..000000000 --- a/docs/2.0/docs/mobile_optimizer.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/model_zoo.md b/docs/2.0/docs/model_zoo.md deleted file mode 100755 index 9ad7a8152..000000000 --- a/docs/2.0/docs/model_zoo.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/monitor.md b/docs/2.0/docs/monitor.md deleted file mode 100755 index a2a764813..000000000 --- a/docs/2.0/docs/monitor.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/mps.md b/docs/2.0/docs/mps.md deleted file mode 100755 index 28676245a..000000000 --- a/docs/2.0/docs/mps.md +++ /dev/null @@ -1,41 +0,0 @@ -# torch.mps [¶](#module-torch.mps "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 该软件包支持在 Python 中访问 MPS(Metal Performance Shaders)后端的接口。Metal 是 Apple 用于对 Metal GPU(图形处理器单元)进行编程的 API。使用 MPS 意味着可以通过在金属 GPU 上运行工作来提高性能。有关更多详细信息,请参阅 。 - - -| | | -| --- | --- | -| [`synchronize`](generated/torch.mps.synchronize.html#torch.mps.synchronize "torch.mps.synchronize") |等待 MPS 设备上所有流中的所有内核完成。 | -| [`get_rng_state`](generated/torch.mps.get_rng_state.html#torch.mps.get_rng_state "torch.mps.get_rng_state") |以 ByteTensor 形式返回随机数生成器状态。 | -| [`set_rng_state`](generated/torch.mps.set_rng_state.html#torch.mps.set_rng_state "torch.mps.set_rng_state") |设置随机数生成器状态。 | -| [`手册_seed`](generated/torch.mps.manual_seed.html#torch.mps.manual_seed "torch.mps.manual_seed") |设置用于生成随机数的种子。 | -| [`seed`](generated/torch.mps.seed.html#torch.mps.seed "torch.mps.seed") |将生成随机数的种子设置为随机数。 | -| [`empty_cache`](generated/torch.mps.empty_cache.html#torch.mps.empty_cache "torch.mps.empty_cache") |释放缓存分配器当前持有的所有未占用的缓存内存,以便这些内存可以在其他 GPU 应用程序中使用。 | -| [`set_per_process_memory_fraction`](generated/torch.mps.set_per_process_memory_fraction.html#torch.mps.set_per_process_memory_fraction“torch.mps.set_per_process_memory_fraction”) |设置内存分数以限制 MPS 设备上进程的内存分配。 | -| [`当前_分配_内存`](generated/torch.mps.current_allocated_memory.html#torch.mps.current_allocated_memory "torch.mps.current_allocated_memory") |返回tensor当前占用的 GPU 内存(以字节为单位)。 | -| [`驱动_分配_内存`](generated/torch.mps.driver_allocated_memory.html#torch.mps.driver_allocated_memory "torch.mps.driver_allocated_memory") |返回 Metal 驱动程序为进程分配的 GPU 内存总量(以字节为单位)。 | - - -## MPS Profiler [¶](#mps-profiler "此标题的永久链接") - - -| | | -| --- | --- | -| [`profiler.start`](generated/torch.mps.profiler.start.html#torch.mps.profiler.start "torch.mps.profiler.start") | Start OS Signpost tracing from MPS backend. | -| [`profiler.stop`](generated/torch.mps.profiler.stop.html#torch.mps.profiler.stop "torch.mps.profiler.stop") | Stops generating OS Signpost tracing from MPS backend. | -| [`profiler.profile`](generated/torch.mps.profiler.profile.html#torch.mps.profiler.profile "torch.mps.profiler.profile") | Context Manager to enabling generating OS Signpost tracing from MPS backend. | - - -## MPS 事件 [¶](#mps-event "此标题的固定链接") - - -| | | -| --- | --- | -| [`event.Event`](generated/torch.mps.event.Event.html#torch.mps.event.Event "torch.mps.event.Event") | Wrapper around an MPS event. | \ No newline at end of file diff --git a/docs/2.0/docs/name_inference.md b/docs/2.0/docs/name_inference.md deleted file mode 100755 index 430683d4c..000000000 --- a/docs/2.0/docs/name_inference.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/named_tensor.md b/docs/2.0/docs/named_tensor.md deleted file mode 100755 index c0f709828..000000000 --- a/docs/2.0/docs/named_tensor.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/nested.md b/docs/2.0/docs/nested.md deleted file mode 100755 index 3452c2b72..000000000 --- a/docs/2.0/docs/nested.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/nn.functional.md b/docs/2.0/docs/nn.functional.md deleted file mode 100755 index 1f9df3771..000000000 --- a/docs/2.0/docs/nn.functional.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/nn.init.md b/docs/2.0/docs/nn.init.md deleted file mode 100755 index 2ade78e43..000000000 --- a/docs/2.0/docs/nn.init.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/nn.md b/docs/2.0/docs/nn.md deleted file mode 100755 index 68a5db4e1..000000000 --- a/docs/2.0/docs/nn.md +++ /dev/null @@ -1,53 +0,0 @@ -> 翻译任务 - -* 目前该页面无人翻译,期待你的加入 -* 翻译奖励: https://github.com/orgs/apachecn/discussions/243 -* 任务认领: https://github.com/apachecn/pytorch-doc-zh/discussions/583 - -请参考这个模版来写内容: - - -# PyTorch 某某页面 - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - -开始写原始页面的翻译内容 - - - -注意事项: - -1. 代码参考: - -```py -import torch - -x = torch.ones(5) # input tensor -y = torch.zeros(3) # expected output -w = torch.randn(5, 3, requires_grad=True) -b = torch.randn(3, requires_grad=True) -z = torch.matmul(x, w)+b -loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y) -``` - -2. 公式参考: - -1) 无需换行的写法: - -$\sqrt{w^T*w}$ - -2) 需要换行的写法: - -$$ -\sqrt{w^T*w} -$$ - -3. 图片参考(用图片的实际地址就行): - - - -4. **翻译完后请删除上面所有模版内容就行** \ No newline at end of file diff --git a/docs/2.0/docs/notes/amp_examples.md b/docs/2.0/docs/notes/amp_examples.md deleted file mode 100755 index 8d5c0310b..000000000 --- a/docs/2.0/docs/notes/amp_examples.md +++ /dev/null @@ -1,423 +0,0 @@ -# CUDA 自动混合精度示例 [¶](#cuda-automatic-mixed-precision-examples "固定链接到此标题") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 通常,“自动混合精度训练”意味着使用 [`torch.autocast`](../amp.html#torch.autocast "torch.autocast") 和 [`torch.cuda.amp.GradScaler`](.. /amp.html#torch.cuda.amp.GradScaler“torch.cuda.amp.GradScaler”)在一起。 - - - [`torch.autocast`](../amp.html#torch.autocast "torch.autocast") 的实例可以对选定区域启用自动投射。自动投射会自动选择 GPU 操作的精度,以提高性能,同时保持准确性。 - - - [`torch.cuda.amp.GradScaler`](../amp.html#torch.cuda.amp.GradScaler "torch.cuda.amp.GradScaler") 的实例有助于方便地执行梯度缩放步骤。梯度缩放通过最大限度地减少梯度下溢来提高具有“float16”梯度的网络的收敛性,如[此处](../amp.html#gradient-scaling)所述。 - - -[`torch.autocast`](../amp.html#torch.autocast "torch.autocast") 和 [`torch.cuda.amp.GradScaler`](../amp.html#torch.cuda.amp. GradScaler“torch.cuda.amp.GradScaler”)是模块化的。在下面的示例中,每个示例都按照其单独的文档建议使用。 - - - (此处的示例仅供参考。有关可运行的演练,请参阅[自动混合精度配方](https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html)。) - - - -* [典型混合精度训练](#typical-mixed-precision-training) -* [使用未缩放梯度](#working-with-unscaled-gradients) - + [渐变剪裁](#gradient-clipping) -* [使用缩放渐变](#working-with-scaled-gradients) - + [梯度累积](#gradient-accumulation) - + [梯度惩罚](#gradient-penalty) -* [使用多个模型、损失和优化器](#working-with-multiple-models-losses-and-optimizers) -* [使用多个 GPU](#working-with-multiple-gpus) - + [单进程中的 DataParallel](#dataparallel-in-a-single-process) - + [DistributedDataParallel,每个进程一个 GPU](#distributeddataparallel-one-gpu-per-process) - + [DistributedDataParallel,每个进程多个 GPU](#distributeddataparallel-multiple-gpus-per-process) -* [Autocast 和自定义 Autograd 函数](#autocast-and-custom-autograd-functions) - + [具有多个输入或可自动转换操作的函数](#functions-with-multiple-inputs-or-autocastable-ops) - + [需要特定`dtype`的函数](#functions-that-need-a-prefer-d-dtype ) - - -## [典型混合精度训练](#id2) [¶](#typical-mixed-precision-training "此标题的永久链接") - - -``` -# Creates model and optimizer in default precision -model = Net().cuda() -optimizer = optim.SGD(model.parameters(), ...) - -# Creates a GradScaler once at the beginning of training. -scaler = GradScaler() - -for epoch in epochs: - for input, target in data: - optimizer.zero_grad() - - # Runs the forward pass with autocasting. - with autocast(device_type='cuda', dtype=torch.float16): - output = model(input) - loss = loss_fn(output, target) - - # Scales loss. Calls backward() on scaled loss to create scaled gradients. - # Backward passes under autocast are not recommended. - # Backward ops run in the same dtype autocast chose for corresponding forward ops. - scaler.scale(loss).backward() - - # scaler.step() first unscales the gradients of the optimizer's assigned params. - # If these gradients do not contain infs or NaNs, optimizer.step() is then called, - # otherwise, optimizer.step() is skipped. - scaler.step(optimizer) - - # Updates the scale for next iteration. - scaler.update() - -``` - - -## [使用未缩放的渐变](#id3) [¶](#working-with-unscaled-gradients "此标题的永久链接") - - - 由 `scaler.scale(loss).backward()` 产生的所有梯度都会被缩放。如果您希望修改或检查 `backward()` 和 `scaler.step(optimizer)` 之间参数的 `.grad` 属性,您应该首先取消缩放它们。例如,梯度裁剪操作一组梯度,使其全局范数(参见 [`torch.nn.utils.clip_grad_norm_()`](../generated/torch.nn.utils.clip_grad_norm_. html#torch.nn.utils.clip_grad_norm_ "torch.nn.utils.clip_grad_norm_") )或最大幅度(参见 [`torch.nn.utils.clip_grad_value_()`](../generated/torch.nn.utils.clip_grad_value_.html#torch.nn.utils.clip_grad_value_ "torch.nn.utils.clip_grad_value_") ) 是 <= 一些用户施加的阈值。如果您尝试在*不*取消缩放的情况下进行剪辑,则渐变的范数/最大幅度也会缩放,因此您请求的阈值(这意味着*未缩放*渐变的阈值)将无效。 - - -`scaler.unscale_(optimizer)` 取消由 `optimizer` 分配的参数保存的梯度。如果您的模型或多个模型包含分配给另一个优化器的其他参数(例如 `optimizer2` ),您可以调用 `scaler.unscale _(optimizer2)` 也单独取消缩放这些参数的梯度。 - - -### [渐变剪辑](#id4) [¶](#gradient-clipping "此标题的永久链接") - - - 在裁剪之前调用 `scaler.unscale_(optimizer)` 可以让你像往常一样裁剪未缩放的渐变: - - -``` -scaler = GradScaler() - -for epoch in epochs: - for input, target in data: - optimizer.zero_grad() - with autocast(device_type='cuda', dtype=torch.float16): - output = model(input) - loss = loss_fn(output, target) - scaler.scale(loss).backward() - - # Unscales the gradients of optimizer's assigned params in-place - scaler.unscale_(optimizer) - - # Since the gradients of optimizer's assigned params are unscaled, clips as usual: - torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm) - - # optimizer's gradients are already unscaled, so scaler.step does not unscale them, - # although it still skips optimizer.step() if the gradients contain infs or NaNs. - scaler.step(optimizer) - - # Updates the scale for next iteration. - scaler.update() - -``` - - -`scaler` 记录了此优化器在本次迭代中已经调用了 `scaler.unscale_(optimizer)`,因此 `scaler.step(optimizer)` 知道在(内部)调用 `optimizer.step()` 之前不要冗余地取消缩放梯度。 - - -!!! warning "警告" - - [`unscale_`](../amp.html#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 只能在每个优化器的每个 [`step`](../amp.html#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 调用中调用一次,并且仅在该优化器分配的参数的所有梯度都已累积之后。在每个 [`step`](../amp.html #torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 之间为给定优化器调用 [`unscale_`](../amp.html#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") 两次会触发 RuntimeErro - - -## [使用缩放渐变](#id5) [¶](#working-with-scaled-gradients "此标题的永久链接") - - -### [梯度累积](#id6) [¶](#gradient-accumulation "永久链接到此标题") - - - 梯度累积在大小为“batch_per_iter * iters_to_accumulate”的有效批次上添加梯度(“* num_procs”,如果是分布式的)。应针对有效批次校准刻度,这意味着 inf/NaN 检查,如果找到 inf/NaN 梯度则跳过步骤,并且刻度更新应以有效批次粒度进行。此外,梯度应保持缩放,比例因子应保持不变,同时累积给定有效批次的梯度。如果在累积完成之前未缩放梯度(或比例因子发生变化),则下一个向后传递会将缩放的梯度添加到未缩放的梯度(或按不同因子缩放的梯度),之后无法恢复累积的未缩放的梯度[`step`](../amp.html#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 必须适用。 - - - 因此,如果您想要 [`unscale_`](../amp.html#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_") grads(例如,允许裁剪未缩放的grads),在 [`step`](../amp.html#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") ,毕竟即将到来的 [`step`](../amp.html#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step")已累积。另外,仅在迭代结束时调用 [`update`](../amp.html#torch.cuda.amp.GradScaler.update "torch.cuda.amp.GradScaler.update"),其中您调用了 [`step`](../amp.html#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step") 以获得完整的有效批次: - - -``` -scaler = GradScaler() - -for epoch in epochs: - for i, (input, target) in enumerate(data): - with autocast(device_type='cuda', dtype=torch.float16): - output = model(input) - loss = loss_fn(output, target) - loss = loss / iters_to_accumulate - - # Accumulates scaled gradients. - scaler.scale(loss).backward() - - if (i + 1) % iters_to_accumulate == 0: - # may unscale_ here if desired (e.g., to allow clipping unscaled gradients) - - scaler.step(optimizer) - scaler.update() - optimizer.zero_grad() - -``` - - -### [梯度惩罚](#id7) [¶](#gradient-penalty "永久链接到此标题") - - - 梯度惩罚实现通常使用 [`torch.autograd.grad()`](../generated/torch.autograd.grad.html#torch.autograd.grad "torch.autograd.grad") 创建梯度,并将它们组合起来创建惩罚值,并将惩罚值添加到损失中。 - - - 这是一个没有梯度缩放或自动转换的 L2 惩罚的普通示例: - - -``` -for epoch in epochs: - for input, target in data: - optimizer.zero_grad() - output = model(input) - loss = loss_fn(output, target) - - # Creates gradients - grad_params = torch.autograd.grad(outputs=loss, - inputs=model.parameters(), - create_graph=True) - - # Computes the penalty term and adds it to the loss - grad_norm = 0 - for grad in grad_params: - grad_norm += grad.pow(2).sum() - grad_norm = grad_norm.sqrt() - loss = loss + grad_norm - - loss.backward() - - # clip gradients here, if desired - - optimizer.step() - -``` - - - 为了通过梯度缩放实现梯度惩罚,“输出”tensor传递给 [`torch.autograd.grad()`](../generated/torch.autograd.grad.html#torch.autograd. grad“torch.autograd.grad”)应该缩放。因此,生成的梯度将被缩放,并且在组合以创建惩罚值之前应该取消缩放。 - - - 此外,惩罚项计算是前向传递的一部分,因此应该位于 [`autocast`](../amp.html#torch.cuda.amp.autocast "torch.cuda.amp.autocast") 上下文中。 - - - 以下是相同 L2 惩罚的情况: - - -``` -scaler = GradScaler() - -for epoch in epochs: - for input, target in data: - optimizer.zero_grad() - with autocast(device_type='cuda', dtype=torch.float16): - output = model(input) - loss = loss_fn(output, target) - - # Scales the loss for autograd.grad's backward pass, producing scaled_grad_params - scaled_grad_params = torch.autograd.grad(outputs=scaler.scale(loss), - inputs=model.parameters(), - create_graph=True) - - # Creates unscaled grad_params before computing the penalty. scaled_grad_params are - # not owned by any optimizer, so ordinary division is used instead of scaler.unscale_: - inv_scale = 1./scaler.get_scale() - grad_params = [p * inv_scale for p in scaled_grad_params] - - # Computes the penalty term and adds it to the loss - with autocast(device_type='cuda', dtype=torch.float16): - grad_norm = 0 - for grad in grad_params: - grad_norm += grad.pow(2).sum() - grad_norm = grad_norm.sqrt() - loss = loss + grad_norm - - # Applies scaling to the backward call as usual. - # Accumulates leaf gradients that are correctly scaled. - scaler.scale(loss).backward() - - # may unscale_ here if desired (e.g., to allow clipping unscaled gradients) - - # step() and update() proceed as usual. - scaler.step(optimizer) - scaler.update() - -``` - - -## [使用多个模型、损失和优化器](#id8) [¶](#working-with-multiple-models-losses-and-optimizers "永久链接到此标题") - - - 如果您的网络有多个损失,则必须对每个损失调用 [`scaler.scale`](../amp.html#torch.cuda.amp.GradScaler.scale "torch.cuda.amp.GradScaler.scale")如果您的网络有多个优化器,您可以调用 [`scaler.unscale_`](../amp.html#torch.cuda.amp.GradScaler.unscale_ "torch.cuda.amp.GradScaler.unscale_")单独对其中任何一个进行调用,并且您必须对每个调用调用 [`scaler.step`](../amp.html#torch.cuda.amp.GradScaler.step "torch.cuda.amp.GradScaler.step")单独。 - - - 但是,在所有优化器使用此迭代之后, [`scaler.update`](../amp.html#torch.cuda.amp.GradScaler.update "torch.cuda.amp.GradScaler.update") 只应调用一次已采取步骤: - - -``` -scaler = torch.cuda.amp.GradScaler() - -for epoch in epochs: - for input, target in data: - optimizer0.zero_grad() - optimizer1.zero_grad() - with autocast(device_type='cuda', dtype=torch.float16): - output0 = model0(input) - output1 = model1(input) - loss0 = loss_fn(2 * output0 + 3 * output1, target) - loss1 = loss_fn(3 * output0 - 5 * output1, target) - - # (retain_graph here is unrelated to amp, it's present because in this - # example, both backward() calls share some sections of graph.) - scaler.scale(loss0).backward(retain_graph=True) - scaler.scale(loss1).backward() - - # You can choose which optimizers receive explicit unscaling, if you - # want to inspect or modify the gradients of the params they own. - scaler.unscale_(optimizer0) - - scaler.step(optimizer0) - scaler.step(optimizer1) - - scaler.update() - -``` - - - 每个优化器都会检查其 infs/NaN 的梯度,并独立决定是否跳过该步骤。这可能会导致一个优化器跳过该步骤,而另一个优化器则不会。由于跳跃很少发生(每几百次迭代),这不应妨碍收敛。如果您在将梯度缩放添加到多重优化器模型后观察到收敛不良,请报告错误。 - - -## [使用多个 GPU](#id9) [¶](#working-with-multiple-gpus "此标题的永久链接") - - - 此处描述的问题仅影响 [`autocast`](../amp.html#torch.cuda.amp.autocast "torch.cuda.amp.autocast") 。 [`GradScaler`](../amp.html#torch.cuda.amp.GradScaler "torch.cuda.amp.GradScaler") 的用法不变。 - - -### [单个进程中的 DataParallel](#id10) [¶](#dataparallel-in-a-single-process "永久链接到此标题") - - - 即使 [`torch.nn.DataParallel`](../generated/torch.nn.DataParallel.html#torch.nn.DataParallel "torch.nn.DataParallel") 生成线程以在每个设备上运行前向传递。自动施放状态会在每个状态中传播,并且以下内容将起作用: - - -``` -model = MyModel() -dp_model = nn.DataParallel(model) - -# Sets autocast in the main thread -with autocast(device_type='cuda', dtype=torch.float16): - # dp_model's internal threads will autocast. - output = dp_model(input) - # loss_fn also autocast - loss = loss_fn(output) - -``` - - -### [DistributedDataParallel,每个进程一个 GPU](#id11) [¶](#distributeddataparallel-one-gpu-per-process "永久链接到此标题") - - -[`torch.nn.parallel.DistributedDataParallel`](../generated/torch.nn.parallel.DistributedDataParallel.html#torch.nn.parallel.DistributedDataParallel "torch.nn.parallel.DistributedDataParallel") 的文档建议使用一个 GPU每个进程以获得最佳性能。在这种情况下,“DistributedDataParallel”不会在内部生成线程,因此使用 [`autocast`](../amp.html#torch.cuda.amp.autocast "torch.cuda.amp.autocast") 和 [`GradScaler `](../amp.html#torch.cuda.amp.GradScaler "torch.cuda.amp.GradScaler") 不受影响。 - - -### [DistributedDataParallel,每个进程多个 GPU](#id12) [¶](#distributeddataparallel-multiple-gpus-per-process "永久链接到此标题") - - - 这里 [`torch.nn.parallel.DistributedDataParallel`](../generated/torch.nn.parallel.DistributedDataParallel.html#torch.nn.parallel.DistributedDataParallel "torch.nn.parallel.DistributedDataParallel") 可能会产生一个副线程在每个设备上运行前向传递,例如 [`torch.nn.DataParallel`](../generated/torch.nn.DataParallel.html#torch.nn.DataParallel "torch.nn.DataParallel") 。 [修复方法是相同的](#amp-dataparallel):将自动转换作为模型“forward”方法的一部分应用,以确保它在侧线程中启用。 - - -## [Autocast 和自定义 Autograd 函数](#id13) [¶](#autocast-and-custom-autograd-functions "永久链接到此标题") - - - 如果您的网络使用[自定义 autograd 函数](extending.html#extending-autograd)([`torch.autograd.Function`](../autograd.html#torch.autograd.Function "torch.autograd.Function" 的子类) ) ),如果有任何功能,则需要更改 autocast 兼容性 - - - -* 接受多个浮点tensor输入, -* 包装任何可自动转换的操作(请参阅 [自动转换操作参考](../amp.html#autocast-op-reference) ),或者 -* 需要特定的“dtype”(例如,如果它包装了仅针对 `dtype` 编译的 [CUDA 扩展](https://pytorch.org/tutorials/advanced/cpp_extension.html)。 - - - 在所有情况下,如果您要导入函数并且无法更改其定义,则安全的后备方法是在发生错误的任何使用点禁用自动转换并强制执行“float32”(或“dtype”): - - -``` -with autocast(device_type='cuda', dtype=torch.float16): - ... - with autocast(device_type='cuda', dtype=torch.float16, enabled=False): - output = imported_function(input1.float(), input2.float()) - -``` - - - 如果您是该函数的作者(或可以更改其定义),更好的解决方案是使用 [`torch.cuda.amp.custom_fwd()`](../amp.html#torch.cuda.amp. custom_fwd "torch.cuda.amp.custom_fwd") 和 [`torch.cuda.amp.custom_bwd()`](../amp.html#torch.cuda.amp.custom_bwd "torch.cuda.amp.custom_bwd ") 装饰器,如下面的相关案例所示。 - - -### [具有多个输入或可自动转换操作的函数](#id14) [¶](#functions-with-multiple-inputs-or-autocastable-ops "永久链接到此标题") - - - 应用 [`custom_fwd`](../amp.html#torch.cuda.amp.custom_fwd "torch.cuda.amp.custom_fwd") 和 [`custom_bwd`](../amp.html#torch.cuda.amp.custom_bwd "torch.cuda.amp.custom_bwd") (不带参数)分别为 `forward` 和 `backward`。这些确保“forward”以当前自动转换状态执行,“backward”以与“forward”相同的自动转换状态执行(这可以防止类型不匹配错误): - - -``` -class MyMM(torch.autograd.Function): - @staticmethod - @custom_fwd - def forward(ctx, a, b): - ctx.save_for_backward(a, b) - return a.mm(b) - @staticmethod - @custom_bwd - def backward(ctx, grad): - a, b = ctx.saved_tensors - return grad.mm(b.t()), a.t().mm(grad) - -``` - - - 现在可以在任何地方调用“MyMM”,而无需禁用自动转换或手动转换输入: - - -``` -mymm = MyMM.apply - -with autocast(device_type='cuda', dtype=torch.float16): - output = mymm(input1, input2) - -``` - - -### [需要特定 `dtype` 的函数](#id15)[¶](#functions-that-need-a-prefer-dtype "永久链接到此标题") - - - 考虑一个需要 `torch.float32` 输入的自定义函数。应用 [`custom_fwd(cast_inputs=torch.float32)`](../amp.html#torch.cuda.amp.custom_fwd "torch.cuda. amp.custom_fwd") 到 `forward` 和 [`custom_bwd`](../amp.html#torch.cuda.amp.custom_bwd "torch.cuda.amp.custom_bwd") (不带参数)到 `backward如果 `forward` 在启用自动转换的区域中运行,装饰器会将浮点 CUDA Tensorinputs 转换为 `float32` ,并在 `forward` 和 `backward` 期间本地禁用自动转换: - - -``` -class MyFloat32Func(torch.autograd.Function): - @staticmethod - @custom_fwd(cast_inputs=torch.float32) - def forward(ctx, input): - ctx.save_for_backward(input) - ... - return fwd_output - @staticmethod - @custom_bwd - def backward(ctx, grad): - ... - -``` - - - 现在可以在任何地方调用`MyFloat32Func`,无需手动禁用自动转换或转换输入: - - -``` -func = MyFloat32Func.apply - -with autocast(device_type='cuda', dtype=torch.float16): - # func will run in float32, regardless of the surrounding autocast state - output = func(input) - -``` \ No newline at end of file diff --git a/docs/2.0/docs/notes/autograd.md b/docs/2.0/docs/notes/autograd.md deleted file mode 100755 index be9d39ecc..000000000 --- a/docs/2.0/docs/notes/autograd.md +++ /dev/null @@ -1,14786 +0,0 @@ -# Autograd 机制 [¶](#autograd-mechanics "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 本笔记将概述 autograd 的工作原理并记录操作。并不是绝对有必要理解所有这些,但我们建议您熟悉它,因为它将帮助您编写更高效、更简洁的程序,并可以帮助您进行调试。 - - -## autograd 如何编码历史记录 [¶](#how-autograd-encodes-the-history "永久链接到此标题") - - - Autograd 是一种反向自动微分系统。从概念上讲,autograd 记录了一个图,记录了执行操作时创建数据的所有操作,为您提供一个有向无环图,其叶子是输入tensor,根是输出tensor。通过从根到叶子追踪该图,您可以自动计算使用链式法则的梯度。 - - - 在内部,autograd 将此图表示为“Function”对象(实际上是表达式)的图,可以对其进行“apply()”编辑以计算评估该图的结果。在计算前向传递时,autograd 同时执行请求的计算并构建一个表示计算梯度的函数的图(每个 [`torch.Tensor`](../tensors.html#torch.tensor“torch.Tensor”)是该图的入口点)。当前向传递完成时,我们在后向传递中评估该图以计算梯度。 - - - 需要注意的重要一点是,图形在每次迭代时都会从头开始重新创建,这正是允许使用任意 Python 控制流语句的原因,这些语句可以在每次迭代时更改图形的整体形状和大小。在启动训练之前,您不必对所有可能的路径进行编码 -- 您运行的内容就是您所区分的。 - - -### 保存的tensor [¶](#saved-tensors "此标题的固定链接") - - - 某些操作需要在前向传递期间保存中间结果,以便执行后向传递。例如,函数 $x ↦ x^2$ 保存输入 $x$ 来计算梯度。 - - - 定义自定义 Python [`Function`](../autograd.html#torch.autograd.Function "torch.autograd.Function") 时,可以使用 `save_for_backward()` 在前向传递过程中保存tensor和`saved_tensors`以在向后传递期间检索它们。有关更多信息,请参阅[扩展 PyTorch](extending.html)。 - - - 对于 PyTorch 定义的操作(例如 [`torch.pow()`](../generated/torch.pow.html#torch.pow "torch.pow") ),tensor会根据需要自动保存。您可以通过查找以前缀“_saved”开头的属性来探索(出于教育或调试目的)某个“grad_fn”保存了哪些tensor。 - - -``` -x = torch.randn(5, requires_grad=True) -y = x.pow(2) -print(x.equal(y.grad_fn._saved_self)) # True -print(x is y.grad_fn._saved_self) # True - -``` - - - 在前面的代码中, `y.grad_fn._saved_self` 引用与 x 相同的 Tensor 对象。但情况可能并不总是如此。例如: - - -``` -x = torch.randn(5, requires_grad=True) -y = x.exp() -print(y.equal(y.grad_fn._saved_result)) # True -print(y is y.grad_fn._saved_result) # False - -``` - - - 在幕后,为了防止引用循环,PyTorch“打包”了保存的tensor,并将其“解包”到不同的tensor中以供读取。在这里,您通过访问“y.grad_fn._saved_result”获得的tensor是与“y”不同的tensor对象(但它们仍然共享相同的存储)。 - - - tensor是否会被打包到不同的tensor对象中取决于它是否是其自己的 grad_fn 的输出,这是一个可能会更改的实现细节,用户不应依赖。 - - - 您可以使用 [保存tensor的钩子](#saved-tensors-hooks-doc) 控制 PyTorch 如何打包/解包。 - - -## 不可微函数的梯度 [¶](#gradients-for-non-Differentiable-functions "永久链接到此标题") - - - 使用自动微分的梯度计算仅在使用的每个初等函数可微时才有效。不幸的是,我们在实践中使用的许多函数不具有此属性(例如,“0”处的“relu”或“sqrt”)。为了尝试减少不可微函数的影响,我们通过按顺序应用以下规则来定义基本运算的梯度: - - -1. 如果函数可微,因此当前点存在梯度,请使用它。 -2. 如果函数是凸函数(至少是局部凸函数),则使用最小范数的次梯度(即最速下降方向)。 -3. 如果函数是凹函数(至少是局部凹函数),则使用最小范数的超梯度(考虑 -f(x) 并应用前一点)。 -4. 如果定义了函数,则通过连续性定义当前点的梯度(请注意,此处可以使用“inf”,例如“sqrt(0)”)。如果可能有多个值,请任意选择一个。 -5. 如果函数未定义(例如 `sqrt(-1)` 、 `log(-1)` 或输入为 `NaN` 时的大多数函数),则用作梯度的值是任意的(我们也可以提出一个错误,但不能保证)。大多数函数将使用“NaN”作为梯度,但出于性能原因,某些函数将使用其他值(例如“log(-1)”)。 -6. 如果函数不是确定性映射(即它不是[数学函数](https://en.wikipedia.org/wiki/Function_(mathematics))),它将被标记为不可微分。如果在“no_grad”环境之外需要 grad 的tensor上使用,这将使其向后出错。 - - -## 本地禁用梯度计算 [¶](#locally-disabling-gradient-computation "永久链接到此标题") - - - Python 有多种机制可用于本地禁用梯度计算: - - - 要禁用整个代码块的梯度,可以使用上下文管理器,例如无梯度模式和推理模式。为了更细粒度地从梯度计算中排除子图,可以设置tensor的“requires_grad”字段。 - - - 下面,除了讨论上面的机制之外,我们还描述了评估模式(`nn.Module.eval()`),这种方法不用于禁用梯度计算,但由于其名称,经常与这三种方法混淆。 - - -### 设置 `requires_grad`[¶](#setting-requires-grad "永久链接到此标题") - - -`requires_grad` 是一个标志,默认为 false *除非包装在 -* `nn.Parameter` 中,它允许从梯度计算中细粒度地排除子图。它在前向传播和后向传播中都有效: - - - 在前向传递过程中,如果至少有一个输入tensor需要 grad,则该操作仅记录在后向图中。在后向传递过程中( `.backward()` ),只有具有 `requires_grad=True` 的叶tensor才会有梯度累积到它们的“.grad”字段中。 - - - 值得注意的是,即使每个tensor都有这个标志,*设置*它只对叶tensor有意义(没有 `grad_fn` 的tensor,例如 `nn.Module` 的参数)。非叶tensor(具有 `grad_fn` 的tensor)是具有与之关联的后向图的tensor。因此,它们的梯度将需要作为中间结果来计算需要梯度的叶tensor的梯度。从这个定义可以清楚地看出,所有非叶tensor将自动具有“require_grad=True”。 - - - 设置“requires_grad”应该是控制模型的哪些部分参与梯度计算的主要方式,例如,如果您需要在模型微调期间冻结预训练模型的部分。 - - - 要冻结模型的某些部分,只需将“.requires_grad_(False)”应用于您不想更新的参数即可。如上所述,由于使用这些参数作为输入的计算不会记录在前向传递中,因此它们的“.grad”字段不会在后向传递中更新,因为它们不会成为第一个中后向图的一部分地点,随心所欲。 - - - 因为这是一种常见的模式,所以也可以使用 `nn.Module.requires_grad_()` 在模块级别设置 `requires_grad` 。当应用于模块时,`.requires_grad_() ` 对模块的所有参数生效(默认情况下具有 `requires_grad=True`)。 - - -### 毕业模式 [¶](#grad-modes "此标题的永久链接") - - - 除了设置 `requires_grad` 之外,还可以从 Python 中选择三种 grad 模式,这些模式会影响 PyTorch 中的计算在内部如何由 autograd 处理:默认模式(grad 模式)、no-grad 模式和推理模式,所有这些模式可以通过上下文管理器和装饰器进行切换。 - - -| Mode | Excludes operations from being recorded in backward graph | Skips additional autograd tracking overhead | Tensors created while the mode is enabled can be used in grad-mode later | Examples | -| --- | --- | --- | --- | --- | -| default | | | ✓ | Forward pass | -| no-grad | ✓ | | ✓ | Optimizer updates | -| inference | ✓ | ✓ | | Data processing, model evaluation | - - -### 默认模式(渐变模式)[¶](#default-mode-grad-mode "永久链接到此标题") - - - “默认模式”是当没有启用其他模式(例如无梯度和推理模式)时我们隐式处于的模式。为了与“无渐变模式”对比,默认模式有时也称为“渐变模式”。 - - - 关于默认模式,最重要的是要了解它是 `requires_grad` 生效的唯一模式。在其他两种模式中,“requires_grad”始终被覆盖为“False”。 - - -### 无梯度模式 [¶](#no-grad-mode "永久链接到此标题") - - - 无梯度模式下的计算行为就像没有输入需要梯度一样。换句话说,无梯度模式下的计算永远不会记录在后向图中,即使存在具有 `require_grad=True` 的输入。 - - - 当您需要执行不应该由自动分级记录的操作时,请启用无分级模式,但您仍希望稍后在分级模式下使用这些计算的输出。这个上下文管理器可以方便地禁用代码块或函数的梯度,而无需临时将tensor设置为“requires_grad=False”,然后返回“True”。 - - - 例如,在编写优化器时,无梯度模式可能很有用:当执行训练更新时,您希望就地更新参数,而不用自动梯度记录更新。您还打算在下一个向前传球。 - - - [torch.nn.init](../nn.init.html#nn-init-doc) 中的实现在初始化参数时也依赖于无梯度模式,以避免在就地更新初始化参数时进行自动梯度跟踪。 - - -### 推理模式 [¶](#inference-mode "永久链接到此标题") - - - 推理模式是无梯度模式的极端版本​​。就像在无梯度模式中一样,推理模式下的计算不会记录在后向图中,但是启用推理模式将使 PyTorch 能够进一步加速您的模型。这种更好的运行时有一个缺点:在推理模式下创建的tensor将无法用于退出推理模式后由 autograd 记录的计算。 - - - 当您执行不需要记录在后向图中的计算时,启用推理模式,并且您不打算在稍后由 autograd 记录的任何计算中使用推理模式中创建的tensor。 - - - 建议您在代码中不需要自动分级跟踪的部分尝试推理模式(例如,数据处理和模型评估)。如果它对于您的用例来说是开箱即用的,那么它就是免费的性能胜利。如果您在启用推理模式后遇到错误,请检查您是否未在退出推理模式后由 autograd 记录的计算中使用在推理模式中创建的tensor。如果您无法避免在您的情况下使用这种情况,您可以随时切换回无梯度模式。 - - - 有关推理模式的详细信息请参见[推理模式](https://pytorch.org/cppdocs/notes/inference_mode.html)。 - - - 有关推理模式的实现细节,请参阅 [RFC-0011-InferenceMode](https://github.com/pytorch/rfcs/pull/17) 。 - - -### 评估模式 ( `nn.Module.eval()` ) [¶](#evaluation-mode-nn-module-eval "此标题的永久链接") - - - 评估模式不是一种局部禁用梯度计算的机制。无论如何,它都包含在这里,因为它有时会被混淆为这样一种机制。 - - - 从功能上讲, module.eval() (或等效的 module.train(False) )与无梯度模式和推理模式完全正交。 model.eval() 如何影响您的模型完全取决于模型中使用的特定模块以及它们是否定义任何训练模式特定行为。 - - - 如果您的模型依赖于 [`torch.nn.Dropout`](../generated/torch.nn.Dropout.html# 等模块,则您负责调用 `model.eval()` 和 `model.train()` torch.nn.Dropout“torch.nn.Dropout”)和[`torch.nn.BatchNorm2d`](../generated/torch.nn.BatchNorm2d.html#torch.nn.BatchNorm2d“torch.nn.BatchNorm2d”)根据训练模式,其行为可能会有所不同,例如,避免更新验证数据上的 BatchNorm 运行统计数据。 - - - 建议您在训练时始终使用 model.train() ,在评估模型(验证/测试)时始终使用 model.eval() ,即使您不确定模型是否具有训练模式特定行为,因为您的模块正在使用的可能会更新为在训练和评估模式下表现不同。 - - -## 使用 autograd 进行就地操作 [¶](#in-place-operations-with-autograd "此标题的永久链接") - - - 支持 autograd 中的就地操作是一件困难的事情,我们在大多数情况下不鼓励使用它们。 Autograd 积极的缓冲区释放和重用使其非常高效,并且很少有就地操作显着降低内存使用量的情况。除非您在内存压力很大的情况下运行,否则您可能永远不需要使用它们。 - - - 限制就地操作的适用性的主要原因有两个: - - -1. 就地操作可能会覆盖计算梯度所需的值。2.每个就地操作都需要实现重写计算图。异地版本只是分配新对象并保留对旧图的引用,而就地操作则需要将所有输入的创建者更改为表示此操作的“函数”。这可能很棘手,特别是如果有许多tensor引用相同的存储(例如通过索引或转置创建),并且如果修改后的输入的存储被任何其他“tensor”引用,则就地函数将引发错误。 - - -### 就地正确性检查 [¶](#in-place-Correctness-checks "永久链接到此标题") - - - 每个tensor都保留一个版本计数器,每次在任何操作中被标记为脏时,该计数器都会递增。当函数保存任何向后tensor时,也会保存其包含tensor的版本计数器。一旦您访问 self.saved_tensors ,就会对其进行检查,如果它大于保存的值,则会引发错误。这确保了如果您使用就地函数并且没有看到任何错误,则可以确定计算的梯度是正确的。 - - -## 多线程 Autograd [¶](#multithreaded-autograd "此标题的永久链接") - - - autograd 引擎负责运行计算反向传递所需的所有反向操作。本节将描述可以帮助您在多线程环境中充分利用它的所有细节。 (这仅与 PyTorch 1.6 -+ 相关,因为之前版本的行为有所不同。) - - - 用户可以使用多线程代码(例如 Hogwild 训练)来训练他们的模型,并且不会阻止并发向后计算,示例代码可以是: - - -``` -# Define a train function to be used in different threads -def train_fn(): - x = torch.ones(5, 5, requires_grad=True) - # forward - y = (x + 3) * (x + 4) * 0.5 - # backward - y.sum().backward() - # potential optimizer update - - -# User write their own threading code to drive the train_fn -threads = [] -for _ in range(10): - p = threading.Thread(target=train_fn, args=()) - p.start() - threads.append(p) - -for p in threads: - p.join() - -``` - - - 请注意,用户应该注意的一些行为: - - -### CPU 上的并发性 [¶](#concurrency-on-cpu "此标题的永久链接") - - - 当您在 CPU 上的多线程中通过 python 或 C++ API 运行“backward()”或“grad()”时,您期望看到额外的并发性,而不是在执行期间以特定顺序序列化所有向后调用(PyTorch 1.6 之前的行为)。 - - -### 非决定论 [¶](#non-决定论“此标题的永久链接”) - - - 如果您同时从多个线程调用“backward()”并共享输入(即 Hogwild CPU 训练),那么应该预期不确定性。这种情况可能会发生,因为参数会在线程之间自动共享,因此,多个线程可能会访问和尝试在梯度累积期间累积相同的“.grad”属性。这在技术上并不安全,并且可能会导致竞争条件,并且结果可能无法使用。 - - - 开发具有共享参数的多线程模型的用户应该牢记线程模型,并且应该理解上述问题。 - - - 函数式 API [`torch.autograd.grad()`](../generated/torch.autograd.grad.html#torch.autograd.grad "torch.autograd.grad") 可用于计算梯度,而不是 ` back()`以避免非确定性。 - - -### 图形保留 [¶](#graph-retaining "此标题的永久链接") - - - 如果自动分级图的一部分在线程之间共享,即运行前向单线程的第一部分,然后在多个线程中运行第二部分,则图的第一部分被共享。在这种情况下,不同的线程在同一个图上执行“grad()”或“backward()”可能会出现一个线程动态销毁图的问题,而在这种情况下另一个线程将崩溃。 Autograd 会向用户发出类似于两次调用“backward()”而没有使用“retain_graph=True”的错误,并让用户知道他们应该使用“retain_graph=True”。 - - -### Autograd 节点上的线程安全 [¶](#thread-safety-on-autograd-node "永久链接到此标题") - - - 由于 Autograd 允许调用者线程驱动其向后执行以实现潜在的并行性,因此我们必须通过共享部分/全部 GraphTask 的并行“backward()”调用来确保 CPU 上的线程安全。 - - - 由于 GIL,自定义 Python `autograd.Function` 自动是线程安全的。对于内置 C++ Autograd 节点(例如 AccumulateGrad、CopySlices)和自定义 `autograd::Function` ,Autograd 引擎使用线程互斥锁来确保线程安全autograd 可能具有写入/读取状态的节点。 - - -### C++ 钩子上没有线程安全 [¶](#no-thread-safety-on-c-hooks "永久链接到此标题") - - - Autograd 依赖于用户编写线程安全的 C++ 钩子。如果希望钩子能够正确应用在多线程环境中,则需要编写适当的线程锁定代码以确保钩子是线程安全的。 - - -## 复数的 Autograd [¶](#autograd-for-complex-numbers "此标题的永久链接") - - - 简短版本: - - - -* 当你使用PyTorch来微分任何函数时 $f(z)$ 对于复杂域和/或共域,梯度是在函数是较大实值损失函数的一部分的假设下计算的 $g(input)=L$。计算出的梯度为 \frac{∂L}{∂z*} (注意 z 的共轭),其负数正是梯度下降算法中使用的最速下降方向。因此,所有现有的优化器都可以使用复杂的参数进行开箱即用。 -* 此约定与 TensorFlow 的复杂微分约定相匹配,但与 JAX 不同(JAX 计算 $\frac{∂L}{∂z}$ ). -* 如果您有一个内部使用复杂操作的实数到实数函数,那么这里的约定并不重要:您将始终获得与仅使用实数操作实现的结果相同的结果。 - - - 如果您对数学细节感到好奇,或者想知道如何在 PyTorch 中定义复杂的导数,请继续阅读。 - - -### 什么是复杂导数? [¶](#what-are-complex-derivatives“此标题的永久链接”) - - - 复数可微分的数学定义采用导数的极限定义,并将其推广到对复数进行运算。考虑一个函数 $f: ℂ → ℂ$, - -$$ -f(z=x+yj)=u(x,y)+v(x,y)j -$$ - -在哪里 $u$ 你和 $v$ 是两个变量实值函数并且 $j$ 是虚数单位。 - -使用导数定义,我们可以写: - - -$$ -f′(z) = \lim_{h → 0, h ε C} \frac{f(z+h) - f(z)}{h} -$$ - -为了使这个极限存在,不仅必须 $u$ 你和 $v$ 必须是实数可微,但是 $f$ 还必须满足柯西-黎曼方程。 换句话说:为实部和虚部计算的极限 $(f)$ 必须相等。 这是一个更严格的条件。 - - - 复可微函数通常称为全纯函数。它们表现良好,具有您从真正的可微函数中看到的所有良好属性,但在优化世界中实际上毫无用处。对于优化问题,研究界仅使用实值目标函数,因为复数不属于任何有序域,因此具有复值损失没有多大意义。 - - - 事实证明,没有有趣的实值目标满足柯西-黎曼方程。所以同态函数的理论不能用于优化,因此大多数人使用Wirtinger演算。 - - -### 维廷格微积分出现了…… [¶](#wirtinger-calculus-comes-into-the-picture "此标题的永久链接") - - - 所以,我们有复可微分和全纯函数的伟大理论,但我们根本无法使用其中的任何一个,因为许多常用的函数都不是全纯的。一个贫穷的数学家该怎么办?好吧,维廷格观察到,即使 - - - f(z) - - 不是全纯的,可以将其重写为二变量函数 - - - f(z,z*) - - 这总是全纯的。这是因为实部和虚部的组成部分 - - - z - - 可以表示为 - - - z - - 和 - - z^* - - 作为: - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> R -> -> -> e -> -> -> -> ( -> -> -> z -> -> -> ) -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> z -> -> -> + -> -> -> -> z -> -> -> * -> -> -> -> -> 2 -> -> -> -> -> -> -> -> -> -> -> -> -> I -> -> -> m -> -> -> -> ( -> -> -> z -> -> -> ) -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> z -> -> -> − -> -> -> -> z -> -> -> * -> -> -> -> -> -> 2 -> -> -> j -> -> -> -> -> -> -> -> -> -> egin{对齐} -> \mathrm{Re}(z) &= rac {z -+ z^*}{2} \ -> \mathrm{Im}(z) &= rac {z -- z^*}{2j} -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 重新 -> -> -> -> ( -> -> -> z -> -> -> ) -> -> -> -> -> -> -> -> -> -> 我 -> -> -> -> ( -> -> -> z -> -> -> ) -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 2 -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> 与 -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 2 -> -> -> j -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> z -> -> -> -> -> - -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 维廷格微积分建议学习 - - - f ( z , - - - z* - - - ) - - - - f(z, z^*) - - - f ( z , - - - z - - - * - - - ) - - - - 相反,如果 - - - F - - - F - - - F - - - 是真正可微分的(另一种方式认为它是坐标系的变化,从 - - - f ( x , y ) - - - f(x,y) - - - f ( x , - - - ) - - - 到 - - - f ( z , - - - z* - - - ) - - - - f(z, z^*) - - - f ( z , - - - z - - - * - - - ) - - - -.) 该函数具有偏导数 - - - - - ∂ - - - - ∂z - - - rac{\partial }{\partial z} - - - ∂z - - - - ∂ - - - - ​ - - - - 和 - - - - - ∂ - - - - ∂ - - - - z* - - - rac{\partial}{\partial z^{*}} - - - ∂ - - - - z - - - * - - - ∂ - - - - ​ - - - - 我们可以使用链式法则来建立这些偏导数和偏导数之间的关系,即 - - - z - - - z - - - z - - - 。 - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> ∗ -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> z -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> ∗ -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> z -> -> -> -> -> + -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> ∗ -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> z -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> ∗ -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> 1 -> -> -> j -> -> -> ∗ -> -> -> -> ( -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> z -> -> -> -> -> − -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> egin{aligned} -> rac{\partial }{\partial x} &= rac{\partial z}{\partial x} * rac{\partial }{\partial z} + rac{\partial z^*}{\partial x} * rac{\partial }{\partial z^*} \ -> &= rac{\partial }{\partial z} + rac{\partial }{\partial z^*} \ -> \ -> rac{\partial }{\partial y} &= rac{\partial z}{\partial y} * rac{\partial }{\partial z} + rac{\partial z^*}{\partial y} * rac{\partial }{\partial z^*} \ -> &= 1j * \left( rac{\partial }{\partial z} - rac{\partial }{\partial z^*} -ight) -> \end{aligned} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> 1 -> -> -> j -> -> -> -> -> ∗ -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> - - - 从上面的方程,我们得到: - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> 1 -> -> -> / -> -> -> 2 -> -> -> * -> -> -> -> ( -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> x -> -> -> -> -> − -> -> -> 1 -> -> -> j -> -> -> * -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> y -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> 1 -> -> -> / -> -> -> 2 -> -> -> * -> -> -> -> ( -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> x -> -> -> -> -> + -> -> -> 1 -> -> -> j -> -> -> ∗ -> -> -> -> ∂ -> -> -> -> ∂ -> -> -> y -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> egin{aligned} -> rac{\partial }{\partial z } &= 1/2 * \left( rac{\partial }{\partial x} -- 1j * rac{\partial }{\partial y} -ight) \ -> rac{\partial }{ \partial z^*} &= 1/2 * \left( rac{\partial }{\partial x} -+ 1j * rac{\partial }{\partial y} -ight) -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> 1/2 -> -> -> -> -> * -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> 1 -> -> -> j -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> 1/2 -> -> -> -> -> * -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> 1 -> -> -> j -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 这是维廷格微积分的经典定义,您可以在[维基百科](https://en.wikipedia.org/wiki/Wirtinger_derivatives)上找到。 - - - 这一变化带来了很多美好的后果。 - - - -* 其一,柯西-黎曼方程可以简单地解释为: - - - ∂f - - - - ∂ - - - - z* - - - = 0 - - - rac{\partial f}{\partial z^*} = 0 - - - ∂ - - - - z - - - * - - - ∂f - - - ​ - - - - - = - - - - 0 - - - (也就是说,函数 - - - F - - - F - - - F - - - 可以完全写成 - - - z - - - z - - - z - - - ,没有参考 - - - z* - - - z^* - - - z - - - * - - - ). -* 另一个重要的(有点违反直觉的)结果,正如我们稍后将看到的,是当我们对实值损失进行优化时,我们在进行变量更新时应该采取的步骤由下式给出 - - - ∂ 损失 - - - - ∂ - - - - z* - - - rac{\部分损失}{\部分z^*} - - - ∂ - - - - z - - - * - - - ∂ 损失 - - - ​ - - - - (不是 - - - ∂ 损失 - - - ∂z - - - rac{\部分损失}{\部分z} - - - ∂z - - - ∂ 损失 - - - ​ - - - - )。 - - - 如需更多阅读,请查看: - - -### 维廷格微积分在优化中有何用处? [¶](#how-is-wirtinger-calculus-useful-in-optimization“此标题的永久链接”) - - - 音频和其他领域的研究人员更常见地使用梯度下降来优化具有复杂变量的实值损失函数。通常,这些人将实值和虚值视为可以更新的单独通道。对于步长 - - - A2 - - - \α/2 - - - A2 - - - 和损失 - - - L - - - L - - - L - - - ,我们可以写出以下方程 - - - R 2 - - - ℝ^2 - - - 右 - - - 2 - - - : - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> x -> -> -> -> n -> -> -> + -> -> -> 1 -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> x -> -> -> n -> -> -> -> − -> -> -> ( -> -> -> α -> -> -> / -> -> -> 2 -> -> -> ) -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> y -> -> -> -> n -> -> -> + -> -> -> 1 -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> y -> -> -> n -> -> -> -> − -> -> -> ( -> -> -> α -> -> -> / -> -> -> 2 -> -> -> ) -> -> -> * -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> egin{对齐} -> x_{n+1} &= x_n -- (lpha/2) * rac{\partial L}{\partial x} \ -> y_{n+1} &= y_n -- (lpha/2) * rac{\partial L}{\partial y} -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> n -> -> -> + -> -> -> 1 -> -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> n -> -> -> + -> -> -> 1 -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> x -> -> -> -> -> -> -> -> -> -> -> n -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> ( -> -> -> α -> -> -> /2 -> -> -> ) -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> y -> -> -> -> -> -> -> -> -> -> -> n -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> - -> -> -> -> -> ( -> -> -> α -> -> -> /2 -> -> -> ) -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 这些方程如何转化为复杂空间 - - - C - - - ℂ - - - C - - - ? - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> z -> -> -> -> n -> -> -> + -> -> -> 1 -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> x -> -> -> n -> -> -> -> − -> -> -> ( -> -> -> a -> -> -> / -> -> -> 2 -> -> -> ) -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> + -> -> -> 1 -> -> -> j -> -> -> * -> -> -> ( -> -> -> -> y -> -> -> n -> -> -> -> − -> -> -> ( -> -> -> a -> -> -> / -> -> -> 2 -> -> -> ) -> -> -> * -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> z -> -> -> n -> -> -> -> − -> -> -> a -> -> -> * -> -> -> 1 -> -> -> / -> -> -> 2 -> -> -> * -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> + -> -> -> j -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> z -> -> -> n -> -> -> -> − -> -> -> a -> -> -> * -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> egin{aligned} -> z_{n+1} &= x _n -- (lpha/2) * rac{\partial L}{\partial x} -+ 1j * (y_n -- (lpha/2) * rac{\partial L}{\partial y}) \ -> &= z_n -- lpha * 1/2 * \left( rac{\partial L}{\partial x} -+ j rac{\partial L}{\partial y } -ight) \ -> &= z_n -- lpha * rac{\partial L}{\partial z^*} -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> n -> -> -> + -> -> -> 1 -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> x -> -> -> -> -> -> -> -> -> -> -> n -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> ( -> -> -> a -> -> -> /2 -> -> -> ) -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> 1 -> -> -> j -> -> -> -> -> * -> -> -> -> -> ( -> -> -> -> y -> -> -> -> -> -> -> -> -> -> -> n -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> ( -> -> -> a -> -> -> /2 -> -> -> ) -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> n -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> - -> -> -> -> -> a -> -> -> -> -> * -> -> -> -> -> 1/2 -> -> -> -> -> * -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> j -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> ​​ -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> n -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> - -> -> -> -> -> a -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 非常有趣的事情发生了:维廷格微积分告诉我们,我们可以将上面的复变量更新公式简化为仅指共轭维廷格导数 - - - ∂L - - - - ∂ - - - - z* - - - rac{\部分L}{\部分z^*} - - - ∂ - - - - z - - - * - - - ∂L - - - ​ - - - - ,给我们准确的优化步骤。 - - - 由于共轭 Wirtinger 导数为我们提供了实值损失函数的正确步骤,因此当您对函数与实值损失进行微分时,PyTorch 会为您提供该导数。 - - -### PyTorch 如何计算共轭 Wirtinger 导数? [¶](#how-does-pytorch-compute-the-conjugate-wirtinger-derivative“此标题的永久链接”) - - - 通常,我们的导数公式将 grad_output 作为输入,表示我们已经计算出的传入向量雅可比积,又名, - - - ∂L - - - - ∂ - - - - s* - - - rac{\partial L}{\partial s^*} - - - ∂ - - - - s - - - * - - - ∂L - - - ​ - - - - , 在哪里 - - - L - - - L - - - L - - - 是整个计算的损失(产生实际损失)并且 - - - s - - - s - - - s - - - 是我们函数的输出。这里的目标是计算 - - - ∂L - - - - ∂ - - - - z* - - - rac{\部分L}{\部分z^*} - - - ∂ - - - - z - - - * - - - ∂L - - - ​ - - - - , 在哪里 - - - z - - - z - - - z - - - 是函数的输入。事实证明,在实际损失的情况下,我们可以*仅*计算 - - - ∂L - - - - ∂ - - - - s* - - - rac{\partial L}{\partial s^*} - - - ∂ - - - - s - - - * - - - ∂L - - - ​ - - - - ,尽管链式法则意味着我们还需要访问 - - - ∂L - - - ∂s - - - rac{\partial L}{\partial s} - - - ∂s - - - ∂L - - - ​ - - - - 。如果您想跳过此推导,请查看本节中的最后一个方程,然后跳到下一节。 - - - 让我们继续合作 - - - f : C → C - - - f: ℂ → ℂ - - - F - - - - : - - - - C - - - - → - - - - C - - - 定义为 - - - f ( z ) = f ( x -+ y j ) = u ( x , y ) -+ v ( x , y ) j - - - f(z) = f(x+yj) = u(x, y) -+ v(x, y)j - - - f(z) - - - - = - - - - f ( x - - - - + - - - - yj) - - - - = - - - - 你(x, - - - ) - - - - + - - - - v ( x , - - - ) j - - - 。如上所述,autograd 的梯度约定以实值损失函数的优化为中心,所以我们假设 - - - F - - - F - - - F - - - 是较大实值损失函数的一部分 - - - G - - - G - - - G - - - 。使用链式法则,我们可以写出: - - - -> -> -> -> -> (1) -> [¶](#equation-1 "此方程的永久链接") -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> * -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> * -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> rac{\partial L}{\partial z^*} = rac{\partial L }{\partial u} * rac{\partial u}{\partial z^*} -+ rac{\partial L}{\partial v} * rac{\partial v}{\partial z^ *} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 现在使用 Wirtinger 导数定义,我们可以写: - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> = -> -> -> 1 -> -> -> / -> -> -> 2 -> -> -> * -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> − -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> j -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> * -> -> -> -> -> -> = -> -> -> 1 -> -> -> / -> -> -> 2 -> -> -> * -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> j -> -> -> ) -> -> -> -> -> -> -> -> egin{aligned} -> rac {\partial L}{\partial s} = 1/2 * \left( rac{\partial L}{\partial u} -- rac{\partial L}{\partial v} j -ight) \ -> rac{\partial L}{\partial s^*} = 1/2 * \left( rac{\partial L}{\partial u} -+ rac{\partial L}{\partial v} j -ight) -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> 1/2 -> -> -> -> -> * -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> - -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> j -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> 1/2 -> -> -> -> -> * -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> j -> -> -> -> ) -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 这里需要注意的是,由于 - - - 你 - - - 你 - - - 你 - - - 和 - - - v - - - v - - - v - - - 是实函数,并且 - - - L - - - L - - - L - - - 根据我们的假设是真实的 - - - F - - - F - - - F - - - 是实值函数的一部分,我们有: - - - -> -> -> -> -> (2) -> [¶](#equation-2 "此方程的永久链接") -> -> -> -> -> -> -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ) -> -> -> -> * -> -> -> -> = -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> * -> -> -> -> -> -> -> \left( rac{\partial L}{\partial s} -ight)^* = rac{\partial L}{\partial s^*} -> -> -> -> -> -> -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - IE。, - - - ∂L - - - ∂s - - - rac{\partial L}{\partial s} - - - ∂s - - - ∂L - - - ​ - - - - 等于 - - - 梯度 _ 输出 p u - - - t* - - - 梯度_输出^* - - - 毕业_ o u tp u - - - t - - - * - - - 。 - - - 求解上述方程 - - - ∂L - - - ∂你 - - - rac{\偏L}{\偏u} - - - ∂你 - - - ∂L - - - ​ - - - - 和 - - - ∂L - - - ∂v - - - rac{\部分L}{\部分v} - - - ∂v - - - ∂L - - - ​ - - - - ,我们得到: - - - -> -> -> -> -> (3) -> [¶](#equation-3 "此方程的永久链接") -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> L -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> = -> -> -> − -> -> -> 1 -> -> -> j -> -> -> * -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> − -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> egin{对齐} -> rac{\partial L}{ \partial u} = rac{\partial L}{\partial s} -+ rac{\partial L}{\partial s^*} \ -> rac{\partial L}{\partial v} = -- 1j * \left( rac{\partial L}{\partial s} -- rac{\partial L}{\partial s^*} -ight) -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> − -> -> -> 1 -> -> -> j -> -> -> -> -> ∗ -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 将 [(3)](#equation-3) 代入 [(1)](#equation-1) 中,我们得到: - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ) -> -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> − -> -> -> 1 -> -> -> j -> -> -> ∗ -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> − -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ) -> -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∗ -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> j -> -> -> ) -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ∗ -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> − -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> j -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> ( -> -> -> u -> -> -> + -> -> -> v -> -> -> j -> -> -> ) -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> ( -> -> -> u -> -> -> + -> -> -> v -> -> -> j -> -> -> -> ) -> -> -> ∗ -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ∗ -> -> -> -> -> ∂ -> -> -> -> s -> -> -> ∗ -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> egin{aligned} -> rac{\partial L}{\partial z^*} &= \left( rac{\partial L}{\partial s} + rac{\partial L}{\partial s^*} -ight) * rac{\partial u}{\partial z^*} - 1j * \left( rac{\partial L}{\partial s} - rac{\partial L}{\partial s^*} -ight) * rac{\partial v}{\partial z^*} \ -> &= rac{\partial L}{\partial s} * \left( rac{\partial u}{\partial z^*} + rac{\partial v}{\partial z^*} j -ight) + rac{\partial L}{\partial s^*} * \left( rac{\partial u}{\partial z^*} - rac{\partial v}{\partial z^*} j -ight) \ -> &= rac{\partial L}{\partial s^*} * rac{\partial (u + vj)}{\partial z^*} + rac{\partial L}{\partial s} * rac{\partial (u + vj)^*}{\partial z^*} \ -> &= rac{\partial L}{\partial s} * rac{\partial s}{\partial z^*} + rac{\partial L}{\partial s^*} * rac{\partial s^*}{\partial z^*} \ -> \end{aligned} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> 1 -> -> -> j -> -> -> -> -> ∗ -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> j -> -> -> -> ) -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> u -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> − -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> v -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> j -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> ( -> -> -> u -> -> -> -> -> + -> -> -> -> -> v -> -> -> j -> -> -> ) -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> ( -> -> -> u -> -> -> -> -> + -> -> -> -> -> v -> -> -> j -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> - - - 使用 [(2)](#equation-2) ,我们得到: - - - -> -> -> -> -> (4) -> [¶](#equation-4 "此方程的永久链接") -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> * -> -> -> -> -> -> ) -> -> -> -> * -> -> -> -> * -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> + -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> s -> -> -> * -> -> -> -> -> -> * -> -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> ) -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> ( -> -> -> g -> -> -> r -> -> -> a -> -> -> d -> -> -> _ -> -> -> o -> -> -> u -> -> -> t -> -> -> p -> -> -> u -> -> -> t -> -> -> -> ) -> -> -> * -> -> -> -> * -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> + -> -> -> g -> -> -> r -> -> -> a -> -> -> d -> -> -> _ -> -> -> o -> -> -> u -> -> -> t -> -> -> p -> -> -> u -> -> -> t -> -> -> * -> -> -> -> -> ( -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> ) -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> egin{aligned} -> rac {\partial L}{\partial z^*} &= \left( rac{\partial L}{\partial s^*} -ight)^* * rac{\partial s}{\部分 z^*} -+ rac{\partial L}{\partial s^*} * \left( rac{\partial s}{\partial z} -ight)^* \ -> &= oxed{ (grad_output)^* * rac{\partial s}{\partial z^*} -+ grad_output * \left( rac{\partial s}{\partial z } -ight)^* } \ -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂>> -> -> z -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> ( -> -> -> g -> -> -> r -> -> -> a -> -> -> d -> -> -> _ -> -> -> o -> -> -> u -> -> -> tp>> -> u -> -> -> t -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> + -> -> -> -> -> g -> -> -> r -> -> -> a -> -> -> d -> -> -> _ -> -> -> o -> -> -> u -> -> -> tp -> -> -> u -> -> -> t -> -> -> -> -> * -> -> -> -> -> -> -> -> ( -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 最后一个方程对于编写自己的梯度非常重要,因为它将我们的导数公式分解为一个易于手动计算的更简单的公式。 - - -### 如何为复杂函数编写自己的导数公式? [¶](#how-can-i-write-my-own-derivative-formula-for-a-complex-function“永久链接到此标题”) - - - 上面的盒式方程给出了复函数所有导数的一般公式。然而,我们仍然需要计算 - - - ∂s - - - ∂z - - - rac{\部分s}{\部分z} - - - ∂z - - - ∂s - - - ​ - - - - 和 - - - ∂s - - - - ∂ - - - - z* - - - rac{\partial s}{\partial z^*} - - - ∂ - - - - z - - - * - - - ∂s - - - ​ - - - -.有两种方法可以做到这一点: - - - -> -> -> -* 第一种方法是直接使用维廷格导数的定义来计算 -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> rac{\partial s}{\partial z} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> -> rac{\partial s}{\partial z^*} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 使用 -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> rac{\partial s}{\partial x} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> x -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 和 -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> rac{\partial s}{\partial y} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> y -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >(可以用正常方式计算)。 -> *第二种方法是使用变量变化技巧和重写 -> -> -> -> -> -> -> -> f -> -> -> ( -> -> -> z -> -> -> ) -> -> -> -> f(z) -> -> -> -> -> -> -> -> -> -> f -> -> -> ( -> -> -> z -> -> -> ) -> -> -> -> -> -> 作为二变量函数 -> -> -> -> -> -> -> -> f -> -> -> ( -> -> -> z -> -> -> , -> -> -> -> z -> -> -> * -> -> -> -> ) -> -> -> -> f(z, z^*) -> -> -> -> -> -> -> -> -> -> f -> -> -> ( -> -> -> z -> -> -> , -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> ,并通过处理 -> -> -> -> -> -> -> -> z -> -> -> -> z -> -> -> -> -> 计算 -> 共轭 Wirtinger 导数 -> -> -> -> -> z -> -> -> -> -> -> 和 -> -> -> -> -> -> -> -> -> z -> -> -> * -> -> -> -> -> z^* -> -> -> -> -> -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> 作为自变量。这通常更容易;例如,如果所讨论的函数是全纯的,则仅使用 -> -> -> -> -> -> -> -> z -> -> -> -> z -> -> -> -> -> -> -> -> -> -> z -> -> -> -> -> >(并且>> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> rac{\partial s}{\partial z^*} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 将为零)。 -> -> -> > - - - 我们来考虑一下这个函数 - - - f ( z = x -+ y j ) = c -* z = c -* ( x -+ y j ) - - - f(z = x -+ yj) = c * z = c * (x+yj) - - - f ( z - - - - = - - - - X - - - - + - - - - yj) - - - - = - - - - C - - - - ∗ - - - - z - - - - = - - - - C - - - * - - - ( X - - - - + - - - - yj) - - - 举个例子,其中 - - - c ∈ R - - - c \in ℝ - - - C - - - ε - - - 右 - - - 。 - - - 使用第一种方法计算 Wirtinger 导数,我们得到了。 - - - ∂s - - - ∂z - - - = 1 /2 * - - - ( - - - - ∂s - - - ∂x - - - - - - - ∂s - - - ∂y - - - j) - - - = 1 /2 -* ( c − ( c -* 1 j ) -* 1 j ) - - - =c - - - ∂s - - - - ∂ - - - - z* - - - = 1 /2 * - - - ( - - - - ∂s - - - ∂x - - - - + - - - - ∂s - - - ∂y - - - j) - - - = 1/2*(c+(c*1j)*1j) - - - = 0 - - - egin{对齐} rac{\partial s}{\partial z} &= 1/2 * \left( rac{\partial s}{\partial x} -- rac{\partial s}{\partial y} j -ight) \ &= 1/2 * (c -- (c * 1j) * 1j) \ &= c \ \ \ rac{\partial s}{\partial z ^*} &= 1/2 * \left( rac{\partial s}{\partial x} -+ rac{\partial s}{\partial y} j -ight) \ &= 1/2 * (c -+ (c * 1j) * 1j) \ &= 0 \\end{对齐} - - - ∂z - - - ∂s - - - - - ​ - - - - - ∂ - - - - z - - - * - - - ∂s - - - - - ​ - - - - - - ​ - - - - - - = - - - - 1/2 - - - * - - - ( - - - - ∂x - - - ∂s - - - - - ​ - - - - - - - - ∂y - - - ∂s - - - - - ​ - - - - j - - - ) - - - - - - = - - - - 1/2 - - - * - - - ( C - - - - - - - ( C - - - * - - - 1 j ) - - - * - - - 1 j ) - - - = - - - - C - - - = - - - - 1/2 - - - * - - - ( - - - - ∂x - - - ∂s - - - - - ​ - - - - - + - - - - ∂y - - - ∂s - - - - - ​ - - - - j - - - ) - - - - - - = - - - - 1/2 - - - * - - - ( C - - - - + - - - - ( C - - - * - - - 1 j ) - - - * - - - 1 j ) - - - = - - - - 0 - - - - - ​ - - - - 使用 [(4)](#equation-4) 和 grad_output = 1.0 (这是在 PyTorch 中对标量输出调用 `backward()` 时使用的默认 grad 输出值),我们得到: - - - -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> = -> -> -> 1 -> -> -> * -> -> -> 0 -> -> -> + -> -> -> 1 -> -> -> * -> -> -> c -> -> -> = -> -> -> c -> -> -> -> \f rac{\partial L}{\partial z^*} = 1 * 0 -+ 1 * c = c -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> L -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> 1 -> -> -> -> -> * -> -> -> -> -> -> -> -> -> 0 -> -> -> -> -> + -> -> -> -> -> -> -> -> -> 1 -> -> -> -> -> * -> -> -> -> -> -> -> -> -> c -> -> -> -> -> = -> -> -> -> -> -> -> -> -> c -> -> -> -> -> -> -> > - - - 使用第二种方法计算 Wirtinger 导数,我们直接得到: - - - -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> ( -> -> -> c -> -> -> * -> -> -> z -> -> -> ) -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> c -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> ∂ -> -> -> -> z -> -> -> ∗ -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> ∂ -> -> -> ( -> -> -> c -> -> -> * -> -> -> z -> -> -> ) -> -> -> -> -> ∂ -> -> -> -> z -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> 0 -> -> -> -> -> -> -> -> egin{对齐} -> rac{\partial s}{\partial z} &= rac {\partial (c*z)}{\partial z} \ -> &= c \ -> rac{\partial s}{\partial z^*} &= rac{\partial (c* z)}{\partial z^*} \ -> &= 0 -> \end{对齐} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> s -> -> -> -> -> >​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> ( -> -> -> c -> -> -> -> -> * -> -> -> -> -> z -> -> -> ) -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> c -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> ( -> -> -> c -> -> -> -> -> * -> -> -> -> -> z -> -> -> ) -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> 0 -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> > - - - 再次使用 [(4)](#equation-4),我们得到 - - - ∂L - - - - ∂ - - - - z* - - - =c - - - rac{\partial L}{\partial z^*} = c - - - ∂ - - - - z - - - * - - - ∂L - - - ​ - - - - - = - - - - C - - - 。正如您所看到的,第二种方法涉及较少的计算,并且对于更快的计算更方便。 - - -### 跨域功能呢? [¶](#what-about-cross-domain-functions“此标题的永久链接”) - - - 一些函数从复杂的输入映射到实际的输出,反之亦然。这些函数形成了 [(4)](#equation-4) 的特例,我们可以使用链式法则推导: - - - -> -> -> -* 对于 -> -> -> -> -> -> -> -> f -> -> -> : -> -> -> C -> -> -> → -> -> -> R -> -> -> -> f: ℂ → ℝ -> -> -> -> -> -> -> -> -> f -> -> -> -> -> : -> -> -> -> -> -> -> -> -> C -> -> -> -> -> → -> -> -> -> -> -> -> -> -> R -> -> -> -> -> -> ,我们得到: -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> L -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> 2 -> -> -> -> -> -> * -> -> -> -> -> -> g -> -> -> -> -> -> r -> -> -> -> -> -> a -> -> -> -> -> -> d -> -> -> -> -> -> _ -> -> -> -> -> -> o -> -> -> -> -> -> u -> -> -> -> -> -> t -> -> -> -> -> -> p>> -> -> -> -> u -> -> -> -> -> -> t -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> s -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> rac{\partial L}{\partial z^*} = 2 * grad\ _输出 * rac{\partial s}{\partial z^{*}} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> L -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 2 -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> g -> -> -> -> -> -> r -> -> -> -> -> -> a -> -> -> -> -> -> d -> -> -> -> -> -> _ -> -> -> -> -> -> o -> -> -> -> -> -> u -> -> -> -> -> -> tp -> -> -> -> -> -> u -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> s -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >> -* 对于 -> -> -> -> -> -> -> f -> -> -> : -> -> -> R -> -> -> → -> -> -> C -> -> -> -> f: ℝ → ℂ -> -> -> -> -> -> -> -> -> -> f -> -> -> -> -> : -> -> -> -> -> -> -> -> -> R -> -> -> -> -> → -> -> -> -> -> -> -> -> C -> -> -> -> -> -> ,我们得到: -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> L -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> 2 -> -> -> -> -> -> * -> -> -> -> -> -> -> -> R -> -> -> -> -> -> e -> -> -> -> -> -> -> -> ( -> -> -> -> -> -> g -> -> -> -> -> -> r -> -> -> -> -> -> a -> -> -> -> -> -> d -> -> -> -> -> -> _ -> -> -> -> -> -> o -> -> -> -> -> -> u -> -> -> -> -> -> t -> -> -> -> -> -> p -> -> -> -> -> -> u -> -> -> -> -> -> -> -> t -> -> -> -> -> -> * -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> s -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> rac{\partial L}{\partial z^*} = 2 * \mathrm{Re}(grad_output^ * * rac{\partial s}{\partial z^{*}}) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> L -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> = -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 2 -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 重新 -> -> -> -> -> -> -> -> ( -> -> -> -> -> -> g -> -> -> -> -> -> r -> -> -> -> -> -> a -> -> -> -> -> -> d -> -> -> -> -> -> _ -> -> -> -> -> -> o -> -> -> -> -> -> u -> -> -> -> -> -> tp -> -> -> -> -> -> u -> -> -> -> -> -> -> -> t -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> * -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ∂ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ​ -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> >> -> -> > - - -## 已保存tensor的挂钩 [¶](#hooks-for-saved-tensors "此标题的固定链接") - - - 您可以通过定义一对 `pack_hook` /`unpack_hook` 钩子来控制[如何打包/解包保存的tensor](#saved-tensors-doc)。 `pack_hook` 函数应该采用一个tensor作为其单个参数,但可以返回任何 python 对象(例如另一个tensor、一个元组,甚至包含文件名的字符串)。 `unpack_hook` 函数将 `pack_hook` 的输出作为其单个参数,并且应该返回一个用于向后传递的tensor。 `unpack_hook` 返回的tensor只需与作为输入传递给 `pack_hook` 的tensor具有相同的内容。特别是,任何与 autograd 相关的元数据都可以忽略,因为它们将在解包过程中被覆盖。 - - - 此类对的一个示例是: - - -``` -class SelfDeletingTempFile(): - def __init__(self): - self.name = os.path.join(tmp_dir, str(uuid.uuid4())) - - def __del__(self): - os.remove(self.name) - -def pack_hook(tensor): - temp_file = SelfDeletingTempFile() - torch.save(tensor, temp_file.name) - return temp_file - -def unpack_hook(temp_file): - return torch.load(temp_file.name) - -``` - - - 请注意,`unpack_hook` 不应删除临时文件,因为它可能会被多次调用:只要返回的 SelfDeletingTempFile 对象处于活动状态,临时文件就应该处于活动状态。在上面的示例中,我们通过在不再需要临时文件时(删除 SelfDeletingTempFile 对象时)关闭临时文件来防止泄漏。 - - -!!! note "笔记" - - 我们保证“pack_hook”只会被调用一次,但“unpack_hook”可以根据向后传递的需要多次调用,并且我们希望它每次都返回相同的数据。 - - -!!! warning "警告" - - 禁止对任何函数的输入执行就地操作,因为它们可能会导致意外的副作用。如果打包钩子的输入被就地修改,PyTorch 会抛出错误,但不会捕获解包钩子的输入被就地修改的情况。 - - -### 为已保存的tensor注册钩子 [¶](#registering-hooks-for-a-saved-tensor "Permalink to this header") - - - 您可以通过在“SavedTensor”对象上调用“register_hooks()”方法在已保存的tensor上注册一对钩子。这些对象作为“grad_fn”的属性公开,并以“_raw_saved_”前缀开头。 - - -``` -x = torch.randn(5, requires_grad=True) -y = x.pow(2) -y.grad_fn._raw_saved_self.register_hooks(pack_hook, unpack_hook) - -``` - - - 一旦注册对,就会调用“pack_hook”方法。每次需要通过“y.grad_fn._saved_self”访问保存的tensor时,都会调用“unpack_hook”方法` 或在向后传递期间。 - - -!!! warning "警告" - - 如果在保存的tensor被释放后(即调用后向功能后)保留对“SavedTensor”的引用,则禁止调用其“register_hooks()”。大多数情况下,PyTorch 会抛出错误,但可能无法执行因此在某些情况下可能会出现未定义的行为。 - - -### 为保存的tensor注册默认钩子 [¶](#registering-default-hooks-for-saved-tensors "永久链接到此标题") - - - 或者,您可以使用上下文管理器 [`saved_tensors_hooks`](../autograd.html#torch.autograd.graph.saved_tensors_hooks "torch.autograd.graph.saved_tensors_hooks") 注册一对hooks,这将应用于在该上下文中创建的*所有*保存的tensor。 - - - 例子: - - -``` -# Only save on disk tensors that have size >= 1000 -SAVE_ON_DISK_THRESHOLD = 1000 - -def pack_hook(x): - if x.numel() < SAVE_ON_DISK_THRESHOLD: - return x - temp_file = SelfDeletingTempFile() - torch.save(tensor, temp_file.name) - return temp_file - -def unpack_hook(tensor_or_sctf): - if isinstance(tensor_or_sctf, torch.Tensor): - return tensor_or_sctf - return torch.load(tensor_or_sctf.name) - -class Model(nn.Module): - def forward(self, x): - with torch.autograd.graph.saved_tensors_hooks(pack_hook, unpack_hook): - # ... compute output - output = x - return output - -model = Model() -net = nn.DataParallel(model) - -``` - - - 使用此上下文管理器定义的钩子是线程本地的。因此,以下代码将不会产生所需的效果,因为钩子不经过 DataParallel 。 - - -``` -# Example what NOT to do - -net = nn.DataParallel(model) -with torch.autograd.graph.saved_tensors_hooks(pack_hook, unpack_hook): - output = net(input) - -``` - - - 请注意,使用这些钩子会禁用所有用于减少 Tensor 对象创建的优化。例如: - - -``` -with torch.autograd.graph.saved_tensors_hooks(lambda x: x, lambda x: x): - x = torch.randn(5, requires_grad=True) - y = x * x - -``` - - - 如果没有钩子,`x`、`y.grad_fn._saved_self`和`y.grad_fn._saved_other`都引用同一个tensor对象。有了钩子,PyTorch将打包和解包x 转换成两个新的tensor对象,它们与原始 x 共享相同的存储(不执行复制)。 - - -## 向后钩子执行 [¶](#backward-hooks-execution "永久链接到此标题") - - - 本节将讨论不同的钩子何时触发或不触发。然后将讨论它们被触发的顺序。将涵盖的钩子是: 通过 [`torch.Tensor.register_hook(`torch.Tensor.register_hook( )`](../generated/torch.Tensor.register_hook.html#torch.Tensor.register_hook "torch.Tensor.register_hook") ,通过 [`torch.Tensor.register_post\ 注册到 Tensor 的 post-accumulate-grad hooks _accumulate_grad_hook()`](../generated/torch.Tensor.register_post_accumulate_grad_hook.html#torch.Tensor.register_post_accumulate_grad_hook "torch.Tensor.register_post_accumulate_grad_hook") ,post-hooks通过[`torch.autograd.graph注册到节点.Node.register_hook()`](../generated/torch.autograd.graph.Node.register_hook.html#torch.autograd.graph.Node.register_hook "torch.autograd.graph.Node.register_hook") ,并通过 [`torch.autograd.graph.Node.register_prehook()`](../generated/torch.autograd.graph.Node.register_prehook.html#torch.autograd.graph.Node.prehook 注册到 Node。 register_prehook "torch.autograd.graph.Node.register_prehook") 。 - - -### 是否会触发特定的钩子 [¶](#whether-a-pspecial-hook-will-be-fired "Permalink to this header") - - - 通过 [`torch.Tensor.register_hook()`](../generated/torch.Tensor.register_hook.html#torch.Tensor.register_hook "torch.Tensor.register_hook") 注册到 Tensor 的 Hook 在渐变时执行正在计算该tensor。 (请注意,这不需要执行tensor的 grad_fn。例如,如果tensor作为 `inputs` 参数的一部分传递给 [`torch.autograd.grad()`](../generated/torch. autograd.grad.html#torch.autograd.grad "torch.autograd.grad") ,Tensor 的 grad_fn 可能不会被执行,但该 Tensor 的钩子寄存器将始终被执行。) - - - 通过 [`torch.Tensor.register_post_accumulate_grad_hook()`](../generated/torch.Tensor.register_post_accumulate_grad_hook.html#torch.Tensor.register_post_accumulate_grad_hook "torch.Tensor.register_post_accumulate_grad_hook 注册到 Tensor 的 Hooks ") 在该tensor的梯度累积后执行,这意味着tensor的梯度字段已设置。而通过 [`torch.Tensor.register_hook()`](../generated/torch.Tensor.register_hook.html#torch.Tensor.register_hook "torch.Tensor.register_hook") 注册的钩子在梯度正在运行时运行计算,通过 [`torch.Tensor.register_post_accumulate_grad_hook()`](../generated/torch.Tensor.register_post_accumulate_grad_hook.html#torch.Tensor.register_post_accumulate_grad_hook "torch.Tensor.register_post_accumulate_grad_hook" 注册的钩子)仅在后向传递结束时由 autograd 更新tensor的 grad 字段后才会触发。因此,post-accumulate-grad hooks 只能为 leafTensors 注册。通过 [`torch.Tensor.register_post_accumulate_grad_hook()`](../generated/torch.Tensor.register_post_accumulate_grad_hook.html#torch.Tensor.register_post_accumulate_grad_hook "torch.Tensor.register_post_accumulate_grad_hook") 注册钩子即使您调用 back(retain_graph=True) ,在非叶tensor上也会出错。 - - - 使用 [`torch.autograd.graph.Node.register_hook()`](../generated/torch.autograd.graph.Node.register_hook.html#torch. autograd.graph.Node.register_hook "torch.autograd.graph.Node.register_hook") 或 [`torch.autograd.graph.Node.register_prehook()`](../generated/torch.autograd.graph.Node.register_prehook.html#torch.autograd.graph.Node.register_prehook "torch.autograd.graph.Node.register_prehook") 仅在其注册的节点被执行时才会被触发。 - - - 是否执行特定节点可能取决于是否使用 [`torch.autograd.grad()`](../generated/torch.autograd.grad.html#torch.autograd.grad "torch.autograd.grad") 或 [`torch.autograd.backward()`](../generated/torch.autograd.backward.html#torch.autograd.backward "torch.autograd.backward") 。具体来说,你应该注意当您在与要传递给 [`torch.autograd.grad()`](../generated/torch.autograd.grad.html#torch.autograd.grad " torch.autograd.grad") 或 [`torch.autograd.backward()`](../generated/torch.autograd.backward.html#torch.autograd.backward "torch.autograd.backward") 作为“输入”参数。 - - - 如果您使用 [`torch.autograd.backward()`](../generated/torch.autograd.backward.html#torch.autograd.backward "torch.autograd.backward") ,上述所有钩子都会无论您是否指定“inputs”参数,都会被执行。这是因为.backward() 执行所有节点,即使它们对应于指定为输入的tensor。(请注意,与作为“输入”传递的tensor相对应的此附加节点的执行通常是不必要的,但无论如何都会完成。此行为是可能会发生变化;您不应该依赖它。) - - - 另一方面,如果您使用 [`torch.autograd.grad()`](../generated/torch.autograd.grad.html#torch.autograd.grad "torch.autograd.grad") ,则向后注册到与传递给“input”的tensor对应的节点的钩子可能不会被执行,因为除非有另一个输入依赖于该节点的梯度结果,否则这些节点不会被执行。 - - -### 不同钩子的触发顺序 [¶](#the-order-in-which-the -- different-hooks-are-fired "Permalink to this header") - - - 事情发生的顺序是: - - -1. 执行注册到 Tensor 的钩子 2.注册到 Node 的预钩子被执行(如果 Node 被执行)。3.对于保留_grad4 的tensor,“.grad”字段会更新。节点被执行(遵守上述规则)5。对于累积了“.grad”的叶tensor,将执行 post-accumulate-grad 钩子6。注册到 Node 的 post-hooks 被执行(如果 Node 被执行) - - - 如果在同一个 Tensor 或 Node 上注册了多个相同类型的 hook,它们将按照注册的顺序执行。后面执行的 hook 可以观察到前面的 hook 对梯度的修改。 - - -### 特殊挂钩 [¶](#special-hooks "此标题的固定链接") - - -[`torch.autograd.graph.register_multi_grad_hook()`](../autograd.html#torch.autograd.graph.register_multi_grad_hook "torch.autograd.graph.register_multi_grad_hook") 是使用注册到tensor的钩子实现的。每个单独的tensor钩子都按照上面定义的tensor钩子顺序触发,并且在计算最后一个tensor梯度时调用注册的多梯度钩子。 - - -[`torch.nn.modules.module.register_module_full_backward_hook()`](../generated/torch.nn.modules.module.register_module_full_backward_hook.html#torch.nn.modules.module.register_module_full_backward_hook “torch.nn.modules.module.register_module_full_backward_hook”)是使用注册到 Node 的 hooks 实现的。当计算前向时,钩子被注册到与模块的输入和输出相对应的 grad_fn 。因为一个模块可能需要多个输入并返回多个输出,所以在forward之前首先将一个虚拟的自定义autograd函数应用于模块的输入,并在返回forward的输出之前应用于模块的输出,以确保这些tensor共享单个grad_fn,然后我们可以将钩子连接到上面。 - - -### 就地修改tensor时tensor钩子的行为 [¶](#behavior-of-tensor-hooks-when-tensor-is-modified-in-place "永久链接到此标题") - - - 通常注册到tensor的钩子接收相对于该tensor的输出梯度,其中tensor的值被视为向后计算时的值。 - - - 但是,如果您将钩子注册到tensor,然后就地修改该tensor,则在就地修改之前注册的钩子类似地接收输出相对于tensor的梯度,但tensor的值被视为其之前的值 -地方修改。 - - - 如果您更喜欢前一种情况的行为,则应该在对tensor进行所有就地修改后将它们注册到tensor。例如: - - -``` -t = torch.tensor(1., requires_grad=True).sin() -t.cos_() -t.register_hook(fn) -t.backward() - -``` - - - 此外,知道在幕后,当钩子注册到tensor时,它们实际上会永久绑定到该tensor的梯度_fn,因此如果随后就地修改该tensor,即使tensor现在有一个新的 grad_fn,在就地修改之前注册的钩子将继续与旧的 grad_fn 关联,例如当 autograd 引擎在图中达到tensor的旧 grad_fn 时,它们就会触发。 \ No newline at end of file diff --git a/docs/2.0/docs/notes/broadcasting.md b/docs/2.0/docs/notes/broadcasting.md deleted file mode 100755 index bf2a3d5e0..000000000 --- a/docs/2.0/docs/notes/broadcasting.md +++ /dev/null @@ -1,138 +0,0 @@ -# 广播语义 [¶](#broadcasting-semantics "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - 许多 PyTorch 操作支持 NumPy 的广播语义。有关详细信息,请参阅 。 - - - 简而言之,如果 PyTorch 操作支持广播,那么它的 Tensor 参数可以自动扩展为相同的大小(无需复制数据)。 - - -## 通用语义 [¶](#general-semantics "此标题的永久链接") - - - 如果满足以下规则,则两个tensor是“可广播的”: - - - -* 每个tensor至少有一个维度。 -* 当迭代维度大小时,从尾随维度开始,维度大小必须相等,其中之一为 1,或者其中之一不存在。 - - - 例如: - - -``` ->>> x=torch.empty(5,7,3) ->>> y=torch.empty(5,7,3) -# same shapes are always broadcastable (i.e. the above rules always hold) - ->>> x=torch.empty((0,)) ->>> y=torch.empty(2,2) -# x and y are not broadcastable, because x does not have at least 1 dimension - -# can line up trailing dimensions ->>> x=torch.empty(5,3,4,1) ->>> y=torch.empty( 3,1,1) -# x and y are broadcastable. -# 1st trailing dimension: both have size 1 -# 2nd trailing dimension: y has size 1 -# 3rd trailing dimension: x size == y size -# 4th trailing dimension: y dimension doesn't exist - -# but: ->>> x=torch.empty(5,2,4,1) ->>> y=torch.empty( 3,1,1) -# x and y are not broadcastable, because in the 3rd trailing dimension 2 != 3 - -``` - - - 如果两个tensor“x”、“y”是“可广播的”,则结果tensor大小计算如下: - - - -* 如果`x`和`y`的维数不相等,则在维数较少的tensor的维数前面加上1,使它们的长度相等。*然后,对于每个维数大小,得到的维数大小是以下的最大值沿该维度的“x”和“y”的大小。 - - - 例如: - - -``` -# can line up trailing dimensions to make reading easier ->>> x=torch.empty(5,1,4,1) ->>> y=torch.empty( 3,1,1) ->>> (x+y).size() -torch.Size([5, 3, 4, 1]) - -# but not necessary: ->>> x=torch.empty(1) ->>> y=torch.empty(3,1,7) ->>> (x+y).size() -torch.Size([3, 1, 7]) - ->>> x=torch.empty(5,2,4,1) ->>> y=torch.empty(3,1,1) ->>> (x+y).size() -RuntimeError: The size of tensor a (2) must match the size of tensor b (3) at non-singleton dimension 1 - -``` - - -## 就地语义 [¶](#in-place-semantics "此标题的永久链接") - - - 一个复杂之处是就地操作不允许就地tensor因广播而改变形状。 - - - 例如: - - -``` ->>> x=torch.empty(5,3,4,1) ->>> y=torch.empty(3,1,1) ->>> (x.add_(y)).size() -torch.Size([5, 3, 4, 1]) - -# but: ->>> x=torch.empty(1,3,1) ->>> y=torch.empty(3,1,7) ->>> (x.add_(y)).size() -RuntimeError: The expanded size of the tensor (1) must match the existing size (7) at non-singleton dimension 2. - -``` - - -## 向后兼容性 [¶](#backwards-compatibility "此标题的永久链接") - - - PyTorch 的早期版本允许在不同形状的tensor上执行某些逐点函数,只要每个tensor中的元素数量相等。然后通过将每个tensor视为一维来执行逐点运算。 PyTorch 现在支持广播,并且“一维”逐点行为被视为已弃用,并且在tensor不可广播但具有相同数量的元素的情况下将生成 Python 警告。 - - - 请注意,在两个tensor不具有相同形状,但可广播且具有相同数量元素的情况下,引入广播可能会导致向后不兼容的更改。例如: - - -``` ->>> torch.add(torch.ones(4,1), torch.randn(4)) - -``` - - - 以前会生成大小为 torch.Size([4,1]) 的tensor,但现在生成大小为 torch.Size([4,4]) 的tensor。为了帮助识别代码中向后不兼容的情况可能存在广播引入的情况,您可以将 torch.utils.backcompat.broadcast_warning.enabled 设置为 True ,在这种情况下会生成 python 警告。 - - - 例如: - - -``` ->>> torch.utils.backcompat.broadcast_warning.enabled=True ->>> torch.add(torch.ones(4,1), torch.ones(4)) -__main__:1: UserWarning: self and other do not have the same shape, but are broadcastable, and have the same number of elements. -Changing behavior in a backwards incompatible manner to broadcasting rather than viewing as 1-dimensional. - -``` \ No newline at end of file diff --git a/docs/2.0/docs/notes/cpu_threading_torchscript_inference.md b/docs/2.0/docs/notes/cpu_threading_torchscript_inference.md deleted file mode 100755 index c7c5c4b17..000000000 --- a/docs/2.0/docs/notes/cpu_threading_torchscript_inference.md +++ /dev/null @@ -1,137 +0,0 @@ -# CPU 线程和 TorchScript 推理 [¶](#cpu-threading-and-torchscript-inference "此标题的固定链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - - PyTorch 允许在 TorchScript 模型推理期间使用多个 CPU 线程。下图显示了在非典型应用程序中会发现的不同级别的并行性: - - -[![https://pytorch.org/docs/stable/_images/cpu_threading_torchscript_inference.svg](https://pytorch.org/docs/stable/_images/cpu_threading_torchscript_inference.svg)](https://pytorch.org/docs/stable/_images/cpu_threading_torchscript_inference.svg) 一个或多个推理线程对给定输入执行模型的前向传递。每个推理线程调用 JIT 解释器,该解释器逐一执行内联模型的操作。模型可以利用“fork”TorchScript 原语来启动异步任务。一次分叉多个操作会导致并行执行任务。 `fork` 运算符返回一个 `Future` 对象,可用于稍后同步,例如: - - -``` -@torch.jit.script -def compute_z(x): - return torch.mm(x, self.w_z) - -@torch.jit.script -def forward(x): - # launch compute_z asynchronously: - fut = torch.jit._fork(compute_z, x) - # execute the next operation in parallel to compute_z: - y = torch.mm(x, self.w_y) - # wait for the result of compute_z: - z = torch.jit._wait(fut) - return y + z - -``` - - - PyTorch 使用单个线程池来实现操作间并行性,该线程池由应用程序进程中分叉的所有推理任务共享。 - - - 除了操作间并行性之外,PyTorch 还可以在操作内利用多个线程(操作内并行性)。这在许多情况下都很有用,包括大tensor上的逐元素运算、卷积、GEMM、嵌入查找等。 - - -## 构建选项 [¶](#build-options "此标题的永久链接") - - - PyTorch 使用内部 ATen 库来实现操作。除此之外,PyTorch 还可以在外部库的支持下构建,例如 [MKL](https://software.intel.com/en-us/mkl) 和 [MKL-DNN](https://github.com/intel/mkl-dnn),以加快 CPU 上的计算速度。 - - - ATen、MKL 和 MKL-DNN 支持操作内并行性,并依赖以下并行化库来实现: - - - -* [OpenMP](https://www.openmp.org/) - 一个标准(和一个库,通常随编译器一起提供),广泛用于外部库; -* [TBB](https://github.com/intel/tbb) - 一个针对基于任务的并行性和并发环境进行优化的新型并行化库。 - - - OpenMP 历史上已被大量库使用。它以相对易于使用以及支持基于循环的并行性和其他原语而闻名。 - - - TBB 在外部库中使用较少,但同时针对并发环境进行了优化。 PyTorch 的 TBB 后端保证有一个单独的、单个的、每个进程的操作内线程池,供应用程序中运行的所有操作使用。 - - - 根据用例,人们可能会发现一个或另一个并行化库是其应用程序中更好的选择。 - - - PyTorch 允许在构建时使用以下构建选项选择 ATen 和其他库使用的并行化后端: - - -| Library | Build Option | Values | Notes | -| --- | --- | --- | --- | -| ATen | `ATEN_THREADING` | `OMP` (default), `TBB` | | -| MKL | `MKL_THREADING` | (same) | To enable MKL use `BLAS=MKL` | -| MKL-DNN | `MKLDNN_CPU_RUNTIME` | (same) | To enable MKL-DNN use `USE_MKLDNN=1` | - - - 建议不要在一个版本中混合使用 OpenMP 和 TBB。 - - - 上述任何“TBB”值都需要“USE_TBB=1”构建设置(默认值:OFF)。OpenMP 并行性需要单独的设置“USE_OPENMP=1”(默认值:ON)。 - - -## 运行时 API [¶](#runtime-api "此标题的永久链接") - - - 以下 API 用于控制线程设置: - - -| Type of parallelism | Settings | Notes | -| --- | --- | --- | -| Inter-op parallelism | `at::set_num_interop_threads` , `at::get_num_interop_threads` (C++) `set_num_interop_threads` , `get_num_interop_threads` (Python, [`torch`](../torch.html#module-torch "torch") module) | Default number of threads: number of CPU cores. | -| Intra-op parallelism | `at::set_num_threads` , `at::get_num_threads` (C++) `set_num_threads` , `get_num_threads` (Python, [`torch`](../torch.html#module-torch "torch") module) Environment variables: `OMP_NUM_THREADS` and `MKL_NUM_THREADS` | - - - 对于操作内并行度设置,`at::set_num_threads` 、 `torch.set_num_threads` 始终优先于环境变量,`MKL_NUM_THREADS` 变量优先于 `OMP_NUM\ _线程`。 - - -## 调整线程数 [¶](#tuning-the-number-of-threads "永久链接到此标题") - - - 以下简单脚本显示了矩阵乘法的运行时间如何随线程数变化: - - -``` -import timeit -runtimes = [] -threads = [1] + [t for t in range(2, 49, 2)] -for t in threads: - torch.set_num_threads(t) - r = timeit.timeit(setup = "import torch; x = torch.randn(1024, 1024); y = torch.randn(1024, 1024)", stmt="torch.mm(x, y)", number=100) - runtimes.append(r) -# ... plotting (threads, runtimes) ... - -``` - - - 在具有 24 个物理 CPU 核心(Xeon E5-2680、MKL 和 OpenMP 基于构建)的系统上运行脚本会产生以下运行时间: - - -[![https://pytorch.org/docs/stable/_images/cpu_threading_runtimes.svg](https://pytorch.org/docs/stable/_images/cpu_threading_runtimes.svg)](https://pytorch.org/docs/stable/_images/cpu_threading_runtimes.svg) - -在调整帧内和帧间数量时应考虑以下注意事项-操作线程: - - - -* 在选择线程数量时,需要避免超额订阅(使用太多线程,会导致性能下降)。例如,在使用大型应用程序线程池或严重依赖操作间并行性的应用程序中,人们可能会发现禁用操作内并行性作为一种可能的选择(即通过调用“set_num_threads(1)”);*在典型的应用程序中,人们可能会遇到延迟(处理推理请求所花费的时间)和吞吐量(每单位时间完成的工作量)之间的权衡。调整线程数量可能是一种有用的工具,可以以某种方式调整这种权衡。例如,在延迟关键的应用程序中,人们可能希望增加操作内线程的数量以尽可能快地处理每个请求。同时,操作的并行实现可能会增加额外的开销,从而增加每个请求完成的工作量,从而降低总体吞吐量。 - - -!!! warning "警告" - - OpenMP 不保证应用程序中将使用单个每个进程的操作内线程池。相反,两个不同的应用程序或操作线程间可能会使用不同的 OpenMP 线程池来进行操作内工作。这可能会导致应用程序使用大量线程。在调整线程数量时需要格外小心,以避免过度订阅OpenMP 案例中的多线程应用程序。 - - -!!! note "笔记" - - 预构建的 PyTorch 版本是使用 OpenMP 支持进行编译的。 - - -!!! note "笔记" - - `parallel_info` 实用程序打印有关线程设置的信息,并可用于调试。在 Python 中也可以通过 `torch.__config__.parallel_info()` 调用获得类似的输出。 \ No newline at end of file diff --git a/docs/2.0/docs/notes/cuda.md b/docs/2.0/docs/notes/cuda.md deleted file mode 100755 index e2b6765cf..000000000 --- a/docs/2.0/docs/notes/cuda.md +++ /dev/null @@ -1,1037 +0,0 @@ -# CUDA 语义 [¶](#cuda-semantics "此标题的永久链接") - -> 译者:[片刻小哥哥](https://github.com/jiangzhonglian) -> -> 项目地址: -> -> 原始地址: - - -[`torch.cuda`](../cuda.html#module-torch.cuda "torch.cuda") 用于设置和运行 CUDA 操作。它会跟踪当前选择的 GPU,并且默认情况下您分配的所有 CUDA tensor都将在该设备上创建。可以使用 [`torch.cuda.device`](../generated/torch.cuda.device.html#torch.cuda.device "torch.cuda.device") 上下文管理器更改所选设备。 - - - 但是,一旦分配了tensor,无论选择什么设备,都可以对其进行操作,并且结果将始终放置在与tensor相同的设备上。 - - - 默认情况下不允许跨 GPU 操作,但 [`copy_()`](../generated/torch.Tensor.copy_.html#torch.Tensor.copy_ "torch.Tensor.copy_") 除外以及其他具有类似复制功能的方法,例如 [`to()`](../generated/torch.Tensor.to.html#torch.Tensor.to "torch.Tensor.to") 和 [`cuda()` ](../generated/torch.Tensor.cuda.html#torch.Tensor.cuda "torch.Tensor.cuda") 。除非您启用点对点内存访问,否则任何启动操作tensor的尝试都会分布在不同的设备上会引发错误。 - - - 下面你可以找到一个展示这一点的小例子: - - -``` -cuda = torch.device('cuda') # Default CUDA device -cuda0 = torch.device('cuda:0') -cuda2 = torch.device('cuda:2') # GPU 2 (these are 0-indexed) - -x = torch.tensor([1., 2.], device=cuda0) -# x.device is device(type='cuda', index=0) -y = torch.tensor([1., 2.]).cuda() -# y.device is device(type='cuda', index=0) - -with torch.cuda.device(1): - # allocates a tensor on GPU 1 - a = torch.tensor([1., 2.], device=cuda) - - # transfers a tensor from CPU to GPU 1 - b = torch.tensor([1., 2.]).cuda() - # a.device and b.device are device(type='cuda', index=1) - - # You can also use ``Tensor.to`` to transfer a tensor: - b2 = torch.tensor([1., 2.]).to(device=cuda) - # b.device and b2.device are device(type='cuda', index=1) - - c = a + b - # c.device is device(type='cuda', index=1) - - z = x + y - # z.device is device(type='cuda', index=0) - - # even within a context, you can specify the device - # (or give a GPU index to the .cuda call) - d = torch.randn(2, device=cuda2) - e = torch.randn(2).to(cuda2) - f = torch.randn(2).cuda(cuda2) - # d.device, e.device, and f.device are all device(type='cuda', index=2) - -``` - - -## Ampere 设备上的 TensorFloat-32(TF32) [¶](#tensorfloat-32-tf32-on-ampere-devices“此标题的永久链接”) - - - 从 PyTorch 1.7 开始,有一个名为 allowed_tf32 的新标志。此标志在 PyTorch 1.7 到 PyTorch 1.11 中默认为 True,在 PyTorch 1.12 及更高版本中默认为 False。此标志控制是否允许 PyTorch 使用 TensorFloat32 (TF32) tensor核心,自 Ampere 以来在新的 NVIDIA GPU 上可用,在内部计算 matmul(矩阵)乘法和批量矩阵乘法)和卷积。 - - - TF32 tensor核心旨在通过将输入数据舍入为 10 位尾数,并以 FP32 精度累加结果,从而保持 FP32 动态范围,从而在 torch.float32 tensor上实现 matmul 和卷积方面的更好性能。 - - - matmuls 和卷积是分开控制的,它们相应的标志可以在以下位置访问: - - -``` -# The flag below controls whether to allow TF32 on matmul. This flag defaults to False -# in PyTorch 1.12 and later. -torch.backends.cuda.matmul.allow_tf32 = True - -# The flag below controls whether to allow TF32 on cuDNN. This flag defaults to True. -torch.backends.cudnn.allow_tf32 = True - -``` - - - 请注意,除了 matmul 和卷积本身之外,内部使用 matmul 或卷积的函数和 nn 模块也会受到影响。其中包括 nn.Linear 、 nn.Conv* 、cdist、tensordot、仿射网格和网格样本、自适应日志 softmax、GRU 和 LSTM。 - - - 要了解精度和速度,请参阅下面的示例代码: - - -``` -a_full = torch.randn(10240, 10240, dtype=torch.double, device='cuda') -b_full = torch.randn(10240, 10240, dtype=torch.double, device='cuda') -ab_full = a_full @ b_full -mean = ab_full.abs().mean() # 80.7277 - -a = a_full.float() -b = b_full.float() - -# Do matmul at TF32 mode. -torch.backends.cuda.matmul.allow_tf32 = True -ab_tf32 = a @ b # takes 0.016s on GA100 -error = (ab_tf32 - ab_full).abs().max() # 0.1747 -relative_error = error / mean # 0.0022 - -# Do matmul with TF32 disabled. -torch.backends.cuda.matmul.allow_tf32 = False -ab_fp32 = a @ b # takes 0.11s on GA100 -error = (ab_fp32 - ab_full).abs().max() # 0.0031 -relative_error = error / mean # 0.000039 - -``` - - - 从上面的例子中,我们可以看到,启用 TF32 后,速度快了约 7 倍,相对误差与双精度相比大约大 2 个数量级。如果需要完整的 FP32 精度,用户可以通过以下方式禁用 TF32: - - -``` -torch.backends.cuda.matmul.allow_tf32 = False -torch.backends.cudnn.allow_tf32 = False - -``` - - - 要在 C++ 中关闭 TF32 标志,您可以执行以下操作 - - -``` -at::globalContext().setAllowTF32CuBLAS(false); -at::globalContext().setAllowTF32CuDNN(false); - -``` - - - 有关 TF32 的更多信息,请参阅: - - - -* [TensorFloat-32](https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32 -- precision-format/) -* [CUDA 11](https://devblogs.nvidia.com/cuda-11-features-revealed/) -* [Ampere 架构](https://devblogs.nvidia.com/nvidia-ampere-architecture-in-depth/) - - -## FP16 GEMM 中的精度降低 [¶](#reduced -- precision-reduction-in-fp16-gemms “此标题的永久链接”) - - - fp16 GEMM 可能会通过一些中间降低的精度降低来完成(例如,在 fp16 而不是 fp32)。这些选择性的精度降低可以在某些工作负载(特别是具有大 k 维的工作负载)和 GPU 架构上实现更高的性能,但代价是数值精度和潜在的溢出。 - - - V100 的一些基准测试数据示例: - - -``` -[--------------------------- bench_gemm_transformer --------------------------] - [ m , k , n ] | allow_fp16_reduc=True | allow_fp16_reduc=False -1 threads: -------------------------------------------------------------------- - [4096, 4048, 4096] | 1634.6 | 1639.8 - [4096, 4056, 4096] | 1670.8 | 1661.9 - [4096, 4080, 4096] | 1664.2 | 1658.3 - [4096, 4096, 4096] | 1639.4 | 1651.0 - [4096, 4104, 4096] | 1677.4 | 1674.9 - [4096, 4128, 4096] | 1655.7 | 1646.0 - [4096, 4144, 4096] | 1796.8 | 2519.6 - [4096, 5096, 4096] | 2094.6 | 3190.0 - [4096, 5104, 4096] | 2144.0 | 2663.5 - [4096, 5112, 4096] | 2149.1 | 2766.9 - [4096, 5120, 4096] | 2142.8 | 2631.0 - [4096, 9728, 4096] | 3875.1 | 5779.8 - [4096, 16384, 4096] | 6182.9 | 9656.5 -(times in microseconds). - -``` - - - 如果需要完全降低精度,用户可以通过以下方式禁用 fp16 GEMM 中降低的精度: - - -``` -torch.backends.cuda.matmul.allow_fp16_reduced_precision_reduction = False - -``` - - - 要切换 C++ 中降低的精度降低标志,可以这样做 - - -``` -at::globalContext().setAllowFP16ReductionCuBLAS(false); - -``` - - -## BF16 GEMM 中的精度降低 [¶](#reduced-precision-reduction-in-bf16-gemms "此标题的永久链接") - - - BFloat16 GEMM 存在类似的标志(如上所述)。请注意,对于 BF16,此开关默认设置为 True ,如果您观察到工作负载中的数值不稳定,您可能希望将其设置为 False 。 - - - 如果不希望降低精度,用户可以通过以下方式禁用 bf16 GEMM 中的降低精度: - - -``` -torch.backends.cuda.matmul.allow_bf16_reduced_precision_reduction = False - -``` - - - 要切换 C++ 中降低的精度降低标志,可以这样做 - - -``` -at::globalContext().setAllowBF16ReductionCuBLAS(true); - -``` - - -## 异步执行 [¶](#asynchronous-execution "永久链接到此标题") - - - 默认情况下,GPU 操作是异步的。当您调用使用 GPU 的函数时,操作会“排队”到特定设备,但不一定要稍后执行。这使我们能够并行执行更多计算,包括 CPU 或其他 GPU 上的操作。 - - - 一般来说,异步计算的效果对调用者来说是不可见的,因为(1)每个设备按照排队的顺序执行操作,(2)PyTorch 在 CPU 和 GPU 之间或两个 GPU 之间复制数据时自动执行必要的同步。因此,如果每个操作都是同步执行的,计算就会继续进行。 - - - 您可以通过设置环境变量“CUDA_LAUNCH_BLOCKING=1”来强制同步计算。当 GPU 上发生错误时,这会很方便。(对于异步执行,只有在操作实际执行之后才会报告此类错误,因此堆栈跟踪不会显示请求的位置。) - - - 异步计算的结果是没有同步的时间测量不准确。为了获得精确的测量,应该在测量之前调用 [`torch.cuda.synchronize()`](../generated/torch.cuda.synchronize.html#torch.cuda.synchronize "torch.cuda.synchronize"),或者使用 [`torch.cuda.Event`](../generated/torch.cuda.Event.html#torch.cuda.Event "torch.cuda.Event") 记录时间,如下所示: - - -``` -start_event = torch.cuda.Event(enable_timing=True) -end_event = torch.cuda.Event(enable_timing=True) -start_event.record() - -# Run some things here - -end_event.record() -torch.cuda.synchronize() # Wait for the events to be recorded! -elapsed_time_ms = start_event.elapsed_time(end_event) - -``` - - - 作为例外,有几个函数,例如 [`to()`](../generated/torch.Tensor.to.html#torch.Tensor.to "torch.Tensor.to") 和 [`copy_() `](../generated/torch.Tensor.copy_.html#torch.Tensor.copy_ "torch.Tensor.copy_") 承认一个显式的 `non_blocking` 参数,它允许调用者在不必要时绕过同步。另一个例外是 CUDA 流,如下所述。 - - -### CUDA 流 [¶](#cuda-streams "此标题的永久链接") - - - [CUDA 流](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#streams) 是属于特定设备的线性执行序列。您通常不需要显式创建一个:默认情况下,每个设备都使用自己的“默认”流。 - - - 每个流内的操作按照它们创建的顺序进行序列化,但是来自不同流的操作可以以任何相对顺序同时执行,除非显式同步函数(例如 [`synchronize()`](../generated/torch.cuda.synchronize.html#torch.cuda.synchronize "torch.cuda.synchronize") 或 [`wait_stream()`](../generated/torch.cuda.Stream.html#torch.cuda.Stream.wait_stream "torch.使用 cuda.Stream.wait_stream") )。例如,下面的代码是不正确的: - - -``` -cuda = torch.device('cuda') -s = torch.cuda.Stream() # Create a new stream. -A = torch.empty((100, 100), device=cuda).normal_(0.0, 1.0) -with torch.cuda.stream(s): - # sum() may start execution before normal_() finishes! - B = torch.sum(A) - -``` - - - 当“当前流”是默认流时,PyTorch 在数据移动时自动执行必要的同步,如上所述。但是,当使用非默认流时,用户有责任确保正确的同步。 - - -### 向后传递的流语义 [¶](#stream-semantics-of-backward-passes "Permalink to this header") - - - 每个向后 CUDA 操作都在用于其相应前向操作的同一流上运行。如果您的前向传递在不同流上并行运行独立操作,这有助于向后传递利用相同的并行性。 - - - 相对于周围操作的向后调用的流语义与任何其他调用相同。向后传递会插入内部同步,以确保即使向后操作在多个流上运行(如上一段所述)。更具体地说,当调用 [`autograd.backward`](../generated/torch.autograd.backward.html#torch.autograd.backward "torch.autograd.backward") 、 [`autograd.grad`](../generated/torch.autograd.grad.html#torch.autograd.grad "torch.autograd.grad") 或 [ `tensor.backward`](../generated/torch.Tensor.backward.html#torch.Tensor.backward "torch.Tensor.backward") ,并可选择提供 CUDA tensor作为初始梯度 (例如, [`autograd.backward(..., grad_tensors=initial_grads)`](../generated/torch.autograd.backward.html#torch.autograd.backward "torch.autograd.backward") , [`autograd.grad(..., grad_outputs=initial_grads)`](../generated/torch.autograd.grad.html#torch.autograd.grad "torch.autograd.grad") ,或 [ `tensor.backward(...,gradient=initial_grad)`](../generated/torch.Tensor.backward.html#torch.Tensor.backward "torch.Tensor.backward") ),的行为 - - -1. 可选择填充初始梯度,2.调用向后传递,以及 3.使用渐变 - - - 与任何一组操作具有相同的流语义关系: - - -``` -s = torch.cuda.Stream() - -# Safe, grads are used in the same stream context as backward() -with torch.cuda.stream(s): - loss.backward() - use grads - -# Unsafe -with torch.cuda.stream(s): - loss.backward() -use grads - -# Safe, with synchronization -with torch.cuda.stream(s): - loss.backward() -torch.cuda.current_stream().wait_stream(s) -use grads - -# Safe, populating initial grad and invoking backward are in the same stream context -with torch.cuda.stream(s): - loss.backward(gradient=torch.ones_like(loss)) - -# Unsafe, populating initial_grad and invoking backward are in different stream contexts, -# without synchronization -initial_grad = torch.ones_like(loss) -with torch.cuda.stream(s): - loss.backward(gradient=initial_grad) - -# Safe, with synchronization -initial_grad = torch.ones_like(loss) -s.wait_stream(torch.cuda.current_stream()) -with torch.cuda.stream(s): - initial_grad.record_stream(s) - loss.backward(gradient=initial_grad) - -``` - - -#### BC 注意:在默认流上使用 grads [¶](#bc-note-using-grads-on-the-default-stream "Permalink to this header") - - - 在 PyTorch 的早期版本(1.9 及更早版本)中,autograd 引擎始终将默认流与所有向后操作同步,因此以下模式: - - -``` -with torch.cuda.stream(s): - loss.backward() -use grads - -``` - - - 只要“use grads”发生在默认流上,它就是安全的。在目前的 PyTorch 中,该模式不再安全。如果“backward()”和“use grads”位于不同的流上下文中,则必须同步流: - - -``` -with torch.cuda.stream(s): - loss.backward() -torch.cuda.current_stream().wait_stream(s) -use grads - -``` - - - 即使“use grads”位于默认流上。 - - -## 内存管理 [¶](#memory-management "此标题的永久链接") - - - PyTorch 使用缓存内存分配器来加速内存分配。这允许快速内存释放而无需设备同步。但是,分配器管理的未使用内存仍将显示为在“nvidia-smi”中使用。您可以使用 [`memory_allocated()`](../generated/torch.cuda.memory_allocated.html#torch.cuda.memory_alulated "torch.cuda.memory_alulated") 和 [`max_memory_allocated()` ](../generated/torch.cuda.max_memory_alulated.html#torch.cuda.max_memory_alulated "torch.cuda.max_memory_alulated") 监视tensor占用的内存,并使用 [`memory_reserved()`](../generated /torch.cuda.memory_reserved.html#torch.cuda.memory_reserved "torch.cuda.memory_reserved") 和 [`max_memory_reserved()`](../generated/torch.cuda.max_memory_reserved.html#torch. cuda.max_memory_reserved "torch.cuda.max_memory_reserved") 来监视缓存分配器管理的内存总量。调用 [`empty_cache()`](../generated/torch.cuda.empty_cache.html#torch.cuda.empty_cache "torch.cuda.empty_cache") 释放 PyTorch 中所有**未使用的**缓存内存,以便这些可以被其他 GPU 应用程序使用。但是,tensor占用的 GPU 内存不会被释放,因此无法增加 PyTorch 可用的 GPU 内存量。 - - - 为了更好地了解 CUDA 内存随时间的使用情况,[了解 CUDA 内存使用情况](../torch_cuda_memory.html#torch-cuda-memory) 描述了用于捕获和可视化内存使用痕迹的工具。 - - - 对于更高级的用户,我们通过 [`memory_stats()`](../generated/torch.cuda.memory_stats.html#torch.cuda.memory_stats "torch.cuda.memory_stats") 提供更全面的内存基准测试。我们还提供通过 [`memory_snapshot()`](../generated/torch.cuda.memory_snapshot.html#torch.cuda.memory_snapshot "torch.cuda.memory_snapshot" 捕获内存分配器状态的完整快照的功能) ,这可以帮助您了解代码生成的底层分配模式。 - - -### 环境变量 [¶](#environment-variables "永久链接到此标题") - - - 使用缓存分配器可能会干扰内存检查工具,例如“cuda-memcheck”。要使用“cuda-memcheck”调试内存错误,请在环境中设置“PYTORCH_NO_CUDA_MEMORY_CACHING=1”以禁用缓存。 - - - 缓存分配器的行为可以通过环境变量 `PYTORCH_CUDA_ALLOC_CONF` 进行控制。格式为 `PYTORCH_CUDA_ALLOC_CONF=