From 5fbb7bc46e5d9c3912a1a56d1be48b64f7af0dc5 Mon Sep 17 00:00:00 2001 From: hippocookie Date: Tue, 2 Jul 2024 20:10:34 +0800 Subject: [PATCH 1/4] Translate benchmark.py --- recipes_source/recipes/benchmark.py | 593 +++++++++++++--------------- recipes_source/recipes_index.rst | 2 +- 2 files changed, 286 insertions(+), 309 deletions(-) diff --git a/recipes_source/recipes/benchmark.py b/recipes_source/recipes/benchmark.py index d02157a..075c835 100644 --- a/recipes_source/recipes/benchmark.py +++ b/recipes_source/recipes/benchmark.py @@ -1,29 +1,21 @@ """ PyTorch Benchmark ==================================== -This recipe provides a quick-start guide to using PyTorch -``benchmark`` module to measure and compare code performance. +本教程提供了使用 PyTorch ``benchmark`` 模块来测量和比较代码性能的快速入门指南。 -Introduction +介绍 ------------ -Benchmarking is an important step in writing code. It helps -us validate that our code meets performance expectations, -compare different approaches to solving the same problem and -prevent performance regressions. - -There are many options when it comes to benchmarking PyTorch code -including the Python builtin ``timeit`` module. However, benchmarking -PyTorch code has many caveats that can be easily overlooked such as -managing the number of threads and synchronizing CUDA devices. Moreover, -generating Tensor inputs for benchmarking can be quite tedious. - -This recipe demonstrates how to use PyTorch ``benchmark`` module to avoid -common mistakes while making it easier to compare performance of -different code, generate input for benchmarking and more. - -Setup +基准测试是编写代码时的一个重要步骤。它帮助我们验证代码是否满足性能预期,比较解决同一问题的不同方法,并防止性能裂化。 + +对于基准测试 PyTorch 代码有许多选择,包括 Python 内置的 ``timeit`` 模块。 +然而,基准测试 PyTorch 代码有许多容易被忽视的注意事项,例如管理线程数量和同步 CUDA 设备。 +此外,为基准测试生成张量输入可能相当繁琐。 + +本教程演示了如何使用 PyTorch ``benchmark`` 模块来避免常见错误,同时更容易比较不同代码的性能、为基准测试生成输入等。 + +设置 ----- -Before we begin, install ``torch`` if it isn’t already available. +在开始之前,如果尚未安装 ``torch``,请先安装。 :: @@ -31,39 +23,36 @@ """ - ###################################################################### -# Steps +# 具体步骤 # ----- # -# 1. Defining functions to benchmark -# 2. Benchmarking with ``timeit.Timer`` -# 3. Benchmarking with ``torch.utils.benchmark.Timer`` -# 4. Benchmarking with ``Blocked Autorange`` -# 5. Comparing benchmark results -# 6. Saving/Loading benchmark results -# 7. Generating inputs with ``Fuzzed Parameters`` -# 8. Collecting instruction counts with ``Callgrind`` +# 1. 定义要基准测试的函数 +# 2. 使用 ``timeit.Timer`` 进行基准测试 +# 3. 使用 ``torch.utils.benchmark.Timer`` 进行基准测试 +# 4. 使用 ``Blocked Autorange`` 进行基准测试 +# 5. 比较基准测试结果 +# 6. 保存/加载基准测试结果 +# 7. 使用 ``Fuzzed Parameters`` 生成输入 +# 8. 使用 ``Callgrind`` 收集指令计数 # -# 1. Defining functions to benchmark +# 1. 定义要基准测试的函数 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# As of the time of this writing, `torch.dot `__ -# does not support batched mode, so we will compare two approaches to -# implementing it using existing ``torch`` operators: one approach uses a -# combination of ``mul`` and ``sum`` while the other reduces the problem to ``bmm``. +# 在撰写本文时, `torch.dot `__ +# 不支持批量模式,因此我们将比较使用现有 ``torch`` 运算符实现它的两种方法:一种方法使用 ``mul`` 和 ``sum`` 的组合,另一种方法使用 ``bmm``。 # import torch def batched_dot_mul_sum(a, b): - '''Computes batched dot by multiplying and summing''' + """Computes batched dot by multiplying and summing""" return a.mul(b).sum(-1) def batched_dot_bmm(a, b): - '''Computes batched dot by reducing to ``bmm``''' + """Computes batched dot by reducing to ``bmm``""" a = a.reshape(-1, 1, a.shape[-1]) b = b.reshape(-1, b.shape[-1], 1) return torch.bmm(a, b).flatten(-3) @@ -77,28 +66,28 @@ def batched_dot_bmm(a, b): ###################################################################### -# 2. Benchmarking with ``timeit.Timer`` +# 2. 使用 ``timeit.Timer`` 进行基准测试 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# First, let's benchmark the code using Python's builtin ``timeit`` module. -# We keep the benchmark code simple here so we can compare the defaults -# of ``timeit`` and ``torch.utils.benchmark``. +# 首先,让我们使用 Python 内置的 ``timeit`` 模块对代码进行基准测试。 +# 我们在这里保持基准测试代码简单,以便我们可以比较 ``timeit`` 和 ``torch.utils.benchmark`` 的默认设置。 # import timeit t0 = timeit.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = timeit.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) -print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') +print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") ###################################################################### # .. code-block:: none @@ -110,26 +99,25 @@ def batched_dot_bmm(a, b): ###################################################################### -# 3. Benchmarking with ``torch.utils.benchmark.Timer`` +# 3. 使用 ``torch.utils.benchmark.Timer`` 进行基准测试 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# PyTorch ``benchmark`` module was designed to be familiar to those who -# have used the ``timeit`` module before. However, its defaults make it -# easier and safer to use for benchmarking PyTorch code. Let's first -# compare the same basic API as above. -# +# PyTorch ``benchmark``模块的设计使得对于那些曾经使用过 ``timeit`` 模块的人来说,它看起来很熟悉。 +# 然而,它的默认设置使得它更容易且更安全地用于对 PyTorch 代码进行基准测试。 +# 首先让我们对比一下基本API的使用。 import torch.utils.benchmark as benchmark t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) print(t0.timeit(100)) print(t1.timeit(100)) @@ -151,40 +139,37 @@ def batched_dot_bmm(a, b): # ###################################################################### -# Even though the APIs are the same for the basic functionality, there -# are some important differences. ``benchmark.Timer.timeit()`` returns the -# time per run as opposed to the total runtime like ``timeit.Timer.timeit()`` -# does. PyTorch ``benchmark`` module also provides formatted string -# representations for printing the results. +# 虽然基本功能的API是相同的,但是还是有一些重要的区别。 +# ``benchmark.Timer.timeit()``返回的是每次运行的时间,而不是 ``timeit.Timer.timeit()`` 返回的总运行时间。 +# PyTorch ``benchmark``模块还提供了格式化的字符串表示,用于打印结果。 # -# Another important difference, and the reason why the results diverge -# is that PyTorch benchmark module runs in a single thread by default. -# We can change the number of threads with the ``num_threads`` argument. +# 另一个重要的区别,也是结果不同的原因,是PyTorch基准测试模块默认在单线程中运行。 +# 我们可以使用``num_threads``参数来更改线程数量。 # -# ``torch.utils.benchmark.Timer`` takes several additional arguments -# including: ``label``, ``sub_label``, ``description`` and ``env`` which change -# the __repr__ of the measurement object returned and are used for -# grouping the results (more on this later). +# ``torch.utils.benchmark.Timer``接受几个额外的参数,包括: ``label``、``sub_label``、``description``和``env``, +# 这些参数会改变返回的测量对象的__repr__,并用于对结果进行分组(稍后会详细介绍)。 # num_threads = torch.get_num_threads() -print(f'Benchmarking on {num_threads} threads') +print(f"Benchmarking on {num_threads} threads") t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, num_threads=num_threads, - label='Multithreaded batch dot', - sub_label='Implemented using mul and sum') + label="Multithreaded batch dot", + sub_label="Implemented using mul and sum", +) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, num_threads=num_threads, - label='Multithreaded batch dot', - sub_label='Implemented using bmm') + label="Multithreaded batch dot", + sub_label="Implemented using bmm", +) print(t0.timeit(100)) print(t1.timeit(100)) @@ -206,32 +191,32 @@ def batched_dot_bmm(a, b): # 1 measurement, 100 runs , 40 threads ###################################################################### -# Running ``benchmark`` with all threads available gives similar results -# as the ``timeit`` module. More importantly, which version is faster -# depends on how many threads we run the code with. This is why it's -# important to benchmark the code with thread settings that are -# representative of real use cases. Another important thing to remember -# is to synchronize CPU and CUDA when benchmarking on the GPU. Let's run -# the above benchmarks again on a CUDA tensor and see what happens. +# 使用所有可用线程运行 ``benchmark`` 会得到与 ``timeit`` 模块类似的结果。 +# 更重要的是,哪个版本更快取决于我们使用多少线程运行代码。 +# 这就是为什么在基准测试时,使用与实际用例相符的线程设置非常重要。 +# 另一个需要记住的重要事情是,在 GPU 上进行基准测试时,要同步CPU和CUDA。 +# 让我们再次在CUDA张量上运行上面的基准测试,看看会发生什么。 # -x = torch.randn(10000, 1024, device='cuda') +x = torch.randn(10000, 1024, device="cuda") t0 = timeit.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = timeit.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) # Ran each twice to show difference before/after warm-up -print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') +print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") ###################################################################### # .. code-block:: none @@ -244,14 +229,16 @@ def batched_dot_bmm(a, b): # t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) # Run only once since benchmark module does warm-up for us print(t0.timeit(100)) @@ -274,34 +261,23 @@ def batched_dot_bmm(a, b): # ###################################################################### -# The results reveal something interesting. The first run of the ``bmm`` -# version using the ``timeit`` module takes much longer than the second -# run. This is because ``bmm`` calls into `cuBLAS` which needs to be -# loaded the first time it's called which takes some time. This is why -# it's important to do a warm-up run before benchmarking, luckily for -# us, PyTorch's ``benchmark`` module takes care of that. +# 结果揭示了一些有趣的事情。使用 `timeit` 模块运行 `bmm` 版本的第一次运行比第二次运行慢很多。 +# 这是因为 `bmm` 需要调用 `cuBLAS`,第一次调用时需要加载它,这需要一些时间。 +# 这就是为什么在基准测试之前做一次预热运行很重要,幸运的是, PyTorch 的 `benchmark` 模块为我们处理了这个问题。 # -# The difference in the results between ``timeit`` and ``benchmark`` modules -# is because the `timeit` module is not synchronizing CUDA and is thus only -# timing the time to launch the kernel. PyTorch's ``benchmark`` module does -# the synchronization for us. +# `timeit` 模块和 `benchmark` 模块之间结果的差异是因为 `timeit` 模块没有同步 CUDA,因此只计时了启动内核的时间。 +# PyTorch 的 `benchmark` 模块为我们做了同步。 ###################################################################### -# 4. Benchmarking with `Blocked Autorange` +# 4. 使用 `Blocked Autorange` 进行基准测试 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# While ``timeit.Timer.autorange`` takes a single continuous measurement -# of at least 0.2 seconds, `torch.utils.benchmark.blocked_autorange` -# takes many measurements whose times total at least 0.2 seconds (which -# can be changed by the `min_run_time` parameter) subject to the constraint -# that timing overhead is a small fraction of the overall measurement. -# This is accomplished by first running with an increasing number of runs -# per loop until the runtime is much larger than measurement overhead -# (which also serves as a warm up), and then taking measurements until -# the target time is reached. This has the useful properties that it wastes -# less data and allows us to compute statistics to estimate the reliability -# of the measurements. +# 虽然 `timeit.Timer.autorange` 采取至少 0.2 秒的单次连续测量, +# 但 `torch.utils.benchmark.blocked_autorange` 采取多次测量,其总时间至少为 0.2 秒(可通过 `min_run_time` 参数更改), +# 并且测量开销只占总体测量的一小部分。 +# 这是通过首先以递增的循环次数运行,直到运行时间远大于测量开销(这也起到了热身的作用), +# 然后进行测量直到达到目标时间。这有一个有用的特性,即它浪费的数据更少,并且允许我们计算统计数据来估计测量的可靠性。 # m0 = t0.blocked_autorange() @@ -327,8 +303,7 @@ def batched_dot_bmm(a, b): # ###################################################################### -# We can also inspect the individual statistics from the returned -# measurements object. +# 我们还可以查看返回的测量对象中获得的各个统计数据。 print(f"Mean: {m0.mean * 1e6:6.2f} us") print(f"Median: {m0.median * 1e6:6.2f} us") @@ -342,17 +317,14 @@ def batched_dot_bmm(a, b): # ###################################################################### -# 5. Comparing benchmark results +# 5. 比较基准测试结果 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# So far we've been comparing our two versions of batched dot against a -# single input. In practice, we want to try a combination of inputs as -# well as different number of threads. The ``Compare`` class helps display -# the results of many measurements in a formatted table. It uses the -# annotations described above (`label`, `sub_label`, `num_threads`, etc.) as -# well as `description` to group and organize the table. Let's use -# ``Compare`` to see how our functions perform for different input sizes -# and number of threads. +# 到目前为止,我们一直在比较我们的两个批量点积版本对同一输入的表现。 +# 在实践中,我们希望尝试不同的输入组合以及不同的线程数量。 +# `Compare` 类帮助我们以格式化表格的形式显示多个测量结果。 +# 它使用上面描述的注释( `label`、 `sub_label`、 `num_threads` 等)以及 `description` 来对表格进行分组和组织。 +# 让我们使用 `Compare` 来看看我们的函数在不同的输入大小和线程数量下的表现如何。 # from itertools import product @@ -364,28 +336,32 @@ def batched_dot_bmm(a, b): for b, n in product(sizes, sizes): # label and sub_label are the rows # description is the column - label = 'Batched dot' - sub_label = f'[{b}, {n}]' + label = "Batched dot" + sub_label = f"[{b}, {n}]" x = torch.ones((b, n)) for num_threads in [1, 4, 16, 32]: - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.print() @@ -395,7 +371,7 @@ def batched_dot_bmm(a, b): # :caption: Output # # [--------------- Batched dot ----------------] -# | mul/sum | bmm +# | mul/sum | bmm # 1 threads: ----------------------------------- # [1, 1] | 5.9 | 11.2 # [1, 64] | 6.4 | 11.4 @@ -469,12 +445,10 @@ def batched_dot_bmm(a, b): # ###################################################################### -# The results above indicate that the version which reduces to ``bmm`` -# is better for larger tensors running on multiple threads, while for -# smaller and/or single thread code, the other version is better. -# -# ``Compare`` also provides functions for changing the table format +# 上面的结果表明,对于在多线程上运行的较大张量, `bmm` 的版本效果更好, +# 而对于较小和/或单线程代码,另一个版本效果更好。 # +# `Compare` 还提供了用于更改表格格式的函数 compare.trim_significant_figures() compare.colorize() @@ -482,36 +456,34 @@ def batched_dot_bmm(a, b): ###################################################################### -# 6. Saving/Loading benchmark results +# 6. 保存/加载基准测试结果 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# `Measurements` (and ``CallgrindStats`` which are described in section 8) -# can be serialized by the ``pickle`` module. This makes A/B testing easy, as you can collect -# measurements from two separate environments, pickle them, and then -# load both in a single environment. Timer even takes an `env` -# constructor argument so that such A/B testing works seamlessly. +# `Measurements` (和第8节中描述的 `CallgrindStats` )可以通过 `pickle` 模块序列化。 +# 这使得A/B测试变得很容易,因为您可以从两个独立的环境中收集测量结果, +# 将它们序列化,然后在单个环境中加载两者。Timer甚至接受一个 `env` +# 构造函数参数,以便这种A/B测试可以无缝衔接。 # -# Let's imagine that rather than two Python functions, the add/sum -# and ``bmm`` approaches were in two different builds of PyTorch. -# The example below demonstrates how one might A/B test them. For -# simplicity, we only use a subset of shapes, and simply round trip -# results through pickle rather than actually using multiple environments -# and writing results to disk. +# 假设 add/sum 和 `bmm` 方法不是两个Python函数,而是 PyTorch 的两个不同版本。 +# 下面的示例演示了如何进行A/B测试。为了简单起见,我们只使用了一部分数据, +# 并简单地通过pickle来回传结果,而不是实际使用多个环境并将结果写入磁盘。 # import pickle ab_test_results = [] -for env in ('environment A: mul/sum', 'environment B: bmm'): +for env in ("environment A: mul/sum", "environment B: bmm"): for b, n in ((1, 1), (1024, 10000), (10000, 1)): x = torch.ones((b, n)) - dot_fn = (batched_dot_mul_sum if env == 'environment A: mul/sum' else batched_dot_bmm) + dot_fn = ( + batched_dot_mul_sum if env == "environment A: mul/sum" else batched_dot_bmm + ) m = benchmark.Timer( - stmt='batched_dot(x, x)', - globals={'x': x, 'batched_dot': dot_fn}, + stmt="batched_dot(x, x)", + globals={"x": x, "batched_dot": dot_fn}, num_threads=1, - label='Batched dot', - description=f'[{b}, {n}]', + label="Batched dot", + description=f"[{b}, {n}]", env=env, ).blocked_autorange(min_run_time=1) ab_test_results.append(pickle.dumps(m)) @@ -535,35 +507,38 @@ def batched_dot_bmm(a, b): # Times are in microseconds (us). # -# And just to show that we can round trip all of the results from earlier: +# 仅为展示可以将之前所有的结果通过 pickle 进行回传: round_tripped_results = pickle.loads(pickle.dumps(results)) -assert(str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results))) +assert str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results)) ###################################################################### -# 7. Generating inputs with `Fuzzed Parameters` +# 7. 使用 `Fuzzed Parameters` 生成输入 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# As we've seen in the previous section, there can be some stark -# performance differences depending on the input tensors. Hence, it -# is a good idea to run benchmarks on a number of different inputs. -# However, creating all these input tensors can be tedious which is -# where ``torch.utils.benchmark.Fuzzer`` and related classes come in. -# Let's take a look at how we can use the ``Fuzzer`` to create some test -# cases for the benchmark. +# 正如我们在上一节中看到的,根据输入张量的不同,性能差异可能会很大。 +# 因此,在多个不同的输入上运行基准测试是一个好主意。 +# 但是,创建所有这些输入张量可能会很麻烦,这就是 `torch.utils.benchmark.Fuzzer` +# 和相关类的用武之地。让我们看看如何使用 `Fuzzer` 来创建一些用于基准测试的测试用例。 # -from torch.utils.benchmark import Fuzzer, FuzzedParameter, FuzzedTensor, ParameterAlias +from torch.utils.benchmark import FuzzedParameter, FuzzedTensor, Fuzzer, ParameterAlias -# Generates random tensors with 128 to 10000000 elements and sizes k0 and k1 chosen from a -# ``loguniform`` distribution in [1, 10000], 40% of which will be discontiguous on average. +# 生成随机张量,元素数量在 128 到 10000000 之间,大小 k0 和 k1 从 [1, 10000] 的 `loguniform` 分布中选择, +# 其中平均 40% 将是不连续的。 example_fuzzer = Fuzzer( - parameters = [ - FuzzedParameter('k0', minval=1, maxval=10000, distribution='loguniform'), - FuzzedParameter('k1', minval=1, maxval=10000, distribution='loguniform'), + parameters=[ + FuzzedParameter("k0", minval=1, maxval=10000, distribution="loguniform"), + FuzzedParameter("k1", minval=1, maxval=10000, distribution="loguniform"), ], - tensors = [ - FuzzedTensor('x', size=('k0', 'k1'), min_elements=128, max_elements=10000000, probability_contiguous=0.6) + tensors=[ + FuzzedTensor( + "x", + size=("k0", "k1"), + min_elements=128, + max_elements=10000000, + probability_contiguous=0.6, + ) ], seed=0, ) @@ -571,23 +546,27 @@ def batched_dot_bmm(a, b): results = [] for tensors, tensor_params, params in example_fuzzer.take(10): # description is the column label - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() @@ -598,7 +577,7 @@ def batched_dot_bmm(a, b): # :caption: Output # # [--------------------- Batched dot ---------------------] -# | mul/sum | bmm +# | mul/sum | bmm # 1 threads: ---------------------------------------------- # 725 x 257 | 87 | 180 # 49 x 383 | 15 | 30 @@ -611,38 +590,40 @@ def batched_dot_bmm(a, b): # 78 x 5 (discontiguous) | 9 | 20 # 187 x 1 | 12 | 10 # -# Times are in microseconds (us). +# Times are in microseconds (us). # ###################################################################### -# There is a lot of flexibility for defining your own ``fuzzers`` which -# is great for creating a powerful set of inputs to benchmark. But to -# make things even simpler, PyTorch benchmark module comes with some -# built-in ``fuzzers`` for common benchmarking needs. Let's take a look at -# how we can use one of these built-in ``fuzzers``. +# 定义自己的 `fuzzers` 有很大的灵活性,这对于创建强大的输入集进行基准测试非常有用。 +# 但为了让事情变得更简单, PyTorch 基准测试模块为常见的基准测试需求提供了一些内置的 `fuzzers`。 +# 让我们看看如何使用其中一个内置的 `fuzzers` 。 # from torch.utils.benchmark.op_fuzzers import binary results = [] for tensors, tensor_params, params in binary.BinaryOpFuzzer(seed=0).take(10): - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() @@ -654,7 +635,7 @@ def batched_dot_bmm(a, b): # :caption: Output # # [----------------------- Batched dot ------------------------] -# | mul/sum | bmm +# | mul/sum | bmm # 1 threads: --------------------------------------------------- # 64 x 473 (discontiguous) | 10000 | 40000 # 16384 x 12642115 (discontiguous) | 31 | 78 @@ -666,33 +647,27 @@ def batched_dot_bmm(a, b): # 488 x 62374 | 90000 | 100000 # 240372 x 69 | 40000 | 16000 # 40156 x 32 (discontiguous) | 2670 | 5000 -# +# # Times are in microseconds (us). # ###################################################################### -# 8. Collecting instruction counts with ``Callgrind`` +# 8. 使用 `Callgrind` 收集指令计数 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# One of the challenges of optimizing code is the variation and opacity of -# wall time. There are many sources of non-determinism, from adaptive clock -# speeds to resource contention with other processes. Furthermore, end-to-end -# time gives no insight into where time is being spent, which is really what -# we're interested in when optimizing code. +# 优化代码的一个挑战是时间的变化和不透明性。有许多不确定性的来源, +# 从自适应时钟速度到与其他进程的资源争用。此外,端到端时间并不能揭示时间花费在哪里, +# 而这正是我们在优化代码时感兴趣的。 # -# A complementary approach is to also collect instruction counts. These counts -# are a proxy metric and do not capture all aspects of performance -# (e.g. memory or I/O bound tasks), however they do have several useful -# properties. Instruction counts are reproducible, insensitive to environmental -# variation, and offer fine grained insight into where a program is spending -# cycles. +# 一种补充方法是也收集指令计数。这些计数是一种代理指标,并不能捕获性能的所有方面 +# (例如内存或I/O绑定任务),但它们确实具有一些有用的特性。指令计数是可重复的, +# 不受环境变化的影响,并且可以提供对程序在哪里花费周期的细粒度洞察。 # -# To see the utility of instruction counts, let us look at how we might -# reduce the overhead of `batched_dot_mul_sum`. The obvious solution is to -# move it to C++, so we avoid going between Python and C++ multiple times. +# 为了看到指令计数的实用性,让我们看看如何减少 `batched_dot_mul_sum` 的开销。 +# 显而易见的解决方案是将其移至 C++ ,这样我们就可以避免在 Python 和 C++ 之间多次来回切换。 # -# Fortunately, the source is nearly identical. One question that we have to ask -# in C++ is whether we should take arguments by value or reference. +# 幸运的是,源代码几乎是相同的。在 C++ 中我们必须问的一个问题是, +# 我们是通过值还是引用来传递参数。 # batched_dot_src = """\ @@ -714,25 +689,26 @@ def batched_dot_bmm(a, b): """ -# PyTorch makes it easy to test our C++ implementations by providing a utility -# to JIT compile C++ source into Python extensions: +# PyTorch 提供一个实用程序来 JIT 编译 C++ 源代码为 Python 扩展, +# 使得测试我们的 C++ 实现变得很容易: import os + from torch.utils import cpp_extension + cpp_lib = cpp_extension.load_inline( - name='cpp_lib', + name="cpp_lib", cpp_sources=batched_dot_src, - extra_cflags=['-O3'], + extra_cflags=["-O3"], extra_include_paths=[ - # `load_inline` needs to know where to find ``pybind11`` headers. - os.path.join(os.getenv('CONDA_PREFIX'), 'include') + # `load_inline`需要知道`pybind11`头文件的位置。 + os.path.join(os.getenv("CONDA_PREFIX"), "include") ], - functions=['batched_dot_mul_sum_v0', 'batched_dot_mul_sum_v1'] + functions=["batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"], ) -# `load_inline` will create a shared object that is loaded into Python. When we collect -# instruction counts Timer will create a subprocess, so we need to re-import it. The -# import process is slightly more complicated for C extensions, but that's all we're -# doing here. +# `load_inline` 将创建一个共享对象,并加载到Python中。当我们收集指令计数时, +# Timer将创建一个子进程,因此我们需要重新导入它。对于C扩展,导入过程略有不同, +# 但这就是我们在这里所做的。 module_import_str = f"""\ # https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path import importlib.util @@ -741,32 +717,39 @@ def batched_dot_bmm(a, b): spec.loader.exec_module(cpp_lib)""" import textwrap + + def pretty_print(result): """Import machinery for ``cpp_lib.so`` can get repetitive to look at.""" - print(repr(result).replace(textwrap.indent(module_import_str, " "), " import cpp_lib")) + print( + repr(result).replace( + textwrap.indent(module_import_str, " "), " import cpp_lib" + ) + ) t_baseline = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='''\ + stmt="batched_dot_mul_sum(x, x)", + setup="""\ from __main__ import batched_dot_mul_sum -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) t0 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v0(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v0(x, x)", + setup=f"""\ {module_import_str} -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) t1 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v1(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v1(x, x)", + setup=f"""\ {module_import_str} -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) -# Moving to C++ did indeed reduce overhead, but it's hard to tell which -# calling convention is more efficient. v1 (call with references) seems to -# be a bit faster, but it's within measurement error. +# 转移到 C++ 确实减少了开销,但很难判断哪种调用约定更有效。v1(使用引用调用)似乎稍快一些,但在测量误差范围内。 pretty_print(t_baseline.blocked_autorange()) pretty_print(t0.blocked_autorange()) pretty_print(t1.blocked_autorange()) @@ -780,7 +763,7 @@ def pretty_print(result): # setup: # from __main__ import batched_dot_mul_sum # x = torch.randn(2, 2) -# +# # 6.92 us # 1 measurement, 100000 runs , 1 thread # @@ -788,7 +771,7 @@ def pretty_print(result): # setup: # import cpp_lib # x = torch.randn(2, 2) -# +# # 5.29 us # 1 measurement, 100000 runs , 1 thread # @@ -796,31 +779,26 @@ def pretty_print(result): # setup: # import cpp_lib # x = torch.randn(2, 2) -# +# # 5.22 us # 1 measurement, 100000 runs , 1 thread # -# Let's use ``Callgrind`` to determine which is better. +# 让我们使用 ``Callgrind`` 来确定哪种方式更好。 stats_v0 = t0.collect_callgrind() stats_v1 = t1.collect_callgrind() pretty_print(stats_v0) pretty_print(stats_v1) -# `.as_standardized` removes file names and some path prefixes, and makes -# it easier to read the function symbols. +# `.as_standardized` 移除了文件名和某些路径前缀,使函数符号更易读。 stats_v0 = stats_v0.as_standardized() stats_v1 = stats_v1.as_standardized() -# `.delta` diffs the instruction counts, and `.denoise` removes several -# functions in the Python interpreter that are known to have significant -# jitter. +# `.delta` 对指令计数进行差分, `.denoise` 则移除了 Python 解释器中已知存在显著抖动的几个函数。 delta = stats_v1.delta(stats_v0).denoise() -# `.transform` is a convenience API for transforming function names. It is -# useful for increasing cancelation when ``diff-ing`` instructions, as well as -# just generally improving readability. +# `.transform` 是一个转换函数名的便利 API。它在进行 ``diff-ing`` 时很有用,因为可以增加抵消,同时也能提高可读性。 replacements = ( ("???:void pybind11", "pybind11"), ("batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"), @@ -831,13 +809,12 @@ def pretty_print(result): for before, after in replacements: delta = delta.transform(lambda l: l.replace(before, after)) -# We can use print options to control how much of the function to display. +# 我们可以使用打印选项来控制显示函数的多少内容。 torch.set_printoptions(linewidth=160) -# Once parsed, the instruction counts make clear that passing `a` and `b` -# by reference is more efficient as it skips some ``c10::TensorImpl`` bookkeeping -# for the intermediate Tensors, and is also works better with ``pybind11``. This -# is consistent with our noisy wall time observations. +# 解析后,指令计数清楚地表明,通过引用传递 `a` 和 `b` 更有效, +# 因为它跳过了一些 `c10::TensorImpl` 中间张量的簿记操作,并且与 `pybind11` 也更兼容。 +# 这与我们有噪声时间观察结果一致。 print(delta) ###################################################################### @@ -879,10 +856,10 @@ def pretty_print(result): ###################################################################### -# Learn More +# 学习更多 # ---------- # -# Take a look at these other recipes to continue your learning: +# 查看其他教程继续学习: # # - `PyTorch Profiler `_ # diff --git a/recipes_source/recipes_index.rst b/recipes_source/recipes_index.rst index b19ac42..0e56f12 100644 --- a/recipes_source/recipes_index.rst +++ b/recipes_source/recipes_index.rst @@ -103,7 +103,7 @@ Recipes are bite-sized, actionable examples of how to use specific PyTorch featu .. customcarditem:: :header: PyTorch Benchmark - :card_description: Learn how to use PyTorch's benchmark module to measure and compare the performance of your code + :card_description: 学习如何使用 PyTorch Benchmark 模块来测量和比较代码性能 :image: ../_static/img/thumbnails/cropped/profiler.png :link: ../recipes/recipes/benchmark.html :tags: Basics From 4a74fe9d752b1d243ad38394701360f1b5555151 Mon Sep 17 00:00:00 2001 From: hippocookie Date: Tue, 2 Jul 2024 20:23:17 +0800 Subject: [PATCH 2/4] Rebuild docs --- docs/.buildinfo | 2 +- docs/.doctrees/environment.pickle | Bin 4210998 -> 4210980 bytes .../recipes/recipes/benchmark.doctree | Bin 106473 -> 105094 bytes docs/.doctrees/recipes/recipes/index.doctree | Bin 59585 -> 59769 bytes docs/.doctrees/recipes/recipes_index.doctree | Bin 97067 -> 97001 bytes .../benchmark.ipynb | 64 +- .../benchmark.py | 593 ++++++++-------- .../recipes/recipes/benchmark.rst.txt | 672 +++++++++--------- docs/_sources/recipes/recipes/index.rst.txt | 2 +- docs/_sources/recipes/recipes_index.rst.txt | 2 +- docs/recipes/recipes/benchmark.html | 666 +++++++++-------- docs/recipes/recipes/index.html | 2 +- docs/recipes/recipes_index.html | 2 +- docs/searchindex.js | 2 +- 14 files changed, 972 insertions(+), 1035 deletions(-) diff --git a/docs/.buildinfo b/docs/.buildinfo index 62cc9b6..67ddc47 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: ba51abc8dad17399953f2a24e939f1ec +config: 5827a299dc035063dcd82b826d40b4cc tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index c93c2401a4847003181aa886710e8f14f9f967bc..3a25512cf14ecbc2717e38745fbefbe33ae326de 100644 GIT binary patch literal 4210980 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%0AB^ zn4-2ovG9BvbufR6?;w+9JKLFQ^oHZKz@Z=n9NzA%VfGv+Y3Dkc4f)LCfj78}xz8NM zWzvAQMp)QEgCQ0c3Vfb|D-<|ql-02pX{1g1MQ&6_P#}1e1o^fN!p6ZSV=ca-QPbv{ z_$oCLnPISy4HoHfnRj7qd?Oc_ZC~h2V9Y=Q!hr7IY-no(S$vQ@m^n33RxRt(!lEX= zd#5&Caf=NEqI;YuTT1?wddM7KFe_GtA*jqA;ZkgwA{r=J@)(z^Y-6I3cde4Oal?D6 zJu@~XT*(n{3@(O7pEqSCz?SF!B_=CcJ5*K~t#p#r@9bI7HEI$J1<+n7x#O`)A@Qan zg7ZvMt-XVSg{W0=RgG<2gf086n!~QenqmcGC%U*xhAr#dtnZq7t`#c`J!ejB0@R|A zjuWI*5Sy}wsYbe2O`~VYTznx8o|HUdqtT(}>CQ(hjbxPx7p-Q?(MlCm%e^q>av5wB z<(!9}Pz*B6YsNkdXYHGWwLSgQ+^_QkY#b(Ao>ZLbKFf$k)Szzu70akBrY#F*jB8GIW>1#G(HnwU(YJrSp% z{b9_^*1mtebifA?czJbQwn>eE1%z5*1*Jq@T`fek9~3r0Ke;Ut#ECN$nv4PEQ{cW( zYJM&FS;#(YJCb0SK(L1 z*&;owM$IQGVPOIfh;(X%^x3hs3R)1+b{wB$(vpYK4<)Q?U6^x3HP%vSzL8-IMYUC` z-BrhyHkqlKn*<5AfhA``Qw!&lK||m?F9R&_ENgKdz@blADI{m6F?}S&c$z}w1bmN! zy1h)xgpKfQPDkMrQ2XXG&(Zo5WW15eCi#_)&(KVRyn~ z1xHLGV|-$kC1FfukXA56+u)`#HB*9Q&rWGfVRos@#2*~c^KEXN`5Fx|*{XMtohM8M zJ&rT=jfsdce>z^VRoHqgTG=2=&(f(%dj&#kJ)KKf!p!;0MlqueZcfRHZ4-KlX>(>D$>=W5$PU{!$1bm-Qk46 zyc<$1DdnU96r}$cB^PNd%CatQK++Q&H7wZn9veKd$5x66odSsQvx;ShV^z(DDa*!C zC}7)~ZDqc5Yu0cwmUkkWkNdZ=%82o8vHCEKXx4UR#9yV)9Qi2x>#YMP*2FZe!N4u*}M*hQ;3a1gWORrPcRtYD5JVIP*-Z2o}RkLi1mAlR1T96`{^=b|lJF5d*} z7qE2ywI`x%5*!y^IC~ULU4zA9Ix~>sth5m5L7Ms4u_8-*`kEaXeB6>zEV{H>w3Osw zBC1AlEq|$GKbETdpovVL%vSOzyoBT=p`VRrRn2-jkXBYHbn9Zs^w>F^zWPl&ih=)2VWg4yKrWd}rhxI2;MC4mgqEa!34a zZ5DGsp`|fXB8LGE&x9){1@fnxCyvR(1QBjKk@Ju-m>m$6J~;gkchruQn>x{&h#pKI zTbsx#z#1$+=d4;Ahp-SjeuXuhH|3B64mfx1cRuv{^Ot@%=IuCGreX&?;r*jZE$hD6 z+on?=ebW1sN-e+nbnkO2wer-o_XU+&^_>U2xhl2#>(_hNsMINQe(SB(si(i=eMO~C z{o*EXx8a1D4-nBaQwO@N1RBG$e zN#0L%>f68Y-k?$!zx!BkpGs}Ze8@Xhr~d0>-X~RR$CNjCOI7O9)4uJ!SEVkSo$z+4 z)a5Jk-XC--vCTVD(RcYRw|Hs&?%uNZ4V`-O7v9Hp>TeG5Zq%vo|I|yW)a#%Am3N6s zyIm}z6Qi*&2-kYvcy^A+^1)XXf=j~CcF@6Hy4AbPJAUH5Pp7_phWCm}d2c${`;|_8 z?_%#HmD+jQIB%g!WskhT8_=n5uJX34RQ}rgy^pC>;nKhJ5;|3Ti?>{-zVbuwGb&X) z>Z4x2PF;MJH&3VD`GWTWo%-5k-e#4$=7`(8f7hukdGA=Ay6*E{U8i39nYUG^{xHt# zQmN99yS+mc&&o6Y!MjPlE5HBi-is<#nX%7%Rj2YX@7F3-o%nHYj!xB{_3l%tfg@k` zzOGV(-8JvuRO;H-|AqHUo%-|zUQVa>|Im9#rLMboq4!0d`lmO0Q&sBvPn_l5rBlDT z#XD1_-ZVGoO;+^1dFoPcyiVOe$@{#@dE=KJ_THjWH$8rXw@IaLzU0f^y()F<3BT}; zP_^9peb;+Ly?e{4^S!^*sh_O!zN%8Ue_@IDH!8K~?0dYw*QxK%@@`kDJE~WEuT!Zz z*Dv$lu2S!R<4xX`Ds}h8f9c(-Qy-t|9i@=n)ANe=ta|r>i)ML$)Tv+n$~#1*K6uN| zy<=4B-s={5KU1mu{`RNdTUF{qcVFrqs!|`GyTV(iQ~xxXVmW={=}Z-+sS$zDj-S@+saVo%-r0 zytqnzy6}DPDxLcMo4qfo)RW~+-ZVwgQ(wH&J4d~H`mfLR{!68v>HCWJ8q*{5mHL|> zb$hE->MP&*pjTC?zrF7iZ?;N(ZPBN_OLgi~)4eBj>Z@PzeyUR6c>h0olU3^P;uY^~ zox1Z$@3$)T_g{Cs8LAz=HRUL8yn6S_g1GlxmD+p2V()u8_2Mz!87j5^yC22?CGE2x zzU+Ays?>jc^9t`hD)po40`E}uy&t{v884&W{dnAs-UB-I#CC70%K4Kszu_IN-u-m) z9`Ca{_3QU}-&Coe?Rc-ZTcr&Q|q?l-*?RO%16ebU>jQ~!Fk_n#{D$J4&$y`WP+__Fu3O8xhadEV(d^^Jn} zW0m@!%d1{VrY<;O_if(0RqDX;+r3E=^#uoRU+F!n-@UNeo3By_P22Ac>QueQ`zw_? z_^7MAEjo42iQWfQ>X7jpy~}lK@q^xf>(q@0dE?aA51+QjYp8eQ7Qey!AD#NzZQgk* zHU7qzy@yq5!h*ZKZ|T(Ac6jg5sh>aYeORTAcyPS;bDjEOzjuL3P2ByE_YW#{m#3@9;jVQqz`g@E+HxzrMly3zeFF z<2SwUsML(NUgI6EQ$M`SJ4>Zz?wsZA)T!^~y}U}zO5N&}b?Q5x^4_RYM}1<@TcT34 zPr1iCMWyCUTJGJVQb+&clir6^>XeQES@+PS7 zEjxX+_Y3uI*$2Mn4XMZd1r?^LN(7jN=T)2Ur+yfr%Y?z_Ez z(y6Cz^WLUXtLMeNSvqyotKR!n>Xb8Y@TRELn%TYHbvpI+&wE9cIt|wSyL75=zvt@I z?SHJ+aQZ#1fnb4(ju1(&s~sVNP1#1OcflP(%f|4Bz~O!{xr^S_xUI3R(Z%N1wC{2z z?d?E(9xbKl3zZsmHsz)adf^c>cXG$TJKo=uDGufl{oJB-?I^WSViuw}E9*)Tb}S?g zJ{6YXb72|2ATpdF8ANxWU{SAIt~+CsHm-GouZNaK zS}>x{ybMH&4!Nh*1sQk&M-kk=<`=lnm4_U0-wr>>h=1l7#aFAA_N`H8&W$$w)cbnG z;l{N8Tmv0Ge*6r)?`&%hYhPFEM?X}IYPq6PK zv#qdG9BZUlfQB=guWumwibFo8Ip2yEC-27p`P*fZm$A_G>o5)9J&dYY+ngFE2%i)g zR>_)WgY$)$z(6#tmt*K)3aWO|aLS3$G8WH9@%(f|f!w@9XC^TTSu>m(*KNkRSDO$F zR%U0r*UlSG;XpVP_|9-dr%cpO$Fs5;TS@i>kwG(#j#h&-@wCo-+SFfqI>Ctz#&Yzk zt?sly(9I4FiDHMl1*wRQ}QoQX*eyKz`SHMYWs$7dUsWaC-5q+Gb0f+K5g>th- zU10WoUlw*_Xp9b?_T4mpTbwPRAz(A`(Z5qvtnB@CNt&k4JAsw7*_%>geb)3;z9Tr>6^6NV*AG8(A ztfoVT1c<^2Y6%EVHEU_1PL0^}wvEq%Qq1}~q)pA=bkv7YOP#H6lC90`NesO&u| z##Y)uA`_{GLXsO8tq9a1CRWX?uiY$qK$QA*Y_F(4u%Adu^lpi^xf!~zwbG0MP0jj! z6f%68G3X;wbG&&J_@;OD3r+;}CdoEq40fteZCt{(+#zD<`tZNvEOL*>sVIrbl| z+A^SnjDA}NeMBN#7M)*p7DPbZ_*m2C!k&5+^36vGV-#d(QOTh|1*6IKHb$@(8PV2y zNAB>|LY+lA5M&)?&37O)9|R;J={>0}@)4q=O!`Glob(8Nv(Dl$2&f(k-{&eWqOD;8`CS_>EbR-l>Ssd1Pb#Oxd>-U0M+Z6TFNu}X~s zazl|bd1w+o*|$~ajB#wu+1S7m6L^ld`ZzydD~6jP;eFzi&JWBW&$1Jl76oP6wq;9q zZ-yTdj`+evR_KnPytIE1hb3l;JkN1KdEmOqui)=(PnbZBlfn2~yj}y9nD%(atAqFrZLo!CUnmez>CC*&$=384I-}GVSBbBdAnWjRZ0U(-GvkCS)FX zEzU_Rz>`PoGkSatip%zOi{XPYrm2BnU_GikdJnI&D8a~${mN({`PFDta?)s2vQSiF zX(D|9i`d%NEWIOWWy|N{`v8-*I*Y)h7P1tl&Wv5bqkzQHe^%uJ#dg7yl~PM#-)BcB zda>?naZ;!#I&*}dPbze}wbCUs$?chP(=+dYtA~w3Cod9rVG!pByywI{6or&xd5ELvZC5n2?=vo-lBCaE#|Z~YA^mH#eq zX^%mRGORUOchR%{wpqnE6oJEaw(}vP%~sQg8kF2a1qVGU%$2-A`_u*Ro zc~S6RTPd`Sk^&Uv31He-6UWQYK|8WtBIt>lws1Q8B-6;R3cQ%0(`dxo82g==I_JmaA`Hit&-yRbaqd7v1qO_KtYBqmRI-gBplf2Lhwxd!E?R}$wRv+Em z{M~>?mtgh4(@7zQ_3P2G*4ds!rY%iZ7Y;j#W$11=b~;_TnuDuuuyeVwrtef2P86-; z%zJhnnmmPtS9fCbXT>o$bh2AEgToAYHf!*p8tJ^fEY4Yj<3V^{Ey<@W?D%nUUq&`j z#ZgPVE-U1bGUC2HoPJN|sqx(6o0cPl@+pq+dMw8?y{D^!3UpUUFAnzGnJVnc$5XQI70raHw$&VtBM>%;a|N||^2_KQ&UPsiO-Woej^j-X&r>tD6ppuHrzEI6b+%nN zqNP;x)R5J5yj=^!f7oYdS_9fcf_d7UX#VQ3>yK={ZEeYc;bW0z-WQ__NuBNSj@rC> zKGOcmD>(w`IFgY3Z1A~j7-af}et9wvVvYtYZKICrY)d<_Lc^1#rA=lWW-V#)eNlwQ zm~l?NJhI+!R5cy2A`1n9VT__p_=I0iyJQi0E>Xu~90jpn7xaBzN-iA`KuC4ap3E9- z=m(H&^!VDTs&lokMzX;ydtQfSxj_Z(X&(gdU3w(ToH zoRK&;%Pie$xYH35A+_q0^;+QTlt}R%eTb?7v(CE~d*d+1In^*7=6v z0r9oCthIxVtypXaUDVkL8AOvGtFOUdD<$M-uOA9iL7PTdSL=~QaW+u0BqJ14oBY~- zmCpM!JNwa)P!f_lJBNf?K)YA%uluyXYob^6vB_a*q?)A@REQ3JkfkcAdi|(ESN#FI zn)um%TD^ocQJtOeLTHa}+SO*oGWY;EZgqkC@vxY^fx)9GmsKqy!OFD!TQg58f9hO@t$aS3o?8{WJ zLR60XYUONP-dQa;4YiQZa?e1W9sfh3qWBvNJa(DMwvOTn&hy%+`#L+Mh%oDbTEau- zg#X5ajyt7Z_-a#GD+)Uo#yUGxiO}n98uYYCF7h)PX>+BdTYCpXUPZc(|l+@9q zMV3BdHSlYsc3OzD-zd%7t zD3XG=3kvkX(#9#YQdo}CGOCZLeJ!Y|vqRcQM)YkQ>`dBDt}uKp0M^bn9c=u#Tv~%f z3@{86T$qj}IeN-(&B5WM7$|W$Wqg<08?RH}ZR!Z%o($PKaWk=+TLBR@=W2OBV z>g@PC;-nn>YYY~G1mv|_1zniT#q4A9tBXsGs809(= zH|+t`toC&;CLDT}+b*YQNNas2m=^|{TQ`ejv%D;eak|dV!6XsTmvqQO_Foe@_BEX5 zi0a3B;8M`!z<0RJUcmO3#7p8V)fQaDP;EXauRW>8l2b5T)qH51 zIy(WF4X?@&VevPts2I>_#}W?9^R@e*npmT$DAuekq(C_fl50BSnCR866TUk-=w1(| zc(hxjO~zK*;k9r6Iy<*HfI@j4V~MWDWFdS~#Q)Uo=&Rq~E`~3GaXA1ilh%J0y;v(Z z@KJL@fr1Iy<_XgvD3M2qo87Pe5C@1astA;!Ljq zV+A%DcOJzyZePEZ9dJPR>hXgDTjuR6szjDuNOA)xk1U0heYD(5=R7xw0Hj7YfEv0Zi+i0uO|~PP(&lV`y6Ob`t6$=&}#7hh>H zoFW_9jbiMqLpUOF9w%Lnq|8hqXZDTfp{3Yxze-R|OTb#ZRavpCJ?LvoJ1-GvI==R7 zt+Q(_MsqA~rN*1uFXU2F+0A^C7ohQ)+BmFc*2WKxvSfFHvju1B?Dmk+Y=TH&CXFS| z#K#httHu(TF9|R$%{02njqXrS@(p7(E8yI;cFH)rp6*T@;5LS}o?_;M^^nFnzx*f< z(`RjFDnk!LY4Th?IehK)TWhj=ONB%#nV`dX>2Q*^d^AaK$sdE+b#|2xb?K9=5h3s{ z%u%%ttg|sng=`j4Kh(HYoKu|_q_)sQ9U0nP9nd4Eoac;kf0~=2T%(Av=t$h|>sAk-r?z?CXf5%>LDu955=-8%i2cBDs?puFY1L4_H7C zu|0{MR1S%&v-@UAo^5-bdJ5Z1e=Tz$m!$>c12RGm+19V`Yt$E%0noJN%Ll>Fi#oeE zm#Fe(9wFXVV4CQlwoD*0$BomGzapwje9}J39nQ9?OD=9%Lp+k3qfxh5EChQE z1A3f2jqukayIf6By~I-8cK&PBMlY!*?Fn_u+$8muVPof1CrG3+3FwpDYcojsS}=fn zv(3>siPKbYw4KZ5XNY$f9J3DG!Oe)$I%VgBa~sX~snHe|8Am6hdigEEY)nKQzVS*Bu?m*0~Y%L$OfR1H{8nk68YvM~q z6E`&lZWzws6fV{jJU&xT8O5Bg=}YZOkeav73NKgkG5o(ffk@idMiW{Jn?ApByOhEX z*jo3V5Pb4w9$|m>)f3Q`E##o?{ZxQi*c7)TcY9E~VPE+`#@)4?vv)9(R zv$$bBDO5$ve01`e!OKOh>MP*1vjhUx8RIz%?HH8y+>!mNRrSVty77gUEz4su<5=Py zaN}h+i(7QDp21BxaXO#kYu%eH`f#%}nVjm&l;E&c zg=$?*^q6^zCEnEHSig2zxrc8cb1f&jT~=rmx_((+)#79N2s>{xpG`uzUBRKX;sC#FRCH?+e0p@k44S@l&leNRksIQtc#jkG7|n?dZX>ajux5(@~oYJYUO>P{JYrui4(}7I>NU zG=3~e&36SDd+yEQi%r|FHMi}B*I+1tMuERS*S+tJC1#%?nQe7Z+8Ks0hyk}dQ*?LB zDbnk>GP5H3887@ZcXj7^R}2Hg3Sl#Lf_KF!!@#hr^SsMX<#|U-9dtyC7~DI` zdosso9n;*RO@~9aXr@l8UD-J|R|sx)QtfbrYIVRyqZUk9F$}oNm$hhozgDPq(pbwy z!*)XcFl1o)^3KU$F8WC)5QfvGmJI{KaO6<5Rwr;z?Hs~N(Xg!s=Z+dv^t?{;t`wTA z6Eb+Ub?;3=v0EW0!9v}=BDO+M)M0MH*3NQ6zSvBs!`z~IJIpP(I9mGET4ip@EkS-~ znMF_REVJk{9TGphW)M2LGa!Pmon;nkxkJ>$6Sd(9k6?C(NCfWAh!g`#XH~BdKzwo; zp!z$jaryARFWRrex`o(v#t0!tt(0G9m55&6S!ON+b?-u<)9jES)=dX8<*~YK;q#0P zsM%tyGQclAS|-}7qr9Tq+bf@eTws&C_l%|a#-XDe$=gW>Yayw1FEh%VSpYXvrBK1; z95Dn`W2Lv4W`|qFinA)Unj|M+?p@*X*QgU#_Vp zumH+~rTA@JiGu2`GAf{FIAzcW-#z(&0}r78Ms3xgg-HAB_m4Mq@3Uh`D84zC!0aAN zV4fRGV6K*6wCLv&W!%}$UEVmyk0M*J{D7sg6GQTd1tOm=dF@@Kb?*j2*V2}l2NL-t z!X(OWjxfB zf&sdU3pg`L+)0-)kK-eSX5Ar1D?W)5PP=FK4RF`SEYo|A<9Kl48-HO%i^!7YO0~Cz zXK;kPXk`u<1}W~u4I;0Vr2Cm!_bwYtEqK6KGA3U?mN@gHu>|I+u>|G>0cLK~l6p}@ zvG--sZ@nUpOYkX|QSO+&`h)u0-m%2H|CC^~#^nCdWGREKI(;SAy_Uu0jACq5E49`E z_e>)+5T_iLUXXN+g<*jiurIQNfudyx)~^TNOq5&@l>nJ6;xB#FA;8K$NBPfX0Z{>**M=?5y+0k`xS% zB`|*_z?@?m_eSt)%=nGaV>h|8SU?alZYju9{49J1eTWQ$zktqP@(o%48wSOeQD$$H z@ww$Wo+)=AgYfN~TjnA4b?<|t4BOWhe&eh4%<=NE1m?fT5}0vgNrgAY5@-HrEP*+1 zEP;7=EP?sfSOW8ou>|JBqYTChWXe?ZEeNrJN)^|FVmHeu9DipA)dhS8XMXi%#8wh3 zQX(KP4xDgd0rFiNb?@h+%#lcA(gkA)%s-4W7)P44^6$Dtu~N;&x9K@?6g%VuS*`qQ zS1--vnPPA|PG*yTaY}?aJ@=tC-t)S~hAH@M(MoeA9rAB4c9W)Ye$~#gv<7snL?{1h zlx+3K6Vxo0@8w@QW2>L$Z7H`eQO#EHm#j-RU+b2c0{cR0d_PX0zwW|oGvBEW^z%KNCXE2}0VP(gR?HDUF z_PX~`LF0MNu!CEGw<)tSYUV%)-8rXoNG>3p)dW zO?>d6aEdVOW9coG!AS&_Owl6g^v-H4?}E3Kha_0V*LGH%2Kf@?B$M39Z4i?&XLVKw ze4{k)$F4jk?q&^VbXJ2k0-5E{@2q^wer49Rv9r3cGp}68lLk#-e;!VKODE8U&5Al~ z8Q67HOMf+!!frV&tJ^xmA?}aML5FAPSSGgjvrH$16<{wC!_7)B8&;*b=u%ydmk{oo ztm)A);GWxA%`Ju!6Jv+{-P}^TD^p3w)s@hihZ{Nrg%ir)pn?w*?MT5o8JzWDHRU;- z)w3&|z}akN<`$FPRfF;Aj{xt=shxdDjq)bn)^%1^-gZd$tOaz%^_|rcG|re{MlNVV zfN>}Vgt*Ve@#S!O8G`0@1`wyr<=AYA8kTQ}u9oSyIEu|Jm9aKg$iXZ~W%}56aMmcD zHfesWg#lgn9v6etqGmJ!?3LrMPXI67G^HOe;KDQNZCyTV!s z8`v2%pHbFn;jz@}`B855PB_X&5sWV82*x-XMFn=!8i5~{GEo+sI7P~({41KZjRh%H z>R1>GR!P|MZwK(1c7LOw->2QpsnJ-X)aQY+fHInv2%3BvqLpzh>GLV6mIcU;7z^!g zo%6=b!F(c4`6Sai zK7qG#j3s6LAwkn-$$$BGpPAUi_CJBt3^Dru2_BhVyO`tgEaK3mT}5gjvp=#uoy zzX4b!eV-Qe`LtEwgkARH(b85vq`_Y$jSxXF>fSg(%8DDKWJWh%IoR2&NTS|7^Pi2x|){u_Ri5IhMdYGnT;oa4dnDFqU-VFUAsQh6I>X%cW#Y z_~E=G<7SkSxbixTy&SJC3|84wA1GEtr-l%;jBOfoi@iF@SA zUA7#H5pdRzp{*$s|34>sD!VH;C+@L{UIC$JhVsV*Rc^w`QuDI>T-q!(OO+?*CE3sNueV_T!ko55+`Quppszphljj^Z;vynR+ZlSbIw5F-qxu#^-tYY_h%^=j?N5<*^Z z=zAi&D=}DZ;Ho5cyae+SdIthWy*3W_7UEc;NG+#hnNVkO}J@FEXymHoEvVN^|E*<_?CdgX{ zSu-%`Yqy?nqwcH-r(jz|3O>~V1w$Wrm;rs|nMa52{LuavUvwDw?d*^TXYa!w9=i9f zO%!xggi~;JL<&9^PQmf(s^v-{$B01q2XBlGyJ`6p=YuxMdRS(TIv)}B7dk-AB?nfu zB`(2|etbw~j{5qDsON^G-m!zO;3kpBk9?WmujTOQ42MM_I_q(-4%dGvXFXK8vlaKz zX0vYAp~l&Y?Eti=NL3{DuU(4hg& zMdFSnq10@uJ1@p5d0#|I)`nBErmGjD@giqE-%H_KY@Czn6!K_JXVdl_o1M#Wjh?d! zn{KL!e%IMdfu=TXQ7YopJ{XbOuY^*m%P% z%W3*dM4G0<`U$ZHHky4=^;`-mcP`1h18&|qKVPg?%8phq7a&|51_MUh-4$nZB9A65 z*{wNRm2xh8E+QBHHoRqz+rlfMI%wk`MmbK)zeJ?v2jR4=+=_lv%~o?iec|p`UVM39<6&-Lz)Ics z!h43^^8S5qe|+fvTZZ0QLohHOQfG1FS?N zqfJoToE-0o5%Inu9PcX8LfhE_s%@mOHrhZ#7&A+ZshLg52_#BAvC7lv+sZfMUF4s%`%J^PfpMLfJckF%l6MNtG*wFp=4!!VP6S{y599<(Kx+BA9Rg=w+zk1JGY-ql>9M}C3 zaiu%v+P*uU9eU}eHe9nZaCA>ZME8whqT72{edwRT*~-z03>@7{5z&1-9Nh%| zap(NlMK&t)1xNFhh-hvMM>BbCHI*qiuipN)S8u<4?}whYA^F~NT;Gj|D;bV!;{Mw| zK6K~9LoYoxw5Lhz?N=Pp{)mV!2}d+-@4dGUJ^$Rk2kzbX{9XHAe8;}$KVUN}C<90L z>xk$M4%ZaNa190>@yauA7ut-u*oWT#unn_qPLB7GBcsiBo)72d6gJX1)WVAvV;>nsgbl-FPK78Z8`ySZ;c(deLuQ(znBBGna5lwsLh4&5B-XqNL zyKYAF+T04tz|r+YMEA9DbQ6bO{=};{-ZymH1FycfN!09D9MS0!5xqGa(acv~{@~D~ z?}L|zuQCNKEVanPFZG3r?nE1*1v8?YZqTW zpMzCgEaqojIL0d_gmGgD9VULI;Ml~p$;ZLo%)s&hgTvt)gzG4)LJ~wY!PQq+XtBO0 zAr`x@zPe$p3Fi`sFTGkT_4 zjYv3b(wphaG%qx?$ip$-KT^U)EXDM2j7MK2oGxqZbxhxiWxI?V?Gq8v7Q)eXuXo*| zo~km}mzbKaan?GkmpPj=c?6|6=Rh2Mc}S#4GtqV*+j1`fgR-M*nb@ndrvs_m6u_UBl-D-V~!R&%5J5+l&OJD zg+vM`EU^W+Rs;2jYT)!8GAWvsKP!AzGI9O7bJuQh_P+c5`yOtJ?6F^QMAIT7>Tbtz zG43wfNGEl6R|>SolCM}XBx#7|hsIy;Zv3;wyNCVDhI0;Y5zE~1vXIL><`;!K3& zoN#)+;IM%CGcB&l@$Hd_5SE8SI8Mz{gjLN*5)P}M^6a<)Ai5%XulF?T7<>%|$| zEbd2wb~aY?%yZB*hIU?zQ}U&Vl=O#FvOrNnL4Tz}*4c;~5uGK@Wp1WFU2(P}^urhV z(P<%0#kV3-F)y5oFfsl?L}L_tZVpF#ghHFQ z4cnUahU59~hNXdHGH`V3BBDDad@_FAMmS#iv2{F@2_Yxsa%N%lO`0PlFUNdw zM9epZbMz!;i*2TJ*|GB@krl245{8!^+yBHZ&c;n^FI{Uhxx+G?hIm98UJR#UoZMn& z!_<#Cl3YY2uZANDQ!>{@gz)PQAYiO2B4!yAA)6f&j2E0Cdm^Hl6OLvYldNu<#&6h- z3oCphXix@@?mZFF-4~8dd3h~Ote$clAB~9P>)|+#7b=)-QQ251;T8+7K(I{!{zwLdL8y)D7RF3nl{YDBue7*5x$W^#fY>#Z_zl)s6Ha%wor+1nC>aP4B_<^HE` z8)D%q7^xA%Vzaq*HjebrDbbAXyE;HB6&qIx@JqkGP~B1OZ5okkAQ8)YQZ`uFQM{KO&**Wr9MC9YckpAixL=fkB!&Q_g$kKG6nwz=H=lB2pXBC5B9qdG=NgJdO-n+yuV zYMYbeeSJi{o5Jx*FNwn^mgf|(1IgLjczkc|CYz(}GIF&25z*coj&_!0t8`%onKP|2 zag^1FD31v5SIsTU7s)!20V^lRdrL&TkA!pexC`@zU0FAUd~x%` zD#_^?ib&7f+tJg-<5DNHbw6B`C$6Gvicg&&!c+74rnpod5!2JOa3EI+m-zeYiS zM9eQ)bv$%ssxx%k)33bvuD$Pj{FUc#eC63aXW4xq;63LiuVmz5HCMLdCdYO>woOCI z9UONf4u67c6ldNbbeOi{+CalHbJSC(Mw@Hh8jku9KQ{h|BbXZz0Ua(Eva#a`woy6A zT(aJ9JlzrT&=Gebc(AFxg5xS^;HDv(Z=+@>`jna$U)tv6cu$Ln_mAOtXGn45W?Yaf zDmV*Acz#5LhlC@XE)lLv<46+>2CiGNyF*|Oj_Kw3cl7?J@7wpm8~1(mxmR9# zD-U6keb|QCE+a?lMnwCwaI|x_Ck9A3=`1Y@MWx?CYejAHajfNtSl=3s^@1I%y0MQ; z7zE5wy}g>lMe~_!nIXRv113A501=;Z6F^eDA^KQ&Ew}mYmKe>7IX7;K$c;n8xiNKz zi?s}#|Dqx+ZK49+b8L4-#I`OR+bm`TvooLezUOwVlR}T|`{eUBz*dG?rKdg$QZFq>-cBlqur`R#i@_y8SLBh7&z2|uP?PLB8I5%C@w&i}Kd4~LJeBsu)} zE4Bk+V>O!{WN~pgZQ0%#=5%e`?hD(FTpOqReFamtU0 zNO>ika_784VP~12X(fwXmuTv5RP~KE6>0E)q9>Adf~>Qhu*sH?ptA{?7Q`;{f|Go|KS_?NJ+s` zkG^-`BMVFBR`gI%m5mAVx9w=mSEIn2%X#hWmjsSMHAWBCZk}S3s$~bYG+!5Ep=}bhV z^TBXBPg-B7_CkHqL6^AgRg4r(L^ata9hTuV6e7}aemD(_)Uf{VH+}%8t!BHi$2gn% z_ZvSb&$DL3ANFC{tuu^roR%9R(lRNW79J5t7a%BO#ReUefunnCM0D|RbUlG~g=yqk zd*5v2!!69IdVfT!t_r7Wu}MJCvF75uUYvw#Q#71{oSKIsQuC#7YP#j7XOpV6#bOo< z8>Gg{a=DDn!EJ(uS(elEWJH>#h0i+{Z*!B?65Y<>tiO268r3x%T%9VO7ZHw_%rtM& z7*0V>&F3Rhb53{*oe**yJDo~vw@XJQIR0-$#Q$I6_@^*8r2|XT&Gq8Ak*3pR{jWK) z??*)Tn{Z?ka7Ty3y+}3#%@-Wak0YY_T{xPVmn8;PT6MOC%Ad(Z?1OD;cIVoGzRilxW%$GR(4^rt#CG z%?ta&X*yZ-uXAv;Cv&UgWEyS8#S9a!k8Z@Kvu8Ipt?P}f3Qpls5h*-3oWfK66mHK@ ze7&;{vG!Zt5+Wn8fQ=RWt))U=24^t{4?q){5$fTzo)nSRgTi(H((`fVd=hSLMw`66 zA?5Z~`}^hkNs&?M(?r87$|+hIk)k8QTW{k9iDaQSgA?+XI_J6NGXIqxC@ysd()fqw z83?X$*Eq>Su2^9A67`9Fs7^)tIhu^}(W;blVQoY%%nawkLLQ3t$}=~<^32Cy{n#U~ z-d-De;DNo*JhOMtU6^P)xKvbX7!}R)o_Ow#i^;L*qohgHu{EFlrwdAM2Z%NQ#4E7UV;mD$dbL#Es?y~^4%&ENBNeBDDMtO z>GS$_JL<{=mx8uSaJZH-Mcg&RX4UxtcuJZNd>d&coXSQ-D(?xWa^rc}8jpw`a+*3h z-dAz22kZeFQYc=8?Ox7Yi;)voKo!x0k(-{=0K^<6MI7*Mx7}z}%DHfVL@s2*xiE*i z6E13$%lPFM3)*e+ajZ{7#QNoMtTSNMbeGvC!fv`yFoQ1C#Q)$d9N|k55nddQa25BO zL1xJ6f>tWyBEdqnC@+zbmou#^7LB`rY!Mn^9h}CmM5OWLa2ls<#rav(MdY%j4d4Ho zBl~VdWcP<7J4+11;%+l6h42+2bYQhzjpBuI1r9FC!qZFn_UvFnBG<<0-XD?fPlVIG zg067fmM9l{-4fz)w`QD^omZZ@Qyil8*u8t-`xFjwMSO+RwQ`x$S1iwKn#GNz0#4np zBT~0AoVqTt*@gM4U=h+py7nFs+tsyo>qUzKPrvKD7^mcr8PO)CwQx%2*wEp|3WnY$ zAICZ^BG#kAv7U84%_Zp+E$ZrgzD(CZ3AIKK`8{)M%Y*qOHhbm^)iQJ%oN>&x)YO~-1R+p%oAM^GE5yC)*utHbFI_sq8;bGU^$ zRi{U!sv1t!8@SKPv4r_NoQ2eFI!KJT0b$Xycml+O;51eUJoz4+wKy>wodIirT?h+V z+oVDNlpo^Ux*#IAW`}d@vW}K{pSx>l&wCO3GsJ%IYZ?$Uw)fKy@4fY|p*!zE1RNZl zeDK-#^7H#2e}}CL{$yX_e7Za$pDqpO(+S&gqi64$I!fva!IXT`+M7%!@$2(6(nV~OoPv&KG>nRWCVVg;9)E(sK z*l&)AeR4QRF6p0+2J(J*#YMz zj+e`?aCo5Z{udwNGGw$y4Pm2IO?c zl0ozF$w$Hkk2?;;TkBJD$JpmaN_6lU${gs(H+zi_myqK)Q7+%|wS^8!L`Z1xoG>IW zXYRL0$^vm#@^`~A&$KWHV{MU#V|*nd#_xq=oZT#%d;;etExD<+&c>1cA|lc=!jYa1 zAI(m-y;~{^K*x4JT1dmafodVGuT;o6eVG#6&PAM~nauc4vx-&~r}%)G(PpA=3a5BO z6pEcL_zWw~iY60ylm=uu*7l!lTL?(~I1%!3^{h$2s-jCe4_sO^NbMJy8+B+-4 zDL6JF1@8%`U~yNmRHzgxgGEFyB_a)(@D@4UY>|zZ!}*&irrElcv$X)VfeC}S zdwVdS$RWl;xGGtIg{>E(RmCaZ7?I)!!YMwjQ;GwwbhZhOR1>FnM?`w3hD+)4*7TZf z$jWJ1MWst1E=pz5$XG8IDNKpw-xQ2zqfgZ?Zeha0+s2?v6;!bK%s?H>trfoeu6~ zVAqwjiuCBD07w6DMD$mOqu*ho-_X}bfwQwjgkc7N>*u>2*|sDK-bW zwaLe^&W?!nfbib=I@8XQ^R^XO2xbQ;*^?gA=CY+`#IFyQ9ff616f;^~n*b{!uv9XZc#xq?8)~m!Gm)hBqNPj-UE04Nkk2BiF|1 zJ|`mGPqm|4_|+$i;6U0)Ny-8EK0N=l|Yt+Pk*z%oK}6D*~c%B@sK&fXAqu zpT}jViL5x1$!@>Si*ZWc9Fda$45#Ec9?`wA5a{}SoyITej533}n=Zg{PDTULs zQJkQ>1-@?d5ZMciUCFQ>uuld%3Cd~#0KKLcJNPP2Hq%?eQFF}}@Mu-ax$yT9x$y3A zE_A6~d-)V?n}y0lC~}!RUs7V3PHbA|=)4%G!V%7ii14q%5iSpO9+{EHID|F1vslPrCt26} zb9sL# zx;o`*ksKg48N)5isahA2s>{Qv>Tns|x+JZ`GMt8sBhv8S;WSLAJ&0mPR2Kd+oBe?~ zIKFs9eB;8$%ZQ%5u(x|`kaRdaf=yhKISdAqOfU|B1J7i5 z&N)5j9N-k3!*hPN|5aTx+uPGKyIp;|`}61T&&Q``XQsNUzSZ5;sS4(I$^7mln%G5U z+zO+h$I2Rt=mY}!{ENOYgn|!?$f=?=g(As+^$_JhtFip2`~FaMpAcdb;I1uRi8Y?u z+7cltZylnP4>gwZct3qeFmJEDA`-d&Zt?+f|G*Hr|7K(E=lZwf3oh)6QNR{#S;0Ju z1W=98>=TmUBSVznrp6Lr=MASWw}d3XZS^Sb8^2DRe{6`H-`kk;9s1EV2tP*$)_lJi zW)SOhxEP67>Ifc;@!>BZ!CqjxCzsFW_w+jp)^Fdw(9t&5T2u$==qp3i(eE1T=s1cN z-|ysi2i<+p&>|a`!TZGf4~NM6*^POhtn7M38Dr!d#NRK5$ltdc^OvBOgJX|aXiP!p z3`^WWc*;~?sobkJeWNdk|Gy5A|EZ0AqZu;j)W*zySV@IGfbwgpT-SMzcpZ84(B_Tb zYOL#tfdjV^(j)ai{)5n@G2%J#Hg$-+d5w9Sjsa*yM5JzacM4K^JKbVNrD`$uE#fmV zL_VFyd{)!^4PJG};L}eXeBiEwPv1Z{2~}3>y-3_H8zQ%FYs~GGs566t&s&BKJ7O6A z@67`Xyg9h57X2={7L-#Mj0l^7UwAzN%Sk2Cup2(6i6dtv40w z=vRot*AJ1ykJaPQ-|?NYJ<~_ww1Z46u(B6oG4d5+F(X)v+WXDr7DM+8YlGU}Z}o{% zO|bWSk*(0td%r$|V()j7Bd)SQOuXs>lEOkI>V;Z4?e})STMr7_+no>?F?m(tHC6pF zadwTZzWklnk&QV!ZmXLr=EV#>)s-(}{-YF}%E5h0pJ!E#2JaK^w+)f^GaK{1Fwp9Y zPdt3+@rMpQ^4#G4SHAfCor4eGh8aJoT}EWmV0=fiJUB#IE^I8zys9iJ|A#NR{oueu zc#G%m2M%8LqzZ=VM_`bEiNNrPnk>JVjoLp>RTp+GK9iN$r%z*S?K68Q?T_#?q$Glzl$ zwn9e_1wMmfC^$+iVX4CTztxpy@~&NYA8Th3CbRC&?o7HA9^S@>o-1_(gWO+RC)qS{ z!lEP&*}{5!R~j~WU~gGrqZ0R0t?c%L-J*KNMuT0#KWK(4i?q2$p#sEWqTkq5mW{q3 z{wK{C+H~k;jrpIrJp(6e2cLic;Y;oweA@$uZ+%GRHsU$)<_wXy%Nz4{bnObBzp@^2 zB`f|l;&ky4IlZSbr!Nn>Rf=`>;uF^m-dLf&6XKu_-f$Us%y31Oe(^)AT>kLjjgJmq z6VmsPD3QFc7^1v$8p|8FOAw~)VF<1mbRkYP8LVnVjbA6u&mJP@A8E|_h^XwQ!H>kn zc|+u4RAVm21@=OTE>&%X9}-u)hsf2)#>+S-_?w@&uo>))is6Osctx(_8h%4El!hq7 z?8cg%7i{3j0ls#FDmX}{YTWcAlH#%RUer}Qvmq@35nbyRo1vtm8ug6|fNzbaKT2$J-l z9isG4G?xApSek%TPC+*e;R|t;^~2kp?-ue~;k;U|8xjQcSKm>^wW2`seQSvF{k*Y! zqs3CU3p-{i*EPQrFE0*}mobgUy-o_YQKoHIm7mZv;_3H8c0Kuwe@?9jLBJ zPhAd1zI+#;U)tH%zZ3og7b6F}V`0Jif&uEj#;H#g8G^amku&SeCKgnN?=QH!2P!Y= z>mR6$=o0)i*7ns?uF>L0~ZXOb5zQw z?{{p2b(JM1!P6k14PI%6SRHukI_qqNZJl!H9DCeL1nDtsw!N9~3GjPlh~JLJ{Epj@ zDZ-)QdCqq1%|cV!@I&Hnku`tAL;PLSn7{EG@^FZ08^q-)+o-+OsQK zQXi3eem^vh%9Sx$@EJ;(68bafx=uj9`xx{Swnt~+$9VX243=hM=|(Kg$I=!oora|aSXzap z;V9c{uyiT@wi8RwVyPEPhq3fVEd2>fS7B)emfnG-yRmdXmcELm4`b=4So&`){Q*l~ z#!@eqet@O-VCgWHK82+}V`(Cmj+y{}ZotxHEWHX#$6;wa^0x#_qp|c#EPVo>o`a<; zu=F}CZNSnVEZv2rGM2{T7nft{1NhrbSo$9<-HoL$W9eZmeE~~PW9jQy`W%+7#L~C1 z^inJhV(EG;{Q*n=fu)HP;m=#KbS##pV{J(+J&C`)983Se(t0cn$I`i2nuR47OTWcZ z5lh!%=~65mg{2#?v69f`kv21`H0(l@d69F|_d(h>OH@37Q~ zzx@kKU0CXbT%O(`EX~4F2}=vH^az$Plf5?vOPJB!I}J;i<=p!bmM{;v_aK%qo3^(e zOPGt=8;2##`|Rz+66Q+wF2EAz8TLMdCCtw2i4?n-+16W$zhRD8@2^OJ(0E%GbMUs@i)vC=uO2E=G*gDV+pg=c_(8D zlf`-eg(Xa~=ADS8E3kAsmN40ucL$a*;gy%g5~h>#K8Gbt+vL3lOJBs&saV2fLf*Tv zgz0s>_hSiD(Rim|2~)Xv6)a(*6mL3~Fm;Hx7E72+!#f>In1I47V+oThct>Li(+7C3 z#S#YM_dbXv3~}%M21^()-W!i4472XN8cP_&-1`fbFyOZ*qIP50YHu|DhQXk{?_mi; zE_*+~5{5MPUWp|P_3OO_OBnFhI|oY`IM#aymN4k5CnBd}=u$6(zhOvE?*S}fuuD%w zti;fe-c0-r11oy}jU^00=zRlA7}(F-k0lI>=RJib3^3>I!V(5k^WKal3`6FPz!C=a z@ZJh|?jjU_xI?tL3ec-q<%N2c*Cv-d6h4Nnex9+vQIuIFG0&%JtY!xA1V z_3p}HvWd2VcuLU;UxuPQTu}9X zkH6vap*M&nT#@rSu!L)0-ZfalH74)vSi&_N@8wv+1r%>NmT=+1`#zR%*}%IFOE_8g zreO&ur`|iUgwsB60+w)s<-HM0IFa%Cu!Iu@?`ABam+rY(65erTcqyN*ac*aT8(A6K zRnBJJ(#|Zb=ndRFP_u3e%dY+kt$1-XzOfUc5%tErwxBY;*avws_b*O$cjsVRqc~8R zh_}`uLFP`p6C@TmV?Oq%4p_l;A;o&yjeAYZoF{GGwCOx&1BP*k3_b77M+bQU{+Twb z&YE%LjJ`5TTq?_@vIAFDMgT+QLS{hB1}bAfY$+HR=ON@rpp@RH0Fllfe3|A406li4+E>Rn<>Vl;e6@}DF~G#!VD zfgwB50Wl+<6F;wGi)4z&q(li)u@@kmQ!*a}>C`}ZExURRlx?;oS`Nw#x(XP?7FmeW;VVzh-xjm$)%3r}mPA|xiXSy{IrVX;bJt>016vr_pp z>G5i|Y=(NQj84SQL9bxfs%iA{`WlTjSX+DTgqdZ*y{Mdl^bz6nbD?LX+4r$!G}Y`l zoI%#`qIHY!VOOoG_kLRvvO~JpmW1pU3FIMliw`n!aC4>TmcmCr zBc794e2=XaQ?rrzJSaf>+C6-aasG@o-@@E3! zpJWu_gKzVfiyNQIcfCc-*bCXka&TI_0Y;;ZQ3s*N$R|pz!6E1ov+MYMK1ef{(tUFoz8#h!6woU4 z6Pd{pft+?*sbkl!ojV~ZV`=Bk@D1is!2^Y8Ucg8<~*6rA*XG(&t0#c}}twUK+?kTN1M8nMaT|dsF6EG^D+$Y}s|- z&P1j+1x-fyuaU4ce4F6f%@)_RNjm~A!Edt4uV~(}@TJ+zXamPCTM{jYZz{qEo1XPR zi+P8jx`r*9DOA%0RD!qq0A0yuK?CTmwj|mE5VbEHgd$s&07!p_0D6Qi8V?|9OUPSn z3wl4B1r4BwY)P~npoLq?r4nts!C%Zyum{E?*tijEgm51kGF){#X}A)ij!=y62+03o ztH2b<6BCeE0cC(yL6iX&eMtsd6ZB-I6S9++%&FsbNBUZ(cG8ikyJhMWmVplR> z=v5coDzy(tuZfoFb!>w6Mg{w+oW))E9 z$>-E=GU^4wV;x&4Q#+rWz$0MDRZ?=L;j)@tzlO^STM{kD<+x2?jMe057>5|fG+42Q z7#Vv-MCMR)F?gR)yO1riDQd?jaPPW za>0SP`uRdP%;ae=L`BK`Gs5pwwgOC>^MZsMNRSK!NTLAAKmhQ8@T7s>hc06?r2)Ix zmV_~|7JFheYwq0Y_GMH3fa-2INUOpZdPW$X$Ckwuqj3p1`3$@OK!O*oiS1xlts${h zkZ9j%Hdj$EoQ8vu4KlFews2RflTWnM1PfwHtcS)bSWWb%K`p>X=&{Y3PTN1LZevHs-_MYqLm?(rbzY`L_ zW{Y5o#F#`rNa(4%6~ACtt117GEs3!5EqXcGQBv!(AR)PEk=J@Oh7!l?1>&ZSSe)z2 zXEW)3b-;~(jSOUt)2dm;j07A85DAh6hhir0bEq}eS!^yedpX*cM9Yzy1e1QZ0J?z0 z!;sw)5>18H;G$k2bXKy3GHt$-aS6cZ3Z@Cfm4?fi?D{oaUSUh3<+#+Ir#i9No|1`T^P5--WNwi-7o80}76sY9(h1$cIng^u+YuG}V>purvzzhJn(Cq(8 zcDjtrIZ0t&_{X7D*Btj5}Zajvu zYSAKRE!>8N{3hx#LGPUEwTe%$fr_>YLAhvX=j3 zm47^#l-4`!BiSrzpboPo(Q;5vpmYi8GOSni%7(bRoD&Nqen+Q5YWNKSdLmnN)0R0m z0hcLZJCAsm4K(0A2G03xhBP?m+LCBFoF|EsM;Ip>@BIbcY8qlAP{K(_u#UMfV2Y1_C4zH_7!Tdk&i~4db(HNwgf}+Nnf?IYxmk zgegAt=NNf*y_){Bwj{#(w{TFUk4qkr1qsQ;Q?>)T@8fQ5ua7&I282~RRhHdv4O+Clq0Ei^-G|t9X*TwNAkjvDclwBfXr;Kx^y3<>ZVcIBFuKWR%swxN#^P|fyeC%|Y4m#ko@ z+#0opravY?e$5uh6p)EH>IshG*Ux^zu3baqkS&RpBf=QlCLQ0LnS$2WRO*jyisN8NG{%OYe@ds_Te^GViX{!|mp!)D3=yiFmcYf_N%jMx*zji`~@f{)iC|d=l z$X4S9#vz-MGHBp_fX$W$?t5)Xgu%5KfaMrYy@3S@$wjI)Cbm?J1}86fw!w}t-uXdW z6T^W&+QMjn$FactQqI~8#K2J2GWeg9!Tp#Gi>bjar7_@S2nACWhz0@b?J<-g2!y>% zD!Cg4(#-A$Z00nx`>rhsW5BJ)|AhkaQv=+O%(`Le2P&Fg`NT9M50##47U% z<5M6sfDj=H-{?((VQii>X#YVCu^sVR=v3Z}70yPOY{HE^TG#38gR?#ny?&kd2#~pK z;Y}Oe(TP;Dmv~IV9$XEFTH`v7&4h-)99t5yam^AWVz-`cov@Q3l``xzW2=JY`wf{c za-s29v~rgULWM?SXhVR&J&UarQ*cj7bO%yFnBQbJ(?#Ah#@njiIl$YNb#Y(A=1;?Y zr7ejt?iK^F9LuTwTab`kv}i0pQS|JmE_c?@b!zk);o`13kVkdxoDa#`_OqcdwYCM+ zx1So^zVUiPmLxMm*` zxbI>s!4%vR3Eb0?!Gd-V2qErX(5*xeLL3%N^<{Lo?44}3GnnnU#af=NyD@EJzLcSm41Q0L>g@|p(c)gBw*J3tu?-pC7a|;)rlaRJXD+3+ zgvzwUKH?9i!)X|F{Wht0zf;*PXedn*B-+wI{7{$Us&4nbOsOXn^fLUARDA|98IF=V zaXBm;EZ-#p%$D-`Y;o5>kakRjq8uZiD98p;Fjv%5Uu`_p5fBd*sZBY;!2>LXI{^=uJM72KH!0^#)` zC%$In5OyuQW=*+Q*^-bp|2D!W&gO01jLwy*^o1glp$Atwpc)+|U!E*f-!w&pN#WrmixU{8P!swx9sCE_`m#n0G^ zH8qP#i7w&^m-Xq$soq9^%&uNDjUU*OFb2ii&74990>#!%jE@=p3Sl$igjPA2Q~mSb zA}UE8|MEyS2O2!X1c|ozm;QzMEp7n@hF-|G3eEtgkS%12;dlkpVqPM}&u5Em+9;+c z;F?ar9UO_Ma_8$!j$U)wJZP#v&X$C18FL7|W{+MoYt;{{^6R$ja8|o}GwEXYLW+>3%jBn!S{5NraKI09)D% zEg)EskX*ECndkUmUYLU2+Wju9aV}c4M67elF;6)A?>--a`>hyy7En)dv zwk}MuJSmZpvWPWQ(SWMgkCS4(%s+stx29jQ8Pjn7Ie`?nD%12s4srgh(!0gIL~u-; z*Q(jZ@ILI|lvY6dofae{7hkm9w?i%VuKZKHkc%h`2l)^&*>(MI=djNHdo$NJg_G;%z^7SB+X zaGgx<>YQ5W*glsPFB4pzHG22damYlm#q?g$9iFMy3gg(a>(-fg&YGx~b zw3nK5l)k>@s@A93jA)R3!j^`yxz>REIh!91$b*7}MVDrc&qTlgFHXRDJV!LD z5F8QDN&DmGH^(>D28+rh=;6fO2RL4r6b&ds*<;z&YswxaNLVP_w*NY*+7@8(h18Cx z%(l9FGH@ZVfD3q-Y6x<4y5YG$?^8l(30p;`?IS7M2Q0|=V8Jo#f|LaIJ*$#vE#)LO zXBv15ZAr*3Zyw>_>``iYEuP!TU8En%MGdzb;ld}z84`zJeIqz41Ir0;(K8enbtr_$ z0=BW0WNHB~hxp`Gt4$WGQi>CFa0}9xGDwbsH<@~>Qfl_Fh0UjC4;yVswA>yNTgy2S z6@msp8u{ROdvIn1j39Jd&FBk4cpqDAQ-tRx3dFZR1PZ<}2v%^y1nfHEQd)`4kOt*N zwj^2(b9jVeE6G(Tk1u_L`VlY(Zs~l;K>o#`n8X~vYk_aPWF$tIR zcp9%QNJuV@5`x4oHClU7Gpi#zHuBZ0)~(p&kMJRPs@{uaEMH*j+SFKP$x$1)Om?UD zq;me~9pPYomd%G|HlHGG$F2A_KLF^Ib9+)HXI}~iTL&RX!JjkLse1G)r21d7MK)Fa zl*B&ZED4;!(mSd>1%LDz#9=lAn$8c{l8}w$1%j>Fe$kZe&@|S$&~u9X>(rHoz=?c? zz?rb1Rr8IhB8m5&fHS{I=;(B^IndA(i^u@`{}s^AdeO>kp8Z1qb9U zJ5-P&o)b7vuthQj2N(R1ClOK!;DJMhdJFn5cJ&%4AGRgYa!{76>T%N-_T}M>24X|2 zg6TZ0q6AAt)n)~;K1-qX0`}Jg=nvTHFa>mJB3&zwSQNrUk0g&+P^dOR%&Z)-j__SJ za~j;=vL(@SxM!`;75gCDC4%dF#BdUCeJ|uD49yqozDY0+Ti7bc_!u}d6z~aG;f3c8 zXYU}y3-amfTW)0i!&cwpVUwI>`I{|?mP5ukuraq~fYd**aU8o|t;x)>B@x!Yg|jIA zP1@MEAR)PUv+Z6SasdZ6j&1LOjqTO$9SXT3-iClw7`VckEjnefUjTEnQX$h-hB(g- zdb?t)2+|>E#b~i5)91noa5(P)+b;NPrr4{D>)uV(V;&c;jqR5K=nEI|au|+jhYh@xW+=1T;&Jl5>b-w-V+BHS*wIv~& zU6HVA_R`S_BEY%R3yJA65IDl=E9CKnv|DtbrBHf77)n)`48I}l?qQ2=irqX2B?H0G zlL7C^D(|?FQk{wDqv@S&mNYE>pCo zh-tj=S1HSK^lbiPYz8!Jo)aWud$rgt3fr>>OV;{1c#0S!GjQf0ArItW5;#!STBqn< zRCeK-pxT(&UlUM+Y(1F*wKNgrCHsx=@^u_e)RAQr6Io6449%|xO>w~)|XExE;#gJTv%`B8gt^Unyr3)l)U zg>PZP^(BxP((NO3Z&89|Ac5Az&S!I_A$zVZiIyWfVsp6!qnCj3CYFwp^VnBtZ-3#mlYP&9z{&y_HJLQ1WU8s z5Dm)ThL4D|>fK#kDtL+wT(rHR+>MqB9%t93+1X=)M66TY`~xS8s^@-+pw`}$Kch)s z2+@_D3`3{tQUS0qec099j?YEjD8sa$mP4 zA=~Cx3H-RV2kWWo{I#&gK=)+fN;ZtTaKxxP??6fmC+9*_3i4vA{kHK}gzZ1r@|$A2 z07HWLX@-G+7<1tuQg=QH{KJg~SkABVui^SPHd7j|en&L6{o= zZEwci2grq5Ui2#j!<ZP21^mqMnm=oX>x1H*TU<-WdrA>??)zD1U@iLD{i1`A0F1b@|r3CHV+ zKdphD!)8J=ma}Y0NMmULlXb^Cbsg-7?{T`^{ydDP0a|J|8}klfRA9?yiqW*h9^@@a zyj79XS8?-f7Bqyif9i2e11qYhR-^i|2Q|NWJ zB&5k-Lzu+*8n!*t$d%-tt2SQ!mGu5Nn|)KgkAkR`VtSz4@nh^tHMM`pmPE_dJ_0sf z({4f4dhjDD{rha@O_e?pleA*(nyG(>U8kn=Z`zUw>)c`-m#zTyU=}1K7c|CLkdR!^ zBBkESpWQ!Qxt!V13bYi?G$%)pvyn(xjmPG3zJ9V+MU2OjOWBo-nW4+qCj;Z@9 zLG~54pyrU#4j-|ZRM_Yvg_6K|0`P( zVf|Y;?$Y-sKhT`SEyIQ#F%18ALD2O}cBb1(1hu+mj{Pgni^lakHx`%(Bte*Z#tU7FR+6C~Q`_fN;0=RdpTop|%S zMysLA=Tq^m`Pw_w=bpnBJGzl;Du%rWar+$ao&#?XQb`~lShnnL&th|+DSnMD3E93@ z5_Zj=6C@xZC4dvO0p~)uU$g?u_YgD!#ri8oUl4YAw%DfF%}qcKN&qh4I|+P?lfxoU zMJ$wAHbWYe8Cw!9hjJc5iN5LXayIM0Rfm$3-(8J#S>38t(KP*t0KJ(lyeXjb1)%7% zBKMG{7|uK8cVjk~JcNLf8?}1#yphe5hUs;-BwCK?+~BARG|WN{uf2$){Qz=Jcd8<4 z_6gznI9qU2JWr@b!h)tLIH!aC0C3&T_Axd`8k!%nCDD2`aSI6or*{W?s|IKqeL`q{ zpDnmKnz;3ZoCmwEW@vtg&5?%YH*HC@9L-50J0&g`$K;5JdV!Go7h5P(q$X3UM>wfe zFAK!~vFq1x`Kv97mg6$rPgfj_ctK-RyUEzM2%*H{7J2rSqZ4V7PPsa!1x-pH+8j0$ z8cefoNwgfMv6!PLIK!dbaZ;WT9P8L(m^PRWk%=eZ!`Gj5{#Uar)*x76OQPivoQi8> zc$lQt+jk%c7hG_MV|;KxbFU1Q?mN|?V`FwC2-FMNiZKQCv;;1v;Zc;@`2dC&L&=gP zS=G6$N~WRT!{$&!-?b&ta`dOI3=)Hi+;^o+7v!QUg`%y-y+jD!z!uIF!RazpsK|X+ z!sbE4=xSRMEyw8Cb8-;F(#aHyWw_Qm&%rZrxQ7bS!r`Q9I4nlPw+Xe6u*Ee+ zZBF7sYd_y$SFAzsHCqxbhoBR#$oGqV)qFYKqk<56Mlk%HEs7}&Q;c9CiId`v{bJpVx?4lzx(3}k?Wg$f+WFLdg{*9>|oH0_5+IgR=ZZn*^q&brj z)JmgmhGp!!G%H*zNVIXAp<^pt&(9RZt)h^Bsy?DNzKtznbQ{;y3CD{HwVY^8d<(l~ zO}QIwNyx@^HsRB}t%L=XPk9vX5T&}ZZg>P3g_9zDpx9B+ zO7l5ae?qSF>pduplA1Xw`z-?2V}lar-{yY|r;QtFqu|i2*oj8KS|vw2uF!a`Tk@YRVcg(T7-yRiaW(tI_Xy|wIvZYDvnY# z)24-b3lfrxMYeMzf1~D0aPuK{ryzFRwQ#{{!Zh1YwGDeT5KkV0$H{Huvi*?GaIdF`$J(H?Y~^iu1o7T_X!fQT5YP+D&_*}9d6|;m->j*`7XAIhU#p1 zz5AW)nlGdB}H&D(z=+n%x`*XxwtvqY@ESm!jou_O`v>cs<>w7VpmH-FNU16>mu~4|p&H5>CAQGj! zHxrIA&iIaSe37jJQyfoBK+Hpu0rHrW3}P{^7|4J(a!3XZ+@G@9(!l+ZEs2(cJ1I!G zhu3eS5*9_hKyZyZnd|7A!Zo>?d=IbH#HA-Xie0~k%S&uY7~^6+-jCam2cNhaRqFwWqw9rv|&rDNf$f(sXTU@j;k zT@>NcKydtYQ@M9bKTST;nJwyt4{xx#>hVuDa?z%Tf;U?A_&d8U&CvcLNVL)MnTAKS zdfk#+NM<4J8r%X+VMutjUB|sdt$X$<&2j!U6<4OiwtFpia2u4k)7tnNWr`wW{ zt!s)P5xd}L8#;E1k5K{6(R4>66#WX}vw|&{VH1GhBR)QYvv_n~#pXam=jFB}!su9Z zpRxz0=4nAfa`8voPQvejUubU+e99IGAXLtldw=uH?Jqw2{K0{TV4DV3nYV6m4nFga z!7JW*@cKsw-+lSu+ba-Bj>sUx zs}v%b6S}?b?%lAYhQUwZZhlI{99HywJf`m8i6U%WDzkJtQM0AoucCnk= zTU@**w|6C^m|DEESaSP9$Jj@T9~UfCMu*_Q#=Z44zQ7wd6F_@OU;jX5WFJJiftm+g zZwc52oRMEf|C}QJ@o|XW;3rWy4baepATeB8C|^W}B;{l576?H=%1@#`ba($9^`x#R zpWH^f*_MRtRBj}Mn>Qc#4RXd-7qX2B2Mlepn1NKMDKM9?CDwV5Oz=y@VAurb);GZd z)*iCKQ9H%2F-G{!db(_u5t1;iFv2--^~P7Yu*0gtlj3*X{61e#UNiIij4cUc^Rrm^ z^zCmN^hTLNK8L449q>|9c#1x3d~q+4*XRU|F-I3)tLfmUO-?i56n$_xN+pEu{MTaK)$81Aj52H3UiQ zalz$44@5<<(aQwiTZOdR2ry^4I4Bk4|AxGdk!#2;R_YHt-%34o);b-d!1EQA+PJ>H z82-6+BBPvA8R5{6wNi81sj1N}O6>D70v`o2f>URN5&6!!y$dKI&&#J)wyJeBxZRmQSr|{fNzo zhS~Q8iS{{fGtMnQC?LRq!pS*RdDTUvN}cxzgqNJwoJDADZK*O7x;w#R(hqr8!=nbl zzlILM|Jjm|&E~JRB&3^1hQJvvPCoPN~cl& zJM2a=6kC-y4WMmo7Bqmi*pe^?$a>&A8U{X!>yyIOJlN@T`tsRKTHQab#J@&3UCfry z6sH+D)tl(3&B%~FPFJS>; zjTMM>NedE^i;HYmN0AFyg#K}x_iopw(ijbuPS9+EgfJK^6%)chCPNnvPGJyEr>h?? zTI@}g+#N-CnbIYBM|1?YhlZct9RC_s&}i@W2zFhX$^BE9Tx`GI{M$oQg0NvVx(vk? zh<=5-`2<_!=+>>Nw=#ti#6UfsH=zpONwHW|q`*s3%&l1}zb+HADKcEs2&JQs-ve$Hn_RWjJcC8bat90r?lUD5gM;OXQIkyu%}S@wF(A zYy6R2wFboRZApZIu$Z#SSuc5O79=DWt#Znj_)a-o_bTKeM+;0p3vkZ^k3hJ&v`g_{ z{OOdKv?wkf`)jhP1ut#UJhrm5>Y9^0N#GeaS*!9;FqXQLuoKwKX;yc>M=$AWiX7R2(?pX1UnV%@QQ~ZpE%D_ zV;H&_cx)y$GuUHGqUC0=d>zfuT=d?0^4%2c13GKyqDvVF{ZVk?G&o#I0^6uNeH#iP zGKQPjN-{NumqX50F%N|sy(FdZ=A@Kx^jb)X76MY%uD9s+a6Ow(%^t3`B@wmjN%+XG zsfT?0CYtp=%_|mk!6l!C&WdyzqH*B{B^(W0xn}EjLcHkqX5b!Pp`6B4aNW*=lb4^m z&?&+t`+Bw#qPrkeMkCnQvg^`dUnNMiaRxVP^Io^GH{mD3_xHi=5U_5@fFQj%fK^Nl`^Vz*_XkXvrd&2XBY?YYexr{db zeVHi7Ku9LI07%_tQpluFWgcd8r(ym+TM{kDyc15q6!MUZcAHx&htJ`u&j_n;uthP& zsv`k=`Gq`O_(D#!4)AO2iZvL%Y)c{xgM}9=9a$RJEJ#Q$UM&P^{_&9MYapv>S2k0` z>r76{!TU?uOfGbtH1;jBkl|-E$Gg%8ud*c(M%ki+m3=g|eG3wjiw1qPt*tSZoch_S zG_{lZOHO;)^=ej7v?USNzXgQ;l>gWDru?y8i1mzr7Hs%t^AJvbj~`dcO=BpBf_7cs zTU4FUKgiZnG{7ioqY3?e?7B2i?-3;0IH8Ah1>i4aVb=oAcdPxb`iT0~Pq9TbRHw*f zP{WDVZ+@Izv!>kVZAr)$^9PZ9&{tW7Y5Y1t*15bnzQ5KZRgS}W;8l*3;@*D1 zaa;)EF>G!$1V`GEFhtGY85>n};INmt$sHb~>bys& zY-I~?iptDHNb_)jE8tPXU^ANy4TBA~BxE~VPcSxn_?o;OQ(8LbW{R$}Ey^LQM7}`) z?PZH)3ec1Uu7tR7m<~eBR2@YPnj)J44Vpe%5-o@381k82M;v0Uy31nP9XeNA|5XC( zcDA6VV9kb@2#_@dWvc;60!%0Cz=u8RX6~nf?>T|`sL(Sx$ zY@rPmT$!8@E)}F{uVG9ZCH~H?UsL*DY)QyA_D904=>z!5i=DIFES%MJs@HNWix5zAWZTE%8YL-EyuL~NH9 zyBuk|%G@c^-faRz@VJ@UT0+lA;d|IJnksx8q#J_4D(6CG8{|b(Z#TPYO}!~w60(uJ z!Ip${QwZcCxhXB`Lg${k*x8aV!bV>ZH3?QT(XqIw#<5VX#OxC?o?F?vGc}&$6MeO8 z!GPN&Na53PZIBTk+*yv@#?`gKQ zruZF`sD+AHts0@;6+FRaL__Ys1c~;4Co%aZYAFyRN1z{#e z^hO?&$YX=X^IbL@8U)|6B_SKn*KJA2-k1#G-?2AlYyo$?qE+r|{Vm|p?0PjT7-367 zS^;&T77$7+pt+<43CYE`Y-dLP(!s&@E*-2{knh9&(o}X~urA;ncM)y*vltxPl zE7^5vMtG(m(Z11ODQHm~0mEyAV&?8ZWHN}$EPP<6jC(nxeP7**o-6#%Y3%4`YswIn z%CZEU6GMr_l|fpI$U`cj9Hp>^yW#jOpUdq}!i#7?`ly~_bEo0>23r!c8Nc3^gzQYn znugSwykaO^K;*qM+S{2Nzq%jp5W_?v*qh80dvU>0q)ywGE@b-Dkj37PYEN+|TheHo zM2Q>q6t}bM(k$#&K_a%Nh`%FbJ4Nq+>|~(WZT-1YYQNeIsE??LKf@N$P@QnN1&-mu zq^d}q_?nS7SDs|otSR@Swj^Zp{RrXH?8U{UEBgAf8MuPAhB9(4ch=TKAyePd`vi~l*H`4hH6OwnALfV3khQIN$FLhX}4m<6t@R-k0ISn7?~ zz4{@WISugd*^+2E;0vog*~K^(ugw==`rIuRE-|R6_>T>#er@fN@f|@t{FTjd-L?L& za-zsqiYF{GC<7kqMYhFCW|uERGD|XOt@#KxTN=3k{I>;n&Wd8D+g&vvI&PhPG+wDTE%POPq5 z+lU9Eis)*fCmr<3Du8C65R4nxf}6s4LZ~$gAGwHUpD@Tq(D~|Uu4i+kp}E$UM9a}+ zEOGR)g)l{?{t`zoyIxKIo-K*6{w<~ya#li~s|5+k#ei*(?k{nCsJ*k2TJK&$5+c2t;K8>^({u$U!0*MCUBh z%wbO*kwElQY^F5CK5k1wHq7S<^rp{xR+cka(SF3}N>d*v1#z)N!`V{EdziEPTs&#C zYGdlc&{>$J?9U14U$PZq3iOghmoE{Gx+GCDRm50m5FSm)LxBs^y(o_lmYn4tX7i@u zeZZDP%kf^aLo7Usb{lkzv|$BN4SU22Wp`~?sy1l$*M#r1h_r#R*z=LvXy4q0jx+Ah1B8{4+tb|pt^J|Z2^*I!IX>4$4`SN zMgedWG%H!g=2o+k#kM3`ZY3vd%%hcrfQL?C$y(gVUjN!uwjA=EDu&+>*5|QBH^q7$ zoQXu8vzLF=dSBdY!Pvl-URWv?xX zmYd6&RdeyX{>^Z}HU*<5WUB5-m7MM1B{^UsTOpcDA?K{jmthczn^jeYOpQ$B9=5tn zP2^S5M10^e_^Xf?JjN89j01U-U={@-Z?X&J4V;T8lytLgtaTM}XYTdcjvmuD1M^_oWHT_(#-A8fE5xv^;Rz$j5-rPxP)3Qsxvw*yez`U0&mMJh(WP1>O zSj^J%gKP#gXzsHm5r)RX50$PgHAV{(l8XkTrga}$vxZ$WHU~Czfm|`}+2D8x6NIO$-g-dYn>sjti{h7^^2G#%Cl8{aFcZ7Dc`|cAOU>b4CxMKJX zAv)*Pt(&39Rv3wB-2T%nHcJ|yN86GJ18UJ-%O0P401Fb5iv~Tu?eXf9q**oS@U;UB zyiduF$MHwJV7s{ zg2N-d81!i$2qjL>2WLz|oqfdK@y%@ZG~90#B--d*%~oeoXRqJxr1QOfnW*@y4c;Y; z9%n1T6r(wznU$9*!Op(q)mNr;p&nziqT%r&TN1JzK0=T-+l4w>1y00hE#>psP-BaK zjo|t|TR>B|W`y7p>n6mZhSYc1Txdvr)0RXSDGSF&`bN}#El5Z%$TzYeA-SMk2MZFC zi~qIV`#>(>&f=}@-CjCv8z#NkR)+muxLN^MyEeF~g1D3`yme>Cwv|p7^yDR{+y_VB zB4elhXLXawS<#%?11h1>Cev(oU7G376eQX*Xe{uK9}6-~5LsrrA(a{2lEVzD>e7k+ zm^zy?iP392hYeeJ>A;%@7I<@zTIa4^YYVQsF;z z*dlMT)lzhe^cfT_@`xp>p~8PRlA_w)w0@=fM4=h9#QR$(g@e%{R;^#VVrz2QQo6sA z&t?0aQ0wW0y+&>Mg>d$Gv} zv9^T#5FjOxKUtL@BBj*+9yAhtjQXlAPO?FK$(BU8L2&fww`@88Acxd~gydqntswsV zV_$pcACqd=n_qnT+JjGDr`Wf5U3GGC?8@d$E>OZolZ#{6b!n4}8G=MxCKu%KA17j@ zhy_J|n&!u8UQvc?OPFj)(QL)wed-`y#a2eN&#EcDay&&-5$lDp^@^vKD7{HCRpnV5 z{$9>zN5kf2wj^XbJB{FtTb;6AC7vo#tZ5o5axw1^T3u|}OwpQFgI3MvirydZWV4_l z^dF?&xO|lMGl5%<9CpMo{9iDO2G5n|&Hj{N6wCu~XE`(zkUx`}FDC}W-p1HnyC51v zIqMd~zQ#!ZcLmD8ZNAo4W6_=lF~=E4Ol@F7!ryquc8X%^=wD(hiyV#LY)eA6&x>tI z$kCW=kfTN4j3pPX>Lre+4O`mo7pGJ6n6(NLs+X|S7r-bvtxP^3!~Pgsai+GD0Cy00 zP0~g`mSA24iLQ|AcyoG=&5zcZJS|AX4#oDJiPneENPNu3%zgw#!h@Ge{eDGh|CRc$ z5+XliYrqtd*@<4kX$>U6Db7`+&({2y&54G^4{S-uM)h4=60&KNMf_Vf?HP0Wd5_Fy(yA8u%N2-`O!tS;STGX+wq+O(a1F)>Ty7?gXS1Q%Oot%RzVGw|wxxb&m|b`>w%f zo>Gk7yQ4Y{-_Hg)+RjnHM$_;zyDrVF3$`RAlzCecXixxU=kRtyIldOk!*^Vv;`rVw zj`y*pipCM8YlP!H?7B1@@3bW$alGA@gpXs-k?q9MZ;}VEesb`+OQV|P<5eiX%oZ#f zN))gWlwV-ir9t^wTM`n=PuY_2q5K+1+V;U#T_aQupLcP8%~zVf=mS6+GGp2t-je_F+HGh3?Yrijut!f^w;E)B=^ zwj?BuYi&vRIHs*|v|cLjICSOv2CsQ&@VQ3@uL`+2zp0{lFhPZf+#d;`V}UZ{>6l5C`7<=-^Wis#vIxNcqpQ1u<3r zQK0-~OLgr(#ja7){^PbJTCV*`2Oqrj;J`zq{X>u6edvkzsTf4PKuG+QEffohWjYc+ zV%Ml4@qJqoEk|PNfjb@>y#MyWw|(Trr>>9boMPS~JdRq^9FI&J11h3roUG&V5_XLm z9{*}N9@Ycz*1;PdJ$%X4hi`k^p+}$o%`>;t5JD|w!FGt^4x!N26=10n!afui!iaMC zj<>-l2Ob@G@yXi`zUR>eXQ$Hnt_);)g5bG$V70hVZCb6UfJ|W_8yM53nMgpGZIC>< zCy+ep`C?*BT_L7!DD&9-XoivyBw}5LrtfZP>)*;oqxO{ael}Z9Q@tCkj;~`^t|@u7 zEeY8>uCOJ6-Zg2FpdQk?H2EqPBqSH)qgs%Vy12-;bMt2!JK8(bm~`N-w+=r2)WHYt zI{5Sr2cNy^;M4C?IxO!W)%nH^Y?Px79VKiu->9(b((L+bK_a&EX#RX-(xK}ghxM;R zk34+v>B|p2^4#G4S1PKkM7==P{|H-LL)FI3F5b_sP}A>2wj^X*d4M2l_UvNx;3K!c z_~g|GKlHS!|C--P?f=6T!Bp*W^NO#qYt;1qMOzZadbjqTM*9gyKXh40@$z?4{GZq| zuoNFLjraq*Mosa*6(ri&p^VAp7O#a{*Wi7r`mB9G3Z1^TIr9LmZ?23@VPTGGtTLe>c9)sG?5)Yd4U&gLh zQ~qhTBwDWgk)Zso?uH$z>Z`w!;&-yyH&y&7RD8kBmi39vf3Pdn)c!hK5-nGIC#Zd! zdr=wF{iL$0@3=Y}&6kg!|d`YWly|mPAXIY8EjyvtxIJBqfHt-F0jhYR7&6Y&#wLkduM_+vA30e&dXO%)-6a#F0Qck@co6CBZu3Zwy>Tn&7u>DaE$H6C$9HTCth>U zp=X~ReCI=osd-~DE`^9iaq7C}c=;%5qZOEC?7B45S}aJkal$lyP-w8KSw)W(?I|gB z8(YxmR;wvBZtZ0YyFyK~8*NF*=5jWH)9kgES%;o~_{FF1gPjrB7CH2uD+Vj?h=HT- zn*_~1wwR{S#I4Vi*fna{Tx3ha7#r(8=jg$!?tsN!JX|7H$YPL*e~n8pavlh51A9esK788$fva3G%U zpghU0Q3LLywj^YG`iLOW%=Mu#!f-iu=gzE~(*Yjo{~n3&FKuOu#`iFroGHG;6Cj)p z?*Vp&8oV#ql4vKq;}PCHZYfi8dv%D%);x=ZdB#~>zs*-uG|bc3a``&a-2GpRU74WkNSu(xRou4DF&jI zoT6)gfL)`e{hMq_gtc$cMao{5=KdBWBo~WpJp+G1=jryIq?sV%%ZglV6zE22_1=u? zD$ZBg07Y9B%GYQW=S%FmG<*8IAQ3xp^2Wg#uFA+#K3#$cfCD!V)P!-Z2B7g4LMTQPeQ-Yu-%NzxgrE?)BIE+@EjD-&LO12{ z4CFRE4P0Fr(Ua-!hMB}wl}^7h|A(t9qjKfm zF1O%z51a#L4X!pYf$<{Yt1*StK4}NOg&syeFkEkC8{}nj3&kZDyTu+ix98$~ZqJg{ z`E(g`vlW+MruQX52(ENbCYMSE=1^P`)?Oyp?e1S(D1!N64B&IVMgzeCsH@zSVwkbd zr0fu>84amJ{LE0efZN(r+S?&^4Bq|J!Fw+`c=rQ`9t~Y$nqTb&4TlgAZQz;q!*vL4fnYox_9udYX|kC8s2Hu;qFUp$)fuJ zl(5lo_jz_*TI>IeAkoI*u4C}(>kdBqNYp^5KB7kROSXuH>WmxW4znxNbb7#+glr!# z5G-*+ob9dL(T6??m)Z1_Mm4{a+9#ad9H&jQV!Cx0aUZvnU8AP=F}5U(^=|E2bWjH} z_}u#rUjL}-QK*kd{im`eF}3;Q_>-$mS;gia?zpzr(^IDnAtuy_{d!cuMeMY zRUVNIyqB#`QyajWw%IJCWa!IMZW6s2KFF?IGl%~;&LNvyRgRY-v z*Qja#Gqxnc+P7#)vN4iJZ9zhE@kv_;61jlc(O23#JL(vG{{4q9xqI+!4;;QVbh33- zbzU^$oaT6xC|jd>(UI)BG+P=bNVL(J=@`8Ktp{(sB5LzreMCLw32YIg8>ptvxOvg> z>b_!7oWd#@ZsAc+kx_kw0{#@5RUdwj#wqQ zo?WA+{cCMWv|juEo0U zy9Ei!#XoGFP2WfR&-VIgQ>pplt&Lhssy!g(y{77{{hEzZv}vJ`jhwY#uX0DO zMrUnSq&5%Sc{v1TRU2;IH>n+WZfK5YtSLLrl^esZP}BHGTN1JX4HqPud1PNCr<@yt zX7Gsz54`K@gHPWKVUP~q{?@3W&Fm8bYZ+T`!!1Fbd?~{#xZXE;8k}HzUNxl_KwgaT(u27r3U&i zTTnx#Qui3qK;Or%QB&=EY)QzbaX+Ec>~)Fpq)20wJyflJ<_*fL-s!e7g$gu&O? z;;=A?h#322c8wYaU$7<7atu01%Li`0?!{--$cYv85o!OAY(ZGskGN6rdv=YQ_J3nb z!dUy(JLlsdc*3S~@0R{U&wk**b?;VNK=>g+Fk@qL9BQp+uZ&2*5$3*reN|{0yGjj% z$$~^1JNW5j*q~RqfF@MzqzZ*pzpCQcw@BB^*@Byzdk5({Nj&-Ll5y!?%C1<`_^Gxe zq}4AY(3;)vPp^T4@FA>1(8Rq((7b^yo+&hOtJJS&*QjA~o-K(mCKjHqbe5?tT9A-j zkVjxaLUKVap9KlY#oKHMxvw6Rwovpr8y>=%U2K-E4VReqc;o}nr$qZ6e(MU>Zv%IDd&YD#^^mV|5= zPZBP19k;c+GI2wyx2rpa36rA?xf1c5z&OB`$rOx9iLBrWQzHjF`6`ve=?m=YHB^2= zDviBJ5T|R~!>sCk-rALHaLj8@yO4rMZfcHKsC68%D|f@$HEKFN!j^=z^ncnSD+eM% zc1QyewKoeAk_+leEl5aR+&&atz`>fO?Hvx!psPsEN*5wT7i6DO4L(2zZ%2OCU-0nyfxb_pmwBz;kU$$oASr z_&0mxn6{$3JA?O@Q(0$y4)2AFd)G>%sl>fR$lbse&J?-niBy$407`P_D_D-%6*dnV zMpxUCXgNkBx0QQ)Q-#oKMD_OTvBtqK+WHZMMuYibTh_-{ z6F?mxO~%a+nt!u?%*s^y!aaq2IoGYgQK@}E9m&y~n=?7kR0-KNx+E7`Uow?luhy4L zvLzu~@pwU^=|?dp>?o%8xac-*>EDj6Lq$Ph3K>b^-p?PAMm3e+))Zk11jtlG6| zt>^+aBN}Gs3lgz2jV87Yem7_rxaL9DVgfkBnf$%iyALdD6w zLcz(jui&Ima2>;Xi><73)O({X3E3I!wY}?dW>QQ=PVEKLi0Q zqTjo_kna`o>{hQ>r!@9T+)JePpRlDiRr~aW8*rCI?qHq5O?IdD=$ii_n+Hwv-?Jql zTgA6+NyxTI__wlc+ODuqTw5-H{tJ%Ze-@XkMiTLy>|?@~R=Lv?;U2HxDd^LSx@B~- zYu7Aej4cUi8Ps1|z$z_+W=s|&Bo{B(&fEM6`oeZi(5Y{l3j1adMjyPMl(QUA81-v)M^d#VtHrJ3Gfn`_4I; zUYs7Mqs_ch|5ZY&!j{w&so4qGEfy^?naV-f1e`Y4aO&$^u0>zX=0t<-3etJ|)`w;< zTkK#gZzq-Oc5=82kj-4|I;+;NU9ol9Qnjr#c$eUKn5_g;IA%c%nN&AG(VeU^noMVQ zrwYKR2FCl?d}v_2$CiX_L-!M&ac#)fDOqsxVrMl(u+6zRM&xsQ^Vzb$m$S(&7hnpp z$t~^67cNu*H2;jS{2E&UrdZBPU;y5nn@lCswd^Nzf_?ah*wkyRLQSD$%bHS~FhLoLPkC-c=^i=q4tY0b3e0)7aH(&`h=^(Q;_! zo(9mk#ZoOY4(@~jP$m3bcxMV!W}gsruVf2u+R%%JjjeH{eoK-J&}05kxn!MKpzIrUFsGBVrY?rgJ@; z4GpYoZAr8otjXuXBAe@U=biP=o;(bc`%9szdgL1f(0{STG6iTd%+`UgWOqK9N$$ym zW4b>g0pN$(^=rsHYD*%Fj77&N`&L?>u^=J2c(tu7=C8I*ZtrT_%wP|4xyWnfY)QfN zDeGo4#a^YC@E)%&x&4|ARkXFCq>Yx`e!;Fwv#djcL>rgfrmgSo%NI&TF=>H3H>qA1 zPGN>R-ME*iL3eI#j@zrLxH3Hf@h_1(F)OLz&exk<&KbkzK~w!mTN1K44HqPuxc5$r z%$=*@XkWiD`E71VvGhvl86mQaEsCMhSH>l}kr%NRS_ED+AQrQ$)__=KOQPjKbZoW68L0Q9Mney!w$9}rZ99Sih`4*$mpb_u$5i2hQelB5-mqz_A1!kEBPpherq+X z%m-tE3QL1`38#LxsHQm0Nu&j@gp=sSaKeW@8ID^zaC_OTXuuV1Nwgfe&aGvdut&6? z&@%$&PPQnfz>G^k5;idlk7+@-v#ZvCxYd?~F%Z_`FDgKP^bK(T5swa>PV6_>pw^GqzZ!x;!coJpuhOyGBisKd>bs z4fwl+MYH!*Mw}9*asNls_=s(-@=Av%GTjk@eU4;Ts40AyEs54E{AE!J_kSdXpU7t3 z)WlKY5m9{Rvn$jTKG&8+Sm744a5<5u4$FdsBgBuTXzD_wQS%!+kG^$IDRb zo1^S?$Q*~%>s&JwE+96+RqgF{#;b>I)Txj6^=iLzm@QUxzk=d5>Q@f1>(cs_7X*pe zex>(|u%5?c~-wEh<%*6b-! zr;<-j88s`RXN1N{Y*9?nXqZ55A-ie~hm4?ej?D{oaa<(MGxL9}v(y^fN$by9A;wQGFqCcJKZm(l8lET-89EzV-9g2t9 zxI~*4iq*)Wcptki&5Yh7NVL(Rm`eJC02dJA22Zp{#I}ifhuZEJ*+LsCxH1jS?&XU4 z0^H_Sc+;Bi=h!T0djGU73E6NyLC`hZvzX`uw4zihWV&Etu9|u!;yD5HTee81z`%J} z0wyJS(m?qYyLt_jpWBjX8z`Im+=6H@F`(2uCs3yBXpR%Ebw_wenLx=)o-|MP$wTUYWnQpivCDyb=v}4r?jCf9{yo@cAc~j{UJSCB*WG*@!_-X9wHB?R( zB>o?a8xRYrCa$!q?_k^ry+b;G9b0Hqoma<=5*$KAjmHHAe=VB@P4C-mNyyf)g`jKp zxG}W`7K~U$!$=6A=ywR9H?u`E2dD;?B%nk+mwq1OVm1pJK>KV-gaNW}s-<5}&C`N} zE(H!pGTW5^d}#U!!Tl z^X$4btA0k1Xk&NZv8CYRP6S?^4EZ|hBkDVT$`;X3ot4f+Uo9uTX5DC_3G;slWo`Yx<@@cnN6z5XaUOnz5g662#Hpc_iEWI+7ZXF{ Pdr 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 )9p;j|g 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 z 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

u}WZ!G4q1 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

%T5D4ePm* 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

ZfwYAt8Ee})c~moD}hwCD!jTLVS>rv*G+HB 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Ƚ$rm7^RNI5u^3CR49l?+tFQ)Z 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 literal 4210998 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

62IlA?Ap}4>} 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

QWg)L#&(>aWnGX)JMO-W`{ufIa?C3LwX9N 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

3C&WJkiW9etoRFUTN_NXcx&2ZSrq66cd^#Qf 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

+$r}soppBiAPblr)9tnT$H*)GC-Glku|Q$ zS?QaaU7~WFYFG6<2NN~%)~kBHJZZYLptK&}=mjNC5?ZcZrC~}YS}@h?363qGmYlu( zYJ9%5{uuEdM99L)m*Pv8lz9SWDc)n9)=tVhawhJ8LC>qY&&ViB zF-=`5H3#T2lttG@PId&X89|q;Lz=oAo*$GB>Y~_cJw4lOQEO^nz-8f}F6W6lsXeGG zxY^YLG$YTkeOWjz;$y0uvP_q=4Hm!7u2!p$wT-!~2b^~#nG$ZMOfG*!X!L_QYdql* zp^{9Cf=?O?V(z>>8&7cS+ipJIHfNXUcY6h;4=@#pUp(MX3an5j!ReQ>a~wiquSjJpjEH6+a^QrM0M7DC=%K zRn^AtLn+P{k1=L@k1kCpzc$X+kuqTuUma)bIRkIeTVcGJ!ikvD zcD1+SIP_qadyoz@_vd9LUpHeFiG*j1k#-~{6Dbog^H3qGo->sE>teq~-{BQZ^w)S# zQb(^j0`y{M$QNSNK1k}wCRB?OjS|l4LDGx}8Gm_9dbpddn+?k1&kHVqT$HN!s{@}h{1JGms4NeIP(X-s zpG&VRWwu0#N9%K$gN+?*vKeB-9tKkr1WR zU;s;3i5c&U`y4u_p&l8pT`Eg?*^&?xoYbJ_#^psT>8B)4d4lG|LC~-6Z8-yH^i+^} z?V*!^2=sbnA#Uo>N%CR8BwKi{=D0x_#;8#*N#tZoLb-m#kf-$4c!SwP>^CtgW)Fd! zW5`l(VjZudFdHw8HnHwg5~sM@veJRaYov(rp>}JH2wA9!zS>%2o1(fF zb@a<{<@KwsbZ;kuZDLG+XA`}Jhx2meU2~4mb9E=uaWdgQf=BJR>F%)mkR&PE^X8$x z#A8iK0(`YS6D12abI?Y@iG4;w1+6hUuBjM7d+LGIgZMH3@S#rGei9)@# zZm*|hAP!uV+Z&Prx^#}h7g1{VsY=oRTsiLuJoEc3al`CUCzVai_1KYnF)SHK}Lb6HZ$=#RYWN= zZqw*d4=Ku?YNNS`wh0}0 zC8m1%zN`d8W=-drI`SV_J5LCHi;99nsX#IZ$k(Y>5q zE><(`>$pS#x7xjQv@F1$i*_%4GC&vIOIJjji%V68Qte)P9(}--d+EO*%P1{RY-U*p zhZLdc+T{r%ZG+7&#igQzvh)%o<>$)P-CXTUj7+_VRM{^fA*em}yFAzL!w?4~3bh_! zzeKBmm$>Bi%gm8c9Od*Sz8l=Bn+60`k8M*a_$n}qO*X7Lp6NRqNc!DJ<5T$ zsZGO7UEP-(({hrboCuKhjcGZtK~6H4X11L4H>TwzSLQ@%v%WEbdJ(B^OeovmJ1ws= zgv>YjkrVsv|6i< zmZeqCMUS>V8Coq46Yz^QV&#ihH$sp$v63gQrfeum23v|0*j$g-o8}A`n<=cE{(v%s zhHE1QIzAR~W;P;TDpH{PjD#p{@cL5pdW$UuYb1GS#?K8%84;mSu8GpXzlWCzXdwg8g%8zAZ{3_Wx{x5HI~wq(egssw6)a zy=fDT3o3D+)Xu{TF!l*f5BrW7$kX;u<id#g%EC z=viy;jMIctt5>F(lnIvj>d4oP;|#o|C@fbZQ!Wux>aC4@^&EOI%g9$>o|Ig47#{AL zCi8(^qEK_S!{BJyn2B}fhI!@yU0hyrMRHXWJ?Q%1U;5M^eTx2b;Sgi5PBVi2;_N%VC`Ole3hHav`t<4fJWxkQ1ry5TumCR}EnH9XH8 zpo@FFuE^Qy;sP5*YP55CxQLN6g$&huynGsl-;>9 zrro(fTHUAY&MlaruKN@u0bp^xb$6~uo87q@)vMQALAwM}O;J&jP!`UB;WhAIM908HX~tl9{B^bnRWnkxMUnc?V$ph7@16U%e=xo-(Po zUvpiE9zc)}RMMLW0QfhhN#$-qZ?Di?Q8zRk%c93uC`(vK^~AqpWvY2W&#y2yJ@M~8 z?A7&+_CIcp1wA$<>WEG?;{ zFoc{^kA|Fx6_7I@139My`JWf;TXlKT+k3Zi3B+>sfZ_A-6((1AKIFTc@352ipGvS) zf2QZz@6{r+1`I%xSC6>qb;(WMjz3m?0i}pau62`%kWs-*U%APg2IQq>KFU8E&sWRK zeC3t$u<}Kj`SNS6%PAQaq!=+%w+t(f%gN9C`mwEk)fNdt`?X^R=$NpxJ!WDE)t7u8 zWNY)KC$0p>TAzn#mq1FNhe{I4vKi|wQG9WnEm0z5gUq%>nI}+|mfa{nSLU&{M45UK zsa$sBvZT<`RLETqf40e2UR@4cg=_`3b}E$evhZ^kJ97NgR4Dzl*FJD1k#u>oONy$y zIgqwc(v&_R^5lbU5RFPw|1OZS@>4jK(QihrPVh0jZ;*F)*^gHP8L9G z9h$(yggbJ4lv@x!A?T%P1lG6%JL&V>nT>82?ZSZ;7fRSwrB3&_<2bzow{_MG%U7d|5R zrQo0lUpx8XV>NH8z00EG(=UR&X{!5*WO%!@Sh1dsmzTI7ZGFaT|uEh zs%GCn$_gz7=xx_KiZQ&&w(lr|R=Frg=(l#AKH+4ldDmcli@B+F`s71Wdg*v`QY_Pb zCyJ_r+T+bBvwhOYLpBa9>jWGvM}jBH5;Uw%1TY$xLaP}f>tc< zNj=A8fx6ZYjMPlv9)P}aG=9{t?u*r2?N8!EqzT~l>LyY)YT}Wpn>j<>rM11?a(026 zIaO!jQ&rzw8$cI$n6R0>ju;4E^lN&CFgtA}ly)Rd6Db=q@yImIoT2I86ufK5gzxA! zxJ@(J<*y65e7-I&6cB;mL@owB5?`aRPF;1<*g+iRRjg;O2gXCc)rsS7A{SQQrpiuQicSchid&k6?jVl zLN{ZzREGqCw05%>bWE67ijx6C#1H^WGvk}-N-e)pihx+_gApMMBhgnr81w8yIcwDW zW;aMV4oVQRP!fHOlG1>(LjqoZGjE3LqlCaWzi?eI%n(hGD?R0-YIu9Y!$11zQMX*riA zsNc6oWC2p3`}NQP*Tp{MxSqDpyQ#M;(4#jayn{CR4nA3zMrGvqLL`S@6H5yd)Tu@F)e?zMEBQ5?4aO9qBUAn}ZR7f>0MxY@hX&Nk2>o$tINE zeHsoyZ#xmi2!Vb8!uK*Qq&rO6*3#R9^*|(qBHU)ub6ykt%e0iR&k|Z$_$}&XxTOR# z3RBoA3YHRz*;c&91^AyNcQ}RL2V-+&6*iX`LwvCJ<5LRtcl}AHv+GX;rkeV@{zT*X zqG2tNu(h!Y%}?D0Qw`lDPr@a!z_1{hBrkJ zQ_!$86M6&Mrhy9c0TCJDPT~ZLeNXXVzle8@{2jy^TX#2c=-3k|C3VGZBig$;tn<_x zMMN=CS7B?2c4E9how~3m6fRm$G1aImQdjEQS?Y>~NnLqBZoVm0+6@{!NlW%WB+z94 z$4BHQMG2-c7+|G8>XJ4oQXN)wCLp0O(QZiWOo#(;Wd4?0W%fY)l5>h=u)pPKq)Peb#6^~Ej?xlGw8phxm zwV*GdGh^ytz#}YDiQ)vT>- zw`Y^GF`$aZSte4(hpF;9`KWNK+-I|5@C-0=-DPX!VrV|JgAD~s3f z#)~Gc_E77gv9mT^v0IqOztx#X8AdL?D{Gs8f0ccoY^0EElHoq08?G0t=`J1%iOFax zoGxm4@FXLW^VD+rfMDb~h21Ir5#i5ANUkY5j(O(RCPFZR{~8%M%gbkGWI)335i;Xs zNC9@Ez%7Ibbx0x*NRoMIH@GA!KAGWu2&E5pJRFS_q^BAj5C0QjzODO$Zf{0!%Dg_* z*41td(QBV^ofiEK?msZNqsxqE0a1*4Y;_cH@CjCsVJcE1Yjm-o98R!?LWC<@-%2)w zvYnv8Gg`d`#1z96jeh__wwdfVEwE?4xSmH(Dr}^XL&)jEat0qjQcQ%xuw{e26u5$p zPdI?2J|XpGn<}9UJ?rf|+739s^_{v_gXfnic?&Xg2y6doVY{vuTuWL{c zkceWeYx)6wp835Kb5VE8A% zWV34CUGiAmPE%?*gJ;!DB1Ph8hFP`yW#Qnx7>|Sh7AhHxgGr<~9L<2k{Q{0`6nuQW zyEECX;UsL~^xxnv+5oD{py>eR2#AA6!JL!8d%YWZ9Ps>^TNnlN56R|xC2^0pTax%^ z-P1}xND@b{B#Gx{N#e6i+konQT^NcVZX1!DgBjHO8UF_$WX>Jw++|~2KqN_`N|#LI z1=58{40i4`7p+Fe3L^$_3eKJWh>Rh-$Ra7Ux;XWctS$uH!ES&cn(7i4X2CP*xByWW zB1j)Mi|g%^v&ndJm9{cYg+3`+031B}Djr&$%xL8Jgwa=hVh(6r<_0~)X+!@N7zYn% zMC>ghF9$?%rd-sC%6vge1@&n5CY)yLnlRw3?&58Ug37@>@%vfEaovQh4sJScKbYBl^i9Z25&8UD?v<0SAW z9}#}jcbsjo#lTg7yW2z!K!PMk$WY}wN=}9pDYw*jlpm5Lrkk-CFL${ixm3fBs@#l( zhZewPc`NdF`I03hpAd9&=u66|PRHdq_<4_0HS{TFJ#x6-#vgT4vT*MQdCa~>HRh}h zSM@bSMT2#1)?cPZ2sr_;vdD&zsq{F0-SR;pT$czIpG1P2uOo1 zv7?;f8WF!}iCsae<7Yj>)mm;A{^h=@kZVU*+r>Pr;uDGX*YKxf(BL6RE1b`vA+;w%PnRlIb95s_jd^3cOA_Ucm5T zKt>O)%?Vhl&R^^me&P3GGBWLp#F1sb?AxHfL{V$M4i0a>{o#+-s|o%&Ax0-|X&LOlb+y7?ukR{G&2qAuHk;8EBFg~y|SC3A@2Pd96D=GkB1>und!i!Ge1P97yGQ9TZ`xJB)oQPoWRAi<22`eNzu`0&U@+^^@z>Y`OhAp_08FLgYIjwH zQNEyyKJ{7P`BRc+uJQhJdw=ElWAXkCsMxaD1+r!iRH)3)uZLf ze72Zjg%a&|b1Iaux2Z&?ObA1BB!r`6f1eWv-)|CMbRScybA${v^UcY{dbKz~x?sMy zc|_)(8U-MM+K8x)h+6x#cMU$jcF$sb1tm_ecjve)kIm10ED+pY{Em(XfyRF?qaCEj z9Xs$NE>Fg=`SG-wIyFeu?;Q=I^q$&i4C^Oq4grM!puh$&ULfJU)1%b>>a80cfA19S z1A;)6`n?|#b>4M9!9!suizg>jm{}_8=43OzX{NHt?Y%iZip;b}pgmeV8FjRS0WfVm z)%QC(PP-QZ06#OE;X)HolKszKKa7t4V^#9PU-#Kj3BEI@kV?Mp0;lm`H0%vJp6SV! z)@bEe_&57>&s1FZ>q()vnT|ZE_Dk>N^uhd_{MqUC6Rt5-#sp5{(zSSD@OztF!rxOP zr6ttbuiSg`A-yG_xI`7e?nm?*Fa7%wx?TJ$AiS|p1>S1ORcAC7!S)AGMDrL~KRUVZ znEmMFH;&tnPTt#*=xBfMU$a~Pwb>E_C*J?Xk+&(jjtv~9%q`s;Hz#n}^xCh#vm|F= z(wsO}Xa$}X^z(%oj^H&DLWa$DbtBqdQ~W6Gd}u1|7v70tor2Rlo1AbEb2qn29lO_V&n}P~F*!Gjg8`t! zcr9d|d`My3CvVU+k+J~gPYBBSZZ_ZIT*S!*4h`|(&E1NN!jkQzi|uZMz@)) zXV;kK>Nc~t$#&d4J@|3xx*R>%2HS7E5qNz_dG{T!(2iKvX>-22yrim0jo|jOcHg(p zycuZ)S*NoN4HPE;dxBF0Ctc~3+wEob^hTh^rxH4P?Kj@^ynge}hs;Z$`3`CRV%^|0 z)N(t2a)MWo;kw`#POzYcgz$TN@u>QaAi`2XaMTfOUw*se_8N2hhsX`;VdY0V75s0n z{O-?4 zN_ceMQEFdGc%HoBQ^EV|O1_g|GeXe4^U7GGDf39G{c_4Zm>Y@yEVC#7R9^k|R0$Q5Q;tu;@#K+Ak4TqW%_9e}fajm>n3LSeoT40k?Nxy6@X({xQ-5^*@DJXY9|< zmS?fmpZ@;$n7>^8{`a)#gad=ZPHxlkbCPZ>CaSamLp0mx=+}wsG09GTY-90VXqa?# zUA#cGcZ=90?oj!jG;rv8s;BKYeD|5pXbABuCehQ)?wS^9;rN2G>`w*ey$9e;@(y$4 z5&ei*dsxf49}#4|E8)Il5>9ZtV-QY0ql@Ygf5-+Sz$7seybu?e*A7Fxien87cce-5R~@z}`PDXu3q( zz#3=cXES*Dc^~u6ZBT?k;4BWZuD&7ps3Y4x^G;*|y}U|#$-g`uPq6s8p^ngX6en<# z5I>JkrG9>Q2(rk;_eP_HN&C&$A_Uhvo!sjn0Qp~(kn`;fST38KQ0%-52}m8?y<2ED zVW&)V+qnCIsE<18?U!GR$yllkOaby2Hmy@!GVWHtu&=QCcz1mQui1C8PTx|?dn4U! zHXd@|g!Ml!#e=k9#ib5 z0DlNm?5GP<>?Rb_6#rvEIn(B1yqj-NXoo~9>7ZW6lN~v-?F(;uHXkw@D2--jhKf(I z?LsSrSV&y&c(GIre7BjI8B|@x5oyfJ64LD#-z0W0qK+M~(Wg>rO@dJ*k5 ztF{I`hbkr7KKE9_0!aS4fP~f;(VVY0C##!g?exX_(aSro1L2p&(r$0><0dvIhmkHt zVRj>8=X3~mqvg`~A?_iwKYhCl%XK5~(t~G^>qj=XQzh4ShX4R+m3trkwJDo&c=GL6 z6mFjmoTX8w!^tr`*d)4?4*Ef(45)i`bNrE`-hR15nJ@)Noq>oja{V0SnGVGN}nZ+3CQ$Gm7~ zRpL0P$D3WaxN%3eec_#pllyd<%>C}sN#~rU?e!p?bR?C(SL$`C{r-V^T_UY}UFrt1 zUiZ5No5A5#xKzr3_a3CRi8+&r6x+|e8;GNViprsQC&X!X9$#8f2MtLa28A5%o?b)o&3cI_*{zEK#A@g4 za+!Cbx0>bW3>;|B1);x=3pN@%F73DOc@Xaf5U(ZK0RQK{ z_IFZ*dm}&XN^%Hi(^nDQl`aM*n?}s;_{yZ^duP_8z^B`3ecFB}Mg4BJ$4W+6>Q#8;E<3&l^(stTdA?s_ z-ym~+ODk7y^(3{qgC=g>egzT60VnbR*lVHy468rEb6;^61K-esa9lu<#&??l41j+XMzM6O6cK!}v?{bUO2~x(I8l#v@$^&C@|0cNvA%)bKplmw)S+ z`t{R)!$GhX5(2^^6hY=6Y#>JNYad!egJ z?>wSoP8^UJIE}VE#>Ts41d0zm3Nrq}AVLxZT5;p>gnYa)TurIl%0VQe4}9X*;i%(- z{U)!wxN&%LKcWEsUzUv_&^?JZ%|6g{yd9V3!cCnMmWvWuvOh*F#T@z1qE!DFA`Tea zn}khHoO?_x2slmL@6vp#a<3|rY?`>^VutnIAky@t^Uc*#+fRBbtJ|u>5QEk1d^vyb z^I}Enz70nfG>SzQ?N^g+LJVIq1J+fTA#&@8GoF&lD`$wE$|DD%=&w|%H=Lqh?KbFw z__bLzoE@y*gataEzyj(`GEUx#8BlLwX_3{7V*+wmt6W;_)X5avPrt_hf;&fg1jn`8 zo_E~CMsVD0#3LwitJR69(9@4#~9syXT&)lZxA2w``^zlevEU74F>W!*B0aDt%8Gkw9kA-*cl)$UE@L|;_HmS z^Y3~u8YzEX>|RdsoH|XJyC?*|CY|j_?ma7Bvdm)lN7nDHM^d<*<^=% z6BaJETQq>bKhWuRgoF7%|AylejlTyHu5-X#f^G{?(F}(|a)jyr01$4Uf79{7-2rY{ zr?44D7D&s7`Si7NGc4L2QT6lJXK4K}PGAdbtc)avyx@KV9jR5h_R#@~#Bt{V5pQ4Y zEa`;yp}DE{_}`t`mm2G#{&&YgG}o^rKxKpN>F7FI$L;7+x>=M`51!c+KI80SrUOS0 z?RZnV?Q`!WT>2eu_ucjhmNCP@8>y&69qzyYQ@@Tu`(=j^eAO6H2*9Owfy03~n2S?N zeG3Vd0l2Y!1SX?w=>SLIJ%3}dpvOn0X6DvE5L!ng2OL%$WyNXwCsNag`l!Unt$IX8 zqsXZJ7PW1+))BK$aBSA$fRPl|8A#PI@;|Q-eqoanTXuE!ma>e!>w88Xw$gW=mcZUw&WC7?h5?B%)MK497mEaIA_ny zv|5xzQW8m#)FnmTNJ#}slv=H>?rAjziV|lC5+cCX?97=3i$H;>7Jx!m0i@VwyVh%V z_AQ^*bRO1h_x1d+`6c`LB_iD;Gb^$RoMWfW)I?=f`uBy$-NW4@HqQzMw>_b{&32)@ zuu^eYCk}p*JY&Xzd&{6eZgRw%?%`%X9}a%p8Ha@9`mjoPc?$kBgJRV@f^J*9(?qxU zIa!u{e_7Bw&FB)uL~QvyQzGkfZu(Q7o-j@{EUS(?{i$nDKnUxrGwR+GhoQL8YVq?R z)$NZ_pXyiRwYQ+3N7SB54hnqnjv_@J{=Rif-IrF2+=NASnnoU^t)~bZ$L!q^uonS2 zg+O(>P&tPeYw?7SIN4K&85;CKRW2c4WY-~53}g#xrhDmDr3ngH0A)w8S8I2CGEkylJxQ8uD>g(KJM*$Nbb(E|pi_g$n_2m^yF&c7XV6iACB zP*qvpOv@ri)wUorhFX!X{2lM(4z@5RvOAt>dmmD&aj5UY@EB{EK^x2Yt>M z=dr@u=A0Zdgw_nT#~tT`e7CZDWi6n}V9KcA+2Z9v6Ti9#V#g9Z?(N!rK`)Ou`KyDV zkzSrw|G>2h5e#Q+D%4lbSMYH+6;WvUoVwicdhUMv_(Pe?aBB(MqA2W8oCo%8+z{`Y zlIIjVny<9q|4b$Oq`(q_M%!jAeIL?jn;)FP3)SU)D%UVx7?x^b}BQLu{g3@MKdEjn| zb@v$23_e}$ajiU7F0y$T6!7_Vdn3ntY8&B*oYo zAT!D2u=Qy2xOOUl(BUc|Dx)JsrvqCa`$NeYX9Pl*<8)iu9(S4`wh{>($6)fF1zCRT zxz0HF6|OjO;Gkhk*C%y7?izvk1{AB`b3{3OQL*mRpftkuKVOXBACinN=5z|<9TQM8}^u3^S3JaS@bu7u#CCC$zxA< z#tFJK2Hb6kaF|Ie-{V?kNXd#}37?@xq0i@Jyfc{ohci};8e@I#8PD*`5gm`VTh)8q zl>n*NMvUTIiZqMZ)VQF`>~w_U0S4<BbIlH05<=BV_E`*D0%6(muqBT@-E1@9pomts z&qB2lc9AX<`01Qn**W|_l&iR(r(F4|=Q_jUA>#mL1ZbuDEXD!OL|~ZmIKX)b+<=u` z#QbG+(8}{!EMg$vwp3ok;F(wF3|9@=F@8u1M*UX(xW_NDk!7*v3jqbmLV3eJ!(hli zmFTCKGq5Gf>bM3&1GQ+N)vWQV3gZe{rRq*<$34%sMbLvK0V!WwCwxhUstNBTKO@bv zEqPYRvScK(MWC2Iox;Y1l`#Tm**D59#23u75=~78j%@@zfs;60fh#ZBqL9^~SQAdj zvJ*I=P&3SB2BpEwaqNCr)pW3PxX8k2=$LUTaY)6|zysJioQ{usDnYVgT!PmW@(n{a zl1&nt1{Tm0Xm8f)&~vMg6~~@+JwZxCjN`9Y6PA=}m`9IUovuc;A*KJZJ6(;gf}qn8 zex=yLUIZ}13P&|$YTu8<$6kATy5tj<&}6OV8Ydj;LsA86Yknq;)5zAw2|xXShQ>L| z7DuX+LBn;L1q1ctz%<(W6d`h~C>d?2lU#4N!5xXKI(%F!FY+Se_Pu>fqcUT%*|@^& zH93KQa6hs$PVCJt;WO-vCT^96(HY^f|K->vt4{I->Dffc(hSE3ZLJP*$DIsVy7z`V z%}05uE8L7VF0K)xlZr4RG@Vo**J4Kylo4L1g<+Vu&f;z&#@0b>$S$osKybs5!^$eE zCmiqwf9h(f1`Q+R3kk?wx9rp~QV@4s9gwP!cxYRZ%1e59db<`D5B2Mh(2q}2KQ^t| zQS9WXZ(bI5kk~U1ap+=KE%!}CcSw&5cW*f$VePVup%GB!4x_UxD06~@{dB#>Lw0Eo zM_G<}Cl^D5A>uY)&}U%ubzsCLj^m^Of=kd;u7BKu zxqvAbT1HG<9l)49#ne+c zX>LfZd>1T#pi3%mM3!sH@@r+uMFdM}XH-`176v?CXJwx020*fu@B%$K`R>#$jKJ6< zXz6L&T}X1uvqC^BKL~B^zG;VYMkt(?tIX}S^6=tW4oM|VvfSu{u4aSe z;(R}lYM|T7GX@FJlI6 z12*r7!RtvQvv2-}m+Jl$?rreS+!=2zu%0xsq#))2d{aqyl}Y=;ebcP8Lf~=9$mk*L zZ(-hVA`15sgvK4F4q}}wWJYu=S0g{kuOW(p7fZkgV_t6}GsW(dT2H}$6+Lwx;7_z& za${7d>=5!QU+1j5b#5O^mB{iU-EnlEpc?=|?aYtE;lUJ_`yCt|Zcsk9Y3+Kztm%ec zqw4`B5>|A^VsRn_vAs%cdHSCSuHfedKc_M8<@zM-lyRrafE{F1iwR*8o>vomr<^xu z>hJX)UvspMdq~ub&?Owu$ z@;CC!;x=Plp^ADQVF+W?XnKQWHY2oj@eMk`l6&g{b`%$^dV)Y;XLm;rCy0N*Evip? zyTivgORbp|v-ee~4227V)FklI?eHKP1I`3c=}G#@ReQFu4%2naAg+ATi$`hSGMCCy z(w*tky@zAm=@_m*aul+TPuo9fiL0AxDc4RA8ZJNr?Ct6o1iKbs^(qglh>Hm|;f|Ol z+z>GzEqSMr8VjWeMiN?HOlUbse18%bR}OX`VIaZ!Z|+M>4p~!$Tt)c`X0ii z7z=24Y{iwkD`wX6VT)C8;W;fU@?uU# zKed$dck=*=BwM~yD%R47@y4}HwbW@ zFQ`jbxGj#l*=g0POV_hT6jB4qy6`R($X0XSOT41$3X=iVwCj6c&Qm-YK}F=xaXRHD zNNS{l4hNG07(>jf6ps6Fgs?jAbC?ZB$EJQby~n`YH&Fba!-Vid==7DMhD zD^J?2h;c=otMa5LsFZpWJ*&l)bDFAM*&58w?Y5|L_)-ZfPs$;SDsQ)=k^FpP3R5tglsD_fjI2(`D6zF6SYfP!$etHj zp2V66#=ZEI!1*>nwV1kMcgkbUF>Uq=!-(E~-{2J(7+*z{ zCswGW`iU!Ih^0PiANB%Q5r4=51nUUIlK`y(BMsN~$|tJuclNME9qz)8Gep9^jp6>| z(PYeN{Wq%I0Cq&!&EaBKE|c$WZP*nYg|+j7Ddh-adjCBN60Tco2tx|G*Crgsn_sJJ2Yhr>3~@d zsx%;axj;OzhvU+RgUug@`+g6X#ZhG*gu&Oy!9c&dRs^X)c@Zdm{8zv_yzgz1*Rn&c zMUeN)Uy}T9SQez83esV4*~XaR?|#ltRu&+NK*I+H%qAi+6hak<)Y-ODe$%}W(!wh- z_RFy)&o{s%a(NA8)5 z2dJJ;scs%^4LH)(=_Y&nG6%~Fp***I|HgILm5YQ0b)$EaXFYyzx&wD9=nIo1AOon7M}lPI|UcJxfxtXDdH}5WSL2R8zp|C7+R>;%1FW!h`tt65+yM zoCYiI@;Tw1wG}0z4R4VroaJwH73Ld}nX7&Wo?j)x`pM^PUD=^18wHUF*Ou&tCErvQ zYdmQm>}&TcsFO7AcCzQ!jm$%@=Drs?S9_nkln9Bm;QN7S&PS;yLiPkNktga5q>Rw= ztU{fSld z6o!L+3>|bDjhewVjhg zEjK_xG3=yKId}B8!Dft{gw1D#ovbUBG~uHnt;Ol|%^FMt7xpo6z9e?QT8K-{Z3P>J zMwgW(uh~AEjl%E~O`pw9tJ(MlFI%+40KwuC&7sCu^{qQ{eIg$;;bvn#X~JY0y;-5b zPrc+md^uuGvON)Ln~>rWSu@#wk>2o{KOAcC1R{Tt&|28Q7%;?AK^Wzw4nz)r{%>FY z&42nE`d^v$6O?uD2{MK?itPz9JhKm$S5tP6?WGDU6|G)gBwF0QP_5_h zx59$s>t0&rw^duOW}WE0q^iS!iF&0~-d}Rc)}^<+L1Kd~xF62%8k3D>4ck_f@C)*) zjAEy*>+xlTfR;Y6Z}#Qt1$u<~)1ozGzRE5$tx%yOmo3n9t2EAWRbG($78+qe@f|Cz zzlk}Nb6)Y&FeJ`5p<97MFG%HPwiU)fIF>9o!-1BJ$!f~)m?fRxH5#7_M?NEN*Y(Kymq(Y=RHrLV(F3tl~~z+m~V)l47ju+hQMt~3rardo#C zwYrrk46Rr16#e+eVB7yA^do zJ%w?F&W)-GL-iD4$-0UNL-BSdd%y)QN*HKFPhrPsYcG5BZRJSg<|ox?_u?Ja(7LSg z2>Yykr%ILUhTH5pw3Q*aVfBbf{Fm+o`kei3-wa~5pjp=pD?|W|B;3|pjg2VcY5VK? ziEe&pMmlpRx-2kgRn`M_&AM8hZp7(2^?g2OTf-rx&iX>6aS`y!KCGlT_mANnbNi); z0MWIRQoewlAGV<48$wMgfI0USTfJF73Jd0>)SX~{qa~AnLeGv2v45ec9DF9{P?S1u zSNt5Ey)w&ElE1b7v4hg$kKwn5J6|fSxNSi%xORtYU@n5tEUQF?Qaf_rh{Gj(^YwXt&~a<0!Cc<{4&e_ znq&j~N*!EVTq?>j$;LC+#0nGN4r>tQxi)Z6J!fUo)Tjr-j#z$bw4fZ?WhC*`7{mhd zEeBcW=Ag5;C0St^bs%P|0S$~^wnF;s)!;~Ey+rN%LPCU;e|Mjv*r-jshu;K?(qOmW z-x+P;2Alo^x`br|sqf+Ri(HQmHa`+tk%G&2x&(0;e4KdVamn+DeFR~Wn>*NhOy{=N z)=5O62#<_H`36eqkHt#$7?j@elxQx~JF#0P&a7?S2^7T`sdkDyv)qUVR{!9H^huFH zuNAH0GF!xZj}DGL#vTAm5{?wxy5cG_zZtLV(Bf5uMp>UTCt4U)@_UthOYyBc83y%M zbbzZgX*m>1@AbAwD^iJ;*Xh+7O1%}~91{_LEkqV+MIzAhIEAxIj{zEQJ58%Eo_pp7 zs=S5YHcF{Do>I|RBA3A~wqtRk4Z6qEx>_EOW^9iZQHuzSRImp+^~V$gG|oT;v{I}T z!s|x6U(CCF+0|%N0?TPwkG{CS&j+JeJEtL;`CWhpJ!1-kvkt$H6=(H93Pj@LyorG1 z6sAjochBKz0>1>=nc>IQMg+k4vpj# zF_Kxdq3l_Y#87q-5sUufZ4p_OoRmCcn(VA(l40vq=0;ba7*=ubSi^*frawk@)`?&L zb(v{c&y`Fw2~K+~5-Srk1744Fa0Llne=&pDli}#m4qfIxJ=*&i36=ImqX?$-Z2vjy zHKMJtg>AsWG14A9AS)PL65dvV@JNdv zgV&Z21=)V{%J)&c>pZUj8F{?q^sq^zT?|27kx@!4DDFB6g1uI!J4f5w@LM{LR#ip> zdudIDR!}t7=~}M=sqoi1ejkfvR4YTk=xbo71xE>{*_ZHz0_HgV{?U`Do zmmhws5#kbMSEpjOBhbld`T>~~5Sobt^fXOMwgTjxikOIs$x%+z(7z_)aRN``0s0z1 zqiaJC0s4r!*@i2I->GGlBTbhA;o%BB+1MWZIr3qAm)6rW${A3&!5GsjrABZ?Vy9%nf(HO{`Rt8;!lK~- zgRShOLebs0lQ(hIaHLG^svN<342GkB1w-=@J;V2aBL=7xLTiO-t%hHs&FU}FtUhZf zmD{HvR07E)Fr#BiP`_eVoctQ7r8pJ^D`mt13yRzwIK_svaC?>}A}GK&O$ETdMa_#A z6v>Lj!20i^cqK zclvQbCYd4rCAXRwhW?C3i{^p|a!-JHy=8FA&zlRlqI7Q?x_3j=JQw|wT+yd!bQt|Z zNB3pSI|y{CEP>!H2<4ALeZAp|vnCWmPhsBIa=ej$b{6xFekXPrD$7GxI|0OUf6H;d zA80uCA1Ql``lQ&(D;~RBPM@_q{Heg^<6&wu&u%=t;A)jlFr0sc_9T!_TN{>MzD_Gx z`kGUpEX&ul58gGpHJ$>3@k5K$r=Rlt!2{V$>yjNBx^7yW<{}o4 zsdX%CcAnGh^=4h02Rm?;r<2xnotHl^YZ%tR{a^=<`9WZL5_)wI=rQjnEM&x@>1jH6 zj4?_^6JNo3*SH2YGPct7vn)9HljDd*hSoYH*j=r$Ln1e=pklbciB1Ev87>Lk!L}cP zwr;S=Wldl*irh#aEFWZFe(`+^hQ0V(A#_30|g{_2o$J^69sPS z19*1J0wPer1x!?OD#fjZO99pVQ-f;Q{8?QAL1{&C?+)q}WB;Fy5adHq;4n(;KZ1>^ zV(hgtUQ{cDZtjF&bguJ=j{Ur%8-3v>KT-&D4_ADU((2rQ2yZ*?(8V7bbb+ZhqCwlc zFvP&Pb~GJsAMIkv5Vj#aZFmK2Evf*l3?d}jh(PuPl9md(0}*>d`6-neEUQv2=UAes zA0|Z&D-cvMUu6T2^J#%3{hL4f!6thFo0luSI0#20j>3B?yu5fTgl(H|12mY1tx}k8 zf-oBZ$vFwaIN?T}u3IHH%>)P&Oduwt2vNQrSyzz-Vlj%p0rxk&HjpMfguT)N!x7B~ zp*4)+QJyY$Ub+uym25S%Jw(71lO%;kd`-Q7$A9wo~=LEYgsD_F>?}%^DA7 z0cW0!!S5y7#OQd48;TG^yG4dltwN{Og%*=eZk&E_RKDT>uLnSA`QwDz{utvW5yQN_ zJv@}v_eUSeQr zh*G0mSeO-L&(LM@)%Co~jV}fayckS3hz$#}kM7Mu4J8X!%%+l6CBmtfSx`EqceP@+ z7O7fW;?#>!bae?cv@J_3859Bs=6oC(3Sr6m2`TUO>?FyAWLaT{^WvJ(1#fbKJwM_P z4>>Ksg9nr0pN~d3Bi^7ko*cw-5lVM6eeoc zr>n`ubR*)zXab)TD<1gabS~(I7KY;qmVvY!!Ug6yPNzrFAwlgIg9%pE(3}r_TWFC) z8vsV6)es}{`Y}4e3EXh>$Vk z&2^bl*5Z^Brl8`E&i0=s{f6^e4{&=St_PTqKjRio%~4HZ7cuoq)`eC}oa&k}dKSa( z#V>Kz>)AY@@N^ax_GmY{`7!JDg!n=RS|N@`682WrR)&q?bOuYUwhmV?Rc0}DK^Q}UB2{nEoJuEs+5`|1}jv! zBUs#g1Oo5!DqPr#p$QRGo>(@YP*~kTabY))9^$Idg8U2MZJ%Zn@3@09xGb(`#FeKv zkG{Trea%9EgDW*Em>SK&&T&f(LDVcr5K2wSz`vDGNfi^}mbr26DkfQWK75IB-CTIi zRxv|!XYi%X$L*wb%)lxMseq`s()@W3uU0Ot>5``E0?WgNTUS? zj=x!2d1~|M=FN2r0ENG0N-g)h^ahXi$8>`&)||3vec7Pvks3|jTHDAG6p~#( zc%WyY8>E*FzknT?KdkcJj=~dmhFT8A!Q+$ zu4TEoYRjSq5FUNP%?R2Z2W(mlt<*0Z?sVL%p!3S`5N;ySkyvDh#)_5Go8eZ17H~A$ zCDVjt%~36B1LF%nRfM}CY4{7gI^Z$^siHm6Xad~TJ$BzDAjeLV(3i!nC6m36u%Y#|~Q-*AISz-)SrqgFf z3t%HZ7OPVr#3CtsrN#sj+IwJ{Hr!<>u@z<{&V{wqQZpD(aqNq8dh}UQM!aQ;0+S%Y z#@M-X{a^DAJD^1QaRMcqxyyoJK441J%M(fzvjhqD*FTr{?3MXhE~vp%93*#TSB)L_gAgcFzZnL&8^zv;vBmTo4$dvGXca^-QwwCm%=JWD zRUIvmO}w1U@|@Qs(k5|mknUGNHXv~Rv?H6#2RFZMEvZOELqy-Wv8p>shz0|792)+FMH(f!;k1MOKDi3?AIM}&e=q&% z@xgu*bc8rO=elL|EO?y*y9&@!p_?Y{$?fFWizP z(G}5Gg(yArB=s23%i&-yPG5lWOnyQ_)Zk3*^bA69z@8J4@pGAwoH)V zI>7uVh$%taBR`V(qh>nLw@y|bMQ?TCHL&B{akBE#gtJ`dA|lHZa(@di{Mwr-jz2g~ zgO6NTiAe4SLo4pW-WhwBqmKSZ*a(7pA0Cd zD0mT7Q)UAMA#DOMQTAzE??3oIs3(wJbP0~r6pj3VJv(aO!pHXL zfK2v>pyZ3vF+EIDlt79$BrkJ_r=9>s z@GwHUUf%KCGzxL!9PW5Gi~V#(Wkw#`@Pl8f*JQ_RCN&;@pb4_E_WLFoRpM7rsG5qS zuokBK`<`RR6OAY~=*n~4N1D8sQ+9X=Uh04w1vK+|fcwpmJG<^T)Y0KEif`e^!h3x7 zaUtOuko72}D_@+a?2uhJ@pF1Md_{N*-&H|YzWA6FC`&q5kHt&M8gT?(=hTV+msJ0PG6a5byA_I;p7COqZu#4 zr1b_YEfqlI;8j2ng&&6>BE%DCfmSF?R+tIOp?0ANV9KFqkglC|vNoJYCV# z(@h$F)a4|;-q$HcQZ5YqMrg5FJj`;WrXD1gCvVEUCm7dn5Dz`suXrHb87ic>S*MPU zX2d8*)B$0rG>V8tb^;22RmlLpn~o1AJQL$rIPc)DL9yy^@#jt55V_Sh#65Q-EGjlO zk^}zTdDqjta;q57QCDEVU1o}nB#z#Mfwsed{&V@;yBMn2*2d0+;mro_b>>tF=`x$H z_2ESwS<4?hkfopw7=D^uY$`Y6wJahWQ~8=f7F-$ji01XQ%3#yvV5@NXGo8)gn&8P~ zgx=2)`Q%rrJ)t%wZ7)S0ES#JUcw62!^*t7b~qoIp-^p1;yq>D0#&__=& ze$`3!a5lcurxXb02xk+)s{CdBGVHl+jNAoPe%Q8e!o`=GCa2{`)+>)rp|a+C=t|GQ zkWRM0P2qSjfx~JynEr@e2|l5XldX1eNVGKj>Hwt^s$AdMi| z?-h`g<^+(v2-y?JD*e?LD~oYOfpu8Z0wdF0IFKAo_dmdu@Doa#32QqB&t0E_q@(q~ z77pUWVIRcza2q^{rwpeezI+!2q4b`5?1&%z`(OW`8Vk_YVNPk&?1_pPQUc^@afyx@ zVFi+40*rLy$>nQT`US=9(ZMu(2VQb5>|wWI&X$ESQ8kPyhjAgUfFa=(2tYn|W4(h@5zslyTkI7Sc7tVo3Fe#TFghA}NcI zu-yvx791W-`&X~(K)f`bJi3ZIO{Z63hehsC-M`vGyAq+_D`-zaVc(=$4WL@rh!01} zJMiVY4lf7Bhd&=(PO2N(i8arCINzl_B~)DMq_U*st{Vt{n zN=uls*5$ryG0Wee;PFkQpp_dX`AshD48Evvjm6rY;us4yl0AfVpf0JB4+c+Zj6kyG z6Ib3yZ}2(8z|^$J`Scw|5vE90kiTWc*lGk6)pO!r}CH$ z?7=VJT)VNFfPlss?G~gZroo?G_wMM{o4|{l@_B~6L#Mmc3-#QFek*YBbwt((#A)y2 zW`@+KtK+#%f*eF*gcp(J872WAMuEDc&%sA+H)Q?hBrw!cI5{HL3-ChPt)i2iO73*) z{84OdEmn3s*g)-^M`N+y8CtmJ9spNv^o$Pnw_lWP6goBQB$5_}XMMx`D z<>bekt@tBE_$pL+`9@b(DAI4+ilh|)4kKi*T`JhEmOVK(Sf+CKuFkiF?=1TTqbIIb5 zEwfqekh@CP8arM)Bq*E#qH(lUS8Rt_Rw$C5iANpAx-u^}s>7}YI@+=#h_5J9qKM>b z>4Q*9IZh~#u1F(Pf156XXc;G5N9wpDjgqAhB))BIK7-GFki;5rF z2okh7d)6E*G*ok;BAhrk`pMExq#tw1;?FbeP(0lW#W$LY7wlk^fA4T7CgH%M9K(=b zt94u)M>x}q;xjH|#FW)>&~U&kKW!*ze5aWwN~@;s2-Q?t9*<_%WXFuD5vH}27Ry%S zm4?#U-}?2DMnFV3KJ{ixNV6jB*wHZpBFfgH=wUCVM}#9nt#;nL8Gg{r09B#>rBN_v zujNH3Hg9}Ib&^)Qqkm}>C`{u=>?ecN@|ADHg4bYyQ*HL3x1)q2ah0@cTx|Am;(Lks z@^xa_iVnIOa1?(+3okWN(L~!BY`IbQ)o>1li)*PhhYv zsbI=??{r~5d+_Fgk0$f+G83W9O=Dcf&xR7{5|@X!c-3%R||k)Jlcp|cxxGN92pA*{^!%zwfihORXs z*SP{FW!DBf+L0?pkWXfRY9V;Ye+KzzfxS(PE$qxrCxqYthJ08UenT8!SSHqbVo0oU z$%*9Pgq?OD_CN~df<4eN?Ra7snFg6XkqLXU$Slu&(}D(0nv{_^;lJWCoRjyiRH0;! zP{)AhNCKjL{<9Vvs zK_EhVHWR^X_zhAK5MDhafgbu0EwxwgVfBr;Q=AMqHFiAoiF`zw3;S=5X;%XwF(Atj zJTb;npD|wqGB|HKE*%YokqgVEe#%uC<-+=jPI~cPK;>Fn8$tmvbXj~z3_w+NS+gNA5Ez=@O~l&5J(_NZWb8&eu$XIg~y2Zx8q>_PJxJPikInnz33 zG^C_Eh3k`hN=><)6#iu!J z71lW578;t9Y`Fh;giK3Rdsubg#1w~oveCRkS9DF^XgvMZ2LV<~$I5N1nzyW#6@Q>ZbcgHYd1ZM)7qu7oSFv@psMJ6kf59ods z?Y^o^P`Nt9)%n9Efw#h_YO#RmeeCruc*h~Gr3?l~Ofe3p{GckwYRX9Of)_?8i|!yp zS>)e_RMs7LkdCl?2#Ks;SmEA*`(kik8MREc1?el~J&aC_eHvVm2D_ub)RorJ7Ni2D z@5%>kB%IXp%!;7h^3PipLSbeLc}_Nw5n*Le$QsKAv>r?AE2}!8n~4(LEJiUQkAa%Zm%b{aSFL5Z#Oh zlKaCW%5xihBEm=`T}^-F2G)+7QAbxmqRU1Ak$x6HVCE7ocho;43~$0^g&P;^SvU6j zVxL?+u%eu3^Y)e7@wNp=w($}I?x`aAPEzhim1w>(n zBN_oTEp$*0bS;rwJQs)#MWNe2IdUDN9-N}Aa9Xz0f@)V_@?_uzygX#&yc!?7{ggqQDN^C@y- zz`GLLZ8}ENo6ZozgZSlLREvA+hKHSQ^J5)Qil?Z2co$GPK$%e8Qw$AXcc+M=>TbsXU@VDNuuFc_I( zDvl+1<90&D65#-Konh+I(cSlP3k|ln!={$eafYeO71ovT*fvhzsR2UEdgFUtPCq^> zLa%jQvE%u0loI>C5)5vpy(qnW`A&FPL4x9*97NP5VQiE z%WEpjPx5_kp{EGH9`nO`Q8Rw7*VEr}mRKrwmHL*8y_^*L`pONQ&}y+)ZrNf((R$+3 zNzq(1j$0smc7xhoW9fL}Q%9D@QrBaI7q2u*sOz>};{RgOVUMy85=-JYlG* zu8zd2ipJ$J0tR=IjL;o-P!)vKJ?|`O^OWMykQ{KzcjFE!{h6hM+SS>xLcxL8{^4Z2 zi*f!@F&!UG$dv*iWz{cSOYS%uR&Prw3`kEwD2%N78N6Q5Su;eyU!4l87yG;ufc!AN zVQGomU-kwQayD|@J319svXwhIdKdsKZVf>B25$(=_nrVa>lUVxTjyN0An!TQaSKz4 zZlP@Dm#^0t+pj@bol`2QLU^)|{2mx&cc+J*Wyd3#N}gc}p*(c4(DF1>yLaaf1KnO* zU!fsMy;7?8`*hwe5v8t%J9?#5f`o{XRz80NqHlAsDnZxl4o8jLSLobFZT48mi+_tF zvtZq+{GO8^!wz4+ISU?yH6u_}#6ChHk(tF&>zEO!5+Zt1N#)R#?yedCwJrA|eEH>Cow<0<1e?4v4=pgh3RURj zGlxL1q4TMMADEP|rZc0oXgobeSP>u#(QV0AylO?*74OQ*2q^q)-{01 z(U2_Fa6Ww;&TvU8IZQu-S1%s3#lm%@#j8{53_`=nE)`p`;Haut<$F>IIZkbjRNme` zLbk8L?vue&ntb7+JfVUO3U&l8wrV-mIws<9%9BPar6N3R_6QF}Qao6r#qn71%9zwM z&kdzhCu;}UhjnOobokT+aoKHqM<;71Qc9t6ZDh;o`!y`E(rw3+5mq`+rs7~qs@LIiBi3AP~TJSq=eLVibfrWo@8PXlPMxsP?ilG@DY^t+kZ9&#C62)`i zFp7gsb+BZa*@7!i7ZbN7hdUde)o^AtKe8t;?aykl~wo6XiU5!rh0 zGs4`A?DFER8OY$7stEQ~B)qA6$1S8HD-0^K9|5h7nn6X$nVwWraS69{!xsjZ(;N(a zilmP51Wr{6hSXk9AaGF)vWAu)tR#n>T*C!2BYj;l(F90e$g&|*f~^U1!Qymq2gx@u zHtzdkbUfkdPz=H85e}kZo*;|u$E{^aIcb6Z(4|1+){2M>%hfn!r1zn(!J*6v9NB3@5Ac#e* z-cwBe+_QA63dfGS&3GWDX5K&y_ZI(1w^gEUu%wpITR5)m)17V=_v>_w%UaXN}z_fPy(dJAF`Q%&AmK}^X5RmcjP-7-W>TLUt+>o zK5qts{PL}}z<}qbiop-ET%pNYmsR>sU);nmCnJXUc-mE+jxhaSl)Py8U-C~jW=o;31u{TRmqcHDZ_rO0Y7KF^<`zB%6C z|49xzMh~$h#k%q;op}y-#}otXSY_98Buf~;?l1QRLIxdC262=-s`>^{H>&TTmlv50 zxj~WL!hv7Q&EFMxe7}6|ZV(0GCt0{`R_ISB{`2nQW&6Pr%IA$ZK)hQ)$UQ`G6rEy^ zOpmcZrG-p#9Z`1RqgO?z3}waQM0o!vtW;HO`PMoaN#vFy1-^Ud&Oc-As=x3IWf*?u z46WE^hGH0OWB59iYD3CdMF#0rE3VEuwMUgCDvS|9L0owXSD$0S3DZh=1SOq!6cBsK zp|LpL@-9``VZn$|d_-ARvdR}J!jc1PSvHVgGp``K(*b;y@l|SB&)ynlqzJGRRlab; zN(Ss@^8zlATwr@J$k5?kOz%+fM&kHzgxgX++UI5iOqFBD#G2M*P|#uU)@) zi|=8+Y6SK%?c-(}9gr|-%9INU{~ERAb~ zfZ!v~gL@qR3bC`qu&hju9*> zs!4C|@w3OI-x;wR^tWbL-B2(4K0OOg_Po3?u&$1?M@|_eDHQz(qZ3C8RHjcEkzo7a z8va_oW;SNnrJBCZAWTulLWB{@QO?l;Z)M4PJHVMS>>1?Ts6k*fO(6b)ZpCzE$|h+_ z;iM3HY0OkGxfsaUN|@x@7%^i2C(bPORvCSTi#D4k3d{8^`QO_M8_MN(3TZvQG7&s`nJL5uT|q)jexDN-STxzV0AE<6iov#!6scfUFd7b`?To z_bE8TxC|x`jQcp2a1r+bh1^l}$R-UkG~l>a^Q6;YVj8J3=V*#R!Wf@=oS0n3Jt2YZ zFi6m5MoIA4h~_Ur7eU4%1%ZCPXweUrwg*Td4tERMY8(Qd4nygR6*4gU+WXhz=zxL5 zdrW~Si#>qk0s`!6q?~t-_Er-@tCkSTa;c>(TAAc#;p#4Hz)j`Zy3@*Gp$IMJ0GM@Y zHT=w6S<;Y0Ie6smj(Xf*(V5AQ+T7=rVjmLAz{%~xyJ!H$Y+jj_wX z@l0_yc26*nWtVwNu7ye3Q@3T8ks|fNS4Tip`HN+`84P~`@$Iw@;Y&2dWs)t$&YF-@ zaSF{c;}{PPr!?ff8t*{n%k*um0qKrvT9t|?g(@pas^*(XHnC-jA{-4A4JLtDl3)$g zKe*vZg&HhiAvX8xvU?rO~&aue`~RE z#316F3X4XIs53D_330s2h~*OE?q^WcIi#Y9imQ*3x{JX@kh{a55OFJ~MC!0XNrOl+ zZnVidV5X{+YEvMTjB$|P9|uQ@LpfI%r+n`lxe>WvT*vPabt`;=7YO*!YKl69ELu(H z>3U^Ew?(TFEc}mgbHs&IBUK7Vr`fD!Kb51*LN>;q%U{OKjHIF~>F==zqBw+j^=Uk# zbTsZP)_g^F)3uea-4a;3{g$%f6@ev@lZ;bPvi<0l4KYk5OJ$LGa@mdI;{b*c>*DPh;9x7;ZmTN-iH0Kf3ZVPDJ=1R6 zZX;EglIUnG!bmIEd4uIS-p~Xyk^u$7_tR4IUQA8xvAKDE*=&!gOv6u&M=>`n0=S7? z9T40urgGG!vv#x5g6kKosS#{0ULs3`g-f$^X$QLvwYE2E43M*OYYMaGqhWIVm_3J1 zMTt^a9$Yvft$YD_FIo7v^bznMr0?`8Lj_#zr%(4DjuE^@Ijz!LoU>UjQ=vjcB;yKW zkxc2eNOF00O(53-zmJ=#fB@ET_3HWH@yoz!iLd`b@)kI zT=CD*c9^r?W*v1?>7q>2H^mCtY&BV9-^(^T>3gZ{e%K5?p6U@B);ey)%{r^3B9*Re zGJB7w+7C%?`RcmvJpm_7=`rg4Y$~N+-kk3(@Gdm)Ty zTf?7d-FJZObVwNL+uMTcAA=L_tqeH0TSalockdfIvJFF|mC{)aKSM$4dmy@d3#;#| zbib`^|+ zX@vxBrdb1Rr`&gWGKnT-dL#;4-BdOWPH(pWZ|;t#NXM4q=et@PK0G*BBGy+4j{rqWM7lg`D42ZmrBjt8XP&?B=ZRGRz_UF*FV*@$mNk;%r z@J!p88g+y-O+g@v!SqpjqL;Vt7;T7AC(1-~k21@PYTt?9TEvQ%UMoA;`V)i|yNH{o zbbSa;O0uQR!%J_M6`8#t6Tys-SzgrZW*ZT~>kX+R|a zpK*@(hCf(vuo>7HPWlCsM>w_2Q&lRoH{u)ou*DIfJ(5|zzS;))&B}FZ+c{>_C(oW4 z$(+G#?FVM2y$(P2Z5r!gq!ppmVGFAaGJTuIS~$ooF9N?65gJoohXc;^U$t!Z21O6W zbY;i=d8$%mn%2!Sbqc(=J_8ZFE=x;SUYmmn&YiY#(#m(-QRqiwKF7QPqH6X^k3^H1 zghj)L&5ABBDa%>-AbVQL(u!`0|8`2tTjwiQerr$9;iJVXN)-&acLnarkTQT3)p&ZD zS{EHap|g0WwRxsA5v!9KhTa~vFG!Ux_~s9SdYvaw8ksLs3nNtY!7J1WUuAl{+%Z$X zZAE$WW2KNrVd)fq0lul#CEq?lyam3Kn@snSOL2o^Ht2*wS8wpG4Q8JzWJ;3HUm~a2 z@Fi;@o-RIyR|+!G^IrZva<%MHN$tM7|qMa0kL-|HV}I|e}PfX4z55dhFX0C1`*!5)&4 zCgMMxi$4kYx%^xH2coZ3qNT&?=LZkSVFAHvoa(RUKA1IqIGwR%O#WOA?FJ=6$VH_AVQa%$Yw|YTlw@#j2&I7Vi61y%u+8sYc zP!E}(+2Q3WQn6?q`?cJhN@7135stMIgwxqG3D-)-()^M*Pt0UsYgP7on30jh^$A)6 z?~~!k7`oV&??>5L(&;S5vnvcV%$}Z7TIu{ zO?Ic{C|2^^eKu!qgwFD`SgCNp*u&jz-fRWQjR^GNiC19UFKA;yHgGzBlfv z*Jt*W-jl5$k+_B-qi`OMcrj)nb&&d!vg0pA7A1Zqlo+RNyU+z~Dc#`u51(xG_k-PG>%@+(1a950$mVA6v z)|ObSv8{0rPShue76jh<_rLyk+T8qOP%#qmadhWk@^Azz*W@W&@g?M0z0&ud237MI zp^F;M8$fEGeD(8x`(OU%Km85;&#nRX=Tf+`=tUNA;#U@$U;b%OJ`WqZ=;0Is%mP=` zglN$yWB!srF>zsy5&IG4TXM~4KJ`Zt<#Q`R8X)4*RqFsV8TS!664kla553tS7FX^1 z0h5@KtJ5x~r&V2$4&2#|EWN&B^OFidQhr*xLJ2aQY>y_eW#Wg!U8j}owp``Ob}0&# zfrEvLsTrphtL=!;+$9wRVq`#}F^9Y<#?YXCu&Mssf_ zEOZcOUWDHu%QG?rCVgkVnb%4wPauRR%CtRbI>dc4JJ^z95r|+Cx}B+|Da@w~$b~;P zwxn49iCo(n-dLLn3xaWq7J_hJE*>G08adc`^He;+wH`X=ZP67UgK9JN)K}tzxyDi9 z{S;&wF6^fOhhp$RzeU%L466OrQ_j9ZTAY(4N_jVQN1St`3Q)SInl3}SCOq27l1?EQ z6aWkZJF02;({NM5AZJ(DbgqIE1KMEhJ=NSA(vOt^1!PckFs$*Y(8!>nYQJ57Mn!>o z;?~ZsfZWJA-`0-hRD;rsUM>(njuis8rbE7xRG%Qh^pDgx{z5mKv04Sz?<*5;ScU(DAMqKxvF z>+x@(+=?jV+X8$EODD??2GC?zgzsSrMhS5rq@;;6m-{)*&9~5DM;)kW$n8KO1 z&B4JT6yRz(yTlPQHYEuNi-~5TxqIZ;%-)e8Z<7lv0FzpV7seE&F-fg-TF`G|4MpUDd}0)DjO6 zpo;SWA7<1a_s36m$@U6@iKkXJLO6&K5;a)}Pfo=Hd?~y|SB>HJYoh{D($hWKa`Hbd`Aiqz4P!Hw+6Ac`2je3C^ zq|Qrgi4cf@W3p9(L8oOHjXR(glPEd<=^3jS@4WruL#lzL^?ek%NK+9ZIx!P5)7{kZP~Ah z9c3we^|Q|ga4tO8%#-1xQ&-*&?9`=8eSL-ueY(~U4^Yq(2Ty5#$3D>x>XU5ER4;NV zv3b|93(PV&+Y<+BQsyg|HYoJ>GY~idYx)}wJjNUo91?uP%TBO>+)xqGnL=+CYy~LKuS!Y34nfZ@h(SZ3`JPUkO;pT+ zzqG4>Y}X)$I7xVPgb{KhcKeOT*PN?IJdN&OlS>yj*NdFmbvy~3fm$Npm={zgJv-%}TE$2IF9J|EWvseCh4^dI>$DXZo4N;Xs| ziq|xbcWSmGs%jFhJv0E6mz3XaZA}F%Wip9ik`d=%Y6%yVqZUs_7qK@xZDuq2b<<`O zO!=Zx6%7)rFYN8iF_RW-QxA_Gk=2=RTc8PwwnB$6Sv2Io%%&j7V2Fk(aGxfp02Fd# zp1pxD8W@25=NZ95K1yt$o>g`R!BCGdf%vOTJU&)*(Ed0hv@Z*o-J*7zWp>q;kt}po zd`~X3d_mSkiq=J|oJy)%t<)2uJ{zrin5flTE)c%bYPKa~;`}n?p^b-ZIe~4Tp zFtEDc`SsSpTs7GUtRt16hs6h+{(6E=8`z2^ydEy!=t>j?|E5F1?N4H!D~IZ;b-uOn~!H6TL!<=Eu{u-Cftmdeo5LfLxu@LqlZEjmK5N6$% zt(+jdLBBvS>%#KF_qNWlb*<65CUydm3FF6QfFL6N1UVmaGG?oBY zRR|z&*Zt2Cp+SJsuC$>6t5Z_8%BxNN^eBT-kQkU_*xdf9kSE6nR!mgMex1*!cQn!I-X;!BPRecslYUNj3v>lUz}?GnS+n|m>!L;c=^z$W7*O)Y( z>^;#0Y>>k61Qt8C7rCW);DA?f8wOPHSEncs~yH6i>kmc-gI z|9P%enM$5TFrt*_5~A^&ZiIDagHg}5_4&4sjxh7-4aPkL9tFLV_=Kqe2Gjibr=pTR zd5kfRHx*$Acj%C1=-4SEj=43Vc!hZEL}6Ubo&!{5=8~N=ivAo`yj}w znvDH+N%tumvj1?DkI`}(DJOd!jKGa0NGYK}Us}qU0&Nd|9B%0E{a}-IY;QuDQ3beU z0RBx8s(h!pIGzwnGh=1BgvMuCEa5CsVo;hY=ol-7<_g;W2{%qqK1|(whqYy%7K-(m zC7!9I@k5;B!V>M;+c9RZ=Hf(@^3CR|i9Z1S%{k~F99|nH>ut%1OF`1bwWUuqnOu^% z)9(xBGwr##FP&2?^(7+rb9tw^#0xWrhB7O{8i^%wN#39<*Sz)U7^8V}O;fSd1G*=0 zW+|8giN_e?XATm9C|yrIyC@SX$R8}#Q2Dx|&~$IjHW5i!IQ1jnF|1Eg zH3Au?UTOKkFrtWvYnF1Ya~AGov<@blNDpOvzp;!onzY|TnRUBtk|`Zu1zST-^F@?5 zt&Dzkv{LjCKniosaDRYw4s3S4Qf&WJAUEv64u5Pnz#_NCA@a&yy^14XN$fFsbQR{_ z=~YDKVi)Diqrx{H>7YYLR5rq*L-ZI_K3Te0i(Xz0XF-jGZ~k-fEfZdW*|_*#Iy2WO zwY&GMu)eNUuflt5>j~VYLrOfiipZuMup*^s!B!vSh6au#mTGyw`dxrr6T2jlyJ#i# zA5x6K0o<053N*2{W6+dr@S_eV?BARIR@|iTP`Ov^ z8{`l;fdd%dhKL<2e@wBmafIszbVLK(N}w%UB6{5s#e7Fz*?joJ0|=i%nYKv@ z2auiDzT`%ZY&fueQ*_LjbniPkF|&b&4lqr_70jeypHs`-)pM$fs%h10LNzV0uNiWP zb;q>_N8uRLj{pnQ49VuRwQv}Fa1^%h7!Y2+lRz)8-mjohGroz3Z5DfJ(so!C>9^+# zH1Qyq&!C*(^88)hVlwDWfT}Xt$My|dmHm(-vvEFI;1D&)tLBkYcM)qbz*K8}#Fib2 z17wz<swJEA5X%x zN1OmsZK%naHtbE9 zS3*5EsAfGJRgWyYiFxA)`nD(DGF-lDW%t9L*&di=6Wv+~!Y+s@fAPJzV~~c<+uykz zxvR!I^G}hOVc-C(zUIl+xxqQZogFzMIj^O;j$%|5rkynSF?DlM@(VVr#~B_N3oO{I zWIFYq!}G%LLaZRBI6d0iLyinr(+liEtXw7-4+9_PwOWd6N{z z0A4EOx@-1|Ym3&@3J9_qc4#%!*nvOuMPj0H93tPLmM-l_QA;MQKfKqPtCR&sQHu~3 zK;APA2`F4ybjJu!YvaB~W5h>Rmaix=x`#XfXq=ArT*uB0b)qJH9Z5)f`KF`1%r^f5 zt5S;dK>H%P&YsgmS3M8?QZt*R)GDEsYZP5xY#ikcrVwuvRq)nYX$ROu3BQAuko^L%^CdAE}AVV$K^+Y+xVfa4K2U7Y{`5* zV*EfVN;_+3?}xO)8Y)sGmM=SvVZZ^*?1rzFXxQE0B<0P`$8Gp38pbsioiu#4Iw6xA ze+!o00;2_{^xbd-Y~EijV1Wr@d4FZZmgiJ;0(heW1T(+43L+3)yN~bIPM4STn>8DT#cHiy%z zc$s6HY|~!68G%g{O}toiY(@YMThQrMaO7`iRF>>IouZCaSt`#~mTa3yRi9WD_osu$ zybnf84rw-$`twuH{rMNw0>Q01WYdTcQl~I-yt7sjxvlv=s(OZo>23wEcaakPa8(oE z5v#FD_A1$q2KwCv3KcGi!h&xTr=eu5wfD!)veNhCMN(LV;V^+My_WWDGyTa4#vOPK zOa};sLFKu2lTBwMClEV_d%N$Xa>|qUSaK01L*cK;uk`pyJ~+gz#arHy&MaL;H&`mH zd_g$rM_`_x4EM++7Q^@?(qwb&Eil=PAd`d5s}l$j>~^8$`Fjjlxq!o5h?p7z1f3V< z%?%;%3ZG4k0}2jZWza=uRKyh?90=qrfjpj_cO<*dY05jIa%*WvUM2)A)T=K$$NqH!l6tn~5b9`1SD8&43BT_tX{lSD`SozZ~;H;XJ!uP}_wLkkA~84bi0 z_v2h~s}_Yf%l~|Db(vK70v?AglOM6Ox$msNN<{gb?yY#(UB-{D;<8sPh#n$4&ele_ zX|5msfMfpVc*1wUZyj-H3Z*o{<`TQjEu?S3bvjn7S?g&VpeQ+@Vu(=Go}fy$BSA$@ z7rMmf!|O=6!FPDZ9~W&Dp~-jJkoiRP(PVtI?_J2Vkr8bIr6_bBs#57Pg7^VcuC~2N z2avemgl6uTkvP3>C%gY{6E3tOLY1hF5X!SSo@{~!-Cwmyq>G6|%c(AMg=^0t^7XrB zk&Pv2gAmdNr@AIF;FPaZT4Qa%MQju>9WV_P;PW==%>~#RPDhV?ZsTm|Ya7B0{t8oG zY@~lfNPzvdHrb9nHMiz2nf0q`lV9f^K(q&*x6G-DGXXl(prLE2O|Ih|Z|`vJC2R0* zlU?Ur0hDJf-@9~!2;D(KTt9A;*Wbp>Cw?IDsuIUEYw>N9EKEtfoX%I`%U5n*Ut3Q> zXSReXM^$5Yh@-AC|D$(YJFdrU2?ByGBU0#%`JVt%o?mMv0N%Ye9rUNL`OZ}Dy$;i6 z;{+z^W%)JzzPh$@{a%xTUnQcnvh1S`AMK%qq}OI;&pLtx!M9?{6W5JUsO6RL+qM}f zo7Xi65HRYUEi=yf@Jj?L)8K|#eJ~x7n>Ckzqj(3c6eeS>6&i!A=u?ReF}n zS-7yHfmBJS%~Hz?cNuaG&QQbR-n{@x=@E(A#ZVYZ8O8e%1en4FZ894Blt9y)1Szh5{zq-f&Q`prrglf$LyXhj;`Q74 znkiRK6jZ**^>I50hAwzLM!)J)?bRBJG#|<(JbA?Fyqsb>t;ecXLkP7-BTb3Y2M2`m zeQGO3+JK~4fy(vpL(u;$s%$p>$q>mm_a#MvD?&DAAOJ`!n_UD!kyHd&q|YwKJ)y*j zYp7#Xt+KHw^w2S%vsE@SXQAc!`%U_$hs2AvVZn3K_s~x}w8d(8#@vauw%dX|FQO4F z>;+$)LomNw{ylCrB`M&0iiGM=&--YnweDL-9pObp`GSt_gt zWbMLuwax+$aZg6jbm`XPFd!68AKWHnuy3$virKH0p0Vh6w$gfL~RY(SVN~_)W;c!6b(0TCAm;K+RVZzAbP5cEMLT_K=jJvk>s5J z)y{bQV;w$wmMSL0S@4x$x<(fu;?R-Oc@uQ7IF4z;2b+^I?yN$v9cPYqEhf9G5>}W= zkP2Im-J@n^fs|iDO=JtA^T=?DBlp3JeHkkf=2d8J;3D!vn|mWEg664{uJ5OsY+{P8 zB}g#b=}#zt910*whL(XlX2Mn5pHp)-_O~m^AiTWLpx*E$6!`a3TrIu1<4Amz>#gz* zS1`YX+s-87vs$BFr(tA+94dHnA*S+;pKa4@e5A&PAwj&-0-C`pnc|d zA@HMCnbf5nUb5Di_Nq`S4FKimfhRTjw3WC%01NaUU5c^%(MQyJUZEZBU{{Z_%*iC&(B(e&YL9cFB{$jzY^{#ss@lyUC~A7S zv1&J`&!}pnAOmQt_Jme#tv-L99csC%T*GA{v9t2`GQIGhy`85ICnLJCwW0bJX+EjE z*nH%RV!638#|ON$IetHlg34Fbw<)^Du;G%&DJeQ`ydJ@cbb=5hT)@%Lee&Z}UEPgB z%Qv+tuMy;0gtQ&$qE(W+l7%i9$rtF zh_FzhdkqE?F&ZXC7D)(gb@NR&-dKR7>C%OJ0gck|2$~oZ6SN+`M`-2eNL3kMBa*kf zkVJ#HriH}mnKTC~q&zDUxHu5mxj(zwwPmv)LLR=1NlOeXuJR+C*j1F)xVaT;?TzS_ zT1k>SC$i@AW~z`dds%frx$fH^=S}Fudb8+}~ zCbLQWnXSNMGMj|WA=W^3X7?iG3}%>v;?JHLGn&|fR_e@Xk_+F?WcDARGnxSdb`vwF zvrk&unLLJDeq5IXkye9QFTS=GPpwYA!#EruD%Mxhnr^29?Y=JG_EB(Ey83I@PSdh( zqmFOXqxxvFxbn>MT3Ao0cV?LT-cTM@?kUPa(0F&nT(iHE*NgJXvo|$&CARq%2rAJL zwy#qO&U%LrCxbS%WX&vAEjnMQNT-_fIw@SQ!-3Ols-EER+N_y>m}eOlL>Z-=4j!|W zcwp;-zR%YQ7eS%NSP`)xn+D?KUF;HZ7nxQGuckwZrQl}lcC+_fB^FU;#Ktu#Ych5D zJyQ)k^o?hL9mW@n9r^@KUZM4AxvL%?$3#1b%+>m|{FTUR(3riKIxlbbBd2jAnXGkQ z-gmnIT1ke{v2A0OR7W)>9lJWJiKwa$zsIU!KeMJ#O*IyKMpMv@3N+TJ{Y9FB*%ZY} z2u-1RUv$+sg=B%4nL@J1uMG_(LD0tHhR(}tv(}%+;)~HqH~f@3{IJ zA>;Rnw)bZ}4jeJbd ziD;mP;lmg%Ld~=d%ySJNMsBDLH$`?Zjl83ciSM$;X%udM-lqlx-wC0bnn1F?RJQp* zDu)q~RBAGiDn!}T@%j&Rfp!}x^!I)s*Vu8JXSVE7qT?rmlYVLz8E^g20G(L>PIITg zF-2_ou32RxPV{vdLn;~NFK^l?4X6*rkTiWOM}km}CpuLp-3AyD@!$fm&%5gU~VZKu4f=v9yDObF|4C2>6>5|3Au z$0l9ej%5-SOnyO_-RMX+-~hiSSuk0uXe>^7=6qg%MyzZj$sVl8dm3+LgoOEWoeNH- zI;r3CO_^9TIh^eJ4R`DQw86!a`|_Mxqsa2z`}?tV=^;XK3vp*Z(IRaX>PI#uIV@8) zk4M8NTo<;~*>$bFyg@HJB2ilTf)u>?BYwhw@8~;K6HxD>qI%*~lART60v#12wWXQ8 zSreec^49P%GAcSU*-Q>KSxSc1Z-^dZfuT+4N3@AIYOe(fwc#>rb*qVT3}l!*AsvJ7 z(V;fks)F6Y)A5mawm6;&RA5kneguX0YP?ki5|Oyk;P#Q7Icg%UDm2njaS79Cdk)KjnAc9B2m9FL4b=jz= zNFeiSP@S}F`Q#{M19O~~Sd8vT<33Q}b=81)XIzsS;P{in%N||8MVdr3v`_seE^WhS zl=G#-?a!`ljQ2N?0|3z&4l%nz5U;Dvqpg8}lB^z<8Y-*&ObUo>JA=dCXV;3$>o-5U zcBMeV+v|*0TxLhZ0VdQdh(D$Aou|1M0;vf?pdF>`URWr_80x@?1(mORJ{6sNcbE65 z8s0kG!J39*k2i+o<#`@+{%oztYSjyQXIcc+y6@_v6k77%~Tr!x! zZJXQX>q2RQD9YV2ZYf1Ngem3Trd--SoI88&Eqz@U*i5KJX!-taLfU8xyXc=X(}qDV?Qg!E3R{q?r!(isYuIQ^;MD9na(#q9gHW3R3!M&YXYT@XDMy8 zA7VS|HR_h14!b<5(Zm$sCDDYPV~%05?(tw6^x8w5V1>{3fC z-_{81G^{(TVQPCXr=pTnIr)8BqO60F?fRkgoPwv6$t$Xalaf~JVX(PcXOncu8R=cK zC!=-YZB*?lJxls#BA4!T*oe0<(B^j|Oz+8k58P|RcdiBeIA=edfhlFAAM_$AK8=gO z*{Q5+}U6eE-JvZ}~D6s&ah{(o3^t_M;k*v<~WZ6`nPG&z7C?6@c<&MRlDa z!7>>hHX^G~>7mfV5>YgVLo^Crui8nWo-2s1S86lg=@NoMmQb!iZUBXm6WH9H593@Ialm?=3xGzzMCf`Kf2yu;7Q%M@h zKV{0pUvt|2F0Kgo<;EtI_4Td=dwzzO?_!UUZ1PM{la7cQE27HCK6K8!4#WC-m zVJtbc<4kPX&Oe4a*rAt{NM5qR= z#cxDdtq9_(_mG=$)@i1%*{A%-nm^6;3-rcD9VM5~ee)BgV--Vaj!<+3x9#?s5Q>t^ z=k6lNn@(CtL-pC-YiKfj1fv>aZc(2}t9A7{|7`DYq+ShJxBxeHpW+u7-DN8J$|-+;&H*Ce3UPo#cbG{S90`OJycfZH51)#5 z1svO#?>Z4)uco7~nyM)9kVdGJEIou>6!GM?56oLdL9`UnXb#8D!volOA-_Ch2o^U8 z_Xa(0XiPzzV@iwB3Btzx@bT=JR`NYlTEPe|m|o_xMGL@2Wcp+W5&9z}cqkqn;n>u- zn0bekAXU^!qI)Cw$o5z?%r!rxV6$`>n1u=-V{q~GvMCW;3hn8MeE4xdJ}NtKyg}D1 zjSGIv&GNHUn%uv%G2I#9B)31Hkl#n>f}uXhV&WR-yqifTHriAGAstY7MMt$O2A(t5 zYv_70$fq4y9~|L;VY9|L>*zI8e8O2Ugz+npu_7zq)Dq>DfHX^c`lL7*gRqZ>o!1iO zg$vsXp{EE~HH`Ld=xtm23=KCmgnD89KvSBBYY20}sU!?_44ZCTC@_M8+)jYt7-QTgDdz5#gg)QXE04j!jIK!<2@mm_L#Vk)VQM%#r z#qJ;N^9pIJz=a1GpZrub?}o?A7Loy=7XZpr_X8$wE5KaDr>LJNjfZZ5+z^Ke4509u zDoC610JrcwWDgCe(T=B-aV>8Ugek*tmT!T<5v9VE=dZU?XlS`cavwu|pQ$5VC{9cU zIG}wvO4K~>P-^5Wb6kT)jUi(67^6Igp|cSkq%X}-_}1`nFiMss9S^VD)f@|jT zwn*Pc!WVDOV1WYsdPV_gpRhH?%?#9;5c7|5jSL4A1>{TcuXFAQY9*je0U>d_j7U8~ zLU=YU|66&W4BuwTfMw}$fS4kj!;T)0wvGn7@jjj+=H(qGYu0&Ba2m^mRVyK5l@*ZH zu?@$o1{sS0Dr0A!D08}#Ht=+LGiD&UyP1Q+bfl$3v8l7*ygO-wBaP31NxX@I#TCU{ z7_?{7L22HbQG;d?V7F-V9&FZ#8@cJ?B0Y&R?`i}%axIOICh3*$^P2LFTv4V(g;&DM zlM)qPJ%O^)rLB?D&#rssUD_JqN>NrfT^BvG21s}evIp=!?jG7i=4mupn11Nu7Qe7K z_V8kWdMQwOadid_s5>>H8I8cf1@0TztMNc(Tj#txUL#c0tdeyIeBqu20;xx}4)fQGP#DEy;aB3m5YrJ+BD3%D-?D3({K|v>e!;fEr|}g*yEetps#WE z%8rB6;_+xuZ!caAe_g!6kQ$VdRRg?(i4r@CD<$@vBwt3PI~@&D72OgQh0+-np>%v! zMLxvMrK_v2zS4mDpc&j2m2|u%QWSb$hiXLrYR&{X{lR$ z?Vf12h%!PCc)T|_=vL18ml~l{1W+v}K{giggS3eB%a+pp%goZnc+~>FG8mp@4Ln8| zCPIlvSWD79300KWWu%0|(h7s=;pWa2H)#Iv3-^Io>PV)iWO$iOWN_0T$Y3sxSFYk@ zUASNf1s5!iE1g6+3l$12qQ2<-bAJm52?geC7+dynRkyS;C zN33FrRkY-`eL|5DJ2Qh7w~9+v7RNcKdyIa~exo1ywZEdjr@y4<0v7hhS^)MAAU3<( zW7uZpM$9>}uy9`h>Yj_4>NmmhbnOi@ll1$&h#r*3Nu*+m{P4Jj#$1W!_24axcMkq) znqbp={nfNm%_w30V_Ag%t=u7L(rU6!vdnNT(lnWPJ<~Fyw>dQJS3Lm2qU(pAZ3xDU zCnN2a%@^UAT$$Fb!9kvqbrkKE9mBL(O`0TsRl@fMJ8~hih&Axkjmfa>j2lIw;7w+% zX`AgPs+%V(JUoo<9_JZ`>-%VN@GsPK9Tk|nWLnqC2LI6DA2#@xuYb^xzh}t*RFlK@ zZ;Bk)s%YB3gJZ<6-K#H5Dyvg^63w4?4Kn_v}d%ELp_#hOlYH+hAZ3U!ORX9 zWyu$}XS9k#U6EkqNF|io_7!{8oVo54!>ST^` zLt1KIpd6V#$ME_CQNznMpBq@Lo>Tsy^CO%_Ls-gzH`=s1Mb?amhx6kHW`Ew~*7F@Y z_14VVWcG@yYMnjLrOW}mdLo9ZTIZ=n4T|kwMBc3LPr`yZSTAr)z_vwZK1IXt33}M^ z0S;N=Mpt@V{1ILHgYJF1JQ8E6^U^AV1#j6sL4;qL)GANV0gn$M0yn-^m|#4@l`dAq zmzTf$h{w!a)HWAh@lq~O>d9QdK);R|XpDwza`MQ`W@(XiNEg(Y3A$%(VT0na6GpL) z%PzALmz{Qd#g9eykD7#b_uk0gae7%$@9$IUa|`qt6>$N3h;bH)=Xu+<%*U$Y$udmF&`#L6Xg84i$tSnK357Zom?i^2u?l(cKpm;+ zwzo?qG=JlR=QFiX9vXncjtoG71ZY9GqN81 zM|nNKWpz9%_qeFjXt>brn~Zd8LXKkV<&+}~f9B|W@IEfDLOZ(3-oJuy^dC9}+rFSW^a~yzM$&iHugm^;yu5?5oq+-k~=-Ltf|%7M9WR(C7+d zECj%;ueqMVAEk(~h#Dgt=T;5LXNQ@lj1SWzE1ugYHBk%od+jKasLmL7d8;FAWTnTJ zxhIyW|Mtx2XUh>D8bWWps7}u-L6oPU`I0PQp6UU$7{_JzagrvQ8D>JKA?@zQ^dvvn z%9psf;J%+zc~Rs0;K9`84^s3%A&A&-suuN#kjDDR1(w?Fm{8bx)>~cRszB6c`LY=v z(!x7aU;g+W4UKM4yy1e*gSW^;X}qrTj3LQjy}=oPO5S~v>n$Em)Kl;s+Xj~B^2&!i zEW68piMWXecn$w;MsW_npVj8JoF1+f%HZwlba;%1a&2B+VA*6-sp}bY!(%*1D~xcV zif}KVyiFu`%|Bo)y<_7277tR>5Nt??7vUquP0d{f!bx)@*gXO(&hCZ}>5w9`xS-b8 zK1&IJaJ_$J!fn?B3Ysxj%#9GMW#nTezg$V*>8;|Pw|zAN*$)FkPxWG?c3*|{P43fbzl@HSW*weJ}mk0!bg zjmfD~({Zp01()W}X1EYsD9eq5RhU+p1HSy$U8aB=|wu-u8GLbZAt=*uU> zjb?g^;;!Jqy&em^WD0ZQDv$Z-3}(9T$Aw}8c7v7n`#AAbO@;j?nH_7$XeHOQ7=_hA zp_cZLX)piw{aV{cb)tiNR@)z~wn%dpQeHE=M0n$KZVwe4oG!NqboY?RT5fX|@^IE@ z4~ocaV|)lQbI}o|1Mj;}_Nc+Zhj%_ZpbLXyqvjBv;_Rw(iiYpLelB+^8M4{TILg$$ zdf!7xp4F7RR_~wGXeXqy9g_RIDV^FuMG@sraU5jh?>1LPk^5*0sNuVO;~tIWKH{sL zOc~vA)rAV`d7U5GR(D?(?60D&29uSi$wdwzE*h6?ef^_P%{dRf!7y1N+zM+H2)aag zo}|y+U~u#Vh)c0)tpLnVUnl(c2>+u`Dbp_pnZ7nz$(`J5xlIFSoN(%_>Y*{Rx?D|W zxbZ<|^LK@02Fzsf@jC|BX73}Fz4?5A@!ED;UHdB@X|(@&G#F3>=V0*H1M?g?)~9h} zzS%VJXE^={=`2%aO>12O&q`Wqb4|#heFWXGn&FbqdU;eo&0XunJ~O?P{#jHe%2Y>C z*X-BkbIZ#a}F7YjBq}&Y8`WW4L_f_U&87@GSl=FH1wNzQ3hLtgk=0dh`z7 z)MV)n(l3wP2~|yDMZ0@Xt{%RFCqFp@j_2|_?%ETQQD?);fL>d!(XU}nwW$W<36{o< zJ%pui@8?7Y8>@q(jddU#9QNppi%+vfjv$-y>Ad)+l~!T4}zix=nzkhga|-v`BZq)XhoN2 z$Ysm_Gt=%KQKQwG0D{dDECe4;PH2&Kxx!^2MzGz?bb_%N>fuln0-aH-1!HTJ1mnRZ zBlye9f8*F^&lYz+t!;77@5#)5s0ZF{4Y-3Q{@uoi$QxJzWGbEU}1y2Ibfw`Mzr+9_;rxeUVdOzAhFO2ZJosEE9OAPU_CgppX z%=4(hgO~EyGjmrMa4u9!7B&_++>I%)Yu^6F`cIAd~ z*TZV5!j`g?La{e?AgBMkBf=ABnb6Z(OWHZ{Z;dU^v9r|pS-?`q1 zL6-tCcRVr3jGh}Sj%yH2&BGl3ANg3z63d+%D{z|uj{(}jaQWOPmh?7}-l0E1sNMom zSWakEXYLk=!WKG7u9bO(W#a$UD)m-^LUJlELR;o;B`9Q}@q!gT!wUaW>(l$=3gw#b zJpO`0?#8FWwd#EE%cqnh>Zluq0A+aIXEvN;DN5F&JDFX90(R2Y7@RWt<)tcq*$STN277YgfgzES`l|k%UvCviZ5L+EeY3@~?3f-E|QDElC6qnD}Qa^QngVwHUQKKuBy;KVy z{PL-L?xZ}ZpiJ*!*NM5ap*K1vUr=vr79Oy_ z56~Rol?B%+#-^x>;Tn|?<->Zf`bu-b*e<}dkIK)?JV8;+=75abE_mzDEb>Eh3hSOL zD_a;O^1XZYR)XFS+F&R`H*I6(lQMd3IKr&cgfEzJl?}k*5r^`#-2EU$WlOK-vm<;C z__3oX@LhiIy;{&cFUseR8M9e$)Yk$k9?H@dlW7E9x(joK6XxD!rQqvq7!KUE$#((c zSqwRNR8d;l9&g@(wCl}*G%v5zrTo65Zp?7(-JZ7No1S@5 z0qcK}dY&6f5Y1&x>F#Q7HiTS#|NgC77GK}Yulzt(Q$xCXkDACX9ko^aUV4w3&-NaU z&(-?>eBo<<^ELXP%kMSWOVxfID5flV&0D>0X5gak=LU)?2J4X?O|vS15CDIb-S&Ry zuH%C-Q9Z>zf?^cv^9N&sht)qa-hW7&w3-aJTs<~n(6o<)8T`Ot{V#(jF zsagq_@0!ehiO7AANjtaO39tpM6M0_q1U;vbU~?eEg~_ zANDuaeGCd;r}E|J|JVQaH(vwx6(4&rJ{ItuA$;|f?r&S7@$uU*NOchs9s-))E}&aa zZ@f>r`nF}JO>Z@Yfkas0!GJx1a$l8_!;^{{UVyfO)|Y zB1(8MJvgD0Q2uD-AG7ET$e{tDXfKP2H-;Zl-W(NnmdPiAoMlllh|Sm2*BvJ3%0|;+ zU`sxa<-g6D$kZ=0GG#Ha#s`ecr)(|43LpN3EZIjnuVLzKEv{IJ5(IR%Rw|FBVlh$cT=PO))&fJyim@7=8FAr$JU z{e12iC1~o113a{Vhc)2kYagY!U~s!I4LNA(K>rU1Yg{mI{^N7J4PgFbW}e)|+J>$< zJI)7Ko+ZH1K!bnC@P`iFI^J98PguxZC*;34A-9|mc1pWkeT`#Qa8$DO!C>F8J1$on zjAGU4JohG`mwgd_a>3KlX2G79=d>)e(O z$MrYEQ`ru7_P++eb_)*W(4bsCW9t!6?-8ochGmJ#7u+2CC6LGFqY#__Z?M@Tb$r`x z!l1v&sJ`}QTMr1EI*1ioslJ69Mf3;=IIX6WwS2!lr&07V%;rLk*cfw(da!vop*vSp z7nWnp8pT$)XYSOfT&v!&j`CoO7!Gbs;;qx~Gc4+(c}>&He~Pjo&s;^?TF0C!5;Tfe zK2_~*V`qdG*)#2X*||nxJAYcEvYoj?u5pX-5R2fZj)>Mjr&J}%wzL4IcD?6(qCSF(?C*NX{RmM%=W}) zqBi1wo*}(KxO~EFXBadv*y#x#g&xe;16UExffshnEA@VxyyLQjeM(*8_>-g|Hr&@# zSVV&hBe6SHAEu4{mTX|(J&q~-|Kn@-&Yn1JOm{7rl3b5gljTM@$6vb2?(@lJFvTSk zTWkvt>bI!}=U0U}=}a?5cRq`oM*qZ|VkQIrz4>geBv6tD!#QsI2%DGA<@8c@n5or- zm(SgMgsW!XtN&s~2X^8b7rTBm9|*S4(3$MOL*t zt5Kmdy!1gaL>LUtu(~J*?w#lFiZv50E%(*5m(Sh8pYWt<^Ct+mS0zM+ua?rj|Nd2Z z=^-&)zVc~>#|sc+vRaJL1tN@}ZbUb3U{6{^MQ-3VR3mUEdxo3fghO;5*C{qGv0^8s zX2q*Rgeij2h04Q`<30?7tW}cZ_3C$6WDdjFxt~X!@v?47u;-CrI9G5iEs6v*L)!oBhr1=1W zT*w~OHI)BiL=$3M1%PewgEQO|tj&14%PUg~9X4H3u&E9mHXaOeUvM`7vHpQsq47rn z817LplXg^W+z+sx50}{ZmTtJ)s|kL|SQ|FTctfB@zI>UN2`uAX#~3eS_cMCB4ttDz zZJ?+nrA6$Z>BTy#3)Kq8d(nZv;v`X*Lsf!5K%iZY_j9U)Vd-Li_D6FtPAJ`NIo^l2 zhD2l}#~;(A+^acQwMK`E_0b*bk3F64gY&HrbT;ICvc~&6lP^>}!){BdJ|+vMy?V2I z=mB58WG{hGd@!q>hz-0`#DnGtxj$~}Y{9L2M}e#|lOT0?_>Frs>^(@H9Ja4A#dX>x z=^ai&|9_kZyDDdQZv4w_Ft4H2FyXJc8K?{R5_9PZRe1YCKdEkW~R}8jdb~h8S7Kn zC-J;sc+iN_%WF8_tI0m?lW^Gjm~x~&&Dyo`2a{}tn#^u%Xz9H0Fc_+Iq# z2bm_^SmdsI$yMbJ|1>W2rE;IA4Ac4%?j)0Kd1o!zr5qU-;nvj(YY&U*;`9-f-#3X> zwg>N(`Ay@jXsf?@&%lD^~Zd;q5SWbVj_{c&zceeim-Lu<^L;rRWzn*r!X-i$=(e`5C z0dQ_5=;gDY{pH|e@8U@izib~cn&Sd^dNc)xxag{EQIk5uJFK;7)@Etrkn}V?9%jM= zN`?y80az-Cc+(w{qgTrgw{tvdg{J}Q%~@&sKX+9FD+inKgX)5|;wx^iyGU^KkdNP) z$J0Jz83!No9f-y+c?ud>>y3-$_L|)V z;|&>HvCVM_qTo7r^#Ei`%%btG3~u#yXqT^kYWLP|o6VU6Uf94nP3U-qbl@VrYKYr{ z=;&~Dj`clRSe=_gwFCw-u|W)U`NG{09mLNNF(yZ&vm^YM$Z}@{P|YW5CBa-i(Lip# z++Kcby&2;{uF;qO{mZv5zYa$dL~nI@A%0+Ni`Nq0+in)v*vJ0at;q$Qd_;uzWKCf{ z6jg=wje|oQaCJm1$l&8c`~tH`d6xXJlahbMyjL4u_te8?V!Sovb$mq5Ailw~if_OiyNe=$o0ZpgI2R}Wy{t;>VP6LF8wCzY4EKw8-vf6b)dcBD59=E0q_$#k(^ zEYHk{?WN{diL&TyoMH&f{XNGmir`j7SH{!3#nLMfYq!S3WP`;ChGjU>h|73{1v0!M z0>zRJ;*zlTwV?}mZH(L%WTX5n4)rBZTobDUr;U?2R=obve zRnOK6gM=JBJ036TB*ttI-v9Trt{NeK%QUavxN(QhPf^E=Em7)^>bw5ltdC*r;3}OD zG zS?i&^&k7Z9c>l(07pDuH-#(kIk0^FpSfF##)&j&TzhkCpm~K$GHT7j1x<>z2bBn|) zK8826^aqZeGq*TK%uv_sA#puCkN=p8>qY-lg)JWKBAp9+5dh~X_ssU^4X+SyG6R^O z_kXycz+_P{oiV_{&zbcVpN|8cd2}Sa!iFmzx%gp0p5+w^h-Lipo>|7m`HVWoIa(a* z*Hk9Y)LBETCg+9S71kM>e#%nbMg-BZyP8N~hl&g%G(0w*QWX29jbZN3jJCRPfhPej?wUhOFz5wnBOwbV>c}lz@Mvy@G_pTSmz{8|C$MK z*v~EslKvN5qWfD+B(O56mfSmIg2Uf4&8w!VxoKOMgFiO#V7=mgg$O{z)yfLhIYL!G zX1;GBbkJY{|J6E)>2oPs&s^^z?AN))mH=VCE4LK3Z_NkW$>=_24=XwA+}WDV@0sn% zKQ)Lx5dxaV)feXo_7r*BnW*`_Bl@&K1kqE@2)HUkFm#R`ydN^O9i;&1;H{hN7WVqa zACo7(?tXx)g0QDZB{sm+evErL1##y*B8|g3Uc|*i%y94rVsP8B?w9EJ6zR_Gp!q5D zJdg8$6MKB~fT9TPdcaFHi+Oj=?mvqhc1}}b2+a93mdi2ZVN{s)F?&Q&5Onq$_BRgF z&Mp}Tkk9hx$!b8SCj@kNn`cg49`SFP!iGxlL26w8e?Z4DusLUE5#$|TKRJ|)%XUcSZ*+3p|KAo%+U=^J6Ck@ zt)9ixUKW8pZZ@?LxF`TSSE1dnoL*aa^w%)f@rp@&Oc#X>=C~kAFm*P=>c>p@B2K^B zx18Rm|2Vi!xa2e@`D}tkeY$c5dfAE*;2H0cz|~`#jVC;#EEQW8@3yr1YkOz>XDuUJezA74(<^HGWz7nmUb`m zm+P9}F;Bf*$6w5H-M8#NWMA_SU9(935d+(!O-Bw1qW`B8xgPhUPC&bPh&saFeL;D@ zf;~mFOgN}RQT9Xmh)}mT%OA7YmmPsb2HR^G+tNwsYOJnU5PsFUOP)euesM8_+vM~q zvAA%ym>*Fbpc-p*ZdymE1)3`_@kcWB_tU@R05oBP54wu86ONTU%Ss$cyOa@jCiF)B z9#R-iNpU2Q^5b+iu;NV%5cRE={wl-ma_cBqmi7u;Nqwb)`(e98T=8IUXYloP#)t2Q z$>Lu0#MN|A_Es8&)+=%TVTEX5U7Ve9oV%j3x|dmD(2YP18r%i5A9K_iK!+Fh(0Uo8a%Q2|9El z%Dhlr+&;n>`1L7fv08K2U2pA0DY zU-~t}FB`Y$)WH^c$66#qKaBJ3#yEEH^kE$q?N{>7iy)IQEbfU07p$-AmYoVgdH}+fgIHEV8|s{^4S}#r-qB@jF9hI>1;7 zuX8m@EEDYEEjn2zP-&!5G8UcUXsn0hivzB<0vau(gA^AKfZ_#23{c=rlw>CGU790f zq7)*r2A-`sQy7j85%OB6eMFokMVK2dy~T$>|CuyJ#^OT+ie=cNs&$2dEx-a}B-@O! zTmdO=GsZ4XR<#+xZ*$4@z7Nn(J4WI>F_$1}OFQ(O=RDqawl1viLYx?}1v z3}O^}GYqhjh9RB~!yrk2h9R(|VGI-0B-{1zSk3|DnRW1M$1Yco}C_A$nJ+8AI#p(F=|uY8b_j|C91xLi-6@Dy#%Gi_sRoOUp<8#$11ZTKe<~ZW;vRqM8ZXu3 z10VFs7JWLUEy13~=nTfTP%XM+f|{gz&W3UcxY#`b6n9TzXjPCK+@0$5alj&>01Qx& z^iBLwo1xe@Emqt&nFmsmP3Qb{Dm|mPt`ZWScK}vEK8e?)re+u{#3eHhk=Uguq@D#bWf8)8l>1gEfyJfB7GI$x(ky%UiUCXcie+l|6+9x}m#+XSk0a23P3dn$^3dk~b8b*rQ&oIeK1TF2u=G6#EdaFc))lx=Xm56>W&9X-& zGGHxbWS8xdgM`(o9*7Rvc=s;gllg@5vH|Gwr^0W+S=lF#XzwwRQqOG+I#}dbU!`;ptw&ELtAm+ zyBwqx7Y8B5eZp`+M6x(2f%MGc;xJJ0;;<|o#*i}hF-D?-Kt=odE)w)qK?o^XBJCA~ zekx6|Pl=p4Tc`?RSx_RWxdmO`^$yfbt^;asX)VQQhBz?Ga zT++a?Bsnf=K9i=TFXQ3O;pW|6_T$S87B4c#)TU-KA1$_O&!E_W7%Z;FF+ojg%yv96 zZ_(ktVp-Ko$7~)RYm#F&?>iOQ-zA2AUNY%Oo$s>j0La4lJRygd2u3LL4mF9PuuC_s zPBw$}*+d=Ay}f(DTL&zww2v&gA#a2oT7S}!=|-zG<|n<0b=?e~K2b|}RyjEW%z8!oK$)x%A^+f_~^+m%7Wy!{tD{uM1jHnMT+=i@bY#X*63UQ$}XZI~c z;I$Sa@j+HsRai|<&tmm<->Tr@vdnl@@Y0dopLWz-FS+!+&PRJQfLZYOqs|}{>`?9( z${F`9ci^>_JMlqQS4V&&xM)1Uc+q$XT5a=4#Tpme20(G!5Cd$J z+8iAXx1%$)TU>FR}r zVi|Jvf?3*(aWSn&h4p72;JV@+~#&HGM9N;>Rf z{&_zg6M$HVa#&)3g1=9-+W0=e+X-vjb0^159~CZ1;mVf=ku|+8TVX#1iA(kXenQ#4 z6!!oElI5u$KqMi3sZ}4k-e_{V)fZouF0nUotV^!?G@nURvR7Ix)oi7>@)Hs(QKL`8 z0TJoSzl2Ar2S3UyzXf9{y7Ds<)TFj%MvzNtqz9F5&D3bDM{dp3U#X1J=2@*qi%O1* z%gtlK66Rqhs7Wn<=osYEf$G3&ai@)wuPi{ffnaD?Aa|ShP~bM3 z0|jQUIbCV#5UIbXT3%^^#8%LimJh0?y8`Tm;SSC@p68a!K;>P5hsdIISKy_fGDKKNp`k2iELhrJ6i^0F={O0nA!_ytzIMF zqksUFaui~Lj+O#K3Tc!*3W%^$1!QOx0~93d3w}7L@H(RG z2#f1W4aaI!eW^c_!=}1J(tI)<%1Tq*+Ad%MWkErt+YHhn>uGtLVXzWyhUIDV2^G~^TubX{R^<~m ziZxjxVXRDXi5RGOiC7kxA*o}%oKEC8pjd~2itDf}(2-hKs-_h^mNHoDc|~dTnGeXC zD`yiS$$gVo7M8ll(^2r2Fdh683uwNx+@B9%m4EN!VQ6w8o(7_&e}st>a%q&Z6a zFvemfa@^~9ASE@@#3NI}9>rDT!Uejhssa2q$GlKsF2#-sptxfaLz_=rEcHpLVxKTj zai6d((2*K*qadJTFq9FwrDN_Ijn&98cm1`s<-SaI}}s>|I$= z_9z`drAmibpd&f9z)O#F3@#>^)C-#wk1aev)}+Q3UV^q_I+;wBq|#zCNYP@l957ER zz{Vt~*B*p{N&{>pB+HTkHZlnrDb>oIOyu2xrL7!rScz=q2p{yR0RTQruPJTi2#5v9 z0f1qEf>e(~D|MSnUXW1Q<1iNMkUfs$X){J&!IdYe;7a;H#gQ5Y(D$ia+bC^REEJnU z4g;8_L&sJw>F%Rr>+baqb$|srQe(3)#J{)+p<~%>4cXFL4v0uaR+H}Qbt;Xl z^zc}ajI8v&lWkHBzn4r_;nIfR2V`Ng;rA1Cl$tu2w@0bfNAiMFvxo80RcWD*;g!2E zK_#k^VQDWW{1}UCdW~w2VyXdC#Z)JtVoF6rp*ZVw(t}E)p#&mplhIHj1&K>`Ogh-4 zxMONACQ}^~F|;aBVJ77Y>L3%Xz=oKlZJ^>y$`veJ3#=7@0X9gszq5sUTcNln6B4_G zs>z0N^2$ou>k3kh5-sv z3%92-{GfE<_SA(Q$c0;=w;5k;augfCa(P$A2R`UiF$bsBVpickLRBS8V-6ZPE(jTO z(0nFMsfO~jdZ1QvODm^AVkNSnv>dJFB5P)Oxws>sx?Ic&&~&+M2IDG-j43Y{2bU-p z_qnyA>Oi;RiVC23MI{ClN@{+4x~lMey)2m0`7L9y4mrPdJdlzKjNv4*Re0+Dse;ipJJ;!?{-BB3-`>9Uc8WO;JgNG2hD$>v|~Y8E&D zZc410|JHzmQ*|{_aWhljNTiw>;3Mm)zBf2-Us|QT)Aq9Ob%*U!4INIxkJo3bi8>oy z+R!y{>=d#CYCe-yQj7Fw)$n|>)^p6#Mfw_z70E^V`YQ=a^@wM9pi>UpOM66v#6o0` zXgS)f0uhVT)lk08R%{iA7PpG~N>)jYpU?V>NU%^WMUJ1DrLA-xEmep}ap@3JymSml zn=vSXY+Oqx6K4i0ZVbx;9jV52@{X9$ls2Z5cbH!`ra%XGY9cdvM;f5CF$E5@%f^)O zTZ$kO=2%(;BFa(vV-w_<8YS5j(iEkmB*tQM$WfBxfl1n>$fj#QDQ?jrCdI5fqy}tO zt(xbQ4%i$R+eHr8+(+`2RL47+^%QMRK&(P`yoLb^Qk@)bhN>4kRgJgmbWrJDj}OSYA*b-_yy zO4e#hrLLtaE;x%7FF59blw`YXlEki9DsGp3M3$x6Wj{rio%FpE``D?udP22+5X84n zyp_1bYqB1g=#$C(6p=Xk735om7kLG!Y_IQ$Qw%{WvRO+_oXk(~bl1GEA;20pk}x34 z3uI9^$#Z>DmxIlXkQ(3f>shF!n5LUJYRX>ici^DKdkW6lA#|sHMMKn?!@rS`Op(=J4>VCX!xxWq8H~lKk*;Hcn&jLAZ`{d_qj>H?NUTH6 zJq$;yh`D-4uUrI>5+aDBwOr=asWwJ=xmd77xiC|!n&l!WnsPN3ETM*(peD7qHCZFn zL9V0~?HBj9dIP>bcn(B>TY z9vnC>b`A!MJBMRxQFDKDc0QbLWz<@!8V43t<35sYQtKGgku03jbqwIJ2Dy$w_$|(X z&vFs2)Hw)<1xV*G3{a42(Wlr*k;f}b>xe;O4YEbI91xLeFiZkzh|&hbLa_|lU@!}G zr1pQ+vmT}UzteauCD6g0^u(TGDW{28O8mXm6RVYUgJMqvP}~!Vq0JNVUHU+=ClXTJ z6AcGMq*`m-<1SCPmYbozdsJ0OVrVtPT3r%cZU!JF%s?Cvk=o8AGYrCbywb(G29D*( z#k%G*X-aJ!HmRhSl+#{((JrfeZEqbu%I7cM$Lb*jJzeX>hioW3gqd5UWgA+Z%ymu5KH+=3EF zM=f>>0~L1*%hF*C*|6_p4A-)U#%Mh(GKEalw(nz%x^Y)^#InE`$<}>wdR6SD7q{*J z;sQ~vJ2A8uhkE*akK(wRXx*Wqy{})KO3&QG3{FB|2BRR^mP5gOv6|_t3X0qE29JwH zwdKusDxK8ACj1mJMS4J7x=L1~u_U<$Tz@4&$$r=gl5Shv57%%kN%h0^XVR3~*nn`{ z+l`x!wVg`WrF}rwB{w$w1f(q46)#S4XRD~-do(kEVl_cCLoCqI;@$MbOmELyBmWMM z6$ReyzIPOyOD3!T9tBqerV6f3u#3UyO=N%kvPW}Zc!AeyFyd?XbO+O~!RU$QR)bLj zQr6Ng7-i~o{T}TC!?CKMU2tqWcs-7i_gaX+Yb`|L+d&pR+1saY0k2gS@$KMS=D}WH z*S?jJ09$>_FhW_&@OdJu;T}VjiK~FYh!GqR(bAMpR6ySzO*x?0BtcV7EYQ(1B8c>K zdyEJy8mkFL1k43N=^^Y~POi$wZgV%g(qlI;KtXbmOgcyLBAN3Hc}QYv+#)%%R6bEW zv#cFL%`B}qB(uI1O-OOpw_N@z>svB=Y9nyE9fXgAmadySFxDYA0^LValXAn^P|fE` z-H?D-g>*y100pT*)@-=GUyTPQirQ~KOUDcz9_x{VEbluRCN(BXfgVY9&^~gbL^O!a4 z@-aS7X6m)3(&b~uVspslW5)waB>R?1g?AM9EdXK>s&63%C`i_z3KvDnn+QuspECo+ zDpU=!ENwoaE}km(iTd6t#eIT#V2RYoYbLkpOGjQaw@WWaUO;d2 z$HiDiD-`=9fa3m03{a39>nz4w?BC+%LKz8KJl1LOSdSX(G~Y>9YDhX;oL6WzfLL)0X0hVl$~=&gnnKUki43h0V@YyA-+XSXMvJ;p{k5aW>@gD+ZnsB~IlNSnx$h(^HRy+SEWe7XUpnZwP%K6c`kAFw#|n={ z_oRcM5;_bEbfmh^`H)iJfTX%VqP&=DyhJh8-&>36_|c}4L(bx2GEi~zSQeNkHNL?? zZRsqf;~N5E4RU;A7@#289OH+0Hg~d+Gu7hexQ1gjsyVJdQ|Y97@41{QmG<6qH&2qi zH_*YI8t~40il7A!TR;wY3BQ$IZp@U9w{hAdL2tHYlKxor6x0KLmw)At!~g@NMo;+R za5FiV9#A@Za$sx(a>*co`-{zt-64x+&mU6VIF4cP=nWWWIwZy8UjnIF-%aC zZ0W0q13Zm_RR!TZ#Vvge$BI--Uw>||Uk?XgRI7zF(LN4j(2@>hxmrE?VlzC^H|&-R zVzh)H$JJVDoJcl7<)!A}5~b!oQ>i8AC5t&3Qn*p^yu@O$8Z|Fr9!N=cScv}=I*JES z0AdlU!y<-OV}uc?<;E~r31e6uNJ;iq2>1%mTNFF5Lt{CrId)&kHpwQ(CF;p}YdDsq znw^CMLmJVVl{O@d#X@AO>Uba}Rc~>J z39dnzEmm@1SK8?`a4bmH+vYQsQEFm6Y?U^( zH5%)YO>O;^1SN~i3F@b*tvTIXMHN}Y)>dS=PN28B9Nic|VDTbzOi+`W*&|#-)UDE~ zHE>vioY@mT=u;yVe3nI1I#MAZ79d9|hM`Tts;38_mH>(?Aci&t`hLw~8#Fg-DjN_3 z6#O_57WQC(=5H`M8{(2CoUPFN&bJFA!$MfL&zmAREKEjPf4Y-aMB3pnsqo-Cy{NUo ztoQpZdRYM!zq6BKnj_fj)uimtdXep+v-TghX!lZ+$y0ssgMrDUuySc1%vdZ=_Q8$^ zQc^)?56r|kay?yXkeLt2qGXVnpMZ>%TAo$owbJF;dax#!XYEKWSwQR2SvBitko3S} z#S4geV20Fyq}~ql<8n&}Bo2(l$N`D_*yg!-H|XlPl8eWsp37KK!#JLnO0>fJ-V1dl zNx2k*m5^e2ASE@~TMf^9n(P@QmLca^mIESEJ%4bIQE9J7KrBJ_dWHcCQiH=)HJYH) zMh_xdw$kx@1IKFQ;IR2j4x8E;Y*NW#QR&X0hsUbqp1b#*WTk?#k!-OV57rylRIV(Q z24xFGmL`L;MT&NDr+5|y1DLbL;=U-#a&aDFLY$X^#Qi$a`LA%5nGuJP`era3;e78F zuW?rcyqGf%75~@5Q9w5hXX9-#9O(WTAEH5x0G)4lpD2};*! z79=ZAd5v~(EJ@dB_n9=MVjplztzL~S-BhWx=OMB{-TZnfNL=d7(+Z30wK(ZtrDvWbB+HX$o@5fzmv($yIlJs< zaEvk_ELNl)-||38x_vT9217aZD{r4191GIzll$CZp2-&~yraBbpvw?b?SlD6Qd-PI zKOd?~y7n*+!==pQ*q|vj;Y5iqrsq|7nSJSm(+6Z-a>D5+AZw+EidGpSBt(-?K2)sn zSeG6u*5BJ@Z7?VZTdHzdHC{qi{hef`%aM{rTF~-xYycDG*d!oj$%)WHMP?LFgaE`! z)I^9FpddLPTx@>b&#hi7LShYSK4>^vMQrEt2u|s4(`o^vgb3n*h~!|6ek%L0;*p7g zVi{_%W?7&kS+}v8jgj?aq}DczD^Y{Tid5ZhzPCEc`aw^JZ&rj9FC)XzRz{Sdr!q27 z@iMY3(2*KfU`=$RH%Lo6PR3#-a$MnfASJcv#z~}6N*CQ67>kjMZtf#_Ny>R$8vTY~ zsq=bxtVuer_nl;=dH^q(G*oF1-~+NS*^~PTNLgwG?b1aaH7gxKOGs8HN6<0}=}X-j zAX7@?mEIblFj=9zH9(~yiK&J=@~~NH!!4dPlMQ$Cm|3zY&9w!zUlOzp#YHI~<3%Zw zkeyP44SMiHj224=8wA8!Pt7Afy4ZA!uvqXP;q;#NTkXVBpZCMV8NUbO!!K&hD7HN;t6$OFFqU4H#NYQSgzRvir&w!M$ z5OKgl$?kn}I$KQSh_twSw^%Ghb??jrDar2LCXwY-+`Tgxi&5RXV}hDw6M`3U`e{M{ z#41!1LJUxltU>rLjZs{K2r2F#hNIm-=Ev$bw>|uWuu}eEcpxR&r1o@|1)e!!393o8 zcUhzzLX}2wpMrIRghSXSwMBt^OMDLn?jdpQl5_Klc-kfB>Iw03mjqJ6C5fZ8X3o!g zs+se%R6(4z*Ub4@Uo{g*DKmhh)eK+A)!uS%_`)sqYHt7o6eN4sDQ51`L11z3>LapQ zRPXAiAaTi#4R_w^yL^iqE{ny2RL90Vkdkb;)ZH`1W5N3J8P#yv+h>xNSe$I=?k0aM zR%{826}JTQwE3(a@f7=PGvHA^%j2EY;yXXzhNGy$9;J)#4IG<9?oBkG$yJjp3HBK~ zx}HslDqcxw@K}{vNoc;4tmGumCc{EKZ6F9`#gjY%$>P*}T_hoWZzp07*to0@aYus@ zwl~$?!S@Oy4N~B&`3EAtAeETZC%e++R1K?&yHY}8U21-0I3OZ9qR6FdPt(TvkDl-AZ<*#mg!Nie;!}70Uu0$(GurkX5a?rM6hCMDEHf}3P4K08V`egf|pGPciKbqGORr|q@BPOd18sg!pth>d2YO&&e$~-Ve zvcI%R28)vutPb|mUkXSTrus{fgbFLUGr%b~k5rgQ@y>t;$lBD-fR})jCEH(IaH?)d zEN*`d6su9~uVsObWNq3Wi()ITP1|EuplTEFL7%Km+hf_t71t&Ju>e(@hyezF#! zU~(xV-}X^MU`aKG32I(TOp#0*95&z()l#U2}K$av&gnok70-C6+9gFKQfLMvD!^8mFBwH|f#Z7Sw zwqSPEf-Q(UH4H;1KSm=fTd~qk#DTF6ISg|jNlj`PhBUML)A3wxhn5b*YBbg(hhg>C z4ncOsO$^re5MZ_DpsT*aj6OYW--NaKv6wQ zC-fGIZ6zo4%mN+Bk;Y;vw^WL|5dg6U)r}AX6eRn3Os8c#Ufja9Cupg5(gWbQi9HV@YxsuK7%wew3Okt?**YDNe1f zBG06KTsn19pseq^aweq`k;WLVA+;j3S#2v!G0*ktY3YiPhsWh2SA@Lp zBr7?uXkIYo@DR1LIP=+;@;6fu?*Ea zT9&p-q&EVJD-nQLgQ`Tt00pVt8`_G{$3#naZy1Yp$PG`&(^4o~gdeJtS*3+yp`wMt zEYOkatGDwLT%3S;vhdQ0SZzb_&L7!)qyh>>yRC| zeNAtaONJkXVJBA6bqT5f_L`miPCTiZDn~ z5tgH+L`(wNw3e2Lg^HF4v$Pn)-2W*0oKj;Lq^L102SmK8mlsey)|EO>{@dJcnL(KP z8M}PokYiaNV60RPM`wfKvD}N!&bp5zv+jS1_7{GFJ^esHNk0&uI&_TGYZKZ2*pLA# zrGr>dC_$qsek=`=J?oKJtb`j)`K`kwI1VN1#vUeVPF8WF*$5$)c9S4QZzdtElt~N^ zqy+s)BNiK{eVGJMDK8tsApuCQ(j4XGLQo0+Ff3g<Cn z8pb5)%Ps0{KG}&vt8jbbvTCe^}RVh7S!;*+_nDP!8NGwEm$i&g=E=cgMyo9ja zT?|&jT`W(#yO0!FKIILa;d8#L8#?>3+c2_2+|MwsOVm?h(qcNrbPr&X^l6y7V~iQb zc8%%TDAZgPep}wq5fuB2Zs-h4m*-xUM%k-?t~zIl6cBhIrPU--$zCRLLLw$HI?^r5 zT-`}q-l700(V`GXt1*zEFJll?!aocPbOa$EbsOBgu^_xPJLDq*$eK9hBa(nD6oi;Y z(n&*QhnU6?SsTZ{#!|Gmd*&KfVX^XRD-XT~pwvKN1mpW5>p>OR~hL+uZi<=&D)#x7^0f?{_pD8^`rK`ZM|Oi+V3xZzlgLcOM%7%=?7h z!zM&91qYb%_r+Adh@5?Z*`Y8eA7FNWCE}NYEb4uoUuWmB+0S{BGf9{rdpSlXyR2&^ zY_6+%s-ZJoR9Jpv8OWJmeq$HD>BHk&25VRs)q5!Ub+LX2#nnao{z=%D zPN$=(KK+&7mNE+G(6yxw8(9q7Qhn`YeklS$l_Fur$<$n^fUKSaIhUE)xlh>E;DgRw zep_Qfl*=$OvKV$3^HX&!KEDs472Say+geK9|OfBtUI zk{qhDlKXdtq`nKzO1N5E$^AP+Qr`tcXsr?O2o_Pv*E$m`p4NhkFZaa9vS0f7z)DJiu$Pwp#by zfcVI<9-y;rYXFp=?Oi*4WGQXOhNA&cp4OwZ+SeYpKHInH(CBPE zuWf@Hp$W;9sS3DfnRRpG$+QKXDN_}8&ob)*_hi~aKiaj>smPTr@Ag&X7TYy5uE(%; z%o3=q*sH+WhN^+yNubws`YY7$$# z0ZYB2{=Bo^?Q%TaRD-WhuOe`I)t^c4)lU0vhw}~ICm6@4jDOzSya7I|6_dwonW{4N zF0-ysVnX@z-L2^w3N^g=*Z%C;Fu1DK{Dq3XK&)y*zXGv!pHw$gwk0hPt6bnK5L-Jz zE!Or+8DhQG&Tm_L6x%R3H)#GsZt&aPeRlk4KAd6k$OG_25Bu}okSQ)ch;FefQf@e= z{53neMWeBZ$EYG%zw8j8d~i~`{IWe#A!5jv)XVqliZ!fr#rh9BsrtikHC{iQ;F!8U^SHfl8P~8* zRs9E2l~^Tf-1wt87M|v#ip-^YjKWp26gKO7Rx##^RNY0dBJ18lh_szWmL*kR(W}V1 zs}Le>Ptn;*e>{9tt@^JTHLP>O`VTu*jgPD0{YSx8+TK;8hOJfAJn*{CpyNarp{j6`|0&c1sd+%iz{$vGiWnh z(APO+a}dEw$KFFWADNZa>m7-G!=^Lye;nAYaNjVE&hj27BRI=-_CU2n6Ph3@IbQ2eAGgC7mY!zEppI~bmy4wj3>RE;@C z`;OV#xmf*+F&X>jL=8;7(wx)-l`toEwDOCbGKm+(|J-L$)D&C-PkQAK!7A;B3)v7$VrRv$^$uKON5G^$&YDw;G-0eRE`}ps#c0 z?jwYYqkGTX19(>W*vOI|I*mT6HOJu+ifwV2nZMH>od z(dI9?4&Z*NdZ({KZrwvY>5;;^InCDQY*nq#^rI(zHd{3V+xCh24`kY$W^21#W8kDt zh4tBNIRaMtxcfH=O~mFzn?Luv!SN(g!3tw@c4K1c&xaC_hu>uMz%>A!3aHcrhkxy{ z8`eaegXi?$sSsl8Q*4(Z?Kd6WsQyF&9d|d|W3gONvObjpW`R%nT+kL*f0s{{y+qYum<@Jg`x|Dsq+ z`l@z#7W#b13$?K}K)@XjNB67wn4Ty)nVcdz$NUo!1^AZ`UeX5a%*1(kM$$w7^+^5S z0rd{O(Y2aKvT?Sr^TrJ(2st+|ac;ynY7?$yX6nX0yg3xf%b@4Hcs!hir@TLr^4#Ju zKmYS&a|ZQmJoJfSstmC2yEtNmt~g@fC{wX@$u=MRbc>)9k-o}v+$gs z1)~Ak_@JvfRM3-)YW$}=!_{!M_TfZn+~2op+>Mj7_1Xt1O~~FKGqbl{SL0iYbA)ld zcYcbBp3LL2=RCF%b4I`WL0ckfOn;x3TUQ|)bBkiE`psg<#`$_7{6d-eFNK*QBMpY5 z%^;Dj#aEQA2rp;wJ9P#lX(+3o?UPju#0R6Z;e1|A2M?3E{^G05by5Nw;78H`$>d~< zkM^-eI{)*pGXH{>^ZbU)vq-Xsd!J3#o5d-b-~X50JI1TsJC=sBdbg}dg_~59)3c;= zUwk!%+bV!F{{vUdt%=DBAC_6+VQbE(Uro*fQqJwSU2cN}l*8QaXR@YqG$}{!yZZ^) zI8QH(gD;es&WTCWz0lCqfh^4YM6HeVJigOhoRR1B-zgiv%k#Qw-c}^ze!VRq*}0-2crr^T zy=O_&aekiDe<$C{FQPlEYKg`AWPbWDq6niaqR1!8)yLUIbQe3vRXu0r|&T_O3d+FgmAl3l=d^$ldMT3&qdf zooaR6PAgmTx$dv5cH!n6|3Kt8DHM5+#bSuH%G%Di7mMX5vAR^U72i$4IeA*pW(js; zgVn_T1p5?Du>Ut|vO4?F1snA!Sx$b%*}D(zq~nadmXw1`b?)3XEYsnrqJW5MvKxC$Gf6Qg%8Q073?PYYXpayU!w9doKVu)FxX|QqJD@>g+{Rm1XmU z&HxV{U@VGVg?Q=ppUpU_&SpFnWwUcPHZW|nJmx-$lH7YY)}huV84_~#UU#J!rl72K z&Qb#=_Xm-oy=SQowa!rehqKLW`sL+wE*tLeB))UP;1buUOMd~~uC}=}B0qai7#!*@ z%v@4`=d#!)61l#)^BAuNZ2F9NmHWK6p(*6C*|NQ#b z{^o1+KmKrI??pxjUze$(<@~+sY@j}q$L^lBQ#^O$2+f6w)nGgs$=4bB%Ta>OGfVxA2~%{Or`J;7DN~&>9!tBNBHE0-V>}p?1%AtMKu>3IBc~nU<}IOV z@8Cucm~}nn{fTT9yYx}aiI%Iya(GHtX+9X4wL$s1Rmr7~9r&#D`GA@9c6R2=&DH7% z&z~>whT3*BnXZqpNQ({E$$DV_TFI9N_U_DgAapqjl^{o*5kPGBqd!H~X7`Q&QsB;e z9T)U<4u&0sYdEo^Ke2INgT;LM$oY-%?7c^cJCbsK-t5wbe0J_yXi7VU;lGO9?Y(Q! zO2v74+2u*emQ+K<3e7p7<Mi(R$xog^6>y3KRcInduAzbG~dK z>cyj2QTxR--*-~GGc9NF``!9-s+r&3x4C0))vSe(bNEI}k{q`j%y6iP9(CnW;w}46 z(Z%-VmI*G-(X&bc3h0xr^%eGu8klCsb$i-$uI{_Y)utz>bl^DC-%8Hee6u4N6<%lj zbZfqCKjLJGJntPpok8pzRpeJ`LtbOoVau^h?C3$sb=Xl`TAIVZ7Zh1A$}4RNp&1n$`2pux$75L|Lje+Leh{iMeV!Lg&nNiY)+rPP)j zCGH|%so!#ZxrTM?FiL8#hHW^UVVl2@({^qFBjp8@grO-7E-1tIZdde4UXGIg-mL{;QunqtBPTMtR*(9Y zWE2=dMhQ2OQGD7zqXZIU)F3A^ihw@h%Ox2FMvzg$O=J|Gq`ZcAeXOvDRN=h#Y%)hkA*O@F>FHvHQ^VMbw-L;8Wjp__j~y7;N)|P^A5tdk;prOt5F(oe?rA`@ds<{%mNGjjhhrWUO{rewW>o)HqE39D7^+cd8)Yj?m+E7Z_aF`=1Ng zEew-ismU1~++o+U90IUvYKm`PV**?olm0~c z3#;Y^SBb4R19jI{e$}jTIH#^^)_-rMS9fO>)7KYdDSCUEV>0*Z*2ZG``g%r1Z!c;L zUy9zEgP`N15BTQZBf1^sA+F97{+<6Ia}t*e=YX58WI8IW@Oq;l`N?7xsJ)$C`BShg z_RW-7#}2LG1@8gq=jZYU*8B_JW00)zjg&@Wg}(5n{s8P8i>IR4^Ka^pVzR>Tq!b!n zNc?`#t~Q+`lf%npu)y{d${&t$f6MapU7vL6h`N1x4?bnDXi#&$Tp7xwf2RxGrY zgVnzfVTbVWPS%L1L6BASa& z`|$G`n$`bZT78|AN+66?iWq2XDr%@aKUS$7oVEWTt=(7B?mw<$exEz$>#nO7w%@~l zk_4QK=R;;F{#Dvf9H0|=eRFX%8?Npn&UCer6OsQYcbRq;)_$Z*p#4|mNMRIoUDnAT z&lhuK?&JhhTfE^(r{6{4F{Uej-)^CKGa z$T-ix*d@=QQsg!a;A$6uP0<-5PFIuR6gM^uaEZ!z-}~_L2|3rl-YM5n#mISh4Q3$Z zqq&KsclB8KbpAD%UGSW%E1DHr!%*M=>^AO;t;QdH5*3>t3fzg$YM%>uAvZiQ8o({^ zTwGg|k$?Vj7YY{r)0E@HR3Sg%hLI*4PLIy2^?IV#Me;X{(!i|!`w8uy0w@mS>|?-c zK9(P69|vWn-)&K9=VakNVFd8=;b?KJ4V%AD*n-S@|2D0+*08H-^;EYP(*m^Hv^?G2 z$pOyKqHlNzA+2^8E9!LgnYXs01@qem6PPqwY`i3hx(>=Lm}J_M&n`!vY=Y z9*a`YhIMr`nVUfv8dv(K&{p1KrQlibvx*c_)APXwYmJ`S{42IYRz99j6R_Op0%8ab zj~KWHL*mWoy?VM$e@G|2qnmsAM+|bPI1{f^CK6&gU1fAujqV?P2&Xasb#t{+J2U&a zN(`Q5|0v?xvE)?k(!B!}iTzdmU&7PNdxskDsQE8@PFD90&G-7hNOTx%<`-@wy7`em zUC0kM>p*9-|1fEG($Q$?vikDu=r*-7vucBfDC0RX;I`r(~elQ=- zWP_L=b(lb9vEK`=EVv;wJ&;Es)QPJL#BuRtTh6Y^2l7dL7XMa@c&P{3XzhtyHdfUs zf+4VcdA3;G7oM_L^Ad&UOhlTOXmawI^!lr3syYt{atpFizW&<6z&X+DuPwjmY<6IR z$$Ye`W>}mV;6AxEUhNR&u~)MbL+4CHnw?l`%0PPg5@$_MCevzlbaRenmQnTDeDYu` zD{}erWgML4KO-5TGCi!Rf&Pfsoi>ZRn`(J)MVlfrgDWM()QX}{{mN?;A%%Je1NAJM$#$DYiA1s=R()cmS0e2(u2$9 zht|v8@#xXnYB8%KxhfxA?n1@c`BQu02XR;xH7kP)x#~3pYm}^3Z8RvMYBR{cMoVTO*s09wuJHGh)}wJ z4=BM|=i@aQ1a@~N7UPe2w@7WM@86a9&@ApTCW5r|Sk4uM{r#O4;Gm;j1)6)Q{_by^K=co6A4Yl%VKoXy|KIKzFX%J3%j90pjXER~E>~Km3arUwG z+987#r|RbD8?d4Aw)?h17~5tucsQAl7Y_ydjoen}cqqVF#mjLfs0qSZkKy5q?Q}X3 zItOpUu@?xaydJM*r6~phY-8J67d^B5ll9CY8UU>&*hTm z@3YO{05SdZZ2IN{Dfruzf@yWK8LZDHC(;NXmI`U`SkG%xPxHOiF!P1fQ*0Oj#SKFY zFia3cdCZ1Wt9aQ#lnoB^a}Z_occTBhRJp9o^Acgf{Gqg9JU|xoZCNs2g4UwBP?jk! z8UV$Mh8SR*u;Id0Z1-owc|Q%81Y;$x;gTQYjxt@0C=6vNUq;M#lp04lO8s}De=%?r z)o=VN+c9P{CVYY&0f=Ba2$)v56KzCc)$6n2vXWDbo7uDqjWxW&8q`-36ohgf*NN;= z1*s@Ilrw;1NgT=~w5#=f8Dg04&y2$4&YvAN zavwCeBmOv;(0e87VaDv{R->^HZf^D0cm;EU){E)6Y+CXwn80E&u7ZhgakoF)&gJ$; zzS|Q76FavzsL^UR#e?m_1@rj`Lh%{YXf>NoBwcloI~X3zd3ScyQUa7!aoAcS5!oiCa&`K8LTIAj*xb}-eQFsH@U#Cu_d^w)`)5mC7ZpT*a6O} z`9MHNVp1P=G1mW9xb`M=#QZKsp|L*K#i*|&C|I(qGcnqZho-#I{UgX9Ti(mTG4{UY z9&7fJT{k|9=AHZQ^zC-#hwp?Nl-rfj5_WZ5uxoH`u+9gr1-AcY>o1VYyyiVxgneQMpB}E-L#T-U=;Or0AX^kuOnoz1~>hnJ=T-4 z>`PiK26H~mlR%3L%3w{`CP)0`Mt1Dk>th}elk=Lc_kl7UPSO@?IXQpy2n6PIqesF_ zkbN#%k`l7d1G3MFEC>=t&OaY4&mOHOBehwV9V9HEn4W`##V67cE^;iE&~Peyqx?xB zqcFRh6guoU@oF_%R5GZffY_pFV#Wq>xTLX=!{q!Wjr!&)x1<3?Fh#s~Ek}6;4z+eS zMbzF4Oprw!3fn#d99sLLTFLdg0*CUTv_pBHNJqrH=b{o7nD?AHYxABHQ?RdrV2UH` zM^;0*-I%>x-QY0qV~h&YV5PQ6e0_nf_6yk+Wv|o*a4g{&E5UI&<#I#sF3eO7V&&FerEXmErV@asygfkdQ88K7-45k5ME#4p@ z>;s$Bt_Sze@#Ob`0UnD8hY8_=1pRh29G%gDG+Kc)^~nC0@Z0})TdbT<r0Ufh+A}Luq?4gZInSc_C1Qbg1duR#9+FTDUKa!ew zvy9cO*-;%^ArzH0%My@Pag38KXUUi@Uy%+2;2}1GN9wlE!kUzTj+JjBDOofeuN$k= zFYtsNE=3jQ%pV*pG*;)v>*^~B`uiX#qfWG{##@}AMx?6{^-*^GKm?J6z0PZMkrX5@ zoR!uI*J$1`IuOe8XQdjBWpVsa<9m(`nu0@?HWfE1$J60@fciaFdxY7CEK{hgkPlg= zQnggx^h~<2@(MtfCn~Q<(5;N8EB-)YKV=rMMHw@qaN`Z0dwiugWfCx=OeP?k#fN;6 z8En~*&jPWM#~3zQ1G(1^7Z}QFpby6q{2J(gCR2p-d8)>oN}b*-o5$5ytmcXO55ymD z!>ieH^9XTtINUB8rLs2MLt_no8}5B2LBV~lrdgmTYU&Y=+w2n3vhQsuwsyo z%ZW53F+N};r(I*^6Sd`ddm3I7R5oCXpt4MVz!phGLgNc>VGLE-!kfWiG2gVHY0szi z(7|%Cn8wDkh2^I)W96sQkXeFQdDFY#i4oaLWXH)W4yN9Z0U5VXrZ!i0_j3$#e5S;S8B>Yd?tdeEp`X&*2rmj*&Im% zvP^&WCKHgd_#)=#6U@eG=i+F9J66ye4e*!2iHx@>TY5=Bvs!-0r-u^eudtt7{RS*^d498XA!**J4EQq_3fE~-;8SeD6e zb)?y$H9qS1K+R-cwz6eop8%6p`lJ3J4Vg1OcJ-1{l<4YQS+i{H8bM{5{@68=iiE}o zN+|OI4R&!erVQ088w2=oEX^M%`JYKsd>6OX56gCOH6&~EcX4$R(ifl7amtAAl}+gc z9xL;wbmBY7O0+Mw`bPb&uzit;EKRg8GDWAj^?bNopQ-x?_7dk1)8bqT5|^w5h!`+a zblIg9SArUjWvNO~eTy4#42BhCC=)Hjb2ltjixq$^@O(+OCJ{x!1j{W#H1* zvTU$cd}(=p&QDi}NkZAua*f4mT&Nfgnd)!pf-_0Xo3)sp%L9jH1t$R`1t$}bvUmgG zr`xJ{;IcZX5LuhwK&TWXF1~@jTs)))gjT~n@60jdi3W@%`5WlXM^Y1>KBICrM>}v# zs$)=;fBLK)oYlJ1XYGkeeLTh{P#@{4%3^F1$gJCsu}P%t61}X3_uW90mP}=PypQMr zIVn0wNuuLxT*2(3Y>kUxSdPEOWzfMLM%a^Q(AQuhkso32L$L;TWW)bNHi*~UM4WC} z=t~2}TKt;Zd?Yo&U23N4QyT1BxY@Mxr4wAcxzX3j{%g^krh|cX|HNA%==cR?CO*=n zAJ(hoqH8M~X$m|R>W?(VcajyKfQe**3zkj50!)_YPr!mS?M@j91}Jw*3zl$7W`e=u z(?Js6|5io>mG$}4!AL4HTRd7JVzRPm1z|3C#Ll!QHc}W0;>$K~Mc!ZdnjbLYW{BEh5PKN`k_ppfo*^ z=TGyGf*K4acSk`jZi-SJSudijAFcK%6K}AOwlgfw%4MefW40EA^XZP+GIAoLnEi<& zF3Bh`0^1TUC?nGZEUm+{@KPM^sa{rJEG9D71=EBOk>%9WgfIn(3l2MvtJAA^1VR`j zyA&8imV!eDYp}yRt{!Z0_k=!rlfA>+;4n8I|7reCnGVh{j@1eC>@$o2U_w5_NQhtx zj)(@A?PVVkB?RW;BccW~YE>j1RI_8XEShiC8b?{R{yXJ0IBHC~5HBM4VY5&CIuxen zqsH#9N#X_0%LpefA|{lO*kB{aL03kq=;Oe}$@;;Y**%9wVaPiRJCO&j3*7DG zgo$f+1154GHXW1GAv!8y_57y8f-ogF;A2JxYotc0Fu8&(u3hb|vj|L(g$>1I&%@5+ zi8}0zKM+&U=i~1a^54oMJ9=bAc$8a3l1 z*~aCY@sYb{(wPy6U#d#gW(ChN6N?!(d$BIdvJ(eS8B>Y zu(=cd$lh`t)1SS$(*e%%d2^>DF{uxRu_q^+BmA#$t?XeegRmMN#yVuM29qWJChJf3 zoW-FqFHe@-Un#pm-^CwKR;nY(?z=o7rsow&?*l1FWnG3ymS%k(&H9{(gX>&bSolOi z_D!lj5)0t#T>US}+@B$p@VBDe6H1tSgN@t=TWcmY{*QFI?5(vLhN*dLt^PA*I>{}| zyqMb+y5csa9(A_~8LJ19Suv3|)k3AUNz=Q_3=xy9R7@SBV1~-4E!VX61WF`6< z*0bzUx`5*R^C(?>N;=&nsA@${XJ8`sca<%eC>eG1RTh5sM5)1HcAh9Tf2XXc>1Fws z(>n*y^rp&1tNUaHjiSz#S)O1bmN)3htkc&%EN^fkmbdt=^nF;KXkwN(f2V?vHg@z? z7`~`?Ar#KJH>@z&AdVI}eUw%&Dslr87P&npvY?eG@t?E{JLpC^MMou6Z(_sLf!Y4J)t)c%*qpbiweH5l^{O6eif{<=eH6b z60^Hj!uvv*4n0|K>}M~ToB)AIohK7!oJ?)$7m(E(`Zbx|&X43w?d2DcEu8<>WWbE( z41s6DZS%>1pv*{^APXIJRjDPld`Be+<){V~d|}nZ6|#6dB!6eKPP6IBUym`Zk-Xo$zcI7~GBo+vNa497*~NTHy-7)F*3=wkpyIwuwN%nI>Q-XJg6r;D8FC#kXVcB z*S#+!B5boM!RN!#$wOH<`E7Os#1dSa-F#?Ou&U&CQ?UX7#T5_(Y!J>pjly%e`;w?yO0&s+M?-6*mZ?c|9I( zaJSQZv6|6cD_h*lI1o;U4B8C2~N_RADYL{SbOBYo$QnJ2~d{I zC+QQ3(r$PDc^_^El!)6AHp~-_lE^2|XG6(c)*KTIQ@c@8jSlXA4*cxm2qVgBHJRah zYV5MFAI**z)5(Y*ygj-xnc-$)L`vXYN_E_4l0Wxu|AQLwp;X1F09P1Ch zf($SZi+>X09W#W#pDX+(MLyuZw5A9|oj>h610f%09HzY zQr+)AgE3Cd-Ya(zS{G4N(q!D-9*=M-aBK1P@1Jqf+CSr;$v=OWU3e|^ZrppRNixpQ z6Z0C~`xytqx=GKsv=GH1jZhxO!O>v_%-5gg<9}P~1Q}s4^ z)ptGBY@FX;?pC_`*G10kfoxW4k*4?JRb+X^tA0$my^&kIr`zFbJXllPwK$$)Z)dTU zmm5s_F5(y?=lj}j#T-MR%xC-d8SdQ2o_B>)&@}s#8SmYt9obvxn(;VriW)O$&4w!D(mzoralkDh!GU7)?U zQi_bTyJMHDeoVRjZEh>I9ImhyNCDmIx!Ymit&`8h`MkQD|N6hAO#Y@glWJH0uU}an zap~&WW;Xru^4-iVLLqW^GdG88Ob%(JjIqT1`QqUm$GKGp`+47ajZ$*1f3sVzqY#w; zUuNh3(QKfi#{aGN3>yy4;Xmw{L#qo}3W9kej|*i-)>sUd#E~_O3(6oE>vSZyfU<+J z0KjA%j75lG3XX!Qo8q#Mf}OepDtr_Sc%TX5A5NTp(e{DXnuOmU!&MU5Iz?Y-w4 zuyPH9GawMb6zucT9i1434!2YHdW7hBv-f#JJkB%k^M>C^R&afyNVa*jlsm227Xk)w zEQ+sB3_g>l;0iRG3U^)4Fr8YX8B9GOkbRq28!{{9E71NQ-p)Hfj95| z<}xz3-1dUgUP3d4E1nnWxV)jY6h6EgQlL!+Y&1$IcDQkr;AvUR3oOV{-h^6d*p`R;X`X1^U?w51Ld(6&#=2f>8QFT>U-BJSKrE^GG6xQe6 zw5*MSC8l2KA!XJ@ym4MRAdLS=ugtF;7*gtqzH(q(!VhN&oDC8s`-8EWm%t+xwXRFx z(XSYG_T}~kXV06{cA59(s)(A^eYugcH`zn0(kZZC7S5jRNhvGYlb49S+Yp)~!t4!U zw9`Fm2!mq`oP7rUa@+-9SzTHx_f*UiH8bxsFts$oy3fG8MvR^PCcGf(^CR$>_K|BP*?N764XkhvzDxknO6s7>vWgsR@S zioJ?Ff9APS+2b0?SaFSh_UCkT)%qM|_MEN@Svg(5fCo+=x_=Z-?+7*2uJ)l-*PFq$ zp+PgTvu7|8Rt5*E{wTJ8T1dYPwCvMD!r%O5c=?cZ{z~>JB4I@_P?ab;b!2IGqi>tJ zjx6o2mb8u(Jzq+C&IHOl;4+Q`(!x?d5y)x#!b@g-kh$$s5sjm^eUY+6)Y++98Z4L} z&&j+~7X`JaJ9Pt1G3HdZ(%=-AIbWpBTmi*0YE~=T_-As|*^nJx?XI-DA-k@l)^$U6 z{ddee+dIR{;Wv4W5}bK^XHrRB(CwYcD-E2e$$kXuGgCR82$g(Js11Kgq&%YAxGkf4D;twHZC!sw`IBGS7Vc z;Lt$Pe6KF^TL8i2aiF8NqcUID_eMHc4mi~)?%5+9idd0WWwCm&J^d%n$}xtC5q@Ey zuTm`y_Yc;(mKLhzu1Z;EKEv~g%qgx#SqFTXOlb`E3MT_I-AWO5rdLEE7?9JIAF9}^ z51FS|969w@r&pZI_~Zc@-Ht&6X|M^!ekoGw!(#^aLbQB@uFrv9i#`YGmRY*4ko+L6b+>Nw^j zeKGHL3~F8BSvyALvv&+488set45FVYCC;hkl21XkP#9QRSYGoMk<6!-`!&@oJ+<5) z1{dAdqt-o8X}k3ZMbwF?^-yK8>dXR_YT=#}BTq8V0!1onS7(8uUx}{UC#|*n!l#Vr zqc_i^J}H`F%^%V_G=5P}AW-$&D_bx4mE6JXCSgHizL*#Wt+kV%QnzmufQ8X6`-6K6VQ<)Mzwz3w8aOI&2+Qkt0(@!p>Aw z#hx=!ET5I^oIEVMTo;X4ACAsEV`)gK{jqgzvF@xlam)PfYH4VAhP>V3d^scYdXuXc z<+f!-oN*2>uHQU6crnSStuh~8Y^y~jAaq16h#SuMjvHk%v%0%2ZDEs3(UY7PW*l|)q3 zymoRhA81P&ID-=|8V{+r=Q$_q;3QR6UDLryYA_OMXM0E;gdQ3$4YEO1p46e59k>{xW*z52Sh})hYczsy7Jv;%o^BLdp_%*eJR$y z(fQ(P#XO)Q^NJA)YE?()fu=9D7Z3Nlhje64?MTH;?dVrx>1=--=r$K_Gw=1`=vbCm=#qvFEIyTE`(}UO^p*T0~tz6+JQI6qA8s)r?i< zVuFHMOae{6v6{KFEQhgL%{C^QV$7+4cyHFTS15A@RM%0%S^?F6$GkJWG2ni#CiC=0 zsG(+cdP8-^q%*BAhmy!5N@sU}MSNRqHrSb`^(`@VLZ|huizI+E{a}TW7d?$ODf9G$ ztEWEcc31a0ZaI6IqF@#4<%rBXToOX+i0)-dT)+co4kEf4<;Fd|FYBJ~L&MjJ!oP5>rRaq8eRnlo-X5xyK@JVu+46 zG0<;NB;|6ykq~){Btq(dStJ7s;(;^L*Wx1Ar5QJ?=*%O1Q%n8Ok-mAYQOQtO%mm3> zG9oc=$%roEjWeWHhx_G4&!SYTJ>gf0dq%8{8JUOF>ALEp4yn__H7dyVM_}?6WYJM~ z%%>WCNiC=EtKQ0GySC5V_cf%{3GMqDm+-?`bJq|9Jp=L@cDGDU7>`xvA)zCu{^**! za~YqUBM6;Pb`oVig3za^p6L;Uz7RO)j2;sKYn1_ON+$E@(N2 zk&Lms>X2Q0Gat$55mdMINJdWpJWK0K42*QSWjAk&5s9fsW?v$@h&O39s zfuWRoV%C9bMf^ys10_VYv`jL~9OdP$1M70?k68!SFOxQDLjn!OF@;6~7wC*sX=l6gTVMO3}h1)Y>Yc$qdM zQCngz^5z}8h>rSVj$P0f^QlF6NzbSafyESB>V{Q>)sDE5R=tK>E$s>=Z}l3hsXJ!% z8eb)C(%S7XP*99UrQJ^GsZ(aVow$x$XqKzW%e1B!pP`5dMn0>xK(9jr0^ZlW&#Lr#)s+jh&FMd^` ziOOj4OBBVDyZBY<+rxaLFZ<#b5*oE=@hebGvu6%ia@mX4r4si1-xijB%brG+mZPNf zS>F~8G$nFwN3GIV=y6sPvv<@Y8BNrvqZa*4M!Jn`bk&S*_C_|=QR`778~=`Zw{uqM z>mC`D@7CMn(d?bGgp#@tbZ{mm3?$j z7gFQV_@sV;NT+%rTVIWWp4$Tv@_T><@xWK~f;6yZWAhX})lvKPq8I5mN`PgS{oDy4 zLjDB6f_UJoM6LZOc`CJdGfKTu6IHS2w!4+S(P(#7MdKQ^yOFjS_Em76M?6mj7s{yV zdIhKIV%yy|VHWS~+a{t?9c`Nk($+O&&IxBXGoq1-%#8T6&^M=@~T)KJUXQmL+(bZTjxlC<0B%(Zk~M@?%j zUH_dJI~@eQ?9Rbv?jR(U)CKJzB(LCv)33I_nwYs?UH@pJ_N(=qiOw5?@_T7;#GD1s z{OYxeXe9NG!AM!+=ZuR6i`J`cnR~k^s68DQ1)5^aEyG3GdSUKF%wC2A4K)~*;ZRph zIt|}ovDV*LEt&I3nQP5RMa^o%7yarlIMxf1*$YnmK4esI!q*|)f+OeRwO?>T5v$;+ zvLvk2>RG4cWN!81BXYFW6FqPFtXStfWiOwiV3kiay@jQ+q$p3Jx#=Z)VNn&UuteHo z*v&$@*i&lv*$+jmEL3H&>YS`NI8^KG9;wR9_QQNJtkNxe`+K?ui-VP_xnVH#A%%^U z)jvI1u~A6!Xczm%7H;UNmgH=X#y-!@`esW5VRd<{@YR+E0rA*b03dvEaA8FFr^GA`qj z+wqWmbcQY2+Y(h#52B7oq%DT`@>P&Ed1Xt!(I;olR=U~x9@gpd$p+a0XP-cOe4dK3 zi2-$Yr+S6iGr#6}25bz>&5Xc6-+5XLPgotfS2$QP0}{(cHl$ zp4U>c$4^zP_(j?hKWAD&jy>rbu5i+{(XM5lR;cT!ah+DE|4zO-eQmky40o_}77OT!YXmHIL{brs-i)GZZ&V$B3d!Hq_D#s+3howtlqzyoLC zFV|(B)-axV;2&zJT^;zVuHR&}Y8{oF!z3EE$v{_3I(1gLz$H1q&pNO&M>@wsb~?uw zNN1<&D4Q9ax#}oKBW0~RL{H2(&43&sWaMS$W+B4dvwT|VJm}$eZPmGz9v0)lmWw9*};?h|6AS{n=zgKdhB)cz*);{v={ocBervK`( zuq3`alq+}2bFk3pqGcb-g(7Njl|WF8`JTF|3#K}yKF?F9I%;xEBr8^(sZA-BQ~4lD zabSM`NN=w-g3CMy=E$iJYg$Ic6=y3t_m-;Nye=@e&|^JrnYW_bYU;=Y(?oMWtcR{m zKjOzO=|}kBHAxTa(QDI>_~A?X5k7uiKlnPgjPOS(Uy^EZz9fI7GH&9>Xyi-XWFlXZ zKephHm$to$GsyHN%qi!f_8?{D)X?Je!9~TM9y#04X+JX`)b7{R9Gf_m1FS7`l55T@ z?6JyxIU-Y9w9>FS(VzJ}Uyq>rw07uI!cdw+oB}kxJS^k6x>l9kPC>`tl7g zrxk_^bM*_-Mkg!J@G>c;j;xXV4JUk^F5mDrPp3C4cY4{XTJj9;VkNaa zHvWMaH?VD0ByHG^tB}ZcSa~$CZB-j>*p4fV$aYv&xJv}(PP;3geZD@>&~#oIxs()+ zt0SXS=ZR&k6y)!mzyTX=F^E$6a;QgE5h;SoIAfXUKU@hRHm`NJP}$DuG~H;_Ehy z!azJ5Y1qz{_^xK0`0l0DVqpih>VZ-5EUpnI&hVH^$)LmS${|k%ArfU!ASlLs7180= zoI;+8NHo;c%E+ZznrF^lS)}?M6zPl*B3p! zFjA|@p6@xcW;s2YJbh71PrX>n`k6HFHExGjDp_>q^|$H(Uuj{LNCuYVF%~C2r^qSHk|kuT&m2Yg%c^sFccB zDJqrm59Ek%4r|sPj^R9WSfPwsT}?&Bq_0w%HP^G=p65Y`grWx_`aA6j46j?|F2CWp z#H}6+H;l1W%JLhI%aKfjenp_`8s;D3a2kmu9YTRxjY>`OHch+%lf$`Z>)mewl{Hk zH@yj~*rsV?mHxK9i5~*foA6oibwo)*&$>jOj%Zy<^JiTB7qX_2c`H}iF&}40Y(C73 zM&_+-Xvch<1F`uq@qP0yQTn8Hdo(pWCVDQBFD-dyWzeX27Uz`fS(s%ld1mF^ zsCX7u?Y9k;@KY{e}r8%M*f zI2Rqa!c0u75oWoYSMt^fp;WRyRB_2HZ=+o-EM7jZC{skqqLXJRHY-w6<749=C@9`e zuN&=Lo!&r3t*%y&u5V-WEP2a#U|vzyZOgTy(^tu}h0IY@N7ivJq&7*iQP(pylB)#7 zQgI20e`#bs+$U@lfxPBJsib)omqOs17@R$SbhZ+zjv5{l$%<89Ihb9j$|sKJ$*IG> zMd3Wv6T!**N^ zNAV78U*Ei>c)PGX=>g5a&VN zgD@9-!#txhPT23MHAPF{@M?E%Qj3<^yp_aOc2hnK7Qt+orP$i;A+|NUiJ4bY(v9IYm@mTF+}x zoO2HIFm!lXCdI+bhj}y*Rwp;AJ82mfM}4FCAbg5{c}DS;p1QS`^)p4v*O?B2^%o00 z^4)jl)2$CY=IKnklIqjC?iJkfbtZi4e0f$GRYx5d6UmBI_Z7i%=Uk`%oc$F+RZ)wp zhLU2>w{vW6p;VQXtl~6z44uzm=h>)b3#u1u+rN|SzJ0fB(i$wv+lo#VmuDZcp{A}( zFn(<6hf~+JaZLKc`i65>^9QvFfV<=Z#7Y7^tYlRYOU!=j$*!=JIqH5m9Ta z1cGUilW_YQg(gq+j)i^W$OV#O&)3q=E6RH|!9h9h`xJRvdP`4zSj+mEV%*dlYmCyi zH}N>d^d=muH1)^u#5Q%DzKv1&7H}0EXJZ*&Dv2}=0 zo~gCElo}pa|Ao@vt0m``MkB5w62}!mG3IOTd{dZt8XnbAlVc)TvFht-%^$2(? zQsZOeAF%D4ln!<%^vYgo>jU9A!KbnZE&^uB#4im}a(l;!Q7)dg7_1C-EX<%@a>Uj(XxHbv=of zyi6AR7AF@}<>1F++GKQ|#Ysm|JzK}QfKR)7PL(nOatcc{`RL5%FU)bUR6}+3b@PUS z@Y`31EiCtX-ss9xhs8?j&)E0}Z2MN4B!FFc=2>Y9Wz_0wDk>&@?eoH+T47KMk5L`u zX`dq@HM@HBH*xhX^5}J0O^=RDv3i4f7I}Q4>d<<=YdGiI!c`ADM-GW8)`l(L@@(Pq zXsT-yJ(tpo=LyAX#hp6HQ#@lO^>6|}p?vz6J;$qo+`7%#Y^@(auj7yl230wsg(MGm^E3%wr;nAh4CEvj!|w$-T7*X8>iUE*nIeng z<=)M`><*H)YoM}J&L^*y`ua^*-`~Egt_AgX=kPdkH>uq_NOI?7_0$_jhB$0}pxA51 zCG*MZEf~-6x<7n?l zIhczt40IOsRMf7*lD;m_rlDhVc-&ZCUEd*gy>ak7aj>fY(T+phCbSlZu*Jxl4^}fW z+Hr{6me%4BwmhxIL8jIIFUwM0zNNBM51yqgMR)xlm8H6TrZ{9POOcWPqq0<&&lHES zEbY{!Uh3_YEzn)gcgE(lSs&G9)#oj}^-w(+WyZJ3Dp_lBWNcTD=ginVo2=4=)nEN$ zk~C9k0rA+^JSD^XEBidnlUG%Jtv65JP#GMxp2AUbG_J@SIvPH6EvBgTsEv}Nac$ku z(eS});^-m{cXhvB-=?E=)kaxg4@K7dMzx7@vdDM-X`WH7M^l~L%=hfacE!a#8&^_` zO7eXI`34zhe|5>CD5s1W{k`MbtF3(c>iUj;*FFA7G!Drgjjp9KA0|TzjwLpt)IIu9 zO4`!s?cHkhlJ`=md>bqh1)#e)V18OS&jt%iPhHmUYnc^uU{BogO^GID+(Rw%Oo=** z>Y9F&%yKQX*_v}!{W}WI#dUA0b78&PLdscn?kG4H*SD$8g>|ibc&}Wn@{PycdA9`$yIFxFEFPdRQbfxo#DXQFT2oCM~!g78u_I zi1E~N)Mi&PI@(hz;F?+e=9vI#Wfoln?2oL9f4+%xSIl}>G0()gPgH%}yn&Bmxn(b{8hLcQjH}{CUWRpWYiVg! zzN6!1T})gTG?(>bxn_q8Ym&cBdZ-er%jj^o*+WH7z4G=@ z1AEPjUECxYzO|X5v1p@*BMwC3HL17buw9F+lVIDdw+&(S)?05I0r9v=i{Bfb8Y>^( zPMbq&v&Hus&=`1IeD4h{6kKOtK$`^@y+#E$u-8HY#|NTzMe~(b-Pvve`wTQpVBZa` z6czVAt9~8*n8bChzo>XUl00eBIqcITOuNbh18%RS&Ca1Cu6g0@96EtpDCm7u>HsmUxp)AwDT-8*yI8~Y|?)kp6vej*sY zHklah<0RWrpBSyHs;Ax=+efTGP-KI^o}+8#v{z&kvg)e0$R>i}Ym;7f5ZXEax6MvjEUJEb zd)aXyylgU&PuO95i+P(v(@0Z&^bSpQAo%@v{^!imL(yZEI0IX@^Pcd zp*EKreERCUce%kAp2Tia(e`tkvD@soTNT8r>aw?@P1qJkn~Ww(db+XOD6~16Foe}z z?`XmZNYXZGZ%bu4uwbYnyMxW$vUA$2yb`kNt+(<@1jE-RGxv)Jx_U}WjE+>BGxwpQ zdgz_GSDWHolewyaJ=_A?=3JFZs(aqKs>rJN*W?)*;9Od_T(b{C4%E7r)*R93c-eSY*|?YL(nkax^Zw-g+Q%G%UMK`YusmtMHDJqjBkN=xA7ceea?sCOL3) z#CMWro_A4GbT#`se9MA{eW_ntcGoHbqvmd02%5MX7K4`EwF<(hxf>USChmrXp~<@3 zpnaZao3p;?Y36&^=}jhA25UvPUTt%7CDK&)ypti~}URxXpFPqGLRAdKQf5m+7uFbg*l~fPCb03ja@vq53*HFQHwYANKE|F8eybE1e z6Q7#YaYK51sZ42k&M$4Vj&sD-UvC}f1jc*cF=mPSWC*W~nYcX1nAw8r<;K3QO=wX( zYcd5p#HpiQzVklYoPsrk)l=^jtPzm3oYc6A4a1Lk&nTVOUbSjTtJm9j(>F-Bx)r5}UTYM30SbPJElBi8OjgDh&b{Z3Yc{`1f zTTPyKf|;j(wwYjoV50;JElPs5;F&r9Itrde``^4Z5uSCmP{^tT9L+j15Nw!cfkjEP zCJQNnkeO(0&IX5y>YH~qSZ#`P2R5z_Ycd&J?CI*M40jDxD?KCK!(H()2u5mlwO2Pb zvZE2%-B(dIx{p%PeQg`&*|96fc{`+x`b#H}V>INyYDn_W1SROh^1xX5Y?$yTzS zrFN4|^cp4`_Qb6wJ8Npe$(vo#GTbQctTC0jskT=rQ6!cF1 zL}AF{CX>Ac^&I!u=45YORo(PX_SQq;XbWj66_|Mn=qRKmn$6NOuq!S$X>6QLRBhIp z=&5Vo#wM`WJc|i7`dM68ZIs3JP-JnF>6c;e*`IArzr>>Irg!=!4%EUE6NfdsbZtH{ zb=8K+8KqFrBR;rs*Dmf(4auic1_p`)ojrx&LRa*c(YssJUhl4nDUH%zaj?WxMEqOi zm*u4tng{Xh^y1y*-R%e-Z$wG$M=-OgE5VYsLc+st*yR$JH&R_w1gj&Vevq* z);S=bKJMg`#NoH?W|x*(UC%rT-$-1Y5597qv?)pKt4<=R@c*6FVxPMd&rmBmJy=c!Jz7}I#vtCK7@lPgDhD$iybBfY&6_b?IU1PD2L(~Wo~M?IR; zuBO3Zag~}=hve`b7t=&ePBr)EeV*fDGT72+*N=uO&A#pmE$V&A#~U>xait?Znd{>kL=( z^us-x>fPA75%I_O34;2)3(KW)iO*`u_K=<_LGQxwEYBwh8mg<06Mcpo*)NckpB zePP?50`jV=pY=&oZzvq~y>Dg*UQ!qsDVm|7fsa?tUrccfYwMjnSTQ?cBPLEk|;%|8J2@vD88& zQ|=@ueLIK4RO%g({jR~$cZVhb_98XhsDl3&MnW5 zpmb?UDiJG&Lkn`=+kEH~5k}&kRZAqI9L9n;*(A(D!!oj?b{?B##QgAmQD{QL28|q>TrLh zuTr+2%{-f=n_AFV)Hg{ty@SZ?m)cM`k*N(yM#$=h+h_Pd?lz*a5slI$t9fXA6S3N- z^;l^G$fjVU{ybsy;*>C@IZo7tP(wdG@uY39FCweXVH$TYbcfouyi^z$cw_iLvGSXguPM z1&u@cBktTmWPD4PZsg-BZ0qSV9*R6mm#v%9=+&1lTfdcfruTX4Q7Xz*{a|HDF_Cd$ zRc%Bwf1kGnOBzeN&)dSCMAA2K)?})Vl#88H3bo=~`Io$7I=d*1kNH6588|mo*T}5n zniXHu`+`G(uTw{A!;et?>%guWS@VC zY>KK|tH(xKNV8dcER>U2s*=)6L?r!tt5lI=Qbi${*y zzmwg*9U;j&A-pHGROZ>x>DxI!gsdZ!*i&gEko36Ha=;{@#tgzw= z{CAN(I0}o6eHW?jJN_z}EPVr&MbZ_Qw_5zqTAt&tn&@k~*N?wy5}s%@t6xk17xil- zst(&zkYS=nf$%bY3R1&LM~@oFY)td)LQ5tY-N!&x{j{ebZQJ6gZ?{KMQg&;nmWVvN zJsN1M)AijR4Z@Pf=@TqrJO|2MDMdN|1dB&m-L@xKJRxzqS#PTvRMKgVx7*ut)YbXz z?a^bWw~pp1tX=q&i#Qo9+g| zzx1B24mZ;0PV)EKeA4Q#J?rTUir?v7IlUt}50RWo$lsN7h1F+!WbOuR;<21CKbNol z_RKGyHc~8in{Sr4;jtsE9U3O|Y*8}m`_wq~l;MNw)%00UyjK(g{%P*Fm`d5GX#kx*H`gW0Mu++7IJiACd zn(AJCH@7DYE~a;Q zV_2+?)-tM3TAjB$6uzMN?Ryy^%&D}VM4p!s97XlA{xX6S0_Qe#R#7U!CK%&UIw*6s z8j7e3W6G-Ow^u&BSgo{cFA!0C6Lc(436;g_dTuPOrL6<9N3lAn_Qpl_L{p4y;4@~e zcD^rMda%0!zaF=wZEUSlPx2iH~c&*5Aq%OACcWjRgTA#H) zFtc4G)aH1#8L0a5QceakpZ3goiGrDzfu=8ExzIIGT5NWtGbd~;VJChIm_Cvz_AH8j~?Px470psUe<2OgnB#CXI=c>#C~il;@M#5%^BT5D2i^Vnr?LtevO9JKq#^rs)|)-K`ngds9OeQ z*F&{arZd8>sPv`et3ie*nb%XAh^u$HjM5}9In~trfeK?Zh6Zw6UAH-^YTJ8Dys`II zV7zx`V(b{FIG%YXCS6y3)|r^}aJcJq{@vh3vwURk{QDHuMeY3iLg1V;%VGzlXYLLM z=H#n6j*cIXSXSNCS(bF`;%iEEI&ZX|^gu}cSv6D@t0`^PyxH^Rv??>-a<*A2rIyD; z$_--dSk76a&O<1UaiA(zouNdSD|WXedyhBh-iVA^Tp2~N*Wqul=F3RFR&+9VdcLAp zS5xcb>c8NG^9oZK>49ojjSYD6`gOH)YCoGJdgezz7?pbFmswgcpsud%7#4?}xe%Y8 z^mFC>li^wO3|BKRt~8X6(o;5%M8?EDXFIT0gYRxnF3Vf^vXi{e@-p*Y!B#A&v+GQ) z*rvs2=dI@EipLeIgY$|K@9MBQqR9MKb2eKVk4>$3816`n+(BFL44S2SxxDw(Z6$v8 zL0h`8`nvkm$dEYZEKhi%KYiJdjD}^SSz*BPF7xt4Gj(-wf@!kF1e{eET+~yrTpW!A zjD({EjQ*y+Y9(i91s?(Wzi>>2W5*&x;+V4;!;|*2IWc|yaB;};E%RoK#@g!M_@p`U zu$8JlxMfJ53z^wiQncJ0jjG-@puVnc|4v@FQq><_F7kZYu8u}kUzb)V$JKwqy_C^} zQOV4$3@k5K2Hi(F=V&5TTwPqlFepy8(jLu|cD`Fu@aXbfzK>Th4|5%j_QMqEUU`u6NlDR)U^DrbK zq_)=y=lT;Dh_SOqHB_t)ihD-4HuD;lil}8>Gm4bO>PGg!WT?bj!Zp+E!C6akq@s4$ z)EGzF-spx$ueTZ9P{fL^DvMR;vEehJZ5FFQLM`fJ6RL_mXPhZlmiH9~2hDlt%;U^h zM(yg7Rs1sr%FS9C5YW^cNt``vRmIBMNLvg~bjnm^sbO>f%*Cm)RLzamk|c^^$yxD~ z@x3|6o_UoF1+}Fso`I$qb7o28!eB+F4~J!q${ZPGo+UA))ciz^s$oU^Sl3Qos~+Aj zYwE_8@amz(um*ODk1VvxKxLrK;uEQu#V7ieOm!v`!;7cOt6Or`Sa*Lx2Gi!&jm(pY zK1Fp%Clh@kaLzfo-v~HdEZ3|TmNTE+?-5kj^yGd|fQHG|BL`LuclWz5@8(Xnq@q9B zk|CNn7kvoN`m|sh&eavuoU4au(K+i|a--l}{1rK?!1c(xDa(RSgofXbbKawn?5~x= z-O`=&D~l=v)64QnG4rX+{GM8hsHWfeq#bz(oUV#2NAB5E>@zC)%v}`~QJdOTiIl~v zQ`wUUhRMv8Jql`1EBioGj5!TA7e--AL@c9bwc(C`raXF*x7;J26*uCVBY6W6J9$H8 zvFfa;;*(f)Bb|9oHL0Zb*A1JRM88Zqy*vD`-Q+{o(8U9?C=O>6Hv`ZX<``^-8dPdfJ%opcsef4(lU z8u1+VM8dX*s@QYu3YmX55;c2WAqr|Osw>d+7NTNzNqTg$fypqLy%5DZYB(xH@$Z;- ztE%FlEaLQ7!{y9l40#PBlu_eRRTce=ZD$u?wdkCuk$D$jsG(MM7oh5jN$0zG)#6aG zFf3c6WppoJkhjJ+nZJwY$f+axT|DP9$>7%5#ae&C+PRj!#tuc)e$*hUvRHL%>|(7l zAV(a?(NL!vB`KVDt!*mS=JM>djVP$isJ1~2#a(aM`P~NJi~O)mikjKW%HLRn2}^_P8Qp#Whg%6`Yz~ zePu2esM6shYWxQV}(&l~klGR-O7muXV}pF{99CemWCEYF+Dx z#04_d*$^6Cmt!{R! zHFoj}PB^tyt!Np~Ug$(YjYfqIO)=(l5aio!MQgWR<_7q_@) z&u>G^%5UQuv3EAN*NVekJ;mMvtw&FBNy#dHnK!q)dg_wC&E;OlEvE}*1Y!5BrCliJGCn!;9LZ4OyqephXP)Os5mo>6yoi)Qct6c4)3+6%r*@Vjtt0o6f&l$$x8!9&gXJEP1$ui zEhJ8RAD!NTky^i`aQGo_!_{1mj;W^(CLSI0dTKE(j|_&xkIGONpO`B2n9BjVim6A` zEvBA8c)6v$L_iTCtk1h?S=S3JG4*PFZS*Wl;*GQU5rLtq4A|J)V!x-7dGn*Krv7YD z_s6g$4mm41NL0&x;dXGNSY=+xF{IQLUCA*nrDl_SL8RPO7+6|ZZWf|k*_04-vng>A zZ=7Yjn)MyP%*%EnpjLI+4n?u#_C!m4gO!rm1IpeL4Mo&q)Du-@vFi4F><=Ag@AuR{ zYZ&!=&=g~Cb0!yL0%@sC%v6@vIv2@q%7NmrIkw1NPxwVO38LoAAE+fS2V~eaSTGxf zw!Ku*#$HC2B`uvZVE9sGA}zavjjqOHoB0eFucUgYXTW%akc!UB8dk_+eUqo*WagJO z(sk8SeOV(tTq~L0R~V_)N~4_Vk!ZtAj{@PPvmwxmRM^4|$Xpk@oQ-tNydkimw0f-X z!8Z(w-_G99lso!m6NqdGHyqErH?*;~daeg`H4cmG&LI!hEk2hsAM)VWR9E$o2Y(n` zbe7+ppk=eN%DnvU5me`N`P~x$&zew|;YyFKxjt)p&F_#JCc2c+C> zQ~)_TAmwh2S=<2;O^KGzSby8bqAw-ajrC*9?NH0M@}hUfC3}ZDDW!3ZI@HNa_~DkI zfl6Ob(d=bqFF~P*Rf1I6TY?771>Ec*9n;?0a`Jkk=UY%BN7F7 zx+m0^r>u)F*vqCUqr_#O?s4?gxoEn_xlYPDi&0_rcUna;^I}viqfY2zRQxlxoqdpc zwN@A$8jw@%+$SRQwltrjdZgRZd?9eoT~rCv&zD!(C)o`xbtqa?F|IXqWvHiA=rbo# za=Q|0`CU;vk}A%2qA2-B%myLzPLR5ex}ZBj>c5i`?!11GSY3;1-CdrosoCfCZ8>!& zn%B24H} z;`13L;W1r$|Pxg>zE@U5F)ORjK9ey;$n7gbiJBX|1G)(qo-9SU57cJ|Cx?Y9h%Xv{^H|ofyrKckg$qR zpehk{hrz?iX{0TN-6v$Y*L)zeKOv%^ z2BRkgO>cUREHZkq+0%1mk(!FqQxv`FIkHH;)@E(8$ey06Vx?!K?T@0_&B+l(d)zA> zC$FU??H0}@cHtC7vE*)7S|Z#2N8>%vT3tw!G}^9Izu?c#rG=rwGV2Yq?AfU*R(3|( z-f|=tdrE_54?34&R9wS>witE?S<45zg1rI81CxD_70IaSXpj~COlrHWid=2`U5i>M zqIRQJMU_*nw)?JcV0Ad!{g<>V%4t^Zfpzv4RH7v!Zd_4LwQ9|==Cc~lvnJvyiz=yB z%N4V_&t+9a+_<7Fab3rrh%xQ$n{|>UvNR^#%MjRbTCw4Rbxv#MRtyD=leS`krbNgY z=5s-ICsbs!ggm~+^O<>UZEC3lI?Ok(k+x0;MNWM(>}PImL_m#dgNmY9@}zLN&8c%y zwx-Vc1!GQ6+B5RZ+>;J9G;-RLR$VdaOtFTSWTMa>pk$t6O)9B*onlR1A>K}<9|q{L z9?{H|ek`NrwbGA&_GhsDT66YCNEFm!^a!EpElrgnb1QpxW1?UgLsN`7gHAev<`60K zs3DM0b2{h@RlT_=Z<*DGD%SZC*>f?Hv2ro`*Z06$W_CBIKwnG`mwyLM3^U&!= zb(ANahfa6WSyaWIvxQDRJXT1b++bw&k z76mmNJwj+o?A;1WE=Vs;&TX~2#n~&YgpwMMDy+nnv>2PGC*_Iph!f+Hv>1DbhLLhrUZe^tnWDM! zn0W((A*Igf1_t92et1elO(!Fh6WBRQgUZ;YAyOCH&btjGHF?^L$#)wH1AUchX}I5- z6Uh9UKqF=KP~UB66p{pU&NB_a{}PSEWL}X^Vb{8PD^<3fFOf6vL~;)~5=FiYWowmpHidihZpd7;W2T4e6!CzaF>?d2!0_|t!|V4i@V zJ^e+&N`EvZ#_l8JPQhexwx{CKeWBlhMke(}`c&U$mBrGk4+x z2~AY(#D}Vqs*b&7vWaZDQBP#H7f6`)LRGQn^x2jTjdV_5BBy#AHZ%9xVi~o&YN#m| zooz-0oj)wki8&*id7DvPM{UZ9vw^A@bv75(1Iw}a!^LH0bTjXt4rnLJzDnje1H43_O0V&tW**=fQtHZBjjU*kb*G`_ zmg3;h@N)SMsceol>}PIhEiv^#8(Qlk-Z;lu6Q)o4w^0Vkdh?=^tOb~r=A5je5A{F&QhXB#981~kk7?v*!$QQP)vs!Z1ok=xyBvE%JuckXx>nbcMlm-fm+8q%G zaZjju97%F#kVx`zI&*hWu9nu+Q>PLg0P{L-d24xjds;qF>*iaoT0SAB z4kc>`UE)|`nj&eN5v=ClOWt3=Id1;8`!ljRibTu&A%>Ot7mVxpl_Q5B`6*c zdaJwI@^W{7wNjQk*eJ=ls=I`k=1!uzOI##hoKZiYUol`f7S^>pqVg>>P*N$5bjzEw;=s@m-r)(VNtUZjX(WM0GX!7^N)c8m{lsT$FoMQ>S@VCvddVCm$j(HJdvc-lU@1 zXOj*0p%k7D7HW&F{(MtU!+T6mRYxROkwszi`#U=|i#m6x-1yn@?~eLZ*EWNtT6b|k zs)%A`q}Ej|FDXg;M@85r3p*t;-7F$a``IlBsxRBjPTKC6Ubo$GY;0R%y!K#4CUlBj z!M6nYcDIr7`!tQcb+=mA(^|sf>R1r7V>tzJpzHKX#jq#0H-1Lq+tiS@`jMeXQ!I=b zl&*$6Xoh~%LZ>&Wx;`C|lBljcIAms7(}qiKP&I8_Q4poI?JF(i8#q+*Qg59>DkSTk6CFO_|**Iv!C!@O6$*m91{y!CV}2)=kz z>tL>{AQ{ooov5bQ;7;$mw0pE-GrBX%C&MDKTCFUfrOjG5g!ibX)?%t7k}Fx~2kp?* z(P$63emqI;AHIBK$BWh|mpg-PTtROrIgDx^_r#s*r;a5JP4RY}&lxN z#oBIighE$wS#XeonPg2rp5@-Jwsx4haN6XK$s@xRIa0OM-7&kgOrDRq(YdM}u{rT# zO;wS=ee#7HBZ|!*$1nzZuUcOh!)SF37WqV0sXM5DG`fqbl|oNP+SXV%tHpJuM`}?w zm?~gBJ1`HmQHYz40elK-bCrCcRZZd3jBj+i;OW5;<%PaWLJeD*gFGgjV9kkPW7xGtT} zp5o9zWjP&Uv#M>n&e~8)9ocq7m!nN-9qX)xs@&rX$Up zt)Sx3Th;KG*}-POAO|&7?OvmVY~}f`_Z`R2o;$xI+Ls3YsniS#>SeKEdv zc$>WR(^DCgKAM?rO@}S^-D+&Dc|}b&=WVR^p-(OJT1_gw5T9Q?sObIXU_2*)8(vO z`4~p933JQDZC(7kDjP>ivWqx+M3NcQbb`5wnEJI@;Kh`1cX&{zBpfA0*A8@ohAHgL z7@5|zOxkxF$q{x;(vo8v``)g2{;Ny2wU=ddZ$2PRCmLE1RR6XOk|nlh^rNDoUr-gU z8cZ=5Y0`8yIk-g)=`?$&BFQ~Q2e*b|(*eHTq?$Skh?GQi^`X*GQKqiUHHt~iig9$8 z>aI6eRpM?~sTLepvAWbRy)xfoPD?bG*Sl0+C&OYb@p}z94M!dUPyN(%P?@|_4XklY zQcdKyOa_`1)x?v6FIqTLdrcp>CSvNumPsc%CTr``F^#Wi1UAL5tqm!C`X_Z)%DtsN zX^fl^cGLC#=6dSg)`oXcwIDOW3CrT(dWN7rCPtBM+9CESs1utQPE4LV(_9=_Eo>hR zb4_PR!+WBF5cacGN8+<`b;#_`H=O{J8&u2~q|BQ;wPQwAW`UMgs=*7&8%e<3dg{ZN zuBc0IxZkutk*1S>#UtZsMb2)f5?`JBWxuGo@vrFv8r>DebY79~f7f$EM*EfF zN_QoAX?3;mplBmrO|wN0mkt|qot#n~aeKA!thkJl!Kr*^POFYcj;RgFhhMCDoTl}w z-lU>hzeY-ds+1_!YLYEdqv!AR64HqFQDmB~jfno~dbJ4W()0(?m?Y*m6PewH{`N zQrAva4We(9fTlf~FvWtW_|)q^vf>I7Jv~pgQ0Xk!I{6k4<0_?2bg`>Y;hV2AjFX#; z+-dqYx@pA_(sD6*^3e-ss`h~$ll$e1PLq!AowPs(AF>Wj%z{oweSFXvj$0gBq*avUJYB$QP z8k!zp-MX&2y6F_=6y`>zgCx^_RFFt|3ThOUu5Ou0mD#MJ{w~>QWUZVw-A`qCXKATN zYcWA9^J7E(9SZ^zl3uPCHJQhc2AXCXW%t6+ioF=&=Z<7rXiXlcMNhFP2e4Uh#5X;( z%1VStMD4D>fGO~B;4QuE;!wvlEJzw?g;BT8;G8;&FBzLj&|-y=BBh?J88{&;C2Bxi z&`L7Cub0!N!q&)ma$2k;eL8A<{0x!qP-(GjKdbg^a@J?HpE z)R#?zoQfKvj>Ba+OGX%KQT)CyYkF=LEWso-Qxh|vhNl6 zrh_#ry0MB{+br5(wP)w<9dqV{^XeV*!@XS;LH&SH?1pSLkjZ{oaFkDs^b~6SZZEp& zLHL$SUPX0ptE78#>!xJ^E;21X>H!0FAESH<7e0eGsyPrWIUqW!*?g1jrC(G1+#@a; zvW=`mKBir)%5y4fo`yu#{j`hZzl>gSHf$q6Dn=1~)D80@H& zJ0{Ceqhsbgzk8JtHdOUjD$ZJVcJ~Y|b#K#Tb}y(JLGVb=(V+&a$~j181>JPDF3gMg z=Fn!;V-Fwapa&#p4GdPSO@FOD&dJ*~N?R_B3j^sMtWVDl^g9;TbVp^_yKZ6R)mrb` zFBB#50_vUg5!YD0K+GlqbCp5vZoHfp-==oPE)boLndnHytr`rFjR&ylI4&Gh>(WY? zccF^ttt`9Y4Yj6oWNe=gwRDph3bI*fos}ncsJ|p@Eb@^SSuUjjd{9ih zc;AXE@c)}?I20TPrhutnI+y{D05ic+U>2AIjt0kod0+up2#y2CgA>4s;3RM| zI0Y0yH|PPqpbwP5sbByMf(jS{RZs&XUMn%BltPE8TDKus=8eybl}%4grUP$zTeY2Bw3h};5G1f@H+S>cmwr9bjv)4cHEB z4|W7QfnC6^pcCu{_5gc=y}>?UKd?VI5WEi@3=RQ@fyrPhmK?%fS`kN^lkUEchJw0{9~MGWZJk8u&W+ zCioWk4!9b84}2f|0Q?aA82kkM6#NWa4{iWI2RDIVfLp*X!EN9Ua3}Z`xEuT$+zajp z4}gcj!{AZy7DU;6?B!@G^J>`~|!U{svwH{{XLpe}Ol^ zo8T?*U+^|~2fPbbcu24!SQ)GWRs&UjSbM zUj|fV;r2 zz&+sC;689acn~}U9s!Sn$H5ceDeyFS7CZ-D0KWmh1HT7<1TTV@z{}vz;4k2>;BVmX z;2+?h;9ub1;7#x!@L%vh@D6wntnjd4C9pDB6|4qU2V=o_um)HYtOeEq>w@*b`d~w_ z5!eK53N{B@fDW(~*amD1wg)?aoxsjuS1<|e26hK~g1x{#U|+C5H~_p490U#lhl0sq z3YZ3_gTuiQ;7D*3m<{HDx!@QuA1naJg5$vZ!3p34;3UumP63NRHz<0D#dxE{eK43qvKR6J) z4;%~*0f&LfU@DjfW`M)NOmHNa1!jYz!CWv8%m)j>vEX>{esCiA05}c_&B%_Tm&uwmx51# zPlC(A72ry675FUp9QXqGBKR`+3iulMI`}5|7WfXh8hj6YAN&CP5d0YY1pE~I3|tRx z06zyefnR`Iz%RjV;0|yn_!YPt{2JT~?gtNmhrq+&QScae0z3(x2G4-!!1LfY;J4uS z;1A$M@F(yxcm@0gybAsXUIYICuY-SqH^7_VE%0CPHh2fT3s!hkup(F)tO8a8W58H2 z4y*wtfVIHdU|lc~tPeH-8-b0%reHI$1=td71-1s;g6+T#U`Mbs*ab`ionUvc2iObj z4fX~5fdjyS;2>}?I20TPrhutnI+y{D05ic+U>2AIjt0kod0+up2#y2CgA>4s;3RM| zI0Y0yH|PPqpbwP5sbByMf(jS{RZs&XUMn%BltPE8TDKus=8eybl}%4grUP$zTeY2Bw3h};5G1f@H+S>cmwr9bjv)4cHEB z4|W7QfnC6^pcCu{_5gc=y}>?UKd?VI5WEi@3=RQ@fyrPhmK?%fS`kN^lkUEchJw0{9~MGWZJk8u&W+ zCioWk4!9b84}2f|0Q?aA82kkM6#NWa4{iWI2RDIVfLp*X!EN9Ua3}Z`xEuT$+zajp z4}gcj!{AZy7DU;6?B!@G^J>`~|!U{svwH{{XLpe}Ol^ zo8T?*U+^|~2fPbbctWruSQ)GWRs&6Ro8?YVN9_$Eq0=s}+K_}P^>;d)! zdxL$ze&AZ!L4WEE;6`v0xEb66ZUwi2+rgdSE^s%v2iyzp0}p@)!NcGY@EExII>9x9 zky9^}^klom#iZ+{;4<(@@F{Qw_%yf*d(ueddR1z6-t& zt^q#;KLS4i*Mgsc>%a}*MsO3j8QcPH1-F6Q!JXhPa5uOI+zajl4}b^3!{8C{7z;;05qo@H_Aa@JH|`@Dg|h{29Co{t8|Le+RFFe}Xr_zrkDJKj3ZfKkzPi z53Km4U?s2$SQU%`tAlZ1JeUC11Z#tJz(lYf*Z^z@HU^u3&A{ehOV9zf2HSw`!1iEA zuoKt?>mBfzN`^fiHkBf-i%wfUkkCgKvUw zf$xB;!S}%T!4JR>!H>aDz)!)?!1dq;@N;kz_yxEH{1V&-?f`d!UxB;9ufe_Ge((Tz z2s{iP1&@Izz?0x<@CYehYpN{s3MCe*!OqSHNGutKe_oHSiDcI`|iO1H1{| z0{;bXgLlBYV1=gyD}t55DquA*28;#cz#3ozSPQHT)&`d|aF5!e`P3N`~*L&0HS3YZF}gBjomFcTaF zW`Q~2XmAXe2Nr;Z;5cwRI02jpP68)`Q$PW9gC5We`alVs3I@O+sDL3*1vM}NmVjko zIXDBH3C;p%gAapqz(>Kk;5=|XxBy%TE(Vu?%fKhVr@-al)8I<*8Sq)~dGH1BCGchN zRq!?N4e(9yZSWoNUGP0{4fp~05%@8<7W@=k2d)Px{0iIy zehuye_k#z)L*NncD0mz^0iFU+gJ;2W;05p-@H_B(@JH|>cnQ1={tW&C{tEsE{to^D z{t5mC{tey){{jC6{{!!U_rMBI3swRvgH^$5V0ADSj0bCgHNje79k4D~53CP11RH@( zz@}hxum$J;v`%`-20(`@liq5O64%45ol- zU^+M)90865M}gU34wws$0rSBEa4a|uydRtZJ^)SvUEmb32y}xY=mq_t1QvqW#Dvh2KXR23w#KC7<>eL6nqSv2R;ri02hIa!KL6b@Ja9~a0U1@xC(p* zd=7jbd=Y#JdwoPd<%RVTn)Ypz7MVeKLkGlKLOW*pMmSZ4d6y_6Sx`N0&WGj zf!o2I;4W}CxCh(|?gI~i2f@SO5%3sz96Sl00?&YF!Smn+@LTXZ@CWcm@F(yRcm@0! zybAsbUITvzuY-SrH^9HaTi`$7ZSX(vE_e^D_>5pBunJfei~*~IabP@{0M-O+gLS|} zupZa|YzQ_6n}E&0=3qByW53ncL8|(x21N(ym!TZ3$ z;1F;am<*~fTI2z0a^T2$t5F87R2k!?bf)9X`K^G{1MW6>1K_BP` zr-H>`5R}0XI1SXmFjxYXg5}_Ja3=U5I2(KjoC7`r&IKO>=Yx-f3&BO;5^yQ_1o$Ml z99#je1XqF2g3p03fG>hCgRg+Efv za1;0ixCQ(Y+y?FdcYZt zUIc#vFN0UWU%;#2Z{RiX5AZtp7kC4_3El$#1#g3Qz`J0DX9X*QmBA`tH82K@1>?XP zU;;QHIJA+-oB+v1rcO7I!*S@3!A1@I;CW$;z-HSi7aP4I2-9q?W7J#Y>90r(O4F}N1| z6kG?c2RDMBgPXxGz^&ky;C65axC{IW+yj0M?gRIO2f;(&5%4H@96SM@0#Acy!E@jR z@EhklFfla`sU~{kq=m1-RZNRo*d$0r83G57Z1(U#T zV0W-5*bD3f_67Tc1Hk*hLEsQ@D3}bUfN5YlI2;@Sjs!=6*u7;f?+TMmV#yAbZ`dvAUF$r2z(fP1bh^H z44el(4lV!}fs4VV;4<(@@F{Qw_%yf*d(ueddR1z6-t& zt^q#;KLS4i*Mgsc>%a}*MsO3j8QcPH1-F6Q!JXhPa5uOI+zajl4}b^3!{8C{7z;;05qo@H_Aa@JH|`@Dg|h{29Co{t8|Le+RFFe}Xr_zrkDJKj3ZfKkzPi z53KmSU?s2$SQU%`tAlZ1JeUC11Z#tJz(lYf*Z^z@HU^u3&A{ehOV9zf2HSw`!1iEA zuoKt?>mBfzN`^fiHkBf-i%wfUkkCgKvUw zf$xB;!S}%T!4JR>!H>aDz)!)?!1dq;@N;kz_yxEH{1V&-?f`d!UxB;9ufe_Ge((Tz z2s{iP1&@Izz?0x<@CYehYpN{s3MCe*!OqSHNGutKe_oHSiDcI`|iO1H1{| z0{;bXgLlBYV1*Y1D}t55DquA*28;#cz#3ozSPQHT)&`d|aF5!e`P3N`~*L&0HS3YZF}gBjomFcTaF zW`Q~2XmAXe2Nr;Z;5cwRI02jpP68)`Q$PW9gC5We`alVs3I@O+sDL3*1vM}NmVjko zIXDBH3C;p%gAapqz(>Kk;5=|XxBy%TE(Vu?%fKhVr@-al)8I<*8Sq)~dGH1BCGchN zRq!?N4e(9yZSWoNUGP0{4fp~05%@8<7W@=k2d)Px{0iIy zehuye_k#z)L*NncD0mz^0iFU+gJ;2W;05p-@H_B(@JH|>cnQ1={`~(qxTmNwa4ig= zwK?syQ%yCsZQHhO+qP}nwr$(C?e_lr=3%e1@|e6NStlP};1youE#Bb+KH@XJ;2XZ< zCw}1%0^JE92!bLwLLd}EBP_xp0wN+Z{z6pzjp+CXF%b)K@Gs&aJ`&Lvo}< zDx^VLq(=s1LS|$|HsnA~ z)JFp}LSr;VGqgZUv_>1WLwj^YCv-tqbVm>LLT~g%KMcS?48{-)!*GnmD2%~ajK>5_ z!emUvG|a$E%*Gtd!+b2nA}qmDEXNA0!fLF=I&8p3Y{nLB!*=Y%F6_Zx?8gBd!eJc6 zF`U3joW>cP!+Bi9C0xN(T*nRE!fo8eJv_ieJjN3|!*jgEE4;y5yvGN8!e@NNH~hd) z{Kg*yz8gRg1VeCyL@0zoScFFeL_%alK~zLTbi_bR#6}#%MLZ-xLL@?BBtvVsOvEHi z!BkAg49vo8%*8w`z(Op>5-h`Vti&p;!CI`x25iD+Y{fS0z)tMO9_+(@9K<0U!BHH? z37o=doW(g@z(rifl>jCM4iq?$(fpdJ>$r(qxP!a6j|X^!$9Rfoc!8IAjW>9Q_xOlU z_=2zajvx4i-w1RsfWQcfUYkP(@Y1=)}tIgtx_kQez;0EJK(MNteTP!gq42IWv56;TOQP!-it z1GP{abx{uu&=8H$1kKPKEzt^X&=&2{0iDnpUC|9a&=bAU2mR0=12G6gFciZv0;4b* zV=)dBFcFh61=BDcGcgNuFcf);Kk*BH5a@mYK@b$d5dxtQ8etI*5fBlP@fV`vZ$!sGh>2K;gMSeZ@sSY!Au*C5 z8ImI)=!M?si+&h@ff$S-7>3~( ziBTAXu^5jDn1sogifNdEnV5|^n1}gTh(%a}rC5#?ScTPCi*?w5jo6GW*oN)ciCx%( zz1WWfIE2GEieor|lQ@ktIEVANh)cMFtGJFExP{xei+gy0hj@%9c!uYAiC1`ow|I{a z_=L~+if{OVpZJYG2>c*`AP9!w2#HV#gRlsX2#AEph=QnyhUkcan23!yh>LhgfP_ed z#7K%{NP(0{jWkGy^vH-z$bziMjvUB^+{lZ3D1d?}j3Ow8;wXtyD1)*nj|!-S%BYHJ zsDYZOjXJ1@5<>zgh0-XCa;SicsEjJ8hU%z^TBw7%sE-C{gvMx!W@v$yXpJ^#hxX`* zPUwQJ=#C!fh2H3kei(p(7>pqphT#~AQ5b`<7>@~p46IE^znhx53IOSpooxQ-jR zh1DgZJT!nH2!`MYiBJfGun3O` zh=j<9f~bgw=!k)sh>bXii+D(Ygh+(MNQz`gfs{y%G)RZ^$cRkHf~?4n9LR;-$cua^ zfPyHDA}EI9D2Y-igR&@(3aEt2sETT+ftsj|I;e;GXoyB=f~IJW7HEamXp45}fR5;l zF6f5t=!stFgTCmG0T_hA7>Z#Sfsq)EF&KyOn21T3f~lB}8JLCHn2UK>fQ49$C0K^# zScz3wgSA+X4cLUu*otk~ft}cmJ=ll+IEX_yf}=Q&6F7y_IE!<*fQz_{E4YU1xQSc1 zgS)to2Y7_Xc#3CuftPrVH+YBl_=r#Vg0J|FANYme2=xC?8wiSE2!W6YjW7s@@Q8>= z_zO|+H=^Mm#6T>>#=nS*_(*{NkO)bT6v>eSsgN3Jkq#M<5t)$%*^nJMkqdc{7x_^D zg-{qpQ4A$e5~WcFr+F$hC26vHtBqc9p{F%A#!ahu?btS72B}`yRaL3u@47u5QlLD$8a1caSCT}7UyvRmv9+ZaSb9uqMMQ!o|NF$1$O z8*?!a3$PH2u>{Mo94oO3Yp@pUu>qT~8C$UpJFpYGu?PFG9|v&=M{pF!aRR4s8fS41 z7jO}maRt|K9XD|ccd%|t02{Coo3RDkupK+G3wy8^`*8q=a2Q8%3@30Br*Q`7a2^+N z30H6x*Kq^4a2t1V4-fDVkMRW0@EkAk3UBZh@9_bj@EKq64L|S`zwrlww+0Xd!4MoF z5ei`t7U2;Akq{YC5Eao79Wf9Su@MJx5f2HF5Q&f&Ns$aGkP@kp2I-I<8IcKDkQLdH z1G$hJd65qVP!NSt1jSGsB~c1xP!{D;0hLf0RZ$H!P!qLL2lY@N4bccq&=k$l0MjcJ<$t&&=>tN0D~|XLoo~^FcPCN2IDXu6EO)>Fcs4=1G6w2b1@GK zun>!}1k11-E3pb|uommF0h_QHTd@s0uoJtn2m7!e2XP2Ta1_UJ0;g~qXK@Y}a1obr z1=nyLH*pJha2NOS0FUq(Pw@;d@Di`_2Ji45AMpua@D<I?~_!n^z9|`au5+MnaA~{kZ6;dND(jfyfA~Uie8?qxO zav=}$B0mbC5DKFxilGEbqBP2&9Ll32DxnIhqB?4z7HXp|>Y)J|qA{AF8JeRdTA>Zv zqCGmG6FQ?Sx}gVpqBr`WANpe;24M(>VmL-%6h>n##$f^`Vlt*+8m40=W?>HIVm=mN z5f)=9mSF`}Vl~!a9oAzbHen04Vmo$V7j|PW_Tc~y;xLZj7>?s4PT>sB;yfX==cXQ5esqfFXACS65>B3MiL}La->8mq(NGwM+RgkMio>;b<{*H)InX;M*}oMV>CrGv_MO=MjNz4 zdvru6bU{~iM-TKuZ}de!48TAP#t;m{aE!z#jKNrp#{^8mWK6|0%)m^{#vIJUd@RHw zEWuJN#|o^%YOKXNY`{ir#ujYDcI?D1?7?2_#{nF|VI0LVoWMz(#u=Q$d0fOLT)|ab z#|_-VZQR8@JitRd#uGflbG*bWyun+%#|M1EXMDvs{J>BA#vcUU5kL?GLvVydD1<>+ zghvEKLS#fiR768`#6V2MMjXUNJS0FuBtl{&MKYv7N~A^_q(gdSL?&cGR%AyG(26hm>8L@AU(S(HZwR6=D`MK#nwP1Hsm)I)tVL?bjoQ#3~lv_fmNMLTpr zM|4IPbVGOaL@)F~U-ZWS48mXx#W0M(NQ}l9jKg?L#3W3?R7}SV%))HU#XKy)LM+A- zEW>iF#44=8TCB$gY{F)2#Ww7~PVB}W?8AN>#33BPQ5?q!oWg0G#W`HSMO?-eT*GzT z#4X&xUEIe5Ji=o<#WTFXOT5M#yu*8Z#3y{gSA540{K9Vp+8ID#1Vu1}KuCl}7=%N3 zL_{R~g(&zN(eMvqAQocdU&KXxB*1@2gd|9cgh7u@=(kO#+D36M$ges_t>ZpNQsExX)hX!bf#%O|OXpWX>g*Ir5_UM34 z=!~xDh92mN-sppV=#POIgdrG;;TVBY7>%(QhY6U7$(Vv^n2wp4g*lju`B;EOSd67u zh80+e)mVddSdWd^ge};L?bv}`*p0o|hXXi>!#ILtIF6Gzg)=yd^SFRZxQwf~h8wtv z+qi>!xQ~Z;geQ24=Xilvc#XGshY$FO&-j9G_>Q0Wg+B&4bTXU(G<vF0UNOyTd)n=u@k$n2Yay}2XF|7aTLdJ0w-}AXK)VZaS@kr1y^w$H*gEL zaToXS01xpPPw))S@e;4_25<2mAMgpE@fF|j13&Q_e-L6rrBDWCQ63dg36)V5)ldU9Q5$to5B1RyjnD*5(Ht$%3a!x=?a%=o(HULP z4c*Zbz0e1J(H{da2!k;c!!QCPF&bkq4&yNqlQ0ESFȽ$rm7^RNI5u^3CR49l?+ ztFQ)Zu^t<+37fGM+pq&Wu^W4^5BqTthj0W(aU3Ub3a4=v=WqcRaT!-|4cBoKw{Qn{ zaUT!x2#@g;&+q~-@fvUN4)5_1pYR1=@f|<#3%?O)PXK`t6u}SzArTs35DwuH5s~m0 zqTufUIyJ8!(8(g5t)Y&V#%O|OXpWX>g*Ir5_UM34=!~xDh92mN-sppV=#POIgdrG; z;TVBY7>%(QhY6U7$(Vv^n2wp4g*lju`B;EOSd67uh80+e)mVddSdWd^ge};L?bv}` z*p0o|hXXi>!#ILtIF6Gzg)=yd^SFRZxQwf~h8wtv+qi>!xQ~Z;geQ24=Xilvc#XGs zhY$FO&-j9G_>Q0Wg+B=NFn}Nkir@%=Pza5%2!{xWh{*U0QSmpT;~&ICEX2XTh==${ zi2slnNstW5krJtp25FHV8ITE?krmmH138f!d5{nJQ4obt1VvFCB~S{bQ5NM;0Todh zRZtDpQ4_UL2X#>&4bTXU(G<vF0UNOyTd)n=u@k$n z2Yay}2XF|7aTLdJ0w-}AXK)VZaS@kr1y^w$H*gELaToXS01xpPPw))S@e;4_25<2m zAMgpE@fF|j13&Q_e-QXl06`E8!4VRn5C&lp9uW`;kr4$^5e?B112GXBaS#{rkN^ph z2#Jvt$&dmmks4``4(X8*nUDopksUdZ3%QXO`A`4_Q5Z!~48>6rrBDWCQ63dg36)V5 z)ldU9Q5$to5B1RyjnD*5(Ht$%3a!x=?a%=o(HULP4c*Zbz0e1J(H{da2!k;c!!QCP zF&bkq4&yNqlQ0ESFȽ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Ƚ$rm7^RNI5u^3CR49l?+tFQ)Z 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 diff --git a/docs/.doctrees/recipes/recipes/benchmark.doctree b/docs/.doctrees/recipes/recipes/benchmark.doctree index 13c9d127ee803f17f0e6168a8eb3f4be8199c522..b6cb7cd49f5c97474b602edb301dcbcc3b6d57a3 100644 GIT binary patch literal 105094 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 literal 106473 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%0AqoJAH$6 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 TxLln`mrqtaF0$F;a;GQ&!e;^y delta 223 zcmex)iTU6~X4VGQsoP#`Wc_w=^7(!G@t%1lMfoYE$t9Wjc?!BnK*1?BFF7MOu_!w; zFI^$CSRpY_Av3oizo;ZJuSB7^B(*>xGf$zsD6<44pPZkPs;A&tqL7iAQ&6l>TC7l( Zn3I{3I5{EME|#`7H0FzJ{&2Zd6ac8BQe^-D diff --git a/docs/.doctrees/recipes/recipes_index.doctree b/docs/.doctrees/recipes/recipes_index.doctree index 5ec4763394c784c403726f053fa5cda5afe94e42..dc7de894e653d7a28a19f1c212f509408f70f64d 100644 GIT binary patch delta 234 zcmZ4ejrHYMR+a|VsX-fAzWGjGkX1K1frn#qgJ19D_gvC?PN{jx8M%o?*$U5AEPOh5 z`m?!9pKa}a+1~$jQqQyXQ(o+AezJS<^97C18kWCk-aEN4bKZ1?Xh#0YD|09{XR?Dg V`{Y%56dJRp*)L?fUkKw}H2}7Te(nGO delta 346 zcmaF)m38$uR+a|VsZ%zxeDj@r@VVV&1s;#d4Sv0o1FrE-o{-HlIWL*ZIVm+SIU_f* zC|e;nKczG$RiPwbAvZO#xU?u$Au%sSAvr&{AQ8we$w*ZwNG(dsFUn2KOHNhDPgAJO yFD(Mfr%X3YVicboU>7>wHh|H1a>EM#$q!!A%eD`%UFqU4$7Y_8?K~ljchvxuqk|y; diff --git a/docs/_downloads/54db51700fabe094cbf7f11f5195d2bd/benchmark.ipynb b/docs/_downloads/54db51700fabe094cbf7f11f5195d2bd/benchmark.ipynb index c40ea1a..d81085b 100644 --- a/docs/_downloads/54db51700fabe094cbf7f11f5195d2bd/benchmark.ipynb +++ b/docs/_downloads/54db51700fabe094cbf7f11f5195d2bd/benchmark.ipynb @@ -15,14 +15,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# PyTorch Benchmark\nThis recipe provides a quick-start guide to using PyTorch\n``benchmark`` module to measure and compare code performance.\n\n## Introduction\nBenchmarking is an important step in writing code. It helps\nus validate that our code meets performance expectations,\ncompare different approaches to solving the same problem and\nprevent performance regressions.\n\nThere are many options when it comes to benchmarking PyTorch code\nincluding the Python builtin ``timeit`` module. However, benchmarking\nPyTorch code has many caveats that can be easily overlooked such as\nmanaging the number of threads and synchronizing CUDA devices. Moreover,\ngenerating Tensor inputs for benchmarking can be quite tedious.\n\nThis recipe demonstrates how to use PyTorch ``benchmark`` module to avoid\ncommon mistakes while making it easier to compare performance of\ndifferent code, generate input for benchmarking and more.\n\n## Setup\nBefore we begin, install ``torch`` if it isn\u2019t already available.\n\n::\n\n pip install torch\n" + "\n# PyTorch Benchmark\n\u672c\u6559\u7a0b\u63d0\u4f9b\u4e86\u4f7f\u7528 PyTorch ``benchmark`` \u6a21\u5757\u6765\u6d4b\u91cf\u548c\u6bd4\u8f83\u4ee3\u7801\u6027\u80fd\u7684\u5feb\u901f\u5165\u95e8\u6307\u5357\u3002\n\n## \u4ecb\u7ecd\n\u57fa\u51c6\u6d4b\u8bd5\u662f\u7f16\u5199\u4ee3\u7801\u65f6\u7684\u4e00\u4e2a\u91cd\u8981\u6b65\u9aa4\u3002\u5b83\u5e2e\u52a9\u6211\u4eec\u9a8c\u8bc1\u4ee3\u7801\u662f\u5426\u6ee1\u8db3\u6027\u80fd\u9884\u671f,\u6bd4\u8f83\u89e3\u51b3\u540c\u4e00\u95ee\u9898\u7684\u4e0d\u540c\u65b9\u6cd5,\u5e76\u9632\u6b62\u6027\u80fd\u88c2\u5316\u3002\n\n\u5bf9\u4e8e\u57fa\u51c6\u6d4b\u8bd5 PyTorch \u4ee3\u7801\u6709\u8bb8\u591a\u9009\u62e9,\u5305\u62ec Python \u5185\u7f6e\u7684 ``timeit`` \u6a21\u5757\u3002\n\u7136\u800c,\u57fa\u51c6\u6d4b\u8bd5 PyTorch \u4ee3\u7801\u6709\u8bb8\u591a\u5bb9\u6613\u88ab\u5ffd\u89c6\u7684\u6ce8\u610f\u4e8b\u9879,\u4f8b\u5982\u7ba1\u7406\u7ebf\u7a0b\u6570\u91cf\u548c\u540c\u6b65 CUDA \u8bbe\u5907\u3002\n\u6b64\u5916,\u4e3a\u57fa\u51c6\u6d4b\u8bd5\u751f\u6210\u5f20\u91cf\u8f93\u5165\u53ef\u80fd\u76f8\u5f53\u7e41\u7410\u3002\n\n\u672c\u6559\u7a0b\u6f14\u793a\u4e86\u5982\u4f55\u4f7f\u7528 PyTorch ``benchmark`` \u6a21\u5757\u6765\u907f\u514d\u5e38\u89c1\u9519\u8bef,\u540c\u65f6\u66f4\u5bb9\u6613\u6bd4\u8f83\u4e0d\u540c\u4ee3\u7801\u7684\u6027\u80fd\u3001\u4e3a\u57fa\u51c6\u6d4b\u8bd5\u751f\u6210\u8f93\u5165\u7b49\u3002\n\n## \u8bbe\u7f6e\n\u5728\u5f00\u59cb\u4e4b\u524d,\u5982\u679c\u5c1a\u672a\u5b89\u88c5 ``torch``,\u8bf7\u5148\u5b89\u88c5\u3002\n\n::\n\n pip install torch\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Steps\n\n1. Defining functions to benchmark\n2. Benchmarking with ``timeit.Timer``\n3. Benchmarking with ``torch.utils.benchmark.Timer``\n4. Benchmarking with ``Blocked Autorange``\n5. Comparing benchmark results\n6. Saving/Loading benchmark results\n7. Generating inputs with ``Fuzzed Parameters``\n8. Collecting instruction counts with ``Callgrind``\n\n### 1. Defining functions to benchmark\n\nAs of the time of this writing, [torch.dot](https://pytorch.org/docs/stable/generated/torch.dot.html?highlight=dot#torch.dot)_\ndoes not support batched mode, so we will compare two approaches to\nimplementing it using existing ``torch`` operators: one approach uses a\ncombination of ``mul`` and ``sum`` while the other reduces the problem to ``bmm``.\n\n\n" + "## \u5177\u4f53\u6b65\u9aa4\n\n1. \u5b9a\u4e49\u8981\u57fa\u51c6\u6d4b\u8bd5\u7684\u51fd\u6570\n2. \u4f7f\u7528 ``timeit.Timer`` \u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\n3. \u4f7f\u7528 ``torch.utils.benchmark.Timer`` \u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\n4. \u4f7f\u7528 ``Blocked Autorange`` \u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\n5. \u6bd4\u8f83\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c\n6. \u4fdd\u5b58/\u52a0\u8f7d\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c\n7. \u4f7f\u7528 ``Fuzzed Parameters`` \u751f\u6210\u8f93\u5165\n8. \u4f7f\u7528 ``Callgrind`` \u6536\u96c6\u6307\u4ee4\u8ba1\u6570\n\n### 1. \u5b9a\u4e49\u8981\u57fa\u51c6\u6d4b\u8bd5\u7684\u51fd\u6570\n\n\u5728\u64b0\u5199\u672c\u6587\u65f6, [torch.dot](https://pytorch.org/docs/stable/generated/torch.dot.html?highlight=dot#torch.dot)_\n\u4e0d\u652f\u6301\u6279\u91cf\u6a21\u5f0f,\u56e0\u6b64\u6211\u4eec\u5c06\u6bd4\u8f83\u4f7f\u7528\u73b0\u6709 ``torch`` \u8fd0\u7b97\u7b26\u5b9e\u73b0\u5b83\u7684\u4e24\u79cd\u65b9\u6cd5:\u4e00\u79cd\u65b9\u6cd5\u4f7f\u7528 ``mul`` \u548c ``sum`` \u7684\u7ec4\u5408,\u53e6\u4e00\u79cd\u65b9\u6cd5\u4f7f\u7528 ``bmm``\u3002\n\n\n" ] }, { @@ -33,14 +33,14 @@ }, "outputs": [], "source": [ - "import torch\n\n\ndef batched_dot_mul_sum(a, b):\n '''Computes batched dot by multiplying and summing'''\n return a.mul(b).sum(-1)\n\n\ndef batched_dot_bmm(a, b):\n '''Computes batched dot by reducing to ``bmm``'''\n a = a.reshape(-1, 1, a.shape[-1])\n b = b.reshape(-1, b.shape[-1], 1)\n return torch.bmm(a, b).flatten(-3)\n\n\n# Input for benchmarking\nx = torch.randn(10000, 64)\n\n# Ensure that both functions compute the same output\nassert batched_dot_mul_sum(x, x).allclose(batched_dot_bmm(x, x))" + "import torch\n\n\ndef batched_dot_mul_sum(a, b):\n \"\"\"Computes batched dot by multiplying and summing\"\"\"\n return a.mul(b).sum(-1)\n\n\ndef batched_dot_bmm(a, b):\n \"\"\"Computes batched dot by reducing to ``bmm``\"\"\"\n a = a.reshape(-1, 1, a.shape[-1])\n b = b.reshape(-1, b.shape[-1], 1)\n return torch.bmm(a, b).flatten(-3)\n\n\n# Input for benchmarking\nx = torch.randn(10000, 64)\n\n# Ensure that both functions compute the same output\nassert batched_dot_mul_sum(x, x).allclose(batched_dot_bmm(x, x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 2. Benchmarking with ``timeit.Timer``\n\nFirst, let's benchmark the code using Python's builtin ``timeit`` module.\nWe keep the benchmark code simple here so we can compare the defaults\nof ``timeit`` and ``torch.utils.benchmark``.\n\n\n" + "### 2. \u4f7f\u7528 ``timeit.Timer`` \u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\n\u9996\u5148,\u8ba9\u6211\u4eec\u4f7f\u7528 Python \u5185\u7f6e\u7684 ``timeit`` \u6a21\u5757\u5bf9\u4ee3\u7801\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u3002\n\u6211\u4eec\u5728\u8fd9\u91cc\u4fdd\u6301\u57fa\u51c6\u6d4b\u8bd5\u4ee3\u7801\u7b80\u5355,\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u6bd4\u8f83 ``timeit`` \u548c ``torch.utils.benchmark`` \u7684\u9ed8\u8ba4\u8bbe\u7f6e\u3002\n\n\n" ] }, { @@ -51,7 +51,7 @@ }, "outputs": [], "source": [ - "import timeit\n\nt0 = timeit.Timer(\n stmt='batched_dot_mul_sum(x, x)', \n setup='from __main__ import batched_dot_mul_sum',\n globals={'x': x})\n\nt1 = timeit.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals={'x': x})\n\nprint(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us')\nprint(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us')" + "import timeit\n\nt0 = timeit.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals={\"x\": x},\n)\n\nt1 = timeit.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals={\"x\": x},\n)\n\nprint(f\"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us\")\nprint(f\"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us\")" ] }, { @@ -65,7 +65,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 3. Benchmarking with ``torch.utils.benchmark.Timer``\n\nPyTorch ``benchmark`` module was designed to be familiar to those who\nhave used the ``timeit`` module before. However, its defaults make it\neasier and safer to use for benchmarking PyTorch code. Let's first\ncompare the same basic API as above.\n\n\n" + "### 3. \u4f7f\u7528 ``torch.utils.benchmark.Timer`` \u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\nPyTorch ``benchmark``\u6a21\u5757\u7684\u8bbe\u8ba1\u4f7f\u5f97\u5bf9\u4e8e\u90a3\u4e9b\u66fe\u7ecf\u4f7f\u7528\u8fc7 ``timeit`` \u6a21\u5757\u7684\u4eba\u6765\u8bf4,\u5b83\u770b\u8d77\u6765\u5f88\u719f\u6089\u3002\n\u7136\u800c,\u5b83\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u4f7f\u5f97\u5b83\u66f4\u5bb9\u6613\u4e14\u66f4\u5b89\u5168\u5730\u7528\u4e8e\u5bf9 PyTorch \u4ee3\u7801\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u3002\n\u9996\u5148\u8ba9\u6211\u4eec\u5bf9\u6bd4\u4e00\u4e0b\u57fa\u672cAPI\u7684\u4f7f\u7528\u3002\n\n" ] }, { @@ -76,7 +76,7 @@ }, "outputs": [], "source": [ - "import torch.utils.benchmark as benchmark\n\nt0 = benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)', \n setup='from __main__ import batched_dot_mul_sum',\n globals={'x': x})\n\nt1 = benchmark.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals={'x': x})\n\nprint(t0.timeit(100))\nprint(t1.timeit(100))" + "import torch.utils.benchmark as benchmark\n\nt0 = benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals={\"x\": x},\n)\n\nt1 = benchmark.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals={\"x\": x},\n)\n\nprint(t0.timeit(100))\nprint(t1.timeit(100))" ] }, { @@ -90,7 +90,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Even though the APIs are the same for the basic functionality, there\nare some important differences. ``benchmark.Timer.timeit()`` returns the\ntime per run as opposed to the total runtime like ``timeit.Timer.timeit()``\ndoes. PyTorch ``benchmark`` module also provides formatted string\nrepresentations for printing the results.\n\nAnother important difference, and the reason why the results diverge\nis that PyTorch benchmark module runs in a single thread by default.\nWe can change the number of threads with the ``num_threads`` argument.\n\n``torch.utils.benchmark.Timer`` takes several additional arguments\nincluding: ``label``, ``sub_label``, ``description`` and ``env`` which change\nthe __repr__ of the measurement object returned and are used for\ngrouping the results (more on this later).\n\n\n" + "\u867d\u7136\u57fa\u672c\u529f\u80fd\u7684API\u662f\u76f8\u540c\u7684,\u4f46\u662f\u8fd8\u662f\u6709\u4e00\u4e9b\u91cd\u8981\u7684\u533a\u522b\u3002\n``benchmark.Timer.timeit()``\u8fd4\u56de\u7684\u662f\u6bcf\u6b21\u8fd0\u884c\u7684\u65f6\u95f4,\u800c\u4e0d\u662f ``timeit.Timer.timeit()`` \u8fd4\u56de\u7684\u603b\u8fd0\u884c\u65f6\u95f4\u3002\nPyTorch ``benchmark``\u6a21\u5757\u8fd8\u63d0\u4f9b\u4e86\u683c\u5f0f\u5316\u7684\u5b57\u7b26\u4e32\u8868\u793a,\u7528\u4e8e\u6253\u5370\u7ed3\u679c\u3002\n\n\u53e6\u4e00\u4e2a\u91cd\u8981\u7684\u533a\u522b,\u4e5f\u662f\u7ed3\u679c\u4e0d\u540c\u7684\u539f\u56e0,\u662fPyTorch\u57fa\u51c6\u6d4b\u8bd5\u6a21\u5757\u9ed8\u8ba4\u5728\u5355\u7ebf\u7a0b\u4e2d\u8fd0\u884c\u3002\n\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528``num_threads``\u53c2\u6570\u6765\u66f4\u6539\u7ebf\u7a0b\u6570\u91cf\u3002\n\n``torch.utils.benchmark.Timer``\u63a5\u53d7\u51e0\u4e2a\u989d\u5916\u7684\u53c2\u6570,\u5305\u62ec: ``label``\u3001``sub_label``\u3001``description``\u548c``env``,\n\u8fd9\u4e9b\u53c2\u6570\u4f1a\u6539\u53d8\u8fd4\u56de\u7684\u6d4b\u91cf\u5bf9\u8c61\u7684__repr__,\u5e76\u7528\u4e8e\u5bf9\u7ed3\u679c\u8fdb\u884c\u5206\u7ec4(\u7a0d\u540e\u4f1a\u8be6\u7ec6\u4ecb\u7ecd)\u3002\n\n\n" ] }, { @@ -101,7 +101,7 @@ }, "outputs": [], "source": [ - "num_threads = torch.get_num_threads()\nprint(f'Benchmarking on {num_threads} threads')\n\nt0 = benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)', \n setup='from __main__ import batched_dot_mul_sum',\n globals={'x': x},\n num_threads=num_threads,\n label='Multithreaded batch dot',\n sub_label='Implemented using mul and sum')\n\nt1 = benchmark.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals={'x': x},\n num_threads=num_threads,\n label='Multithreaded batch dot',\n sub_label='Implemented using bmm')\n\nprint(t0.timeit(100))\nprint(t1.timeit(100))" + "num_threads = torch.get_num_threads()\nprint(f\"Benchmarking on {num_threads} threads\")\n\nt0 = benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals={\"x\": x},\n num_threads=num_threads,\n label=\"Multithreaded batch dot\",\n sub_label=\"Implemented using mul and sum\",\n)\n\nt1 = benchmark.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals={\"x\": x},\n num_threads=num_threads,\n label=\"Multithreaded batch dot\",\n sub_label=\"Implemented using bmm\",\n)\n\nprint(t0.timeit(100))\nprint(t1.timeit(100))" ] }, { @@ -115,7 +115,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Running ``benchmark`` with all threads available gives similar results\nas the ``timeit`` module. More importantly, which version is faster\ndepends on how many threads we run the code with. This is why it's\nimportant to benchmark the code with thread settings that are\nrepresentative of real use cases. Another important thing to remember\nis to synchronize CPU and CUDA when benchmarking on the GPU. Let's run\nthe above benchmarks again on a CUDA tensor and see what happens.\n\n\n" + "\u4f7f\u7528\u6240\u6709\u53ef\u7528\u7ebf\u7a0b\u8fd0\u884c ``benchmark`` \u4f1a\u5f97\u5230\u4e0e ``timeit`` \u6a21\u5757\u7c7b\u4f3c\u7684\u7ed3\u679c\u3002\n\u66f4\u91cd\u8981\u7684\u662f,\u54ea\u4e2a\u7248\u672c\u66f4\u5feb\u53d6\u51b3\u4e8e\u6211\u4eec\u4f7f\u7528\u591a\u5c11\u7ebf\u7a0b\u8fd0\u884c\u4ee3\u7801\u3002\n\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5728\u57fa\u51c6\u6d4b\u8bd5\u65f6,\u4f7f\u7528\u4e0e\u5b9e\u9645\u7528\u4f8b\u76f8\u7b26\u7684\u7ebf\u7a0b\u8bbe\u7f6e\u975e\u5e38\u91cd\u8981\u3002\n\u53e6\u4e00\u4e2a\u9700\u8981\u8bb0\u4f4f\u7684\u91cd\u8981\u4e8b\u60c5\u662f,\u5728 GPU \u4e0a\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u65f6,\u8981\u540c\u6b65CPU\u548cCUDA\u3002\n\u8ba9\u6211\u4eec\u518d\u6b21\u5728CUDA\u5f20\u91cf\u4e0a\u8fd0\u884c\u4e0a\u9762\u7684\u57fa\u51c6\u6d4b\u8bd5,\u770b\u770b\u4f1a\u53d1\u751f\u4ec0\u4e48\u3002\n\n\n" ] }, { @@ -126,7 +126,7 @@ }, "outputs": [], "source": [ - "x = torch.randn(10000, 1024, device='cuda')\n\nt0 = timeit.Timer(\n stmt='batched_dot_mul_sum(x, x)', \n setup='from __main__ import batched_dot_mul_sum',\n globals={'x': x})\n\nt1 = timeit.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals={'x': x})\n\n# Ran each twice to show difference before/after warm-up\nprint(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us')\nprint(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us')\nprint(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us')\nprint(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us')" + "x = torch.randn(10000, 1024, device=\"cuda\")\n\nt0 = timeit.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals={\"x\": x},\n)\n\nt1 = timeit.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals={\"x\": x},\n)\n\n# Ran each twice to show difference before/after warm-up\nprint(f\"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us\")\nprint(f\"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us\")\nprint(f\"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us\")\nprint(f\"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us\")" ] }, { @@ -144,7 +144,7 @@ }, "outputs": [], "source": [ - "t0 = benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)', \n setup='from __main__ import batched_dot_mul_sum',\n globals={'x': x})\n\nt1 = benchmark.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals={'x': x})\n\n# Run only once since benchmark module does warm-up for us\nprint(t0.timeit(100))\nprint(t1.timeit(100))" + "t0 = benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals={\"x\": x},\n)\n\nt1 = benchmark.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals={\"x\": x},\n)\n\n# Run only once since benchmark module does warm-up for us\nprint(t0.timeit(100))\nprint(t1.timeit(100))" ] }, { @@ -158,14 +158,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The results reveal something interesting. The first run of the ``bmm``\nversion using the ``timeit`` module takes much longer than the second\nrun. This is because ``bmm`` calls into `cuBLAS` which needs to be\nloaded the first time it's called which takes some time. This is why\nit's important to do a warm-up run before benchmarking, luckily for\nus, PyTorch's ``benchmark`` module takes care of that.\n\nThe difference in the results between ``timeit`` and ``benchmark`` modules\nis because the `timeit` module is not synchronizing CUDA and is thus only\ntiming the time to launch the kernel. PyTorch's ``benchmark`` module does\nthe synchronization for us.\n\n" + "\u7ed3\u679c\u63ed\u793a\u4e86\u4e00\u4e9b\u6709\u8da3\u7684\u4e8b\u60c5\u3002\u4f7f\u7528 `timeit` \u6a21\u5757\u8fd0\u884c `bmm` \u7248\u672c\u7684\u7b2c\u4e00\u6b21\u8fd0\u884c\u6bd4\u7b2c\u4e8c\u6b21\u8fd0\u884c\u6162\u5f88\u591a\u3002\n\u8fd9\u662f\u56e0\u4e3a `bmm` \u9700\u8981\u8c03\u7528 `cuBLAS`,\u7b2c\u4e00\u6b21\u8c03\u7528\u65f6\u9700\u8981\u52a0\u8f7d\u5b83,\u8fd9\u9700\u8981\u4e00\u4e9b\u65f6\u95f4\u3002\n\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5728\u57fa\u51c6\u6d4b\u8bd5\u4e4b\u524d\u505a\u4e00\u6b21\u9884\u70ed\u8fd0\u884c\u5f88\u91cd\u8981,\u5e78\u8fd0\u7684\u662f, PyTorch \u7684 `benchmark` \u6a21\u5757\u4e3a\u6211\u4eec\u5904\u7406\u4e86\u8fd9\u4e2a\u95ee\u9898\u3002\n\n`timeit` \u6a21\u5757\u548c `benchmark` \u6a21\u5757\u4e4b\u95f4\u7ed3\u679c\u7684\u5dee\u5f02\u662f\u56e0\u4e3a `timeit` \u6a21\u5757\u6ca1\u6709\u540c\u6b65 CUDA,\u56e0\u6b64\u53ea\u8ba1\u65f6\u4e86\u542f\u52a8\u5185\u6838\u7684\u65f6\u95f4\u3002\nPyTorch \u7684 `benchmark` \u6a21\u5757\u4e3a\u6211\u4eec\u505a\u4e86\u540c\u6b65\u3002\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 4. Benchmarking with `Blocked Autorange`\n\nWhile ``timeit.Timer.autorange`` takes a single continuous measurement\nof at least 0.2 seconds, `torch.utils.benchmark.blocked_autorange`\ntakes many measurements whose times total at least 0.2 seconds (which\ncan be changed by the `min_run_time` parameter) subject to the constraint\nthat timing overhead is a small fraction of the overall measurement.\nThis is accomplished by first running with an increasing number of runs\nper loop until the runtime is much larger than measurement overhead\n(which also serves as a warm up), and then taking measurements until\nthe target time is reached. This has the useful properties that it wastes\nless data and allows us to compute statistics to estimate the reliability\nof the measurements.\n\n\n" + "### 4. \u4f7f\u7528 `Blocked Autorange` \u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\n\n\u867d\u7136 `timeit.Timer.autorange` \u91c7\u53d6\u81f3\u5c11 0.2 \u79d2\u7684\u5355\u6b21\u8fde\u7eed\u6d4b\u91cf,\n\u4f46 `torch.utils.benchmark.blocked_autorange` \u91c7\u53d6\u591a\u6b21\u6d4b\u91cf,\u5176\u603b\u65f6\u95f4\u81f3\u5c11\u4e3a 0.2 \u79d2(\u53ef\u901a\u8fc7 `min_run_time` \u53c2\u6570\u66f4\u6539),\n\u5e76\u4e14\u6d4b\u91cf\u5f00\u9500\u53ea\u5360\u603b\u4f53\u6d4b\u91cf\u7684\u4e00\u5c0f\u90e8\u5206\u3002\n\u8fd9\u662f\u901a\u8fc7\u9996\u5148\u4ee5\u9012\u589e\u7684\u5faa\u73af\u6b21\u6570\u8fd0\u884c,\u76f4\u5230\u8fd0\u884c\u65f6\u95f4\u8fdc\u5927\u4e8e\u6d4b\u91cf\u5f00\u9500(\u8fd9\u4e5f\u8d77\u5230\u4e86\u70ed\u8eab\u7684\u4f5c\u7528),\n\u7136\u540e\u8fdb\u884c\u6d4b\u91cf\u76f4\u5230\u8fbe\u5230\u76ee\u6807\u65f6\u95f4\u3002\u8fd9\u6709\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027,\u5373\u5b83\u6d6a\u8d39\u7684\u6570\u636e\u66f4\u5c11,\u5e76\u4e14\u5141\u8bb8\u6211\u4eec\u8ba1\u7b97\u7edf\u8ba1\u6570\u636e\u6765\u4f30\u8ba1\u6d4b\u91cf\u7684\u53ef\u9760\u6027\u3002\n\n\n" ] }, { @@ -190,7 +190,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can also inspect the individual statistics from the returned\nmeasurements object.\n\n" + "\u6211\u4eec\u8fd8\u53ef\u4ee5\u67e5\u770b\u8fd4\u56de\u7684\u6d4b\u91cf\u5bf9\u8c61\u4e2d\u83b7\u5f97\u7684\u5404\u4e2a\u7edf\u8ba1\u6570\u636e\u3002\n\n" ] }, { @@ -215,7 +215,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 5. Comparing benchmark results\n\nSo far we've been comparing our two versions of batched dot against a\nsingle input. In practice, we want to try a combination of inputs as\nwell as different number of threads. The ``Compare`` class helps display\nthe results of many measurements in a formatted table. It uses the\nannotations described above (`label`, `sub_label`, `num_threads`, etc.) as\nwell as `description` to group and organize the table. Let's use\n``Compare`` to see how our functions perform for different input sizes\nand number of threads.\n\n\n" + "### 5. \u6bd4\u8f83\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c\n\n\u5230\u76ee\u524d\u4e3a\u6b62,\u6211\u4eec\u4e00\u76f4\u5728\u6bd4\u8f83\u6211\u4eec\u7684\u4e24\u4e2a\u6279\u91cf\u70b9\u79ef\u7248\u672c\u5bf9\u540c\u4e00\u8f93\u5165\u7684\u8868\u73b0\u3002\n\u5728\u5b9e\u8df5\u4e2d,\u6211\u4eec\u5e0c\u671b\u5c1d\u8bd5\u4e0d\u540c\u7684\u8f93\u5165\u7ec4\u5408\u4ee5\u53ca\u4e0d\u540c\u7684\u7ebf\u7a0b\u6570\u91cf\u3002\n`Compare` \u7c7b\u5e2e\u52a9\u6211\u4eec\u4ee5\u683c\u5f0f\u5316\u8868\u683c\u7684\u5f62\u5f0f\u663e\u793a\u591a\u4e2a\u6d4b\u91cf\u7ed3\u679c\u3002\n\u5b83\u4f7f\u7528\u4e0a\u9762\u63cf\u8ff0\u7684\u6ce8\u91ca( `label`\u3001 `sub_label`\u3001 `num_threads` \u7b49)\u4ee5\u53ca `description` \u6765\u5bf9\u8868\u683c\u8fdb\u884c\u5206\u7ec4\u548c\u7ec4\u7ec7\u3002\n\u8ba9\u6211\u4eec\u4f7f\u7528 `Compare` \u6765\u770b\u770b\u6211\u4eec\u7684\u51fd\u6570\u5728\u4e0d\u540c\u7684\u8f93\u5165\u5927\u5c0f\u548c\u7ebf\u7a0b\u6570\u91cf\u4e0b\u7684\u8868\u73b0\u5982\u4f55\u3002\n\n\n" ] }, { @@ -226,21 +226,21 @@ }, "outputs": [], "source": [ - "from itertools import product\n\n# Compare takes a list of measurements which we'll save in results.\nresults = []\n\nsizes = [1, 64, 1024, 10000]\nfor b, n in product(sizes, sizes):\n # label and sub_label are the rows\n # description is the column\n label = 'Batched dot'\n sub_label = f'[{b}, {n}]'\n x = torch.ones((b, n))\n for num_threads in [1, 4, 16, 32]:\n results.append(benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)',\n setup='from __main__ import batched_dot_mul_sum',\n globals={'x': x},\n num_threads=num_threads,\n label=label,\n sub_label=sub_label,\n description='mul/sum',\n ).blocked_autorange(min_run_time=1))\n results.append(benchmark.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals={'x': x},\n num_threads=num_threads,\n label=label,\n sub_label=sub_label,\n description='bmm',\n ).blocked_autorange(min_run_time=1))\n\ncompare = benchmark.Compare(results)\ncompare.print()" + "from itertools import product\n\n# Compare takes a list of measurements which we'll save in results.\nresults = []\n\nsizes = [1, 64, 1024, 10000]\nfor b, n in product(sizes, sizes):\n # label and sub_label are the rows\n # description is the column\n label = \"Batched dot\"\n sub_label = f\"[{b}, {n}]\"\n x = torch.ones((b, n))\n for num_threads in [1, 4, 16, 32]:\n results.append(\n benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals={\"x\": x},\n num_threads=num_threads,\n label=label,\n sub_label=sub_label,\n description=\"mul/sum\",\n ).blocked_autorange(min_run_time=1)\n )\n results.append(\n benchmark.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals={\"x\": x},\n num_threads=num_threads,\n label=label,\n sub_label=sub_label,\n description=\"bmm\",\n ).blocked_autorange(min_run_time=1)\n )\n\ncompare = benchmark.Compare(results)\ncompare.print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - ".. code-block:: none\n :caption: Output\n\n [--------------- Batched dot ----------------]\n | mul/sum | bmm \n 1 threads: -----------------------------------\n [1, 1] | 5.9 | 11.2\n [1, 64] | 6.4 | 11.4\n [1, 1024] | 6.7 | 14.2\n [1, 10000] | 10.2 | 23.7\n [64, 1] | 6.3 | 11.5\n [64, 64] | 8.6 | 15.4\n [64, 1024] | 39.4 | 204.4\n [64, 10000] | 274.9 | 748.5\n [1024, 1] | 7.7 | 17.8\n [1024, 64] | 40.3 | 76.4\n [1024, 1024] | 432.4 | 2795.9\n [1024, 10000] | 22657.3 | 11899.5\n [10000, 1] | 16.9 | 74.8\n [10000, 64] | 300.3 | 609.4\n [10000, 1024] | 23098.6 | 27246.1\n [10000, 10000] | 267073.7 | 118823.7\n 4 threads: -----------------------------------\n [1, 1] | 6.0 | 11.5\n [1, 64] | 6.2 | 11.2\n [1, 1024] | 6.8 | 14.3\n [1, 10000] | 10.2 | 23.7\n [64, 1] | 6.3 | 16.2\n [64, 64] | 8.8 | 18.2\n [64, 1024] | 41.5 | 189.1\n [64, 10000] | 91.7 | 849.1\n [1024, 1] | 7.6 | 17.4\n [1024, 64] | 43.5 | 33.5\n [1024, 1024] | 135.4 | 2782.3\n [1024, 10000] | 7471.1 | 11874.0\n [10000, 1] | 16.8 | 33.9\n [10000, 64] | 118.7 | 173.2\n [10000, 1024] | 7264.6 | 27824.7\n [10000, 10000] | 100060.9 | 121499.0\n 16 threads: ----------------------------------\n [1, 1] | 6.0 | 11.3\n [1, 64] | 6.2 | 11.2\n [1, 1024] | 6.9 | 14.2\n [1, 10000] | 10.3 | 23.8\n [64, 1] | 6.4 | 24.1\n [64, 64] | 9.0 | 23.8\n [64, 1024] | 54.1 | 188.5\n [64, 10000] | 49.9 | 748.0\n [1024, 1] | 7.6 | 23.4\n [1024, 64] | 55.5 | 28.2\n [1024, 1024] | 66.9 | 2773.9\n [1024, 10000] | 6111.5 | 12833.7\n [10000, 1] | 16.9 | 27.5\n [10000, 64] | 59.5 | 73.7\n [10000, 1024] | 6295.9 | 27062.0\n [10000, 10000] | 71804.5 | 120365.8\n 32 threads: ----------------------------------\n [1, 1] | 5.9 | 11.3\n [1, 64] | 6.2 | 11.3\n [1, 1024] | 6.7 | 14.2\n [1, 10000] | 10.5 | 23.8\n [64, 1] | 6.3 | 31.7\n [64, 64] | 9.1 | 30.4\n [64, 1024] | 72.0 | 190.4\n [64, 10000] | 103.1 | 746.9\n [1024, 1] | 7.6 | 28.4\n [1024, 64] | 70.5 | 31.9\n [1024, 1024] | 65.6 | 2804.6\n [1024, 10000] | 6764.0 | 11871.4\n [10000, 1] | 17.8 | 31.8\n [10000, 64] | 110.3 | 56.0\n [10000, 1024] | 6640.2 | 27592.2\n [10000, 10000] | 73003.4 | 120083.2\n\n Times are in microseconds (us).\n\n\n" + ".. code-block:: none\n :caption: Output\n\n [--------------- Batched dot ----------------]\n | mul/sum | bmm\n 1 threads: -----------------------------------\n [1, 1] | 5.9 | 11.2\n [1, 64] | 6.4 | 11.4\n [1, 1024] | 6.7 | 14.2\n [1, 10000] | 10.2 | 23.7\n [64, 1] | 6.3 | 11.5\n [64, 64] | 8.6 | 15.4\n [64, 1024] | 39.4 | 204.4\n [64, 10000] | 274.9 | 748.5\n [1024, 1] | 7.7 | 17.8\n [1024, 64] | 40.3 | 76.4\n [1024, 1024] | 432.4 | 2795.9\n [1024, 10000] | 22657.3 | 11899.5\n [10000, 1] | 16.9 | 74.8\n [10000, 64] | 300.3 | 609.4\n [10000, 1024] | 23098.6 | 27246.1\n [10000, 10000] | 267073.7 | 118823.7\n 4 threads: -----------------------------------\n [1, 1] | 6.0 | 11.5\n [1, 64] | 6.2 | 11.2\n [1, 1024] | 6.8 | 14.3\n [1, 10000] | 10.2 | 23.7\n [64, 1] | 6.3 | 16.2\n [64, 64] | 8.8 | 18.2\n [64, 1024] | 41.5 | 189.1\n [64, 10000] | 91.7 | 849.1\n [1024, 1] | 7.6 | 17.4\n [1024, 64] | 43.5 | 33.5\n [1024, 1024] | 135.4 | 2782.3\n [1024, 10000] | 7471.1 | 11874.0\n [10000, 1] | 16.8 | 33.9\n [10000, 64] | 118.7 | 173.2\n [10000, 1024] | 7264.6 | 27824.7\n [10000, 10000] | 100060.9 | 121499.0\n 16 threads: ----------------------------------\n [1, 1] | 6.0 | 11.3\n [1, 64] | 6.2 | 11.2\n [1, 1024] | 6.9 | 14.2\n [1, 10000] | 10.3 | 23.8\n [64, 1] | 6.4 | 24.1\n [64, 64] | 9.0 | 23.8\n [64, 1024] | 54.1 | 188.5\n [64, 10000] | 49.9 | 748.0\n [1024, 1] | 7.6 | 23.4\n [1024, 64] | 55.5 | 28.2\n [1024, 1024] | 66.9 | 2773.9\n [1024, 10000] | 6111.5 | 12833.7\n [10000, 1] | 16.9 | 27.5\n [10000, 64] | 59.5 | 73.7\n [10000, 1024] | 6295.9 | 27062.0\n [10000, 10000] | 71804.5 | 120365.8\n 32 threads: ----------------------------------\n [1, 1] | 5.9 | 11.3\n [1, 64] | 6.2 | 11.3\n [1, 1024] | 6.7 | 14.2\n [1, 10000] | 10.5 | 23.8\n [64, 1] | 6.3 | 31.7\n [64, 64] | 9.1 | 30.4\n [64, 1024] | 72.0 | 190.4\n [64, 10000] | 103.1 | 746.9\n [1024, 1] | 7.6 | 28.4\n [1024, 64] | 70.5 | 31.9\n [1024, 1024] | 65.6 | 2804.6\n [1024, 10000] | 6764.0 | 11871.4\n [10000, 1] | 17.8 | 31.8\n [10000, 64] | 110.3 | 56.0\n [10000, 1024] | 6640.2 | 27592.2\n [10000, 10000] | 73003.4 | 120083.2\n\n Times are in microseconds (us).\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The results above indicate that the version which reduces to ``bmm``\nis better for larger tensors running on multiple threads, while for\nsmaller and/or single thread code, the other version is better.\n\n``Compare`` also provides functions for changing the table format\n\n\n" + "\u4e0a\u9762\u7684\u7ed3\u679c\u8868\u660e,\u5bf9\u4e8e\u5728\u591a\u7ebf\u7a0b\u4e0a\u8fd0\u884c\u7684\u8f83\u5927\u5f20\u91cf, `bmm` \u7684\u7248\u672c\u6548\u679c\u66f4\u597d,\n\u800c\u5bf9\u4e8e\u8f83\u5c0f\u548c/\u6216\u5355\u7ebf\u7a0b\u4ee3\u7801,\u53e6\u4e00\u4e2a\u7248\u672c\u6548\u679c\u66f4\u597d\u3002\n\n`Compare` \u8fd8\u63d0\u4f9b\u4e86\u7528\u4e8e\u66f4\u6539\u8868\u683c\u683c\u5f0f\u7684\u51fd\u6570\n\n" ] }, { @@ -258,7 +258,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 6. Saving/Loading benchmark results\n\n`Measurements` (and ``CallgrindStats`` which are described in section 8)\ncan be serialized by the ``pickle`` module. This makes A/B testing easy, as you can collect\nmeasurements from two separate environments, pickle them, and then\nload both in a single environment. Timer even takes an `env`\nconstructor argument so that such A/B testing works seamlessly.\n\nLet's imagine that rather than two Python functions, the add/sum\nand ``bmm`` approaches were in two different builds of PyTorch.\nThe example below demonstrates how one might A/B test them. For\nsimplicity, we only use a subset of shapes, and simply round trip\nresults through pickle rather than actually using multiple environments\nand writing results to disk.\n\n\n" + "### 6. \u4fdd\u5b58/\u52a0\u8f7d\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c\n\n`Measurements` (\u548c\u7b2c8\u8282\u4e2d\u63cf\u8ff0\u7684 `CallgrindStats` )\u53ef\u4ee5\u901a\u8fc7 `pickle` \u6a21\u5757\u5e8f\u5217\u5316\u3002\n\u8fd9\u4f7f\u5f97A/B\u6d4b\u8bd5\u53d8\u5f97\u5f88\u5bb9\u6613,\u56e0\u4e3a\u60a8\u53ef\u4ee5\u4ece\u4e24\u4e2a\u72ec\u7acb\u7684\u73af\u5883\u4e2d\u6536\u96c6\u6d4b\u91cf\u7ed3\u679c,\n\u5c06\u5b83\u4eec\u5e8f\u5217\u5316,\u7136\u540e\u5728\u5355\u4e2a\u73af\u5883\u4e2d\u52a0\u8f7d\u4e24\u8005\u3002Timer\u751a\u81f3\u63a5\u53d7\u4e00\u4e2a `env`\n\u6784\u9020\u51fd\u6570\u53c2\u6570,\u4ee5\u4fbf\u8fd9\u79cdA/B\u6d4b\u8bd5\u53ef\u4ee5\u65e0\u7f1d\u8854\u63a5\u3002\n\n\u5047\u8bbe add/sum \u548c `bmm` \u65b9\u6cd5\u4e0d\u662f\u4e24\u4e2aPython\u51fd\u6570,\u800c\u662f PyTorch \u7684\u4e24\u4e2a\u4e0d\u540c\u7248\u672c\u3002\n\u4e0b\u9762\u7684\u793a\u4f8b\u6f14\u793a\u4e86\u5982\u4f55\u8fdb\u884cA/B\u6d4b\u8bd5\u3002\u4e3a\u4e86\u7b80\u5355\u8d77\u89c1,\u6211\u4eec\u53ea\u4f7f\u7528\u4e86\u4e00\u90e8\u5206\u6570\u636e,\n\u5e76\u7b80\u5355\u5730\u901a\u8fc7pickle\u6765\u56de\u4f20\u7ed3\u679c,\u800c\u4e0d\u662f\u5b9e\u9645\u4f7f\u7528\u591a\u4e2a\u73af\u5883\u5e76\u5c06\u7ed3\u679c\u5199\u5165\u78c1\u76d8\u3002\n\n\n" ] }, { @@ -269,7 +269,7 @@ }, "outputs": [], "source": [ - "import pickle\n\nab_test_results = []\nfor env in ('environment A: mul/sum', 'environment B: bmm'):\n for b, n in ((1, 1), (1024, 10000), (10000, 1)):\n x = torch.ones((b, n))\n dot_fn = (batched_dot_mul_sum if env == 'environment A: mul/sum' else batched_dot_bmm)\n m = benchmark.Timer(\n stmt='batched_dot(x, x)',\n globals={'x': x, 'batched_dot': dot_fn},\n num_threads=1,\n label='Batched dot',\n description=f'[{b}, {n}]',\n env=env,\n ).blocked_autorange(min_run_time=1)\n ab_test_results.append(pickle.dumps(m))\n\nab_results = [pickle.loads(i) for i in ab_test_results]\ncompare = benchmark.Compare(ab_results)\ncompare.trim_significant_figures()\ncompare.colorize()\ncompare.print()" + "import pickle\n\nab_test_results = []\nfor env in (\"environment A: mul/sum\", \"environment B: bmm\"):\n for b, n in ((1, 1), (1024, 10000), (10000, 1)):\n x = torch.ones((b, n))\n dot_fn = (\n batched_dot_mul_sum if env == \"environment A: mul/sum\" else batched_dot_bmm\n )\n m = benchmark.Timer(\n stmt=\"batched_dot(x, x)\",\n globals={\"x\": x, \"batched_dot\": dot_fn},\n num_threads=1,\n label=\"Batched dot\",\n description=f\"[{b}, {n}]\",\n env=env,\n ).blocked_autorange(min_run_time=1)\n ab_test_results.append(pickle.dumps(m))\n\nab_results = [pickle.loads(i) for i in ab_test_results]\ncompare = benchmark.Compare(ab_results)\ncompare.trim_significant_figures()\ncompare.colorize()\ncompare.print()" ] }, { @@ -287,14 +287,14 @@ }, "outputs": [], "source": [ - "# And just to show that we can round trip all of the results from earlier:\nround_tripped_results = pickle.loads(pickle.dumps(results))\nassert(str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results)))" + "# \u4ec5\u4e3a\u5c55\u793a\u53ef\u4ee5\u5c06\u4e4b\u524d\u6240\u6709\u7684\u7ed3\u679c\u901a\u8fc7 pickle \u8fdb\u884c\u56de\u4f20:\nround_tripped_results = pickle.loads(pickle.dumps(results))\nassert str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 7. Generating inputs with `Fuzzed Parameters`\n\nAs we've seen in the previous section, there can be some stark\nperformance differences depending on the input tensors. Hence, it\nis a good idea to run benchmarks on a number of different inputs.\nHowever, creating all these input tensors can be tedious which is\nwhere ``torch.utils.benchmark.Fuzzer`` and related classes come in.\nLet's take a look at how we can use the ``Fuzzer`` to create some test\ncases for the benchmark.\n\n\n" + "### 7. \u4f7f\u7528 `Fuzzed Parameters` \u751f\u6210\u8f93\u5165\n\n\u6b63\u5982\u6211\u4eec\u5728\u4e0a\u4e00\u8282\u4e2d\u770b\u5230\u7684,\u6839\u636e\u8f93\u5165\u5f20\u91cf\u7684\u4e0d\u540c,\u6027\u80fd\u5dee\u5f02\u53ef\u80fd\u4f1a\u5f88\u5927\u3002\n\u56e0\u6b64,\u5728\u591a\u4e2a\u4e0d\u540c\u7684\u8f93\u5165\u4e0a\u8fd0\u884c\u57fa\u51c6\u6d4b\u8bd5\u662f\u4e00\u4e2a\u597d\u4e3b\u610f\u3002\n\u4f46\u662f,\u521b\u5efa\u6240\u6709\u8fd9\u4e9b\u8f93\u5165\u5f20\u91cf\u53ef\u80fd\u4f1a\u5f88\u9ebb\u70e6,\u8fd9\u5c31\u662f `torch.utils.benchmark.Fuzzer`\n\u548c\u76f8\u5173\u7c7b\u7684\u7528\u6b66\u4e4b\u5730\u3002\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u4f7f\u7528 `Fuzzer` \u6765\u521b\u5efa\u4e00\u4e9b\u7528\u4e8e\u57fa\u51c6\u6d4b\u8bd5\u7684\u6d4b\u8bd5\u7528\u4f8b\u3002\n\n\n" ] }, { @@ -305,21 +305,21 @@ }, "outputs": [], "source": [ - "from torch.utils.benchmark import Fuzzer, FuzzedParameter, FuzzedTensor, ParameterAlias\n\n# Generates random tensors with 128 to 10000000 elements and sizes k0 and k1 chosen from a\n# ``loguniform`` distribution in [1, 10000], 40% of which will be discontiguous on average.\nexample_fuzzer = Fuzzer(\n parameters = [\n FuzzedParameter('k0', minval=1, maxval=10000, distribution='loguniform'),\n FuzzedParameter('k1', minval=1, maxval=10000, distribution='loguniform'),\n ],\n tensors = [\n FuzzedTensor('x', size=('k0', 'k1'), min_elements=128, max_elements=10000000, probability_contiguous=0.6)\n ],\n seed=0,\n)\n\nresults = []\nfor tensors, tensor_params, params in example_fuzzer.take(10):\n # description is the column label\n sub_label=f\"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}\"\n results.append(benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)',\n setup='from __main__ import batched_dot_mul_sum',\n globals=tensors,\n label='Batched dot',\n sub_label=sub_label,\n description='mul/sum',\n ).blocked_autorange(min_run_time=1))\n results.append(benchmark.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals=tensors,\n label='Batched dot',\n sub_label=sub_label,\n description='bmm',\n ).blocked_autorange(min_run_time=1))\n\ncompare = benchmark.Compare(results)\ncompare.trim_significant_figures()\ncompare.print()" + "from torch.utils.benchmark import FuzzedParameter, FuzzedTensor, Fuzzer, ParameterAlias\n\n# \u751f\u6210\u968f\u673a\u5f20\u91cf,\u5143\u7d20\u6570\u91cf\u5728 128 \u5230 10000000 \u4e4b\u95f4,\u5927\u5c0f k0 \u548c k1 \u4ece [1, 10000] \u7684 `loguniform` \u5206\u5e03\u4e2d\u9009\u62e9,\n# \u5176\u4e2d\u5e73\u5747 40% \u5c06\u662f\u4e0d\u8fde\u7eed\u7684\u3002\nexample_fuzzer = Fuzzer(\n parameters=[\n FuzzedParameter(\"k0\", minval=1, maxval=10000, distribution=\"loguniform\"),\n FuzzedParameter(\"k1\", minval=1, maxval=10000, distribution=\"loguniform\"),\n ],\n tensors=[\n FuzzedTensor(\n \"x\",\n size=(\"k0\", \"k1\"),\n min_elements=128,\n max_elements=10000000,\n probability_contiguous=0.6,\n )\n ],\n seed=0,\n)\n\nresults = []\nfor tensors, tensor_params, params in example_fuzzer.take(10):\n # description is the column label\n sub_label = f\"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}\"\n results.append(\n benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals=tensors,\n label=\"Batched dot\",\n sub_label=sub_label,\n description=\"mul/sum\",\n ).blocked_autorange(min_run_time=1)\n )\n results.append(\n benchmark.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals=tensors,\n label=\"Batched dot\",\n sub_label=sub_label,\n description=\"bmm\",\n ).blocked_autorange(min_run_time=1)\n )\n\ncompare = benchmark.Compare(results)\ncompare.trim_significant_figures()\ncompare.print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - ".. code-block:: none\n :caption: Output\n\n [--------------------- Batched dot ---------------------]\n | mul/sum | bmm \n 1 threads: ----------------------------------------------\n 725 x 257 | 87 | 180\n 49 x 383 | 15 | 30\n 34 x 1468 | 30 | 118\n 187 x 5039 | 400 | 1200\n 2140 x 1296 (discontiguous) | 2000 | 41000\n 78 x 1598 | 74 | 310\n 519 x 763 | 190 | 1500\n 141 x 1082 | 87 | 500\n 78 x 5 (discontiguous) | 9 | 20\n 187 x 1 | 12 | 10\n\n Times are in microseconds (us). \n\n\n" + ".. code-block:: none\n :caption: Output\n\n [--------------------- Batched dot ---------------------]\n | mul/sum | bmm\n 1 threads: ----------------------------------------------\n 725 x 257 | 87 | 180\n 49 x 383 | 15 | 30\n 34 x 1468 | 30 | 118\n 187 x 5039 | 400 | 1200\n 2140 x 1296 (discontiguous) | 2000 | 41000\n 78 x 1598 | 74 | 310\n 519 x 763 | 190 | 1500\n 141 x 1082 | 87 | 500\n 78 x 5 (discontiguous) | 9 | 20\n 187 x 1 | 12 | 10\n\n Times are in microseconds (us).\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "There is a lot of flexibility for defining your own ``fuzzers`` which\nis great for creating a powerful set of inputs to benchmark. But to\nmake things even simpler, PyTorch benchmark module comes with some\nbuilt-in ``fuzzers`` for common benchmarking needs. Let's take a look at\nhow we can use one of these built-in ``fuzzers``.\n\n\n" + "\u5b9a\u4e49\u81ea\u5df1\u7684 `fuzzers` \u6709\u5f88\u5927\u7684\u7075\u6d3b\u6027,\u8fd9\u5bf9\u4e8e\u521b\u5efa\u5f3a\u5927\u7684\u8f93\u5165\u96c6\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u975e\u5e38\u6709\u7528\u3002\n\u4f46\u4e3a\u4e86\u8ba9\u4e8b\u60c5\u53d8\u5f97\u66f4\u7b80\u5355, PyTorch \u57fa\u51c6\u6d4b\u8bd5\u6a21\u5757\u4e3a\u5e38\u89c1\u7684\u57fa\u51c6\u6d4b\u8bd5\u9700\u6c42\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5185\u7f6e\u7684 `fuzzers`\u3002\n\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u4f7f\u7528\u5176\u4e2d\u4e00\u4e2a\u5185\u7f6e\u7684 `fuzzers` \u3002\n\n\n" ] }, { @@ -330,21 +330,21 @@ }, "outputs": [], "source": [ - "from torch.utils.benchmark.op_fuzzers import binary\n\nresults = []\nfor tensors, tensor_params, params in binary.BinaryOpFuzzer(seed=0).take(10):\n sub_label=f\"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}\"\n results.append(benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)',\n setup='from __main__ import batched_dot_mul_sum',\n globals=tensors,\n label='Batched dot',\n sub_label=sub_label,\n description='mul/sum',\n ).blocked_autorange(min_run_time=1))\n results.append(benchmark.Timer(\n stmt='batched_dot_bmm(x, x)',\n setup='from __main__ import batched_dot_bmm',\n globals=tensors,\n label='Batched dot',\n sub_label=sub_label,\n description='bmm',\n ).blocked_autorange(min_run_time=1))\n\ncompare = benchmark.Compare(results)\ncompare.trim_significant_figures()\ncompare.colorize(rowwise=True)\ncompare.print()" + "from torch.utils.benchmark.op_fuzzers import binary\n\nresults = []\nfor tensors, tensor_params, params in binary.BinaryOpFuzzer(seed=0).take(10):\n sub_label = f\"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}\"\n results.append(\n benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"from __main__ import batched_dot_mul_sum\",\n globals=tensors,\n label=\"Batched dot\",\n sub_label=sub_label,\n description=\"mul/sum\",\n ).blocked_autorange(min_run_time=1)\n )\n results.append(\n benchmark.Timer(\n stmt=\"batched_dot_bmm(x, x)\",\n setup=\"from __main__ import batched_dot_bmm\",\n globals=tensors,\n label=\"Batched dot\",\n sub_label=sub_label,\n description=\"bmm\",\n ).blocked_autorange(min_run_time=1)\n )\n\ncompare = benchmark.Compare(results)\ncompare.trim_significant_figures()\ncompare.colorize(rowwise=True)\ncompare.print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - ".. code-block:: none\n :caption: Output\n\n [----------------------- Batched dot ------------------------]\n | mul/sum | bmm \n 1 threads: ---------------------------------------------------\n 64 x 473 (discontiguous) | 10000 | 40000\n 16384 x 12642115 (discontiguous) | 31 | 78\n 8192 x 892 | 4800 | 20400\n 512 x 64 (discontiguous) | 110000 | 400000\n 493 x 27 (discontiguous) | 1100 | 2440\n 118 x 32 (discontiguous) | 870 | 2030\n 16 x 495 (discontiguous) | 23600 | 24000\n 488 x 62374 | 90000 | 100000\n 240372 x 69 | 40000 | 16000\n 40156 x 32 (discontiguous) | 2670 | 5000\n\n Times are in microseconds (us).\n\n\n" + ".. code-block:: none\n :caption: Output\n\n [----------------------- Batched dot ------------------------]\n | mul/sum | bmm\n 1 threads: ---------------------------------------------------\n 64 x 473 (discontiguous) | 10000 | 40000\n 16384 x 12642115 (discontiguous) | 31 | 78\n 8192 x 892 | 4800 | 20400\n 512 x 64 (discontiguous) | 110000 | 400000\n 493 x 27 (discontiguous) | 1100 | 2440\n 118 x 32 (discontiguous) | 870 | 2030\n 16 x 495 (discontiguous) | 23600 | 24000\n 488 x 62374 | 90000 | 100000\n 240372 x 69 | 40000 | 16000\n 40156 x 32 (discontiguous) | 2670 | 5000\n\n Times are in microseconds (us).\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 8. Collecting instruction counts with ``Callgrind``\n\nOne of the challenges of optimizing code is the variation and opacity of\nwall time. There are many sources of non-determinism, from adaptive clock\nspeeds to resource contention with other processes. Furthermore, end-to-end\ntime gives no insight into where time is being spent, which is really what\nwe're interested in when optimizing code.\n\nA complementary approach is to also collect instruction counts. These counts\nare a proxy metric and do not capture all aspects of performance\n(e.g. memory or I/O bound tasks), however they do have several useful\nproperties. Instruction counts are reproducible, insensitive to environmental\nvariation, and offer fine grained insight into where a program is spending\ncycles.\n\nTo see the utility of instruction counts, let us look at how we might\nreduce the overhead of `batched_dot_mul_sum`. The obvious solution is to\nmove it to C++, so we avoid going between Python and C++ multiple times.\n\nFortunately, the source is nearly identical. One question that we have to ask\nin C++ is whether we should take arguments by value or reference.\n\n\n" + "### 8. \u4f7f\u7528 `Callgrind` \u6536\u96c6\u6307\u4ee4\u8ba1\u6570\n\n\u4f18\u5316\u4ee3\u7801\u7684\u4e00\u4e2a\u6311\u6218\u662f\u65f6\u95f4\u7684\u53d8\u5316\u548c\u4e0d\u900f\u660e\u6027\u3002\u6709\u8bb8\u591a\u4e0d\u786e\u5b9a\u6027\u7684\u6765\u6e90,\n\u4ece\u81ea\u9002\u5e94\u65f6\u949f\u901f\u5ea6\u5230\u4e0e\u5176\u4ed6\u8fdb\u7a0b\u7684\u8d44\u6e90\u4e89\u7528\u3002\u6b64\u5916,\u7aef\u5230\u7aef\u65f6\u95f4\u5e76\u4e0d\u80fd\u63ed\u793a\u65f6\u95f4\u82b1\u8d39\u5728\u54ea\u91cc,\n\u800c\u8fd9\u6b63\u662f\u6211\u4eec\u5728\u4f18\u5316\u4ee3\u7801\u65f6\u611f\u5174\u8da3\u7684\u3002\n\n\u4e00\u79cd\u8865\u5145\u65b9\u6cd5\u662f\u4e5f\u6536\u96c6\u6307\u4ee4\u8ba1\u6570\u3002\u8fd9\u4e9b\u8ba1\u6570\u662f\u4e00\u79cd\u4ee3\u7406\u6307\u6807,\u5e76\u4e0d\u80fd\u6355\u83b7\u6027\u80fd\u7684\u6240\u6709\u65b9\u9762\n(\u4f8b\u5982\u5185\u5b58\u6216I/O\u7ed1\u5b9a\u4efb\u52a1),\u4f46\u5b83\u4eec\u786e\u5b9e\u5177\u6709\u4e00\u4e9b\u6709\u7528\u7684\u7279\u6027\u3002\u6307\u4ee4\u8ba1\u6570\u662f\u53ef\u91cd\u590d\u7684,\n\u4e0d\u53d7\u73af\u5883\u53d8\u5316\u7684\u5f71\u54cd,\u5e76\u4e14\u53ef\u4ee5\u63d0\u4f9b\u5bf9\u7a0b\u5e8f\u5728\u54ea\u91cc\u82b1\u8d39\u5468\u671f\u7684\u7ec6\u7c92\u5ea6\u6d1e\u5bdf\u3002\n\n\u4e3a\u4e86\u770b\u5230\u6307\u4ee4\u8ba1\u6570\u7684\u5b9e\u7528\u6027,\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u51cf\u5c11 `batched_dot_mul_sum` \u7684\u5f00\u9500\u3002\n\u663e\u800c\u6613\u89c1\u7684\u89e3\u51b3\u65b9\u6848\u662f\u5c06\u5176\u79fb\u81f3 C++ ,\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u907f\u514d\u5728 Python \u548c C++ \u4e4b\u95f4\u591a\u6b21\u6765\u56de\u5207\u6362\u3002\n\n\u5e78\u8fd0\u7684\u662f,\u6e90\u4ee3\u7801\u51e0\u4e4e\u662f\u76f8\u540c\u7684\u3002\u5728 C++ \u4e2d\u6211\u4eec\u5fc5\u987b\u95ee\u7684\u4e00\u4e2a\u95ee\u9898\u662f,\n\u6211\u4eec\u662f\u901a\u8fc7\u503c\u8fd8\u662f\u5f15\u7528\u6765\u4f20\u9012\u53c2\u6570\u3002\n\n\n" ] }, { @@ -355,7 +355,7 @@ }, "outputs": [], "source": [ - "batched_dot_src = \"\"\"\\\n/* ---- Python ---- */\n// def batched_dot_mul_sum(a, b):\n// return a.mul(b).sum(-1)\n\ntorch::Tensor batched_dot_mul_sum_v0(\n const torch::Tensor a,\n const torch::Tensor b) {\n return a.mul(b).sum(-1);\n}\n\ntorch::Tensor batched_dot_mul_sum_v1(\n const torch::Tensor& a,\n const torch::Tensor& b) {\n return a.mul(b).sum(-1);\n}\n\"\"\"\n\n\n# PyTorch makes it easy to test our C++ implementations by providing a utility\n# to JIT compile C++ source into Python extensions:\nimport os\nfrom torch.utils import cpp_extension\ncpp_lib = cpp_extension.load_inline(\n name='cpp_lib',\n cpp_sources=batched_dot_src,\n extra_cflags=['-O3'],\n extra_include_paths=[\n # `load_inline` needs to know where to find ``pybind11`` headers.\n os.path.join(os.getenv('CONDA_PREFIX'), 'include')\n ],\n functions=['batched_dot_mul_sum_v0', 'batched_dot_mul_sum_v1']\n)\n\n# `load_inline` will create a shared object that is loaded into Python. When we collect\n# instruction counts Timer will create a subprocess, so we need to re-import it. The\n# import process is slightly more complicated for C extensions, but that's all we're\n# doing here.\nmodule_import_str = f\"\"\"\\\n# https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path\nimport importlib.util\nspec = importlib.util.spec_from_file_location(\"cpp_lib\", {repr(cpp_lib.__file__)})\ncpp_lib = importlib.util.module_from_spec(spec)\nspec.loader.exec_module(cpp_lib)\"\"\"\n\nimport textwrap\ndef pretty_print(result):\n \"\"\"Import machinery for ``cpp_lib.so`` can get repetitive to look at.\"\"\"\n print(repr(result).replace(textwrap.indent(module_import_str, \" \"), \" import cpp_lib\"))\n\n\nt_baseline = benchmark.Timer(\n stmt='batched_dot_mul_sum(x, x)',\n setup='''\\\nfrom __main__ import batched_dot_mul_sum\nx = torch.randn(2, 2)''')\n\nt0 = benchmark.Timer(\n stmt='cpp_lib.batched_dot_mul_sum_v0(x, x)',\n setup=f'''\\\n{module_import_str}\nx = torch.randn(2, 2)''')\n\nt1 = benchmark.Timer(\n stmt='cpp_lib.batched_dot_mul_sum_v1(x, x)',\n setup=f'''\\\n{module_import_str}\nx = torch.randn(2, 2)''')\n\n# Moving to C++ did indeed reduce overhead, but it's hard to tell which\n# calling convention is more efficient. v1 (call with references) seems to\n# be a bit faster, but it's within measurement error.\npretty_print(t_baseline.blocked_autorange())\npretty_print(t0.blocked_autorange())\npretty_print(t1.blocked_autorange())" + "batched_dot_src = \"\"\"\\\n/* ---- Python ---- */\n// def batched_dot_mul_sum(a, b):\n// return a.mul(b).sum(-1)\n\ntorch::Tensor batched_dot_mul_sum_v0(\n const torch::Tensor a,\n const torch::Tensor b) {\n return a.mul(b).sum(-1);\n}\n\ntorch::Tensor batched_dot_mul_sum_v1(\n const torch::Tensor& a,\n const torch::Tensor& b) {\n return a.mul(b).sum(-1);\n}\n\"\"\"\n\n\n# PyTorch \u63d0\u4f9b\u4e00\u4e2a\u5b9e\u7528\u7a0b\u5e8f\u6765 JIT \u7f16\u8bd1 C++ \u6e90\u4ee3\u7801\u4e3a Python \u6269\u5c55,\n# \u4f7f\u5f97\u6d4b\u8bd5\u6211\u4eec\u7684 C++ \u5b9e\u73b0\u53d8\u5f97\u5f88\u5bb9\u6613:\nimport os\n\nfrom torch.utils import cpp_extension\n\ncpp_lib = cpp_extension.load_inline(\n name=\"cpp_lib\",\n cpp_sources=batched_dot_src,\n extra_cflags=[\"-O3\"],\n extra_include_paths=[\n # `load_inline`\u9700\u8981\u77e5\u9053`pybind11`\u5934\u6587\u4ef6\u7684\u4f4d\u7f6e\u3002\n os.path.join(os.getenv(\"CONDA_PREFIX\"), \"include\")\n ],\n functions=[\"batched_dot_mul_sum_v0\", \"batched_dot_mul_sum_v1\"],\n)\n\n# `load_inline` \u5c06\u521b\u5efa\u4e00\u4e2a\u5171\u4eab\u5bf9\u8c61,\u5e76\u52a0\u8f7d\u5230Python\u4e2d\u3002\u5f53\u6211\u4eec\u6536\u96c6\u6307\u4ee4\u8ba1\u6570\u65f6,\n# Timer\u5c06\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b,\u56e0\u6b64\u6211\u4eec\u9700\u8981\u91cd\u65b0\u5bfc\u5165\u5b83\u3002\u5bf9\u4e8eC\u6269\u5c55,\u5bfc\u5165\u8fc7\u7a0b\u7565\u6709\u4e0d\u540c,\n# \u4f46\u8fd9\u5c31\u662f\u6211\u4eec\u5728\u8fd9\u91cc\u6240\u505a\u7684\u3002\nmodule_import_str = f\"\"\"\\\n# https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path\nimport importlib.util\nspec = importlib.util.spec_from_file_location(\"cpp_lib\", {repr(cpp_lib.__file__)})\ncpp_lib = importlib.util.module_from_spec(spec)\nspec.loader.exec_module(cpp_lib)\"\"\"\n\nimport textwrap\n\n\ndef pretty_print(result):\n \"\"\"Import machinery for ``cpp_lib.so`` can get repetitive to look at.\"\"\"\n print(\n repr(result).replace(\n textwrap.indent(module_import_str, \" \"), \" import cpp_lib\"\n )\n )\n\n\nt_baseline = benchmark.Timer(\n stmt=\"batched_dot_mul_sum(x, x)\",\n setup=\"\"\"\\\nfrom __main__ import batched_dot_mul_sum\nx = torch.randn(2, 2)\"\"\",\n)\n\nt0 = benchmark.Timer(\n stmt=\"cpp_lib.batched_dot_mul_sum_v0(x, x)\",\n setup=f\"\"\"\\\n{module_import_str}\nx = torch.randn(2, 2)\"\"\",\n)\n\nt1 = benchmark.Timer(\n stmt=\"cpp_lib.batched_dot_mul_sum_v1(x, x)\",\n setup=f\"\"\"\\\n{module_import_str}\nx = torch.randn(2, 2)\"\"\",\n)\n\n# \u8f6c\u79fb\u5230 C++ \u786e\u5b9e\u51cf\u5c11\u4e86\u5f00\u9500,\u4f46\u5f88\u96be\u5224\u65ad\u54ea\u79cd\u8c03\u7528\u7ea6\u5b9a\u66f4\u6709\u6548\u3002v1(\u4f7f\u7528\u5f15\u7528\u8c03\u7528)\u4f3c\u4e4e\u7a0d\u5feb\u4e00\u4e9b,\u4f46\u5728\u6d4b\u91cf\u8bef\u5dee\u8303\u56f4\u5185\u3002\npretty_print(t_baseline.blocked_autorange())\npretty_print(t0.blocked_autorange())\npretty_print(t1.blocked_autorange())" ] }, { @@ -373,7 +373,7 @@ }, "outputs": [], "source": [ - "# Let's use ``Callgrind`` to determine which is better.\nstats_v0 = t0.collect_callgrind()\nstats_v1 = t1.collect_callgrind()\n\npretty_print(stats_v0)\npretty_print(stats_v1)\n\n# `.as_standardized` removes file names and some path prefixes, and makes\n# it easier to read the function symbols.\nstats_v0 = stats_v0.as_standardized()\nstats_v1 = stats_v1.as_standardized()\n\n# `.delta` diffs the instruction counts, and `.denoise` removes several\n# functions in the Python interpreter that are known to have significant\n# jitter.\ndelta = stats_v1.delta(stats_v0).denoise()\n\n# `.transform` is a convenience API for transforming function names. It is\n# useful for increasing cancelation when ``diff-ing`` instructions, as well as\n# just generally improving readability.\nreplacements = (\n (\"???:void pybind11\", \"pybind11\"),\n (\"batched_dot_mul_sum_v0\", \"batched_dot_mul_sum_v1\"),\n (\"at::Tensor, at::Tensor\", \"...\"),\n (\"at::Tensor const&, at::Tensor const&\", \"...\"),\n (\"auto torch::detail::wrap_pybind_function_impl_\", \"wrap_pybind_function_impl_\"),\n)\nfor before, after in replacements:\n delta = delta.transform(lambda l: l.replace(before, after))\n\n# We can use print options to control how much of the function to display.\ntorch.set_printoptions(linewidth=160)\n\n# Once parsed, the instruction counts make clear that passing `a` and `b`\n# by reference is more efficient as it skips some ``c10::TensorImpl`` bookkeeping\n# for the intermediate Tensors, and is also works better with ``pybind11``. This\n# is consistent with our noisy wall time observations.\nprint(delta)" + "# \u8ba9\u6211\u4eec\u4f7f\u7528 ``Callgrind`` \u6765\u786e\u5b9a\u54ea\u79cd\u65b9\u5f0f\u66f4\u597d\u3002\nstats_v0 = t0.collect_callgrind()\nstats_v1 = t1.collect_callgrind()\n\npretty_print(stats_v0)\npretty_print(stats_v1)\n\n# `.as_standardized` \u79fb\u9664\u4e86\u6587\u4ef6\u540d\u548c\u67d0\u4e9b\u8def\u5f84\u524d\u7f00,\u4f7f\u51fd\u6570\u7b26\u53f7\u66f4\u6613\u8bfb\u3002\nstats_v0 = stats_v0.as_standardized()\nstats_v1 = stats_v1.as_standardized()\n\n# `.delta` \u5bf9\u6307\u4ee4\u8ba1\u6570\u8fdb\u884c\u5dee\u5206, `.denoise` \u5219\u79fb\u9664\u4e86 Python \u89e3\u91ca\u5668\u4e2d\u5df2\u77e5\u5b58\u5728\u663e\u8457\u6296\u52a8\u7684\u51e0\u4e2a\u51fd\u6570\u3002\ndelta = stats_v1.delta(stats_v0).denoise()\n\n# `.transform` \u662f\u4e00\u4e2a\u8f6c\u6362\u51fd\u6570\u540d\u7684\u4fbf\u5229 API\u3002\u5b83\u5728\u8fdb\u884c ``diff-ing`` \u65f6\u5f88\u6709\u7528,\u56e0\u4e3a\u53ef\u4ee5\u589e\u52a0\u62b5\u6d88,\u540c\u65f6\u4e5f\u80fd\u63d0\u9ad8\u53ef\u8bfb\u6027\u3002\nreplacements = (\n (\"???:void pybind11\", \"pybind11\"),\n (\"batched_dot_mul_sum_v0\", \"batched_dot_mul_sum_v1\"),\n (\"at::Tensor, at::Tensor\", \"...\"),\n (\"at::Tensor const&, at::Tensor const&\", \"...\"),\n (\"auto torch::detail::wrap_pybind_function_impl_\", \"wrap_pybind_function_impl_\"),\n)\nfor before, after in replacements:\n delta = delta.transform(lambda l: l.replace(before, after))\n\n# \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u6253\u5370\u9009\u9879\u6765\u63a7\u5236\u663e\u793a\u51fd\u6570\u7684\u591a\u5c11\u5185\u5bb9\u3002\ntorch.set_printoptions(linewidth=160)\n\n# \u89e3\u6790\u540e,\u6307\u4ee4\u8ba1\u6570\u6e05\u695a\u5730\u8868\u660e,\u901a\u8fc7\u5f15\u7528\u4f20\u9012 `a` \u548c `b` \u66f4\u6709\u6548,\n# \u56e0\u4e3a\u5b83\u8df3\u8fc7\u4e86\u4e00\u4e9b `c10::TensorImpl` \u4e2d\u95f4\u5f20\u91cf\u7684\u7c3f\u8bb0\u64cd\u4f5c,\u5e76\u4e14\u4e0e `pybind11` \u4e5f\u66f4\u517c\u5bb9\u3002\n# \u8fd9\u4e0e\u6211\u4eec\u6709\u566a\u58f0\u65f6\u95f4\u89c2\u5bdf\u7ed3\u679c\u4e00\u81f4\u3002\nprint(delta)" ] }, { @@ -387,7 +387,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Learn More\n\nTake a look at these other recipes to continue your learning:\n\n- [PyTorch Profiler](https://pytorch.org/tutorials/recipes/recipes/profiler.html)\n\n\n" + "## \u5b66\u4e60\u66f4\u591a\n\n\u67e5\u770b\u5176\u4ed6\u6559\u7a0b\u7ee7\u7eed\u5b66\u4e60:\n\n- [PyTorch Profiler](https://pytorch.org/tutorials/recipes/recipes/profiler.html)\n\n\n" ] } ], diff --git a/docs/_downloads/72c2f17ac50228049705f9a4d76c7815/benchmark.py b/docs/_downloads/72c2f17ac50228049705f9a4d76c7815/benchmark.py index d02157a..075c835 100644 --- a/docs/_downloads/72c2f17ac50228049705f9a4d76c7815/benchmark.py +++ b/docs/_downloads/72c2f17ac50228049705f9a4d76c7815/benchmark.py @@ -1,29 +1,21 @@ """ PyTorch Benchmark ==================================== -This recipe provides a quick-start guide to using PyTorch -``benchmark`` module to measure and compare code performance. +本教程提供了使用 PyTorch ``benchmark`` 模块来测量和比较代码性能的快速入门指南。 -Introduction +介绍 ------------ -Benchmarking is an important step in writing code. It helps -us validate that our code meets performance expectations, -compare different approaches to solving the same problem and -prevent performance regressions. - -There are many options when it comes to benchmarking PyTorch code -including the Python builtin ``timeit`` module. However, benchmarking -PyTorch code has many caveats that can be easily overlooked such as -managing the number of threads and synchronizing CUDA devices. Moreover, -generating Tensor inputs for benchmarking can be quite tedious. - -This recipe demonstrates how to use PyTorch ``benchmark`` module to avoid -common mistakes while making it easier to compare performance of -different code, generate input for benchmarking and more. - -Setup +基准测试是编写代码时的一个重要步骤。它帮助我们验证代码是否满足性能预期,比较解决同一问题的不同方法,并防止性能裂化。 + +对于基准测试 PyTorch 代码有许多选择,包括 Python 内置的 ``timeit`` 模块。 +然而,基准测试 PyTorch 代码有许多容易被忽视的注意事项,例如管理线程数量和同步 CUDA 设备。 +此外,为基准测试生成张量输入可能相当繁琐。 + +本教程演示了如何使用 PyTorch ``benchmark`` 模块来避免常见错误,同时更容易比较不同代码的性能、为基准测试生成输入等。 + +设置 ----- -Before we begin, install ``torch`` if it isn’t already available. +在开始之前,如果尚未安装 ``torch``,请先安装。 :: @@ -31,39 +23,36 @@ """ - ###################################################################### -# Steps +# 具体步骤 # ----- # -# 1. Defining functions to benchmark -# 2. Benchmarking with ``timeit.Timer`` -# 3. Benchmarking with ``torch.utils.benchmark.Timer`` -# 4. Benchmarking with ``Blocked Autorange`` -# 5. Comparing benchmark results -# 6. Saving/Loading benchmark results -# 7. Generating inputs with ``Fuzzed Parameters`` -# 8. Collecting instruction counts with ``Callgrind`` +# 1. 定义要基准测试的函数 +# 2. 使用 ``timeit.Timer`` 进行基准测试 +# 3. 使用 ``torch.utils.benchmark.Timer`` 进行基准测试 +# 4. 使用 ``Blocked Autorange`` 进行基准测试 +# 5. 比较基准测试结果 +# 6. 保存/加载基准测试结果 +# 7. 使用 ``Fuzzed Parameters`` 生成输入 +# 8. 使用 ``Callgrind`` 收集指令计数 # -# 1. Defining functions to benchmark +# 1. 定义要基准测试的函数 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# As of the time of this writing, `torch.dot `__ -# does not support batched mode, so we will compare two approaches to -# implementing it using existing ``torch`` operators: one approach uses a -# combination of ``mul`` and ``sum`` while the other reduces the problem to ``bmm``. +# 在撰写本文时, `torch.dot `__ +# 不支持批量模式,因此我们将比较使用现有 ``torch`` 运算符实现它的两种方法:一种方法使用 ``mul`` 和 ``sum`` 的组合,另一种方法使用 ``bmm``。 # import torch def batched_dot_mul_sum(a, b): - '''Computes batched dot by multiplying and summing''' + """Computes batched dot by multiplying and summing""" return a.mul(b).sum(-1) def batched_dot_bmm(a, b): - '''Computes batched dot by reducing to ``bmm``''' + """Computes batched dot by reducing to ``bmm``""" a = a.reshape(-1, 1, a.shape[-1]) b = b.reshape(-1, b.shape[-1], 1) return torch.bmm(a, b).flatten(-3) @@ -77,28 +66,28 @@ def batched_dot_bmm(a, b): ###################################################################### -# 2. Benchmarking with ``timeit.Timer`` +# 2. 使用 ``timeit.Timer`` 进行基准测试 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# First, let's benchmark the code using Python's builtin ``timeit`` module. -# We keep the benchmark code simple here so we can compare the defaults -# of ``timeit`` and ``torch.utils.benchmark``. +# 首先,让我们使用 Python 内置的 ``timeit`` 模块对代码进行基准测试。 +# 我们在这里保持基准测试代码简单,以便我们可以比较 ``timeit`` 和 ``torch.utils.benchmark`` 的默认设置。 # import timeit t0 = timeit.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = timeit.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) -print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') +print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") ###################################################################### # .. code-block:: none @@ -110,26 +99,25 @@ def batched_dot_bmm(a, b): ###################################################################### -# 3. Benchmarking with ``torch.utils.benchmark.Timer`` +# 3. 使用 ``torch.utils.benchmark.Timer`` 进行基准测试 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# PyTorch ``benchmark`` module was designed to be familiar to those who -# have used the ``timeit`` module before. However, its defaults make it -# easier and safer to use for benchmarking PyTorch code. Let's first -# compare the same basic API as above. -# +# PyTorch ``benchmark``模块的设计使得对于那些曾经使用过 ``timeit`` 模块的人来说,它看起来很熟悉。 +# 然而,它的默认设置使得它更容易且更安全地用于对 PyTorch 代码进行基准测试。 +# 首先让我们对比一下基本API的使用。 import torch.utils.benchmark as benchmark t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) print(t0.timeit(100)) print(t1.timeit(100)) @@ -151,40 +139,37 @@ def batched_dot_bmm(a, b): # ###################################################################### -# Even though the APIs are the same for the basic functionality, there -# are some important differences. ``benchmark.Timer.timeit()`` returns the -# time per run as opposed to the total runtime like ``timeit.Timer.timeit()`` -# does. PyTorch ``benchmark`` module also provides formatted string -# representations for printing the results. +# 虽然基本功能的API是相同的,但是还是有一些重要的区别。 +# ``benchmark.Timer.timeit()``返回的是每次运行的时间,而不是 ``timeit.Timer.timeit()`` 返回的总运行时间。 +# PyTorch ``benchmark``模块还提供了格式化的字符串表示,用于打印结果。 # -# Another important difference, and the reason why the results diverge -# is that PyTorch benchmark module runs in a single thread by default. -# We can change the number of threads with the ``num_threads`` argument. +# 另一个重要的区别,也是结果不同的原因,是PyTorch基准测试模块默认在单线程中运行。 +# 我们可以使用``num_threads``参数来更改线程数量。 # -# ``torch.utils.benchmark.Timer`` takes several additional arguments -# including: ``label``, ``sub_label``, ``description`` and ``env`` which change -# the __repr__ of the measurement object returned and are used for -# grouping the results (more on this later). +# ``torch.utils.benchmark.Timer``接受几个额外的参数,包括: ``label``、``sub_label``、``description``和``env``, +# 这些参数会改变返回的测量对象的__repr__,并用于对结果进行分组(稍后会详细介绍)。 # num_threads = torch.get_num_threads() -print(f'Benchmarking on {num_threads} threads') +print(f"Benchmarking on {num_threads} threads") t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, num_threads=num_threads, - label='Multithreaded batch dot', - sub_label='Implemented using mul and sum') + label="Multithreaded batch dot", + sub_label="Implemented using mul and sum", +) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, num_threads=num_threads, - label='Multithreaded batch dot', - sub_label='Implemented using bmm') + label="Multithreaded batch dot", + sub_label="Implemented using bmm", +) print(t0.timeit(100)) print(t1.timeit(100)) @@ -206,32 +191,32 @@ def batched_dot_bmm(a, b): # 1 measurement, 100 runs , 40 threads ###################################################################### -# Running ``benchmark`` with all threads available gives similar results -# as the ``timeit`` module. More importantly, which version is faster -# depends on how many threads we run the code with. This is why it's -# important to benchmark the code with thread settings that are -# representative of real use cases. Another important thing to remember -# is to synchronize CPU and CUDA when benchmarking on the GPU. Let's run -# the above benchmarks again on a CUDA tensor and see what happens. +# 使用所有可用线程运行 ``benchmark`` 会得到与 ``timeit`` 模块类似的结果。 +# 更重要的是,哪个版本更快取决于我们使用多少线程运行代码。 +# 这就是为什么在基准测试时,使用与实际用例相符的线程设置非常重要。 +# 另一个需要记住的重要事情是,在 GPU 上进行基准测试时,要同步CPU和CUDA。 +# 让我们再次在CUDA张量上运行上面的基准测试,看看会发生什么。 # -x = torch.randn(10000, 1024, device='cuda') +x = torch.randn(10000, 1024, device="cuda") t0 = timeit.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = timeit.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) # Ran each twice to show difference before/after warm-up -print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') -print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') +print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") +print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") ###################################################################### # .. code-block:: none @@ -244,14 +229,16 @@ def batched_dot_bmm(a, b): # t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, +) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, +) # Run only once since benchmark module does warm-up for us print(t0.timeit(100)) @@ -274,34 +261,23 @@ def batched_dot_bmm(a, b): # ###################################################################### -# The results reveal something interesting. The first run of the ``bmm`` -# version using the ``timeit`` module takes much longer than the second -# run. This is because ``bmm`` calls into `cuBLAS` which needs to be -# loaded the first time it's called which takes some time. This is why -# it's important to do a warm-up run before benchmarking, luckily for -# us, PyTorch's ``benchmark`` module takes care of that. +# 结果揭示了一些有趣的事情。使用 `timeit` 模块运行 `bmm` 版本的第一次运行比第二次运行慢很多。 +# 这是因为 `bmm` 需要调用 `cuBLAS`,第一次调用时需要加载它,这需要一些时间。 +# 这就是为什么在基准测试之前做一次预热运行很重要,幸运的是, PyTorch 的 `benchmark` 模块为我们处理了这个问题。 # -# The difference in the results between ``timeit`` and ``benchmark`` modules -# is because the `timeit` module is not synchronizing CUDA and is thus only -# timing the time to launch the kernel. PyTorch's ``benchmark`` module does -# the synchronization for us. +# `timeit` 模块和 `benchmark` 模块之间结果的差异是因为 `timeit` 模块没有同步 CUDA,因此只计时了启动内核的时间。 +# PyTorch 的 `benchmark` 模块为我们做了同步。 ###################################################################### -# 4. Benchmarking with `Blocked Autorange` +# 4. 使用 `Blocked Autorange` 进行基准测试 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# While ``timeit.Timer.autorange`` takes a single continuous measurement -# of at least 0.2 seconds, `torch.utils.benchmark.blocked_autorange` -# takes many measurements whose times total at least 0.2 seconds (which -# can be changed by the `min_run_time` parameter) subject to the constraint -# that timing overhead is a small fraction of the overall measurement. -# This is accomplished by first running with an increasing number of runs -# per loop until the runtime is much larger than measurement overhead -# (which also serves as a warm up), and then taking measurements until -# the target time is reached. This has the useful properties that it wastes -# less data and allows us to compute statistics to estimate the reliability -# of the measurements. +# 虽然 `timeit.Timer.autorange` 采取至少 0.2 秒的单次连续测量, +# 但 `torch.utils.benchmark.blocked_autorange` 采取多次测量,其总时间至少为 0.2 秒(可通过 `min_run_time` 参数更改), +# 并且测量开销只占总体测量的一小部分。 +# 这是通过首先以递增的循环次数运行,直到运行时间远大于测量开销(这也起到了热身的作用), +# 然后进行测量直到达到目标时间。这有一个有用的特性,即它浪费的数据更少,并且允许我们计算统计数据来估计测量的可靠性。 # m0 = t0.blocked_autorange() @@ -327,8 +303,7 @@ def batched_dot_bmm(a, b): # ###################################################################### -# We can also inspect the individual statistics from the returned -# measurements object. +# 我们还可以查看返回的测量对象中获得的各个统计数据。 print(f"Mean: {m0.mean * 1e6:6.2f} us") print(f"Median: {m0.median * 1e6:6.2f} us") @@ -342,17 +317,14 @@ def batched_dot_bmm(a, b): # ###################################################################### -# 5. Comparing benchmark results +# 5. 比较基准测试结果 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# So far we've been comparing our two versions of batched dot against a -# single input. In practice, we want to try a combination of inputs as -# well as different number of threads. The ``Compare`` class helps display -# the results of many measurements in a formatted table. It uses the -# annotations described above (`label`, `sub_label`, `num_threads`, etc.) as -# well as `description` to group and organize the table. Let's use -# ``Compare`` to see how our functions perform for different input sizes -# and number of threads. +# 到目前为止,我们一直在比较我们的两个批量点积版本对同一输入的表现。 +# 在实践中,我们希望尝试不同的输入组合以及不同的线程数量。 +# `Compare` 类帮助我们以格式化表格的形式显示多个测量结果。 +# 它使用上面描述的注释( `label`、 `sub_label`、 `num_threads` 等)以及 `description` 来对表格进行分组和组织。 +# 让我们使用 `Compare` 来看看我们的函数在不同的输入大小和线程数量下的表现如何。 # from itertools import product @@ -364,28 +336,32 @@ def batched_dot_bmm(a, b): for b, n in product(sizes, sizes): # label and sub_label are the rows # description is the column - label = 'Batched dot' - sub_label = f'[{b}, {n}]' + label = "Batched dot" + sub_label = f"[{b}, {n}]" x = torch.ones((b, n)) for num_threads in [1, 4, 16, 32]: - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.print() @@ -395,7 +371,7 @@ def batched_dot_bmm(a, b): # :caption: Output # # [--------------- Batched dot ----------------] -# | mul/sum | bmm +# | mul/sum | bmm # 1 threads: ----------------------------------- # [1, 1] | 5.9 | 11.2 # [1, 64] | 6.4 | 11.4 @@ -469,12 +445,10 @@ def batched_dot_bmm(a, b): # ###################################################################### -# The results above indicate that the version which reduces to ``bmm`` -# is better for larger tensors running on multiple threads, while for -# smaller and/or single thread code, the other version is better. -# -# ``Compare`` also provides functions for changing the table format +# 上面的结果表明,对于在多线程上运行的较大张量, `bmm` 的版本效果更好, +# 而对于较小和/或单线程代码,另一个版本效果更好。 # +# `Compare` 还提供了用于更改表格格式的函数 compare.trim_significant_figures() compare.colorize() @@ -482,36 +456,34 @@ def batched_dot_bmm(a, b): ###################################################################### -# 6. Saving/Loading benchmark results +# 6. 保存/加载基准测试结果 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# `Measurements` (and ``CallgrindStats`` which are described in section 8) -# can be serialized by the ``pickle`` module. This makes A/B testing easy, as you can collect -# measurements from two separate environments, pickle them, and then -# load both in a single environment. Timer even takes an `env` -# constructor argument so that such A/B testing works seamlessly. +# `Measurements` (和第8节中描述的 `CallgrindStats` )可以通过 `pickle` 模块序列化。 +# 这使得A/B测试变得很容易,因为您可以从两个独立的环境中收集测量结果, +# 将它们序列化,然后在单个环境中加载两者。Timer甚至接受一个 `env` +# 构造函数参数,以便这种A/B测试可以无缝衔接。 # -# Let's imagine that rather than two Python functions, the add/sum -# and ``bmm`` approaches were in two different builds of PyTorch. -# The example below demonstrates how one might A/B test them. For -# simplicity, we only use a subset of shapes, and simply round trip -# results through pickle rather than actually using multiple environments -# and writing results to disk. +# 假设 add/sum 和 `bmm` 方法不是两个Python函数,而是 PyTorch 的两个不同版本。 +# 下面的示例演示了如何进行A/B测试。为了简单起见,我们只使用了一部分数据, +# 并简单地通过pickle来回传结果,而不是实际使用多个环境并将结果写入磁盘。 # import pickle ab_test_results = [] -for env in ('environment A: mul/sum', 'environment B: bmm'): +for env in ("environment A: mul/sum", "environment B: bmm"): for b, n in ((1, 1), (1024, 10000), (10000, 1)): x = torch.ones((b, n)) - dot_fn = (batched_dot_mul_sum if env == 'environment A: mul/sum' else batched_dot_bmm) + dot_fn = ( + batched_dot_mul_sum if env == "environment A: mul/sum" else batched_dot_bmm + ) m = benchmark.Timer( - stmt='batched_dot(x, x)', - globals={'x': x, 'batched_dot': dot_fn}, + stmt="batched_dot(x, x)", + globals={"x": x, "batched_dot": dot_fn}, num_threads=1, - label='Batched dot', - description=f'[{b}, {n}]', + label="Batched dot", + description=f"[{b}, {n}]", env=env, ).blocked_autorange(min_run_time=1) ab_test_results.append(pickle.dumps(m)) @@ -535,35 +507,38 @@ def batched_dot_bmm(a, b): # Times are in microseconds (us). # -# And just to show that we can round trip all of the results from earlier: +# 仅为展示可以将之前所有的结果通过 pickle 进行回传: round_tripped_results = pickle.loads(pickle.dumps(results)) -assert(str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results))) +assert str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results)) ###################################################################### -# 7. Generating inputs with `Fuzzed Parameters` +# 7. 使用 `Fuzzed Parameters` 生成输入 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# As we've seen in the previous section, there can be some stark -# performance differences depending on the input tensors. Hence, it -# is a good idea to run benchmarks on a number of different inputs. -# However, creating all these input tensors can be tedious which is -# where ``torch.utils.benchmark.Fuzzer`` and related classes come in. -# Let's take a look at how we can use the ``Fuzzer`` to create some test -# cases for the benchmark. +# 正如我们在上一节中看到的,根据输入张量的不同,性能差异可能会很大。 +# 因此,在多个不同的输入上运行基准测试是一个好主意。 +# 但是,创建所有这些输入张量可能会很麻烦,这就是 `torch.utils.benchmark.Fuzzer` +# 和相关类的用武之地。让我们看看如何使用 `Fuzzer` 来创建一些用于基准测试的测试用例。 # -from torch.utils.benchmark import Fuzzer, FuzzedParameter, FuzzedTensor, ParameterAlias +from torch.utils.benchmark import FuzzedParameter, FuzzedTensor, Fuzzer, ParameterAlias -# Generates random tensors with 128 to 10000000 elements and sizes k0 and k1 chosen from a -# ``loguniform`` distribution in [1, 10000], 40% of which will be discontiguous on average. +# 生成随机张量,元素数量在 128 到 10000000 之间,大小 k0 和 k1 从 [1, 10000] 的 `loguniform` 分布中选择, +# 其中平均 40% 将是不连续的。 example_fuzzer = Fuzzer( - parameters = [ - FuzzedParameter('k0', minval=1, maxval=10000, distribution='loguniform'), - FuzzedParameter('k1', minval=1, maxval=10000, distribution='loguniform'), + parameters=[ + FuzzedParameter("k0", minval=1, maxval=10000, distribution="loguniform"), + FuzzedParameter("k1", minval=1, maxval=10000, distribution="loguniform"), ], - tensors = [ - FuzzedTensor('x', size=('k0', 'k1'), min_elements=128, max_elements=10000000, probability_contiguous=0.6) + tensors=[ + FuzzedTensor( + "x", + size=("k0", "k1"), + min_elements=128, + max_elements=10000000, + probability_contiguous=0.6, + ) ], seed=0, ) @@ -571,23 +546,27 @@ def batched_dot_bmm(a, b): results = [] for tensors, tensor_params, params in example_fuzzer.take(10): # description is the column label - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() @@ -598,7 +577,7 @@ def batched_dot_bmm(a, b): # :caption: Output # # [--------------------- Batched dot ---------------------] -# | mul/sum | bmm +# | mul/sum | bmm # 1 threads: ---------------------------------------------- # 725 x 257 | 87 | 180 # 49 x 383 | 15 | 30 @@ -611,38 +590,40 @@ def batched_dot_bmm(a, b): # 78 x 5 (discontiguous) | 9 | 20 # 187 x 1 | 12 | 10 # -# Times are in microseconds (us). +# Times are in microseconds (us). # ###################################################################### -# There is a lot of flexibility for defining your own ``fuzzers`` which -# is great for creating a powerful set of inputs to benchmark. But to -# make things even simpler, PyTorch benchmark module comes with some -# built-in ``fuzzers`` for common benchmarking needs. Let's take a look at -# how we can use one of these built-in ``fuzzers``. +# 定义自己的 `fuzzers` 有很大的灵活性,这对于创建强大的输入集进行基准测试非常有用。 +# 但为了让事情变得更简单, PyTorch 基准测试模块为常见的基准测试需求提供了一些内置的 `fuzzers`。 +# 让我们看看如何使用其中一个内置的 `fuzzers` 。 # from torch.utils.benchmark.op_fuzzers import binary results = [] for tensors, tensor_params, params in binary.BinaryOpFuzzer(seed=0).take(10): - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() @@ -654,7 +635,7 @@ def batched_dot_bmm(a, b): # :caption: Output # # [----------------------- Batched dot ------------------------] -# | mul/sum | bmm +# | mul/sum | bmm # 1 threads: --------------------------------------------------- # 64 x 473 (discontiguous) | 10000 | 40000 # 16384 x 12642115 (discontiguous) | 31 | 78 @@ -666,33 +647,27 @@ def batched_dot_bmm(a, b): # 488 x 62374 | 90000 | 100000 # 240372 x 69 | 40000 | 16000 # 40156 x 32 (discontiguous) | 2670 | 5000 -# +# # Times are in microseconds (us). # ###################################################################### -# 8. Collecting instruction counts with ``Callgrind`` +# 8. 使用 `Callgrind` 收集指令计数 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# One of the challenges of optimizing code is the variation and opacity of -# wall time. There are many sources of non-determinism, from adaptive clock -# speeds to resource contention with other processes. Furthermore, end-to-end -# time gives no insight into where time is being spent, which is really what -# we're interested in when optimizing code. +# 优化代码的一个挑战是时间的变化和不透明性。有许多不确定性的来源, +# 从自适应时钟速度到与其他进程的资源争用。此外,端到端时间并不能揭示时间花费在哪里, +# 而这正是我们在优化代码时感兴趣的。 # -# A complementary approach is to also collect instruction counts. These counts -# are a proxy metric and do not capture all aspects of performance -# (e.g. memory or I/O bound tasks), however they do have several useful -# properties. Instruction counts are reproducible, insensitive to environmental -# variation, and offer fine grained insight into where a program is spending -# cycles. +# 一种补充方法是也收集指令计数。这些计数是一种代理指标,并不能捕获性能的所有方面 +# (例如内存或I/O绑定任务),但它们确实具有一些有用的特性。指令计数是可重复的, +# 不受环境变化的影响,并且可以提供对程序在哪里花费周期的细粒度洞察。 # -# To see the utility of instruction counts, let us look at how we might -# reduce the overhead of `batched_dot_mul_sum`. The obvious solution is to -# move it to C++, so we avoid going between Python and C++ multiple times. +# 为了看到指令计数的实用性,让我们看看如何减少 `batched_dot_mul_sum` 的开销。 +# 显而易见的解决方案是将其移至 C++ ,这样我们就可以避免在 Python 和 C++ 之间多次来回切换。 # -# Fortunately, the source is nearly identical. One question that we have to ask -# in C++ is whether we should take arguments by value or reference. +# 幸运的是,源代码几乎是相同的。在 C++ 中我们必须问的一个问题是, +# 我们是通过值还是引用来传递参数。 # batched_dot_src = """\ @@ -714,25 +689,26 @@ def batched_dot_bmm(a, b): """ -# PyTorch makes it easy to test our C++ implementations by providing a utility -# to JIT compile C++ source into Python extensions: +# PyTorch 提供一个实用程序来 JIT 编译 C++ 源代码为 Python 扩展, +# 使得测试我们的 C++ 实现变得很容易: import os + from torch.utils import cpp_extension + cpp_lib = cpp_extension.load_inline( - name='cpp_lib', + name="cpp_lib", cpp_sources=batched_dot_src, - extra_cflags=['-O3'], + extra_cflags=["-O3"], extra_include_paths=[ - # `load_inline` needs to know where to find ``pybind11`` headers. - os.path.join(os.getenv('CONDA_PREFIX'), 'include') + # `load_inline`需要知道`pybind11`头文件的位置。 + os.path.join(os.getenv("CONDA_PREFIX"), "include") ], - functions=['batched_dot_mul_sum_v0', 'batched_dot_mul_sum_v1'] + functions=["batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"], ) -# `load_inline` will create a shared object that is loaded into Python. When we collect -# instruction counts Timer will create a subprocess, so we need to re-import it. The -# import process is slightly more complicated for C extensions, but that's all we're -# doing here. +# `load_inline` 将创建一个共享对象,并加载到Python中。当我们收集指令计数时, +# Timer将创建一个子进程,因此我们需要重新导入它。对于C扩展,导入过程略有不同, +# 但这就是我们在这里所做的。 module_import_str = f"""\ # https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path import importlib.util @@ -741,32 +717,39 @@ def batched_dot_bmm(a, b): spec.loader.exec_module(cpp_lib)""" import textwrap + + def pretty_print(result): """Import machinery for ``cpp_lib.so`` can get repetitive to look at.""" - print(repr(result).replace(textwrap.indent(module_import_str, " "), " import cpp_lib")) + print( + repr(result).replace( + textwrap.indent(module_import_str, " "), " import cpp_lib" + ) + ) t_baseline = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='''\ + stmt="batched_dot_mul_sum(x, x)", + setup="""\ from __main__ import batched_dot_mul_sum -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) t0 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v0(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v0(x, x)", + setup=f"""\ {module_import_str} -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) t1 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v1(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v1(x, x)", + setup=f"""\ {module_import_str} -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) -# Moving to C++ did indeed reduce overhead, but it's hard to tell which -# calling convention is more efficient. v1 (call with references) seems to -# be a bit faster, but it's within measurement error. +# 转移到 C++ 确实减少了开销,但很难判断哪种调用约定更有效。v1(使用引用调用)似乎稍快一些,但在测量误差范围内。 pretty_print(t_baseline.blocked_autorange()) pretty_print(t0.blocked_autorange()) pretty_print(t1.blocked_autorange()) @@ -780,7 +763,7 @@ def pretty_print(result): # setup: # from __main__ import batched_dot_mul_sum # x = torch.randn(2, 2) -# +# # 6.92 us # 1 measurement, 100000 runs , 1 thread # @@ -788,7 +771,7 @@ def pretty_print(result): # setup: # import cpp_lib # x = torch.randn(2, 2) -# +# # 5.29 us # 1 measurement, 100000 runs , 1 thread # @@ -796,31 +779,26 @@ def pretty_print(result): # setup: # import cpp_lib # x = torch.randn(2, 2) -# +# # 5.22 us # 1 measurement, 100000 runs , 1 thread # -# Let's use ``Callgrind`` to determine which is better. +# 让我们使用 ``Callgrind`` 来确定哪种方式更好。 stats_v0 = t0.collect_callgrind() stats_v1 = t1.collect_callgrind() pretty_print(stats_v0) pretty_print(stats_v1) -# `.as_standardized` removes file names and some path prefixes, and makes -# it easier to read the function symbols. +# `.as_standardized` 移除了文件名和某些路径前缀,使函数符号更易读。 stats_v0 = stats_v0.as_standardized() stats_v1 = stats_v1.as_standardized() -# `.delta` diffs the instruction counts, and `.denoise` removes several -# functions in the Python interpreter that are known to have significant -# jitter. +# `.delta` 对指令计数进行差分, `.denoise` 则移除了 Python 解释器中已知存在显著抖动的几个函数。 delta = stats_v1.delta(stats_v0).denoise() -# `.transform` is a convenience API for transforming function names. It is -# useful for increasing cancelation when ``diff-ing`` instructions, as well as -# just generally improving readability. +# `.transform` 是一个转换函数名的便利 API。它在进行 ``diff-ing`` 时很有用,因为可以增加抵消,同时也能提高可读性。 replacements = ( ("???:void pybind11", "pybind11"), ("batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"), @@ -831,13 +809,12 @@ def pretty_print(result): for before, after in replacements: delta = delta.transform(lambda l: l.replace(before, after)) -# We can use print options to control how much of the function to display. +# 我们可以使用打印选项来控制显示函数的多少内容。 torch.set_printoptions(linewidth=160) -# Once parsed, the instruction counts make clear that passing `a` and `b` -# by reference is more efficient as it skips some ``c10::TensorImpl`` bookkeeping -# for the intermediate Tensors, and is also works better with ``pybind11``. This -# is consistent with our noisy wall time observations. +# 解析后,指令计数清楚地表明,通过引用传递 `a` 和 `b` 更有效, +# 因为它跳过了一些 `c10::TensorImpl` 中间张量的簿记操作,并且与 `pybind11` 也更兼容。 +# 这与我们有噪声时间观察结果一致。 print(delta) ###################################################################### @@ -879,10 +856,10 @@ def pretty_print(result): ###################################################################### -# Learn More +# 学习更多 # ---------- # -# Take a look at these other recipes to continue your learning: +# 查看其他教程继续学习: # # - `PyTorch Profiler `_ # diff --git a/docs/_sources/recipes/recipes/benchmark.rst.txt b/docs/_sources/recipes/recipes/benchmark.rst.txt index b2c609a..a96ca7e 100644 --- a/docs/_sources/recipes/recipes/benchmark.rst.txt +++ b/docs/_sources/recipes/recipes/benchmark.rst.txt @@ -20,58 +20,48 @@ PyTorch Benchmark ==================================== -This recipe provides a quick-start guide to using PyTorch -``benchmark`` module to measure and compare code performance. +本教程提供了使用 PyTorch ``benchmark`` 模块来测量和比较代码性能的快速入门指南。 -Introduction +介绍 ------------ -Benchmarking is an important step in writing code. It helps -us validate that our code meets performance expectations, -compare different approaches to solving the same problem and -prevent performance regressions. - -There are many options when it comes to benchmarking PyTorch code -including the Python builtin ``timeit`` module. However, benchmarking -PyTorch code has many caveats that can be easily overlooked such as -managing the number of threads and synchronizing CUDA devices. Moreover, -generating Tensor inputs for benchmarking can be quite tedious. - -This recipe demonstrates how to use PyTorch ``benchmark`` module to avoid -common mistakes while making it easier to compare performance of -different code, generate input for benchmarking and more. - -Setup +基准测试是编写代码时的一个重要步骤。它帮助我们验证代码是否满足性能预期,比较解决同一问题的不同方法,并防止性能裂化。 + +对于基准测试 PyTorch 代码有许多选择,包括 Python 内置的 ``timeit`` 模块。 +然而,基准测试 PyTorch 代码有许多容易被忽视的注意事项,例如管理线程数量和同步 CUDA 设备。 +此外,为基准测试生成张量输入可能相当繁琐。 + +本教程演示了如何使用 PyTorch ``benchmark`` 模块来避免常见错误,同时更容易比较不同代码的性能、为基准测试生成输入等。 + +设置 ----- -Before we begin, install ``torch`` if it isn’t already available. +在开始之前,如果尚未安装 ``torch``,请先安装。 :: pip install torch -.. GENERATED FROM PYTHON SOURCE LINES 36-56 +.. GENERATED FROM PYTHON SOURCE LINES 27-45 -Steps +具体步骤 ----- -1. Defining functions to benchmark -2. Benchmarking with ``timeit.Timer`` -3. Benchmarking with ``torch.utils.benchmark.Timer`` -4. Benchmarking with ``Blocked Autorange`` -5. Comparing benchmark results -6. Saving/Loading benchmark results -7. Generating inputs with ``Fuzzed Parameters`` -8. Collecting instruction counts with ``Callgrind`` +1. 定义要基准测试的函数 +2. 使用 ``timeit.Timer`` 进行基准测试 +3. 使用 ``torch.utils.benchmark.Timer`` 进行基准测试 +4. 使用 ``Blocked Autorange`` 进行基准测试 +5. 比较基准测试结果 +6. 保存/加载基准测试结果 +7. 使用 ``Fuzzed Parameters`` 生成输入 +8. 使用 ``Callgrind`` 收集指令计数 -1. Defining functions to benchmark +1. 定义要基准测试的函数 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -As of the time of this writing, `torch.dot `__ -does not support batched mode, so we will compare two approaches to -implementing it using existing ``torch`` operators: one approach uses a -combination of ``mul`` and ``sum`` while the other reduces the problem to ``bmm``. +在撰写本文时, `torch.dot `__ +不支持批量模式,因此我们将比较使用现有 ``torch`` 运算符实现它的两种方法:一种方法使用 ``mul`` 和 ``sum`` 的组合,另一种方法使用 ``bmm``。 -.. GENERATED FROM PYTHON SOURCE LINES 56-79 +.. GENERATED FROM PYTHON SOURCE LINES 45-68 .. code-block:: default @@ -80,12 +70,12 @@ combination of ``mul`` and ``sum`` while the other reduces the problem to ``bmm` def batched_dot_mul_sum(a, b): - '''Computes batched dot by multiplying and summing''' + """Computes batched dot by multiplying and summing""" return a.mul(b).sum(-1) def batched_dot_bmm(a, b): - '''Computes batched dot by reducing to ``bmm``''' + """Computes batched dot by reducing to ``bmm``""" a = a.reshape(-1, 1, a.shape[-1]) b = b.reshape(-1, b.shape[-1], 1) return torch.bmm(a, b).flatten(-3) @@ -99,17 +89,15 @@ combination of ``mul`` and ``sum`` while the other reduces the problem to ``bmm` -.. GENERATED FROM PYTHON SOURCE LINES 80-87 +.. GENERATED FROM PYTHON SOURCE LINES 69-74 -2. Benchmarking with ``timeit.Timer`` +2. 使用 ``timeit.Timer`` 进行基准测试 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +首先,让我们使用 Python 内置的 ``timeit`` 模块对代码进行基准测试。 +我们在这里保持基准测试代码简单,以便我们可以比较 ``timeit`` 和 ``torch.utils.benchmark`` 的默认设置。 -First, let's benchmark the code using Python's builtin ``timeit`` module. -We keep the benchmark code simple here so we can compare the defaults -of ``timeit`` and ``torch.utils.benchmark``. - -.. GENERATED FROM PYTHON SOURCE LINES 87-103 +.. GENERATED FROM PYTHON SOURCE LINES 74-92 .. code-block:: default @@ -117,20 +105,22 @@ of ``timeit`` and ``torch.utils.benchmark``. import timeit t0 = timeit.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + ) t1 = timeit.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + ) - print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') - print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') + print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") + print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") -.. GENERATED FROM PYTHON SOURCE LINES 104-110 +.. GENERATED FROM PYTHON SOURCE LINES 93-99 .. code-block:: none :caption: Output @@ -139,18 +129,15 @@ of ``timeit`` and ``torch.utils.benchmark``. bmm(x, x): 70.0 us -.. GENERATED FROM PYTHON SOURCE LINES 113-121 +.. GENERATED FROM PYTHON SOURCE LINES 102-107 -3. Benchmarking with ``torch.utils.benchmark.Timer`` +3. 使用 ``torch.utils.benchmark.Timer`` 进行基准测试 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +PyTorch ``benchmark``模块的设计使得对于那些曾经使用过 ``timeit`` 模块的人来说,它看起来很熟悉。 +然而,它的默认设置使得它更容易且更安全地用于对 PyTorch 代码进行基准测试。 +首先让我们对比一下基本API的使用。 -PyTorch ``benchmark`` module was designed to be familiar to those who -have used the ``timeit`` module before. However, its defaults make it -easier and safer to use for benchmarking PyTorch code. Let's first -compare the same basic API as above. - - -.. GENERATED FROM PYTHON SOURCE LINES 121-137 +.. GENERATED FROM PYTHON SOURCE LINES 107-125 .. code-block:: default @@ -158,20 +145,22 @@ compare the same basic API as above. import torch.utils.benchmark as benchmark t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + ) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + ) print(t0.timeit(100)) print(t1.timeit(100)) -.. GENERATED FROM PYTHON SOURCE LINES 138-152 +.. GENERATED FROM PYTHON SOURCE LINES 126-140 .. code-block:: none :caption: Output @@ -188,53 +177,50 @@ compare the same basic API as above. 1 measurement, 100 runs , 1 thread -.. GENERATED FROM PYTHON SOURCE LINES 154-169 +.. GENERATED FROM PYTHON SOURCE LINES 142-152 -Even though the APIs are the same for the basic functionality, there -are some important differences. ``benchmark.Timer.timeit()`` returns the -time per run as opposed to the total runtime like ``timeit.Timer.timeit()`` -does. PyTorch ``benchmark`` module also provides formatted string -representations for printing the results. +虽然基本功能的API是相同的,但是还是有一些重要的区别。 +``benchmark.Timer.timeit()``返回的是每次运行的时间,而不是 ``timeit.Timer.timeit()`` 返回的总运行时间。 +PyTorch ``benchmark``模块还提供了格式化的字符串表示,用于打印结果。 -Another important difference, and the reason why the results diverge -is that PyTorch benchmark module runs in a single thread by default. -We can change the number of threads with the ``num_threads`` argument. +另一个重要的区别,也是结果不同的原因,是PyTorch基准测试模块默认在单线程中运行。 +我们可以使用``num_threads``参数来更改线程数量。 -``torch.utils.benchmark.Timer`` takes several additional arguments -including: ``label``, ``sub_label``, ``description`` and ``env`` which change -the __repr__ of the measurement object returned and are used for -grouping the results (more on this later). +``torch.utils.benchmark.Timer``接受几个额外的参数,包括: ``label``、``sub_label``、``description``和``env``, +这些参数会改变返回的测量对象的__repr__,并用于对结果进行分组(稍后会详细介绍)。 -.. GENERATED FROM PYTHON SOURCE LINES 169-192 +.. GENERATED FROM PYTHON SOURCE LINES 152-177 .. code-block:: default num_threads = torch.get_num_threads() - print(f'Benchmarking on {num_threads} threads') + print(f"Benchmarking on {num_threads} threads") t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, num_threads=num_threads, - label='Multithreaded batch dot', - sub_label='Implemented using mul and sum') + label="Multithreaded batch dot", + sub_label="Implemented using mul and sum", + ) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, num_threads=num_threads, - label='Multithreaded batch dot', - sub_label='Implemented using bmm') + label="Multithreaded batch dot", + sub_label="Implemented using bmm", + ) print(t0.timeit(100)) print(t1.timeit(100)) -.. GENERATED FROM PYTHON SOURCE LINES 193-207 +.. GENERATED FROM PYTHON SOURCE LINES 178-192 .. code-block:: none :caption: Output @@ -251,42 +237,42 @@ grouping the results (more on this later). 68.21 us 1 measurement, 100 runs , 40 threads -.. GENERATED FROM PYTHON SOURCE LINES 209-217 +.. GENERATED FROM PYTHON SOURCE LINES 194-200 -Running ``benchmark`` with all threads available gives similar results -as the ``timeit`` module. More importantly, which version is faster -depends on how many threads we run the code with. This is why it's -important to benchmark the code with thread settings that are -representative of real use cases. Another important thing to remember -is to synchronize CPU and CUDA when benchmarking on the GPU. Let's run -the above benchmarks again on a CUDA tensor and see what happens. +使用所有可用线程运行 ``benchmark`` 会得到与 ``timeit`` 模块类似的结果。 +更重要的是,哪个版本更快取决于我们使用多少线程运行代码。 +这就是为什么在基准测试时,使用与实际用例相符的线程设置非常重要。 +另一个需要记住的重要事情是,在 GPU 上进行基准测试时,要同步CPU和CUDA。 +让我们再次在CUDA张量上运行上面的基准测试,看看会发生什么。 -.. GENERATED FROM PYTHON SOURCE LINES 217-236 +.. GENERATED FROM PYTHON SOURCE LINES 200-221 .. code-block:: default - x = torch.randn(10000, 1024, device='cuda') + x = torch.randn(10000, 1024, device="cuda") t0 = timeit.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + ) t1 = timeit.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + ) # Ran each twice to show difference before/after warm-up - print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') - print(f'mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us') - print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') - print(f'bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us') + print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") + print(f"mul_sum(x, x): {t0.timeit(100) / 100 * 1e6:>5.1f} us") + print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") + print(f"bmm(x, x): {t1.timeit(100) / 100 * 1e6:>5.1f} us") -.. GENERATED FROM PYTHON SOURCE LINES 237-245 +.. GENERATED FROM PYTHON SOURCE LINES 222-230 .. code-block:: none :caption: Output @@ -297,27 +283,29 @@ the above benchmarks again on a CUDA tensor and see what happens. bmm(x, x): 22.4 us -.. GENERATED FROM PYTHON SOURCE LINES 245-260 +.. GENERATED FROM PYTHON SOURCE LINES 230-247 .. code-block:: default t0 = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}) + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + ) t1 = benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}) + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + ) # Run only once since benchmark module does warm-up for us print(t0.timeit(100)) print(t1.timeit(100)) -.. GENERATED FROM PYTHON SOURCE LINES 261-275 +.. GENERATED FROM PYTHON SOURCE LINES 248-262 .. code-block:: none :caption: Output @@ -334,39 +322,28 @@ the above benchmarks again on a CUDA tensor and see what happens. 1 measurement, 100 runs , 1 thread -.. GENERATED FROM PYTHON SOURCE LINES 277-288 +.. GENERATED FROM PYTHON SOURCE LINES 264-270 -The results reveal something interesting. The first run of the ``bmm`` -version using the ``timeit`` module takes much longer than the second -run. This is because ``bmm`` calls into `cuBLAS` which needs to be -loaded the first time it's called which takes some time. This is why -it's important to do a warm-up run before benchmarking, luckily for -us, PyTorch's ``benchmark`` module takes care of that. +结果揭示了一些有趣的事情。使用 `timeit` 模块运行 `bmm` 版本的第一次运行比第二次运行慢很多。 +这是因为 `bmm` 需要调用 `cuBLAS`,第一次调用时需要加载它,这需要一些时间。 +这就是为什么在基准测试之前做一次预热运行很重要,幸运的是, PyTorch 的 `benchmark` 模块为我们处理了这个问题。 -The difference in the results between ``timeit`` and ``benchmark`` modules -is because the `timeit` module is not synchronizing CUDA and is thus only -timing the time to launch the kernel. PyTorch's ``benchmark`` module does -the synchronization for us. +`timeit` 模块和 `benchmark` 模块之间结果的差异是因为 `timeit` 模块没有同步 CUDA,因此只计时了启动内核的时间。 +PyTorch 的 `benchmark` 模块为我们做了同步。 -.. GENERATED FROM PYTHON SOURCE LINES 291-306 +.. GENERATED FROM PYTHON SOURCE LINES 273-282 -4. Benchmarking with `Blocked Autorange` +4. 使用 `Blocked Autorange` 进行基准测试 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -While ``timeit.Timer.autorange`` takes a single continuous measurement -of at least 0.2 seconds, `torch.utils.benchmark.blocked_autorange` -takes many measurements whose times total at least 0.2 seconds (which -can be changed by the `min_run_time` parameter) subject to the constraint -that timing overhead is a small fraction of the overall measurement. -This is accomplished by first running with an increasing number of runs -per loop until the runtime is much larger than measurement overhead -(which also serves as a warm up), and then taking measurements until -the target time is reached. This has the useful properties that it wastes -less data and allows us to compute statistics to estimate the reliability -of the measurements. +虽然 `timeit.Timer.autorange` 采取至少 0.2 秒的单次连续测量, +但 `torch.utils.benchmark.blocked_autorange` 采取多次测量,其总时间至少为 0.2 秒(可通过 `min_run_time` 参数更改), +并且测量开销只占总体测量的一小部分。 +这是通过首先以递增的循环次数运行,直到运行时间远大于测量开销(这也起到了热身的作用), +然后进行测量直到达到目标时间。这有一个有用的特性,即它浪费的数据更少,并且允许我们计算统计数据来估计测量的可靠性。 -.. GENERATED FROM PYTHON SOURCE LINES 306-313 +.. GENERATED FROM PYTHON SOURCE LINES 282-289 .. code-block:: default @@ -378,7 +355,7 @@ of the measurements. print(m1) -.. GENERATED FROM PYTHON SOURCE LINES 314-328 +.. GENERATED FROM PYTHON SOURCE LINES 290-304 .. code-block:: none :caption: Output @@ -395,12 +372,11 @@ of the measurements. 2 measurements, 1000 runs per measurement, 1 thread -.. GENERATED FROM PYTHON SOURCE LINES 330-332 +.. GENERATED FROM PYTHON SOURCE LINES 306-307 -We can also inspect the individual statistics from the returned -measurements object. +我们还可以查看返回的测量对象中获得的各个统计数据。 -.. GENERATED FROM PYTHON SOURCE LINES 332-336 +.. GENERATED FROM PYTHON SOURCE LINES 307-311 .. code-block:: default @@ -409,7 +385,7 @@ measurements object. print(f"Median: {m0.median * 1e6:6.2f} us") -.. GENERATED FROM PYTHON SOURCE LINES 337-343 +.. GENERATED FROM PYTHON SOURCE LINES 312-318 .. code-block:: none :caption: Output @@ -418,22 +394,19 @@ measurements object. Median: 231.79 us -.. GENERATED FROM PYTHON SOURCE LINES 345-357 +.. GENERATED FROM PYTHON SOURCE LINES 320-329 -5. Comparing benchmark results +5. 比较基准测试结果 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -So far we've been comparing our two versions of batched dot against a -single input. In practice, we want to try a combination of inputs as -well as different number of threads. The ``Compare`` class helps display -the results of many measurements in a formatted table. It uses the -annotations described above (`label`, `sub_label`, `num_threads`, etc.) as -well as `description` to group and organize the table. Let's use -``Compare`` to see how our functions perform for different input sizes -and number of threads. +到目前为止,我们一直在比较我们的两个批量点积版本对同一输入的表现。 +在实践中,我们希望尝试不同的输入组合以及不同的线程数量。 +`Compare` 类帮助我们以格式化表格的形式显示多个测量结果。 +它使用上面描述的注释( `label`、 `sub_label`、 `num_threads` 等)以及 `description` 来对表格进行分组和组织。 +让我们使用 `Compare` 来看看我们的函数在不同的输入大小和线程数量下的表现如何。 -.. GENERATED FROM PYTHON SOURCE LINES 357-393 +.. GENERATED FROM PYTHON SOURCE LINES 329-369 .. code-block:: default @@ -447,40 +420,44 @@ and number of threads. for b, n in product(sizes, sizes): # label and sub_label are the rows # description is the column - label = 'Batched dot' - sub_label = f'[{b}, {n}]' + label = "Batched dot" + sub_label = f"[{b}, {n}]" x = torch.ones((b, n)) for num_threads in [1, 4, 16, 32]: - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.print() -.. GENERATED FROM PYTHON SOURCE LINES 394-470 +.. GENERATED FROM PYTHON SOURCE LINES 370-446 .. code-block:: none :caption: Output [--------------- Batched dot ----------------] - | mul/sum | bmm + | mul/sum | bmm 1 threads: ----------------------------------- [1, 1] | 5.9 | 11.2 [1, 64] | 6.4 | 11.4 @@ -553,16 +530,14 @@ and number of threads. Times are in microseconds (us). -.. GENERATED FROM PYTHON SOURCE LINES 472-478 +.. GENERATED FROM PYTHON SOURCE LINES 448-452 -The results above indicate that the version which reduces to ``bmm`` -is better for larger tensors running on multiple threads, while for -smaller and/or single thread code, the other version is better. +上面的结果表明,对于在多线程上运行的较大张量, `bmm` 的版本效果更好, +而对于较小和/或单线程代码,另一个版本效果更好。 -``Compare`` also provides functions for changing the table format +`Compare` 还提供了用于更改表格格式的函数 - -.. GENERATED FROM PYTHON SOURCE LINES 478-484 +.. GENERATED FROM PYTHON SOURCE LINES 452-458 .. code-block:: default @@ -573,26 +548,22 @@ smaller and/or single thread code, the other version is better. -.. GENERATED FROM PYTHON SOURCE LINES 485-501 +.. GENERATED FROM PYTHON SOURCE LINES 459-471 -6. Saving/Loading benchmark results +6. 保存/加载基准测试结果 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -`Measurements` (and ``CallgrindStats`` which are described in section 8) -can be serialized by the ``pickle`` module. This makes A/B testing easy, as you can collect -measurements from two separate environments, pickle them, and then -load both in a single environment. Timer even takes an `env` -constructor argument so that such A/B testing works seamlessly. +`Measurements` (和第8节中描述的 `CallgrindStats` )可以通过 `pickle` 模块序列化。 +这使得A/B测试变得很容易,因为您可以从两个独立的环境中收集测量结果, +将它们序列化,然后在单个环境中加载两者。Timer甚至接受一个 `env` +构造函数参数,以便这种A/B测试可以无缝衔接。 -Let's imagine that rather than two Python functions, the add/sum -and ``bmm`` approaches were in two different builds of PyTorch. -The example below demonstrates how one might A/B test them. For -simplicity, we only use a subset of shapes, and simply round trip -results through pickle rather than actually using multiple environments -and writing results to disk. +假设 add/sum 和 `bmm` 方法不是两个Python函数,而是 PyTorch 的两个不同版本。 +下面的示例演示了如何进行A/B测试。为了简单起见,我们只使用了一部分数据, +并简单地通过pickle来回传结果,而不是实际使用多个环境并将结果写入磁盘。 -.. GENERATED FROM PYTHON SOURCE LINES 501-525 +.. GENERATED FROM PYTHON SOURCE LINES 471-497 .. code-block:: default @@ -600,16 +571,18 @@ and writing results to disk. import pickle ab_test_results = [] - for env in ('environment A: mul/sum', 'environment B: bmm'): + for env in ("environment A: mul/sum", "environment B: bmm"): for b, n in ((1, 1), (1024, 10000), (10000, 1)): x = torch.ones((b, n)) - dot_fn = (batched_dot_mul_sum if env == 'environment A: mul/sum' else batched_dot_bmm) + dot_fn = ( + batched_dot_mul_sum if env == "environment A: mul/sum" else batched_dot_bmm + ) m = benchmark.Timer( - stmt='batched_dot(x, x)', - globals={'x': x, 'batched_dot': dot_fn}, + stmt="batched_dot(x, x)", + globals={"x": x, "batched_dot": dot_fn}, num_threads=1, - label='Batched dot', - description=f'[{b}, {n}]', + label="Batched dot", + description=f"[{b}, {n}]", env=env, ).blocked_autorange(min_run_time=1) ab_test_results.append(pickle.dumps(m)) @@ -621,7 +594,7 @@ and writing results to disk. compare.print() -.. GENERATED FROM PYTHON SOURCE LINES 526-537 +.. GENERATED FROM PYTHON SOURCE LINES 498-509 .. code-block:: none :caption: Output @@ -635,47 +608,50 @@ and writing results to disk. Times are in microseconds (us). -.. GENERATED FROM PYTHON SOURCE LINES 537-543 +.. GENERATED FROM PYTHON SOURCE LINES 509-515 .. code-block:: default - # And just to show that we can round trip all of the results from earlier: + # 仅为展示可以将之前所有的结果通过 pickle 进行回传: round_tripped_results = pickle.loads(pickle.dumps(results)) - assert(str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results))) + assert str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results)) -.. GENERATED FROM PYTHON SOURCE LINES 544-555 +.. GENERATED FROM PYTHON SOURCE LINES 516-524 -7. Generating inputs with `Fuzzed Parameters` +7. 使用 `Fuzzed Parameters` 生成输入 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -As we've seen in the previous section, there can be some stark -performance differences depending on the input tensors. Hence, it -is a good idea to run benchmarks on a number of different inputs. -However, creating all these input tensors can be tedious which is -where ``torch.utils.benchmark.Fuzzer`` and related classes come in. -Let's take a look at how we can use the ``Fuzzer`` to create some test -cases for the benchmark. +正如我们在上一节中看到的,根据输入张量的不同,性能差异可能会很大。 +因此,在多个不同的输入上运行基准测试是一个好主意。 +但是,创建所有这些输入张量可能会很麻烦,这就是 `torch.utils.benchmark.Fuzzer` +和相关类的用武之地。让我们看看如何使用 `Fuzzer` 来创建一些用于基准测试的测试用例。 -.. GENERATED FROM PYTHON SOURCE LINES 555-596 +.. GENERATED FROM PYTHON SOURCE LINES 524-575 .. code-block:: default - from torch.utils.benchmark import Fuzzer, FuzzedParameter, FuzzedTensor, ParameterAlias + from torch.utils.benchmark import FuzzedParameter, FuzzedTensor, Fuzzer, ParameterAlias - # Generates random tensors with 128 to 10000000 elements and sizes k0 and k1 chosen from a - # ``loguniform`` distribution in [1, 10000], 40% of which will be discontiguous on average. + # 生成随机张量,元素数量在 128 到 10000000 之间,大小 k0 和 k1 从 [1, 10000] 的 `loguniform` 分布中选择, + # 其中平均 40% 将是不连续的。 example_fuzzer = Fuzzer( - parameters = [ - FuzzedParameter('k0', minval=1, maxval=10000, distribution='loguniform'), - FuzzedParameter('k1', minval=1, maxval=10000, distribution='loguniform'), + parameters=[ + FuzzedParameter("k0", minval=1, maxval=10000, distribution="loguniform"), + FuzzedParameter("k1", minval=1, maxval=10000, distribution="loguniform"), ], - tensors = [ - FuzzedTensor('x', size=('k0', 'k1'), min_elements=128, max_elements=10000000, probability_contiguous=0.6) + tensors=[ + FuzzedTensor( + "x", + size=("k0", "k1"), + min_elements=128, + max_elements=10000000, + probability_contiguous=0.6, + ) ], seed=0, ) @@ -683,36 +659,40 @@ cases for the benchmark. results = [] for tensors, tensor_params, params in example_fuzzer.take(10): # description is the column label - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() compare.print() -.. GENERATED FROM PYTHON SOURCE LINES 597-616 +.. GENERATED FROM PYTHON SOURCE LINES 576-595 .. code-block:: none :caption: Output [--------------------- Batched dot ---------------------] - | mul/sum | bmm + | mul/sum | bmm 1 threads: ---------------------------------------------- 725 x 257 | 87 | 180 49 x 383 | 15 | 30 @@ -725,19 +705,17 @@ cases for the benchmark. 78 x 5 (discontiguous) | 9 | 20 187 x 1 | 12 | 10 - Times are in microseconds (us). + Times are in microseconds (us). -.. GENERATED FROM PYTHON SOURCE LINES 618-624 +.. GENERATED FROM PYTHON SOURCE LINES 597-601 -There is a lot of flexibility for defining your own ``fuzzers`` which -is great for creating a powerful set of inputs to benchmark. But to -make things even simpler, PyTorch benchmark module comes with some -built-in ``fuzzers`` for common benchmarking needs. Let's take a look at -how we can use one of these built-in ``fuzzers``. +定义自己的 `fuzzers` 有很大的灵活性,这对于创建强大的输入集进行基准测试非常有用。 +但为了让事情变得更简单, PyTorch 基准测试模块为常见的基准测试需求提供了一些内置的 `fuzzers`。 +让我们看看如何使用其中一个内置的 `fuzzers` 。 -.. GENERATED FROM PYTHON SOURCE LINES 624-652 +.. GENERATED FROM PYTHON SOURCE LINES 601-633 .. code-block:: default @@ -746,23 +724,27 @@ how we can use one of these built-in ``fuzzers``. results = [] for tensors, tensor_params, params in binary.BinaryOpFuzzer(seed=0).take(10): - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() @@ -770,13 +752,13 @@ how we can use one of these built-in ``fuzzers``. compare.print() -.. GENERATED FROM PYTHON SOURCE LINES 653-672 +.. GENERATED FROM PYTHON SOURCE LINES 634-653 .. code-block:: none :caption: Output [----------------------- Batched dot ------------------------] - | mul/sum | bmm + | mul/sum | bmm 1 threads: --------------------------------------------------- 64 x 473 (discontiguous) | 10000 | 40000 16384 x 12642115 (discontiguous) | 31 | 78 @@ -792,33 +774,27 @@ how we can use one of these built-in ``fuzzers``. Times are in microseconds (us). -.. GENERATED FROM PYTHON SOURCE LINES 674-697 +.. GENERATED FROM PYTHON SOURCE LINES 655-672 -8. Collecting instruction counts with ``Callgrind`` +8. 使用 `Callgrind` 收集指令计数 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -One of the challenges of optimizing code is the variation and opacity of -wall time. There are many sources of non-determinism, from adaptive clock -speeds to resource contention with other processes. Furthermore, end-to-end -time gives no insight into where time is being spent, which is really what -we're interested in when optimizing code. +优化代码的一个挑战是时间的变化和不透明性。有许多不确定性的来源, +从自适应时钟速度到与其他进程的资源争用。此外,端到端时间并不能揭示时间花费在哪里, +而这正是我们在优化代码时感兴趣的。 -A complementary approach is to also collect instruction counts. These counts -are a proxy metric and do not capture all aspects of performance -(e.g. memory or I/O bound tasks), however they do have several useful -properties. Instruction counts are reproducible, insensitive to environmental -variation, and offer fine grained insight into where a program is spending -cycles. +一种补充方法是也收集指令计数。这些计数是一种代理指标,并不能捕获性能的所有方面 +(例如内存或I/O绑定任务),但它们确实具有一些有用的特性。指令计数是可重复的, +不受环境变化的影响,并且可以提供对程序在哪里花费周期的细粒度洞察。 -To see the utility of instruction counts, let us look at how we might -reduce the overhead of `batched_dot_mul_sum`. The obvious solution is to -move it to C++, so we avoid going between Python and C++ multiple times. +为了看到指令计数的实用性,让我们看看如何减少 `batched_dot_mul_sum` 的开销。 +显而易见的解决方案是将其移至 C++ ,这样我们就可以避免在 Python 和 C++ 之间多次来回切换。 -Fortunately, the source is nearly identical. One question that we have to ask -in C++ is whether we should take arguments by value or reference. +幸运的是,源代码几乎是相同的。在 C++ 中我们必须问的一个问题是, +我们是通过值还是引用来传递参数。 -.. GENERATED FROM PYTHON SOURCE LINES 697-774 +.. GENERATED FROM PYTHON SOURCE LINES 672-757 .. code-block:: default @@ -842,25 +818,26 @@ in C++ is whether we should take arguments by value or reference. """ - # PyTorch makes it easy to test our C++ implementations by providing a utility - # to JIT compile C++ source into Python extensions: + # PyTorch 提供一个实用程序来 JIT 编译 C++ 源代码为 Python 扩展, + # 使得测试我们的 C++ 实现变得很容易: import os + from torch.utils import cpp_extension + cpp_lib = cpp_extension.load_inline( - name='cpp_lib', + name="cpp_lib", cpp_sources=batched_dot_src, - extra_cflags=['-O3'], + extra_cflags=["-O3"], extra_include_paths=[ - # `load_inline` needs to know where to find ``pybind11`` headers. - os.path.join(os.getenv('CONDA_PREFIX'), 'include') + # `load_inline`需要知道`pybind11`头文件的位置。 + os.path.join(os.getenv("CONDA_PREFIX"), "include") ], - functions=['batched_dot_mul_sum_v0', 'batched_dot_mul_sum_v1'] + functions=["batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"], ) - # `load_inline` will create a shared object that is loaded into Python. When we collect - # instruction counts Timer will create a subprocess, so we need to re-import it. The - # import process is slightly more complicated for C extensions, but that's all we're - # doing here. + # `load_inline` 将创建一个共享对象,并加载到Python中。当我们收集指令计数时, + # Timer将创建一个子进程,因此我们需要重新导入它。对于C扩展,导入过程略有不同, + # 但这就是我们在这里所做的。 module_import_str = f"""\ # https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path import importlib.util @@ -869,38 +846,45 @@ in C++ is whether we should take arguments by value or reference. spec.loader.exec_module(cpp_lib)""" import textwrap + + def pretty_print(result): """Import machinery for ``cpp_lib.so`` can get repetitive to look at.""" - print(repr(result).replace(textwrap.indent(module_import_str, " "), " import cpp_lib")) + print( + repr(result).replace( + textwrap.indent(module_import_str, " "), " import cpp_lib" + ) + ) t_baseline = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='''\ + stmt="batched_dot_mul_sum(x, x)", + setup="""\ from __main__ import batched_dot_mul_sum - x = torch.randn(2, 2)''') + x = torch.randn(2, 2)""", + ) t0 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v0(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v0(x, x)", + setup=f"""\ {module_import_str} - x = torch.randn(2, 2)''') + x = torch.randn(2, 2)""", + ) t1 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v1(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v1(x, x)", + setup=f"""\ {module_import_str} - x = torch.randn(2, 2)''') + x = torch.randn(2, 2)""", + ) - # Moving to C++ did indeed reduce overhead, but it's hard to tell which - # calling convention is more efficient. v1 (call with references) seems to - # be a bit faster, but it's within measurement error. + # 转移到 C++ 确实减少了开销,但很难判断哪种调用约定更有效。v1(使用引用调用)似乎稍快一些,但在测量误差范围内。 pretty_print(t_baseline.blocked_autorange()) pretty_print(t0.blocked_autorange()) pretty_print(t1.blocked_autorange()) -.. GENERATED FROM PYTHON SOURCE LINES 775-803 +.. GENERATED FROM PYTHON SOURCE LINES 758-786 .. code-block:: none :caption: Output @@ -931,31 +915,26 @@ in C++ is whether we should take arguments by value or reference. 1 measurement, 100000 runs , 1 thread -.. GENERATED FROM PYTHON SOURCE LINES 803-843 +.. GENERATED FROM PYTHON SOURCE LINES 786-820 .. code-block:: default - # Let's use ``Callgrind`` to determine which is better. + # 让我们使用 ``Callgrind`` 来确定哪种方式更好。 stats_v0 = t0.collect_callgrind() stats_v1 = t1.collect_callgrind() pretty_print(stats_v0) pretty_print(stats_v1) - # `.as_standardized` removes file names and some path prefixes, and makes - # it easier to read the function symbols. + # `.as_standardized` 移除了文件名和某些路径前缀,使函数符号更易读。 stats_v0 = stats_v0.as_standardized() stats_v1 = stats_v1.as_standardized() - # `.delta` diffs the instruction counts, and `.denoise` removes several - # functions in the Python interpreter that are known to have significant - # jitter. + # `.delta` 对指令计数进行差分, `.denoise` 则移除了 Python 解释器中已知存在显著抖动的几个函数。 delta = stats_v1.delta(stats_v0).denoise() - # `.transform` is a convenience API for transforming function names. It is - # useful for increasing cancelation when ``diff-ing`` instructions, as well as - # just generally improving readability. + # `.transform` 是一个转换函数名的便利 API。它在进行 ``diff-ing`` 时很有用,因为可以增加抵消,同时也能提高可读性。 replacements = ( ("???:void pybind11", "pybind11"), ("batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"), @@ -966,17 +945,16 @@ in C++ is whether we should take arguments by value or reference. for before, after in replacements: delta = delta.transform(lambda l: l.replace(before, after)) - # We can use print options to control how much of the function to display. + # 我们可以使用打印选项来控制显示函数的多少内容。 torch.set_printoptions(linewidth=160) - # Once parsed, the instruction counts make clear that passing `a` and `b` - # by reference is more efficient as it skips some ``c10::TensorImpl`` bookkeeping - # for the intermediate Tensors, and is also works better with ``pybind11``. This - # is consistent with our noisy wall time observations. + # 解析后,指令计数清楚地表明,通过引用传递 `a` 和 `b` 更有效, + # 因为它跳过了一些 `c10::TensorImpl` 中间张量的簿记操作,并且与 `pybind11` 也更兼容。 + # 这与我们有噪声时间观察结果一致。 print(delta) -.. GENERATED FROM PYTHON SOURCE LINES 844-879 +.. GENERATED FROM PYTHON SOURCE LINES 821-856 .. code-block:: @@ -1014,12 +992,12 @@ in C++ is whether we should take arguments by value or reference. Total: -13693 -.. GENERATED FROM PYTHON SOURCE LINES 882-889 +.. GENERATED FROM PYTHON SOURCE LINES 859-866 -Learn More +学习更多 ---------- -Take a look at these other recipes to continue your learning: +查看其他教程继续学习: - `PyTorch Profiler `_ diff --git a/docs/_sources/recipes/recipes/index.rst.txt b/docs/_sources/recipes/recipes/index.rst.txt index 3102833..44506c7 100644 --- a/docs/_sources/recipes/recipes/index.rst.txt +++ b/docs/_sources/recipes/recipes/index.rst.txt @@ -414,7 +414,7 @@ PyTorch Recipes .. raw:: html -

+
.. only:: html diff --git a/docs/_sources/recipes/recipes_index.rst.txt b/docs/_sources/recipes/recipes_index.rst.txt index b19ac42..0e56f12 100644 --- a/docs/_sources/recipes/recipes_index.rst.txt +++ b/docs/_sources/recipes/recipes_index.rst.txt @@ -103,7 +103,7 @@ Recipes are bite-sized, actionable examples of how to use specific PyTorch featu .. customcarditem:: :header: PyTorch Benchmark - :card_description: Learn how to use PyTorch's benchmark module to measure and compare the performance of your code + :card_description: 学习如何使用 PyTorch Benchmark 模块来测量和比较代码性能 :image: ../_static/img/thumbnails/cropped/profiler.png :link: ../recipes/recipes/benchmark.html :tags: Basics diff --git a/docs/recipes/recipes/benchmark.html b/docs/recipes/recipes/benchmark.html index c80d64f..f966fa2 100644 --- a/docs/recipes/recipes/benchmark.html +++ b/docs/recipes/recipes/benchmark.html @@ -597,58 +597,48 @@

PyTorch Benchmark

-

This recipe provides a quick-start guide to using PyTorch -benchmark module to measure and compare code performance.

-
-

Introduction

-

Benchmarking is an important step in writing code. It helps -us validate that our code meets performance expectations, -compare different approaches to solving the same problem and -prevent performance regressions.

-

There are many options when it comes to benchmarking PyTorch code -including the Python builtin timeit module. However, benchmarking -PyTorch code has many caveats that can be easily overlooked such as -managing the number of threads and synchronizing CUDA devices. Moreover, -generating Tensor inputs for benchmarking can be quite tedious.

-

This recipe demonstrates how to use PyTorch benchmark module to avoid -common mistakes while making it easier to compare performance of -different code, generate input for benchmarking and more.

+

本教程提供了使用 PyTorch benchmark 模块来测量和比较代码性能的快速入门指南。

+
+

介绍

+

基准测试是编写代码时的一个重要步骤。它帮助我们验证代码是否满足性能预期,比较解决同一问题的不同方法,并防止性能裂化。

+

对于基准测试 PyTorch 代码有许多选择,包括 Python 内置的 timeit 模块。 +然而,基准测试 PyTorch 代码有许多容易被忽视的注意事项,例如管理线程数量和同步 CUDA 设备。 +此外,为基准测试生成张量输入可能相当繁琐。

+

本教程演示了如何使用 PyTorch benchmark 模块来避免常见错误,同时更容易比较不同代码的性能、为基准测试生成输入等。

-
-

Setup

-

Before we begin, install torch if it isn’t already available.

+
+

设置

+

在开始之前,如果尚未安装 torch,请先安装。

pip install torch
 
-
-

Steps

+
+

具体步骤

    -
  1. Defining functions to benchmark

  2. -
  3. Benchmarking with timeit.Timer

  4. -
  5. Benchmarking with torch.utils.benchmark.Timer

  6. -
  7. Benchmarking with Blocked Autorange

  8. -
  9. Comparing benchmark results

  10. -
  11. Saving/Loading benchmark results

  12. -
  13. Generating inputs with Fuzzed Parameters

  14. -
  15. Collecting instruction counts with Callgrind

  16. +
  17. 定义要基准测试的函数

  18. +
  19. 使用 timeit.Timer 进行基准测试

  20. +
  21. 使用 torch.utils.benchmark.Timer 进行基准测试

  22. +
  23. 使用 Blocked Autorange 进行基准测试

  24. +
  25. 比较基准测试结果

  26. +
  27. 保存/加载基准测试结果

  28. +
  29. 使用 Fuzzed Parameters 生成输入

  30. +
  31. 使用 Callgrind 收集指令计数

-
-

1. Defining functions to benchmark

-

As of the time of this writing, torch.dot -does not support batched mode, so we will compare two approaches to -implementing it using existing torch operators: one approach uses a -combination of mul and sum while the other reduces the problem to bmm.

+
+

1. 定义要基准测试的函数

+

在撰写本文时, torch.dot +不支持批量模式,因此我们将比较使用现有 torch 运算符实现它的两种方法:一种方法使用 mulsum 的组合,另一种方法使用 bmm

import torch
 
 
 def batched_dot_mul_sum(a, b):
-    '''Computes batched dot by multiplying and summing'''
+    """Computes batched dot by multiplying and summing"""
     return a.mul(b).sum(-1)
 
 
 def batched_dot_bmm(a, b):
-    '''Computes batched dot by reducing to ``bmm``'''
+    """Computes batched dot by reducing to ``bmm``"""
     a = a.reshape(-1, 1, a.shape[-1])
     b = b.reshape(-1, b.shape[-1], 1)
     return torch.bmm(a, b).flatten(-3)
@@ -662,59 +652,61 @@ 

1. Defining functions to benchmark -

2. Benchmarking with timeit.Timer

-

First, let’s benchmark the code using Python’s builtin timeit module. -We keep the benchmark code simple here so we can compare the defaults -of timeit and torch.utils.benchmark.

+
+

2. 使用 timeit.Timer 进行基准测试

+

首先,让我们使用 Python 内置的 timeit 模块对代码进行基准测试。 +我们在这里保持基准测试代码简单,以便我们可以比较 timeittorch.utils.benchmark 的默认设置。

import timeit
 
 t0 = timeit.Timer(
-    stmt='batched_dot_mul_sum(x, x)',
-    setup='from __main__ import batched_dot_mul_sum',
-    globals={'x': x})
+    stmt="batched_dot_mul_sum(x, x)",
+    setup="from __main__ import batched_dot_mul_sum",
+    globals={"x": x},
+)
 
 t1 = timeit.Timer(
-    stmt='batched_dot_bmm(x, x)',
-    setup='from __main__ import batched_dot_bmm',
-    globals={'x': x})
+    stmt="batched_dot_bmm(x, x)",
+    setup="from __main__ import batched_dot_bmm",
+    globals={"x": x},
+)
 
-print(f'mul_sum(x, x):  {t0.timeit(100) / 100 * 1e6:>5.1f} us')
-print(f'bmm(x, x):      {t1.timeit(100) / 100 * 1e6:>5.1f} us')
+print(f"mul_sum(x, x):  {t0.timeit(100) / 100 * 1e6:>5.1f} us")
+print(f"bmm(x, x):      {t1.timeit(100) / 100 * 1e6:>5.1f} us")
 
-
-
Output
+
+
Output
 mul_sum(x, x):  111.6 us
  bmm(x, x):       70.0 us
 
-
-

3. Benchmarking with torch.utils.benchmark.Timer

-

PyTorch benchmark module was designed to be familiar to those who -have used the timeit module before. However, its defaults make it -easier and safer to use for benchmarking PyTorch code. Let’s first -compare the same basic API as above.

+
+

3. 使用 torch.utils.benchmark.Timer 进行基准测试

+

PyTorch benchmark``模块的设计使得对于那些曾经使用过 ``timeit 模块的人来说,它看起来很熟悉。 +然而,它的默认设置使得它更容易且更安全地用于对 PyTorch 代码进行基准测试。 +首先让我们对比一下基本API的使用。

import torch.utils.benchmark as benchmark
 
 t0 = benchmark.Timer(
-    stmt='batched_dot_mul_sum(x, x)',
-    setup='from __main__ import batched_dot_mul_sum',
-    globals={'x': x})
+    stmt="batched_dot_mul_sum(x, x)",
+    setup="from __main__ import batched_dot_mul_sum",
+    globals={"x": x},
+)
 
 t1 = benchmark.Timer(
-    stmt='batched_dot_bmm(x, x)',
-    setup='from __main__ import batched_dot_bmm',
-    globals={'x': x})
+    stmt="batched_dot_bmm(x, x)",
+    setup="from __main__ import batched_dot_bmm",
+    globals={"x": x},
+)
 
 print(t0.timeit(100))
 print(t1.timeit(100))
 
-
-
Output
+
+
Output
 <torch.utils.benchmark.utils.common.Measurement object at 0x7fb10400d0f0>
  batched_dot_mul_sum(x, x)
  setup: from __main__ import batched_dot_mul_sum
@@ -728,43 +720,40 @@ 

3. Benchmarking with

-

Even though the APIs are the same for the basic functionality, there -are some important differences. benchmark.Timer.timeit() returns the -time per run as opposed to the total runtime like timeit.Timer.timeit() -does. PyTorch benchmark module also provides formatted string -representations for printing the results.

-

Another important difference, and the reason why the results diverge -is that PyTorch benchmark module runs in a single thread by default. -We can change the number of threads with the num_threads argument.

-

torch.utils.benchmark.Timer takes several additional arguments -including: label, sub_label, description and env which change -the __repr__ of the measurement object returned and are used for -grouping the results (more on this later).

+

虽然基本功能的API是相同的,但是还是有一些重要的区别。 +benchmark.Timer.timeit()``返回的是每次运行的时间,而不是 ``timeit.Timer.timeit() 返回的总运行时间。 +PyTorch ``benchmark``模块还提供了格式化的字符串表示,用于打印结果。

+

另一个重要的区别,也是结果不同的原因,是PyTorch基准测试模块默认在单线程中运行。 +我们可以使用``num_threads``参数来更改线程数量。

+

torch.utils.benchmark.Timer``接受几个额外的参数,包括: ``labelsub_labeldescription``和``env, +这些参数会改变返回的测量对象的__repr__,并用于对结果进行分组(稍后会详细介绍)。

num_threads = torch.get_num_threads()
-print(f'Benchmarking on {num_threads} threads')
+print(f"Benchmarking on {num_threads} threads")
 
 t0 = benchmark.Timer(
-    stmt='batched_dot_mul_sum(x, x)',
-    setup='from __main__ import batched_dot_mul_sum',
-    globals={'x': x},
+    stmt="batched_dot_mul_sum(x, x)",
+    setup="from __main__ import batched_dot_mul_sum",
+    globals={"x": x},
     num_threads=num_threads,
-    label='Multithreaded batch dot',
-    sub_label='Implemented using mul and sum')
+    label="Multithreaded batch dot",
+    sub_label="Implemented using mul and sum",
+)
 
 t1 = benchmark.Timer(
-    stmt='batched_dot_bmm(x, x)',
-    setup='from __main__ import batched_dot_bmm',
-    globals={'x': x},
+    stmt="batched_dot_bmm(x, x)",
+    setup="from __main__ import batched_dot_bmm",
+    globals={"x": x},
     num_threads=num_threads,
-    label='Multithreaded batch dot',
-    sub_label='Implemented using bmm')
+    label="Multithreaded batch dot",
+    sub_label="Implemented using bmm",
+)
 
 print(t0.timeit(100))
 print(t1.timeit(100))
 
-
-
Output
+
+
Output
 Benchmarking on 40 threads
  <torch.utils.benchmark.utils.common.Measurement object at 0x7fb103d54080>
  Multithreaded batch dot: Implemented using mul and sum
@@ -779,34 +768,34 @@ 

3. Benchmarking with

-

Running benchmark with all threads available gives similar results -as the timeit module. More importantly, which version is faster -depends on how many threads we run the code with. This is why it’s -important to benchmark the code with thread settings that are -representative of real use cases. Another important thing to remember -is to synchronize CPU and CUDA when benchmarking on the GPU. Let’s run -the above benchmarks again on a CUDA tensor and see what happens.

-
x = torch.randn(10000, 1024, device='cuda')
+

使用所有可用线程运行 benchmark 会得到与 timeit 模块类似的结果。 +更重要的是,哪个版本更快取决于我们使用多少线程运行代码。 +这就是为什么在基准测试时,使用与实际用例相符的线程设置非常重要。 +另一个需要记住的重要事情是,在 GPU 上进行基准测试时,要同步CPU和CUDA。 +让我们再次在CUDA张量上运行上面的基准测试,看看会发生什么。

+
x = torch.randn(10000, 1024, device="cuda")
 
 t0 = timeit.Timer(
-    stmt='batched_dot_mul_sum(x, x)',
-    setup='from __main__ import batched_dot_mul_sum',
-    globals={'x': x})
+    stmt="batched_dot_mul_sum(x, x)",
+    setup="from __main__ import batched_dot_mul_sum",
+    globals={"x": x},
+)
 
 t1 = timeit.Timer(
-    stmt='batched_dot_bmm(x, x)',
-    setup='from __main__ import batched_dot_bmm',
-    globals={'x': x})
+    stmt="batched_dot_bmm(x, x)",
+    setup="from __main__ import batched_dot_bmm",
+    globals={"x": x},
+)
 
 # Ran each twice to show difference before/after warm-up
-print(f'mul_sum(x, x):  {t0.timeit(100) / 100 * 1e6:>5.1f} us')
-print(f'mul_sum(x, x):  {t0.timeit(100) / 100 * 1e6:>5.1f} us')
-print(f'bmm(x, x):      {t1.timeit(100) / 100 * 1e6:>5.1f} us')
-print(f'bmm(x, x):      {t1.timeit(100) / 100 * 1e6:>5.1f} us')
+print(f"mul_sum(x, x):  {t0.timeit(100) / 100 * 1e6:>5.1f} us")
+print(f"mul_sum(x, x):  {t0.timeit(100) / 100 * 1e6:>5.1f} us")
+print(f"bmm(x, x):      {t1.timeit(100) / 100 * 1e6:>5.1f} us")
+print(f"bmm(x, x):      {t1.timeit(100) / 100 * 1e6:>5.1f} us")
 
-
-
Output
+
+
Output
 mul_sum(x, x):   27.6 us
  mul_sum(x, x):   25.3 us
  bmm(x, x):      2775.5 us
@@ -815,22 +804,24 @@ 

3. Benchmarking with

t0 = benchmark.Timer(
-    stmt='batched_dot_mul_sum(x, x)',
-    setup='from __main__ import batched_dot_mul_sum',
-    globals={'x': x})
+    stmt="batched_dot_mul_sum(x, x)",
+    setup="from __main__ import batched_dot_mul_sum",
+    globals={"x": x},
+)
 
 t1 = benchmark.Timer(
-    stmt='batched_dot_bmm(x, x)',
-    setup='from __main__ import batched_dot_bmm',
-    globals={'x': x})
+    stmt="batched_dot_bmm(x, x)",
+    setup="from __main__ import batched_dot_bmm",
+    globals={"x": x},
+)
 
 # Run only once since benchmark module does warm-up for us
 print(t0.timeit(100))
 print(t1.timeit(100))
 
-
-
Output
+
+
Output
 <torch.utils.benchmark.utils.common.Measurement object at 0x7fb10400d080>
  batched_dot_mul_sum(x, x)
  setup: from __main__ import batched_dot_mul_sum
@@ -844,30 +835,19 @@ 

3. Benchmarking with

-

The results reveal something interesting. The first run of the bmm -version using the timeit module takes much longer than the second -run. This is because bmm calls into cuBLAS which needs to be -loaded the first time it’s called which takes some time. This is why -it’s important to do a warm-up run before benchmarking, luckily for -us, PyTorch’s benchmark module takes care of that.

-

The difference in the results between timeit and benchmark modules -is because the timeit module is not synchronizing CUDA and is thus only -timing the time to launch the kernel. PyTorch’s benchmark module does -the synchronization for us.

+

结果揭示了一些有趣的事情。使用 timeit 模块运行 bmm 版本的第一次运行比第二次运行慢很多。 +这是因为 bmm 需要调用 cuBLAS,第一次调用时需要加载它,这需要一些时间。 +这就是为什么在基准测试之前做一次预热运行很重要,幸运的是, PyTorch 的 benchmark 模块为我们处理了这个问题。

+

timeit 模块和 benchmark 模块之间结果的差异是因为 timeit 模块没有同步 CUDA,因此只计时了启动内核的时间。 +PyTorch 的 benchmark 模块为我们做了同步。

-
-

4. Benchmarking with Blocked Autorange

-

While timeit.Timer.autorange takes a single continuous measurement -of at least 0.2 seconds, torch.utils.benchmark.blocked_autorange -takes many measurements whose times total at least 0.2 seconds (which -can be changed by the min_run_time parameter) subject to the constraint -that timing overhead is a small fraction of the overall measurement. -This is accomplished by first running with an increasing number of runs -per loop until the runtime is much larger than measurement overhead -(which also serves as a warm up), and then taking measurements until -the target time is reached. This has the useful properties that it wastes -less data and allows us to compute statistics to estimate the reliability -of the measurements.

+
+

4. 使用 Blocked Autorange 进行基准测试

+

虽然 timeit.Timer.autorange 采取至少 0.2 秒的单次连续测量, +但 torch.utils.benchmark.blocked_autorange 采取多次测量,其总时间至少为 0.2 秒(可通过 min_run_time 参数更改), +并且测量开销只占总体测量的一小部分。 +这是通过首先以递增的循环次数运行,直到运行时间远大于测量开销(这也起到了热身的作用), +然后进行测量直到达到目标时间。这有一个有用的特性,即它浪费的数据更少,并且允许我们计算统计数据来估计测量的可靠性。

m0 = t0.blocked_autorange()
 m1 = t1.blocked_autorange()
 
@@ -875,8 +855,8 @@ 

4. Benchmarking with Blocked Autorangeprint(m1)

-
- +
+
Output
 <torch.utils.benchmark.utils.common.Measurement object at 0x7fb10400d0f0>
  batched_dot_mul_sum(x, x)
  setup: from __main__ import batched_dot_mul_sum
@@ -890,30 +870,26 @@ 

4. Benchmarking with Blocked Autorange

-

We can also inspect the individual statistics from the returned -measurements object.

+

我们还可以查看返回的测量对象中获得的各个统计数据。

print(f"Mean:   {m0.mean * 1e6:6.2f} us")
 print(f"Median: {m0.median * 1e6:6.2f} us")
 
-
- +
+
Output
 Mean:   231.79 us
  Median: 231.79 us
 
-
-

5. Comparing benchmark results

-

So far we’ve been comparing our two versions of batched dot against a -single input. In practice, we want to try a combination of inputs as -well as different number of threads. The Compare class helps display -the results of many measurements in a formatted table. It uses the -annotations described above (label, sub_label, num_threads, etc.) as -well as description to group and organize the table. Let’s use -Compare to see how our functions perform for different input sizes -and number of threads.

+
+

5. 比较基准测试结果

+

到目前为止,我们一直在比较我们的两个批量点积版本对同一输入的表现。 +在实践中,我们希望尝试不同的输入组合以及不同的线程数量。 +Compare 类帮助我们以格式化表格的形式显示多个测量结果。 +它使用上面描述的注释( labelsub_labelnum_threads 等)以及 description 来对表格进行分组和组织。 +让我们使用 Compare 来看看我们的函数在不同的输入大小和线程数量下的表现如何。

from itertools import product
 
 # Compare takes a list of measurements which we'll save in results.
@@ -923,35 +899,39 @@ 

5. Comparing benchmark resultsfor b, n in product(sizes, sizes): # label and sub_label are the rows # description is the column - label = 'Batched dot' - sub_label = f'[{b}, {n}]' + label = "Batched dot" + sub_label = f"[{b}, {n}]" x = torch.ones((b, n)) for num_threads in [1, 4, 16, 32]: - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals={'x': x}, - num_threads=num_threads, - label=label, - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals={"x": x}, + num_threads=num_threads, + label=label, + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.print()

-
-
Output
+
+
Output
-
-

6. Saving/Loading benchmark results

-

Measurements (and CallgrindStats which are described in section 8) -can be serialized by the pickle module. This makes A/B testing easy, as you can collect -measurements from two separate environments, pickle them, and then -load both in a single environment. Timer even takes an env -constructor argument so that such A/B testing works seamlessly.

-

Let’s imagine that rather than two Python functions, the add/sum -and bmm approaches were in two different builds of PyTorch. -The example below demonstrates how one might A/B test them. For -simplicity, we only use a subset of shapes, and simply round trip -results through pickle rather than actually using multiple environments -and writing results to disk.

+
+

6. 保存/加载基准测试结果

+

Measurements (和第8节中描述的 CallgrindStats )可以通过 pickle 模块序列化。 +这使得A/B测试变得很容易,因为您可以从两个独立的环境中收集测量结果, +将它们序列化,然后在单个环境中加载两者。Timer甚至接受一个 env +构造函数参数,以便这种A/B测试可以无缝衔接。

+

假设 add/sum 和 bmm 方法不是两个Python函数,而是 PyTorch 的两个不同版本。 +下面的示例演示了如何进行A/B测试。为了简单起见,我们只使用了一部分数据, +并简单地通过pickle来回传结果,而不是实际使用多个环境并将结果写入磁盘。

import pickle
 
 ab_test_results = []
-for env in ('environment A: mul/sum', 'environment B: bmm'):
+for env in ("environment A: mul/sum", "environment B: bmm"):
     for b, n in ((1, 1), (1024, 10000), (10000, 1)):
         x = torch.ones((b, n))
-        dot_fn = (batched_dot_mul_sum if env == 'environment A: mul/sum' else batched_dot_bmm)
+        dot_fn = (
+            batched_dot_mul_sum if env == "environment A: mul/sum" else batched_dot_bmm
+        )
         m = benchmark.Timer(
-            stmt='batched_dot(x, x)',
-            globals={'x': x, 'batched_dot': dot_fn},
+            stmt="batched_dot(x, x)",
+            globals={"x": x, "batched_dot": dot_fn},
             num_threads=1,
-            label='Batched dot',
-            description=f'[{b}, {n}]',
+            label="Batched dot",
+            description=f"[{b}, {n}]",
             env=env,
         ).blocked_autorange(min_run_time=1)
         ab_test_results.append(pickle.dumps(m))
@@ -1074,8 +1051,8 @@ 

6. Saving/Loading benchmark resultscompare.print()

-
- +
+
Output
 [------------------------------------- Batched dot -------------------------------------]
                                                 |  [1, 1]  |  [1024, 10000]  |  [10000, 1]
  1 threads: ------------------------------------------------------------------------------
@@ -1086,32 +1063,35 @@ 

6. Saving/Loading benchmark results
# And just to show that we can round trip all of the results from earlier:
+
# 仅为展示可以将之前所有的结果通过 pickle 进行回传:
 round_tripped_results = pickle.loads(pickle.dumps(results))
-assert(str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results)))
+assert str(benchmark.Compare(results)) == str(benchmark.Compare(round_tripped_results))
 
-
-

7. Generating inputs with Fuzzed Parameters

-

As we’ve seen in the previous section, there can be some stark -performance differences depending on the input tensors. Hence, it -is a good idea to run benchmarks on a number of different inputs. -However, creating all these input tensors can be tedious which is -where torch.utils.benchmark.Fuzzer and related classes come in. -Let’s take a look at how we can use the Fuzzer to create some test -cases for the benchmark.

-
from torch.utils.benchmark import Fuzzer, FuzzedParameter, FuzzedTensor, ParameterAlias
-
-# Generates random tensors with 128 to 10000000 elements and sizes k0 and k1 chosen from a
-# ``loguniform`` distribution in [1, 10000], 40% of which will be discontiguous on average.
+
+

7. 使用 Fuzzed Parameters 生成输入

+

正如我们在上一节中看到的,根据输入张量的不同,性能差异可能会很大。 +因此,在多个不同的输入上运行基准测试是一个好主意。 +但是,创建所有这些输入张量可能会很麻烦,这就是 torch.utils.benchmark.Fuzzer +和相关类的用武之地。让我们看看如何使用 Fuzzer 来创建一些用于基准测试的测试用例。

+
from torch.utils.benchmark import FuzzedParameter, FuzzedTensor, Fuzzer, ParameterAlias
+
+# 生成随机张量,元素数量在 128 到 10000000 之间,大小 k0 和 k1 从 [1, 10000] 的 `loguniform` 分布中选择,
+# 其中平均 40% 将是不连续的。
 example_fuzzer = Fuzzer(
-    parameters = [
-        FuzzedParameter('k0', minval=1, maxval=10000, distribution='loguniform'),
-        FuzzedParameter('k1', minval=1, maxval=10000, distribution='loguniform'),
+    parameters=[
+        FuzzedParameter("k0", minval=1, maxval=10000, distribution="loguniform"),
+        FuzzedParameter("k1", minval=1, maxval=10000, distribution="loguniform"),
     ],
-    tensors = [
-        FuzzedTensor('x', size=('k0', 'k1'), min_elements=128, max_elements=10000000, probability_contiguous=0.6)
+    tensors=[
+        FuzzedTensor(
+            "x",
+            size=("k0", "k1"),
+            min_elements=128,
+            max_elements=10000000,
+            probability_contiguous=0.6,
+        )
     ],
     seed=0,
 )
@@ -1119,31 +1099,35 @@ 

7. Generating inputs with Fuzzed Parametersresults = [] for tensors, tensor_params, params in example_fuzzer.take(10): # description is the column label - sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" - results.append(benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='from __main__ import batched_dot_mul_sum', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='mul/sum', - ).blocked_autorange(min_run_time=1)) - results.append(benchmark.Timer( - stmt='batched_dot_bmm(x, x)', - setup='from __main__ import batched_dot_bmm', - globals=tensors, - label='Batched dot', - sub_label=sub_label, - description='bmm', - ).blocked_autorange(min_run_time=1)) + sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}" + results.append( + benchmark.Timer( + stmt="batched_dot_mul_sum(x, x)", + setup="from __main__ import batched_dot_mul_sum", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="mul/sum", + ).blocked_autorange(min_run_time=1) + ) + results.append( + benchmark.Timer( + stmt="batched_dot_bmm(x, x)", + setup="from __main__ import batched_dot_bmm", + globals=tensors, + label="Batched dot", + sub_label=sub_label, + description="bmm", + ).blocked_autorange(min_run_time=1) + ) compare = benchmark.Compare(results) compare.trim_significant_figures() compare.print()

-
-
Output
+
+
Output
 [--------------------- Batched dot ---------------------]
                                       |  mul/sum  |   bmm
  1 threads: ----------------------------------------------
@@ -1162,32 +1146,34 @@ 

7. Generating inputs with Fuzzed Parametersfuzzers which -is great for creating a powerful set of inputs to benchmark. But to -make things even simpler, PyTorch benchmark module comes with some -built-in fuzzers for common benchmarking needs. Let’s take a look at -how we can use one of these built-in fuzzers.

+

定义自己的 fuzzers 有很大的灵活性,这对于创建强大的输入集进行基准测试非常有用。 +但为了让事情变得更简单, PyTorch 基准测试模块为常见的基准测试需求提供了一些内置的 fuzzers。 +让我们看看如何使用其中一个内置的 fuzzers

from torch.utils.benchmark.op_fuzzers import binary
 
 results = []
 for tensors, tensor_params, params in binary.BinaryOpFuzzer(seed=0).take(10):
-    sub_label=f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}"
-    results.append(benchmark.Timer(
-        stmt='batched_dot_mul_sum(x, x)',
-        setup='from __main__ import batched_dot_mul_sum',
-        globals=tensors,
-        label='Batched dot',
-        sub_label=sub_label,
-        description='mul/sum',
-    ).blocked_autorange(min_run_time=1))
-    results.append(benchmark.Timer(
-        stmt='batched_dot_bmm(x, x)',
-        setup='from __main__ import batched_dot_bmm',
-        globals=tensors,
-        label='Batched dot',
-        sub_label=sub_label,
-        description='bmm',
-    ).blocked_autorange(min_run_time=1))
+    sub_label = f"{params['k0']:<6} x {params['k1']:<4} {'' if tensor_params['x']['is_contiguous'] else '(discontiguous)'}"
+    results.append(
+        benchmark.Timer(
+            stmt="batched_dot_mul_sum(x, x)",
+            setup="from __main__ import batched_dot_mul_sum",
+            globals=tensors,
+            label="Batched dot",
+            sub_label=sub_label,
+            description="mul/sum",
+        ).blocked_autorange(min_run_time=1)
+    )
+    results.append(
+        benchmark.Timer(
+            stmt="batched_dot_bmm(x, x)",
+            setup="from __main__ import batched_dot_bmm",
+            globals=tensors,
+            label="Batched dot",
+            sub_label=sub_label,
+            description="bmm",
+        ).blocked_autorange(min_run_time=1)
+    )
 
 compare = benchmark.Compare(results)
 compare.trim_significant_figures()
@@ -1195,8 +1181,8 @@ 

7. Generating inputs with Fuzzed Parameterscompare.print()

-
- +
+
Output
 [----------------------- Batched dot ------------------------]
                                           |  mul/sum  |   bmm
  1 threads: ---------------------------------------------------
@@ -1216,24 +1202,18 @@ 

7. Generating inputs with Fuzzed Parameters -

8. Collecting instruction counts with Callgrind

-

One of the challenges of optimizing code is the variation and opacity of -wall time. There are many sources of non-determinism, from adaptive clock -speeds to resource contention with other processes. Furthermore, end-to-end -time gives no insight into where time is being spent, which is really what -we’re interested in when optimizing code.

-

A complementary approach is to also collect instruction counts. These counts -are a proxy metric and do not capture all aspects of performance -(e.g. memory or I/O bound tasks), however they do have several useful -properties. Instruction counts are reproducible, insensitive to environmental -variation, and offer fine grained insight into where a program is spending -cycles.

-

To see the utility of instruction counts, let us look at how we might -reduce the overhead of batched_dot_mul_sum. The obvious solution is to -move it to C++, so we avoid going between Python and C++ multiple times.

-

Fortunately, the source is nearly identical. One question that we have to ask -in C++ is whether we should take arguments by value or reference.

+
+

8. 使用 Callgrind 收集指令计数

+

优化代码的一个挑战是时间的变化和不透明性。有许多不确定性的来源, +从自适应时钟速度到与其他进程的资源争用。此外,端到端时间并不能揭示时间花费在哪里, +而这正是我们在优化代码时感兴趣的。

+

一种补充方法是也收集指令计数。这些计数是一种代理指标,并不能捕获性能的所有方面 +(例如内存或I/O绑定任务),但它们确实具有一些有用的特性。指令计数是可重复的, +不受环境变化的影响,并且可以提供对程序在哪里花费周期的细粒度洞察。

+

为了看到指令计数的实用性,让我们看看如何减少 batched_dot_mul_sum 的开销。 +显而易见的解决方案是将其移至 C++ ,这样我们就可以避免在 Python 和 C++ 之间多次来回切换。

+

幸运的是,源代码几乎是相同的。在 C++ 中我们必须问的一个问题是, +我们是通过值还是引用来传递参数。

batched_dot_src = """\
 /* ---- Python ---- */
 // def batched_dot_mul_sum(a, b):
@@ -1253,25 +1233,26 @@ 

8. Collecting instruction counts with """ -# PyTorch makes it easy to test our C++ implementations by providing a utility -# to JIT compile C++ source into Python extensions: +# PyTorch 提供一个实用程序来 JIT 编译 C++ 源代码为 Python 扩展, +# 使得测试我们的 C++ 实现变得很容易: import os + from torch.utils import cpp_extension + cpp_lib = cpp_extension.load_inline( - name='cpp_lib', + name="cpp_lib", cpp_sources=batched_dot_src, - extra_cflags=['-O3'], + extra_cflags=["-O3"], extra_include_paths=[ - # `load_inline` needs to know where to find ``pybind11`` headers. - os.path.join(os.getenv('CONDA_PREFIX'), 'include') + # `load_inline`需要知道`pybind11`头文件的位置。 + os.path.join(os.getenv("CONDA_PREFIX"), "include") ], - functions=['batched_dot_mul_sum_v0', 'batched_dot_mul_sum_v1'] + functions=["batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"], ) -# `load_inline` will create a shared object that is loaded into Python. When we collect -# instruction counts Timer will create a subprocess, so we need to re-import it. The -# import process is slightly more complicated for C extensions, but that's all we're -# doing here. +# `load_inline` 将创建一个共享对象,并加载到Python中。当我们收集指令计数时, +# Timer将创建一个子进程,因此我们需要重新导入它。对于C扩展,导入过程略有不同, +# 但这就是我们在这里所做的。 module_import_str = f"""\ # https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path import importlib.util @@ -1280,39 +1261,46 @@

8. Collecting instruction counts with spec.loader.exec_module(cpp_lib)""" import textwrap + + def pretty_print(result): """Import machinery for ``cpp_lib.so`` can get repetitive to look at.""" - print(repr(result).replace(textwrap.indent(module_import_str, " "), " import cpp_lib")) + print( + repr(result).replace( + textwrap.indent(module_import_str, " "), " import cpp_lib" + ) + ) t_baseline = benchmark.Timer( - stmt='batched_dot_mul_sum(x, x)', - setup='''\ -from __main__ import batched_dot_mul_sum -x = torch.randn(2, 2)''') + stmt="batched_dot_mul_sum(x, x)", + setup="""\ +from __main__ import batched_dot_mul_sum +x = torch.randn(2, 2)""", +) t0 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v0(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v0(x, x)", + setup=f"""\ {module_import_str} -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) t1 = benchmark.Timer( - stmt='cpp_lib.batched_dot_mul_sum_v1(x, x)', - setup=f'''\ + stmt="cpp_lib.batched_dot_mul_sum_v1(x, x)", + setup=f"""\ {module_import_str} -x = torch.randn(2, 2)''') +x = torch.randn(2, 2)""", +) -# Moving to C++ did indeed reduce overhead, but it's hard to tell which -# calling convention is more efficient. v1 (call with references) seems to -# be a bit faster, but it's within measurement error. +# 转移到 C++ 确实减少了开销,但很难判断哪种调用约定更有效。v1(使用引用调用)似乎稍快一些,但在测量误差范围内。 pretty_print(t_baseline.blocked_autorange()) pretty_print(t0.blocked_autorange()) pretty_print(t1.blocked_autorange())

-
-
Output
+
+
Output
 <torch.utils.benchmark.utils.common.Measurement object at 0x7fb16935d2e8>
  batched_dot_mul_sum(x, x)
  setup:
@@ -1340,26 +1328,21 @@ 

8. Collecting instruction counts with
# Let's use ``Callgrind`` to determine which is better.
+
# 让我们使用 ``Callgrind`` 来确定哪种方式更好。
 stats_v0 = t0.collect_callgrind()
 stats_v1 = t1.collect_callgrind()
 
 pretty_print(stats_v0)
 pretty_print(stats_v1)
 
-# `.as_standardized` removes file names and some path prefixes, and makes
-# it easier to read the function symbols.
+# `.as_standardized` 移除了文件名和某些路径前缀,使函数符号更易读。
 stats_v0 = stats_v0.as_standardized()
 stats_v1 = stats_v1.as_standardized()
 
-# `.delta` diffs the instruction counts, and `.denoise` removes several
-# functions in the Python interpreter that are known to have significant
-# jitter.
+# `.delta` 对指令计数进行差分, `.denoise` 则移除了 Python 解释器中已知存在显著抖动的几个函数。
 delta = stats_v1.delta(stats_v0).denoise()
 
-# `.transform` is a convenience API for transforming function names. It is
-# useful for increasing cancelation when ``diff-ing`` instructions, as well as
-# just generally improving readability.
+# `.transform` 是一个转换函数名的便利 API。它在进行 ``diff-ing`` 时很有用,因为可以增加抵消,同时也能提高可读性。
 replacements = (
     ("???:void pybind11", "pybind11"),
     ("batched_dot_mul_sum_v0", "batched_dot_mul_sum_v1"),
@@ -1370,13 +1353,12 @@ 

8. Collecting instruction counts with for before, after in replacements: delta = delta.transform(lambda l: l.replace(before, after)) -# We can use print options to control how much of the function to display. +# 我们可以使用打印选项来控制显示函数的多少内容。 torch.set_printoptions(linewidth=160) -# Once parsed, the instruction counts make clear that passing `a` and `b` -# by reference is more efficient as it skips some ``c10::TensorImpl`` bookkeeping -# for the intermediate Tensors, and is also works better with ``pybind11``. This -# is consistent with our noisy wall time observations. +# 解析后,指令计数清楚地表明,通过引用传递 `a` 和 `b` 更有效, +# 因为它跳过了一些 `c10::TensorImpl` 中间张量的簿记操作,并且与 `pybind11` 也更兼容。 +# 这与我们有噪声时间观察结果一致。 print(delta)

@@ -1416,9 +1398,9 @@

8. Collecting instruction counts with -

Learn More

-

Take a look at these other recipes to continue your learning:

+
Automatic Mixed Precision

Automatic Mixed Precision

Automatic Mixed Precision
-
PyTorch Benchmark +
PyTorch Benchmark

PyTorch Benchmark

PyTorch Benchmark

diff --git a/docs/recipes/recipes_index.html b/docs/recipes/recipes_index.html index b11579d..c9a9479 100644 --- a/docs/recipes/recipes_index.html +++ b/docs/recipes/recipes_index.html @@ -853,7 +853,7 @@

PyTorch 清零梯度

PyTorch Benchmark

-

Learn how to use PyTorch's benchmark module to measure and compare the performance of your code

+

学习如何使用 PyTorch Benchmark 模块来测量和比较代码性能

Basics

diff --git a/docs/searchindex.js b/docs/searchindex.js index 356cf07..cc23619 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["advanced/ONNXLive", "advanced/coding_ddpg", "advanced/cpp_autograd", "advanced/cpp_cuda_graphs", "advanced/cpp_export", "advanced/cpp_extension", "advanced/cpp_frontend", "advanced/ddp_pipeline", "advanced/dispatcher", "advanced/dynamic_quantization_tutorial", "advanced/extend_dispatcher", "advanced/generic_join", "advanced/neural_style_tutorial", "advanced/numpy_extensions_tutorial", "advanced/pendulum", "advanced/privateuseone", "advanced/rpc_ddp_tutorial", "advanced/semi_structured_sparse", "advanced/sharding", "advanced/static_quantization_tutorial", "advanced/super_resolution_with_onnxruntime", "advanced/torch-script-parallelism", "advanced/torch_script_custom_classes", "advanced/torch_script_custom_ops", "advanced/usb_semisup_learn", "beginner/Intro_to_TorchScript_tutorial", "beginner/audio_data_augmentation_tutorial", "beginner/audio_datasets_tutorial", "beginner/audio_feature_augmentation_tutorial", "beginner/audio_feature_extractions_tutorial", "beginner/audio_io_tutorial", "beginner/audio_resampling_tutorial", "beginner/basics/autogradqs_tutorial", "beginner/basics/buildmodel_tutorial", "beginner/basics/data_tutorial", "beginner/basics/index", "beginner/basics/intro", "beginner/basics/optimization_tutorial", "beginner/basics/quickstart_tutorial", "beginner/basics/saveloadrun_tutorial", "beginner/basics/tensorqs_tutorial", "beginner/basics/transforms_tutorial", "beginner/bettertransformer_tutorial", "beginner/blitz/autograd_tutorial", "beginner/blitz/cifar10_tutorial", "beginner/blitz/data_parallel_tutorial", "beginner/blitz/index", "beginner/blitz/neural_networks_tutorial", "beginner/blitz/tensor_tutorial", "beginner/chatbot_tutorial", "beginner/colab", "beginner/data_loading_tutorial", "beginner/dcgan_faces_tutorial", "beginner/ddp_series_fault_tolerance", "beginner/ddp_series_intro", "beginner/ddp_series_multigpu", "beginner/ddp_series_theory", "beginner/deep_learning_60min_blitz", "beginner/deeplabv3_on_android", "beginner/deeplabv3_on_ios", "beginner/deploy_seq2seq_hybrid_frontend_tutorial", "beginner/dist_overview", "beginner/examples_autograd/index", "beginner/examples_autograd/polynomial_autograd", "beginner/examples_autograd/polynomial_custom_function", "beginner/examples_nn/dynamic_net", "beginner/examples_nn/index", "beginner/examples_nn/polynomial_module", "beginner/examples_nn/polynomial_nn", "beginner/examples_nn/polynomial_optim", "beginner/examples_tensor/index", "beginner/examples_tensor/polynomial_numpy", "beginner/examples_tensor/polynomial_tensor", "beginner/fgsm_tutorial", "beginner/finetuning_torchvision_models_tutorial", "beginner/flava_finetuning_tutorial", "beginner/former_torchies/autograd_tutorial_old", "beginner/former_torchies/index", "beginner/former_torchies/nnft_tutorial", "beginner/former_torchies/parallelism_tutorial", "beginner/former_torchies/tensor_tutorial_old", "beginner/former_torchies_tutorial", "beginner/hta_intro_tutorial", "beginner/hta_trace_diff_tutorial", "beginner/hybrid_frontend/index", "beginner/hybrid_frontend/learning_hybrid_frontend_through_example_tutorial", "beginner/hybrid_frontend_tutorial", "beginner/hyperparameter_tuning_tutorial", "beginner/introyt", "beginner/introyt/autogradyt_tutorial", "beginner/introyt/captumyt", "beginner/introyt/index", "beginner/introyt/introyt1_tutorial", "beginner/introyt/modelsyt_tutorial", "beginner/introyt/tensorboardyt_tutorial", "beginner/introyt/tensors_deeper_tutorial", "beginner/introyt/trainingyt", "beginner/knowledge_distillation_tutorial", "beginner/nlp/advanced_tutorial", "beginner/nlp/deep_learning_tutorial", "beginner/nlp/index", "beginner/nlp/pytorch_tutorial", "beginner/nlp/sequence_models_tutorial", "beginner/nlp/word_embeddings_tutorial", "beginner/nn_tutorial", "beginner/onnx/export_simple_model_to_onnx_tutorial", "beginner/onnx/index", "beginner/onnx/intro_onnx", "beginner/onnx/onnx_registry_tutorial", "beginner/profiler", "beginner/ptcheat", "beginner/pytorch_with_examples", "beginner/saving_loading_models", "beginner/t5_tutorial", "beginner/template_tutorial", "beginner/text_sentiment_ngrams_tutorial", "beginner/torchtext_custom_dataset_tutorial", "beginner/transfer_learning_tutorial", "beginner/translation_transformer", "beginner/vt_tutorial", "distributed/home", "index", "intermediate/FSDP_adavnced_tutorial", "intermediate/FSDP_tutorial", "intermediate/TP_tutorial", "intermediate/autograd_saved_tensors_hooks_tutorial", "intermediate/ax_multiobjective_nas_tutorial", "intermediate/char_rnn_classification_tutorial", "intermediate/char_rnn_generation_tutorial", "intermediate/custom_function_conv_bn_tutorial", "intermediate/custom_function_double_backward_tutorial", "intermediate/ddp_series_minGPT", "intermediate/ddp_series_multinode", "intermediate/ddp_tutorial", "intermediate/dist_pipeline_parallel_tutorial", "intermediate/dist_tuto", "intermediate/dqn_with_rnn_tutorial", "intermediate/dynamic_quantization_bert_tutorial", "intermediate/ensembling", "intermediate/flask_rest_api_tutorial", "intermediate/forced_alignment_with_torchaudio_tutorial", "intermediate/forward_ad_usage", "intermediate/fx_conv_bn_fuser", "intermediate/fx_profiling_tutorial", "intermediate/inductor_debug_cpu", "intermediate/jacobians_hessians", "intermediate/mario_rl_tutorial", "intermediate/memory_format_tutorial", "intermediate/mnist_train_nas", "intermediate/model_parallel_tutorial", "intermediate/neural_tangent_kernels", "intermediate/nvfuser_intro_tutorial", "intermediate/optimizer_step_in_backward_tutorial", "intermediate/parametrizations", "intermediate/per_sample_grads", "intermediate/process_group_cpp_extension_tutorial", "intermediate/pruning_tutorial", "intermediate/quantized_transfer_learning_tutorial", "intermediate/realtime_rpi", "intermediate/reinforcement_ppo", "intermediate/reinforcement_q_learning", "intermediate/rpc_async_execution", "intermediate/rpc_param_server_tutorial", "intermediate/rpc_tutorial", "intermediate/scaled_dot_product_attention_tutorial", "intermediate/seq2seq_translation_tutorial", "intermediate/spatial_transformer_tutorial", "intermediate/speech_recognition_pipeline_tutorial", "intermediate/tensorboard_profiler_tutorial", "intermediate/tensorboard_tutorial", "intermediate/text_to_speech_with_torchaudio", "intermediate/tiatoolbox_tutorial", "intermediate/torch_compile_tutorial", "intermediate/torch_export_nightly_tutorial", "intermediate/torch_export_tutorial", "intermediate/torchrec_tutorial", "intermediate/torchserve_with_ipex", "intermediate/torchserve_with_ipex_2", "intermediate/torchvision_tutorial", "prototype/backend_config_tutorial", "prototype/distributed_rpc_profiling", "prototype/fx_graph_mode_ptq_dynamic", "prototype/fx_graph_mode_ptq_static", "prototype/fx_graph_mode_quant_guide", "prototype/gpu_quantization_torchao_tutorial", "prototype/graph_mode_dynamic_bert_tutorial", "prototype/inductor_cpp_wrapper_tutorial", "prototype/ios_coreml_workflow", "prototype/ios_gpu_workflow", "prototype/maskedtensor_adagrad", "prototype/maskedtensor_advanced_semantics", "prototype/maskedtensor_overview", "prototype/maskedtensor_sparsity", "prototype/nestedtensor", "prototype/nnapi_mobilenetv2", "prototype/numeric_suite_tutorial", "prototype/prototype_index", "prototype/pt2e_quant_ptq", "prototype/pt2e_quant_qat", "prototype/pt2e_quant_x86_inductor", "prototype/pt2e_quantizer", "prototype/semi_structured_sparse", "prototype/skip_param_init", "prototype/torchscript_freezing", "prototype/tracing_based_selective_build", "prototype/vmap_recipe", "prototype/vulkan_workflow", "recipes/amx", "recipes/android_native_app_with_custom_op", "recipes/bundled_inputs", "recipes/compiling_optimizer", "recipes/compiling_optimizer_lr_scheduler", "recipes/cuda_rpc", "recipes/deployment_with_flask", "recipes/distributed_checkpoint_recipe", "recipes/distributed_device_mesh", "recipes/distributed_optim_torchscript", "recipes/distributed_rpc_profiling", "recipes/fuse", "recipes/inference_tuning_on_aws_graviton", "recipes/intel_extension_for_pytorch", "recipes/intel_neural_compressor_for_pytorch", "recipes/mobile_interpreter", "recipes/mobile_perf", "recipes/model_preparation_android", "recipes/model_preparation_ios", "recipes/profile_with_itt", "recipes/ptmobile_recipes_summary", "recipes/quantization", "recipes/recipes/Captum_Recipe", "recipes/recipes/amp_recipe", "recipes/recipes/benchmark", "recipes/recipes/changing_default_device", "recipes/recipes/defining_a_neural_network", "recipes/recipes/dynamic_quantization", "recipes/recipes/index", "recipes/recipes/loading_data_recipe", "recipes/recipes/module_load_state_dict_tips", "recipes/recipes/profiler_recipe", "recipes/recipes/reasoning_about_shapes", "recipes/recipes/save_load_across_devices", "recipes/recipes/saving_and_loading_a_general_checkpoint", "recipes/recipes/saving_and_loading_models_for_inference", "recipes/recipes/saving_multiple_models_in_one_file", "recipes/recipes/swap_tensors", "recipes/recipes/tensorboard_with_pytorch", "recipes/recipes/timer_quick_start", "recipes/recipes/tuning_guide", "recipes/recipes/warmstarting_model_using_parameters_from_a_different_model", "recipes/recipes/what_is_state_dict", "recipes/recipes/zeroing_out_gradients", "recipes/recipes_index", "recipes/script_optimized", "recipes/torch_compile_backend_ipex", "recipes/torch_compile_user_defined_triton_kernel_tutorial", "recipes/torch_logs", "recipes/torchscript_inference", "recipes/torchserve_vertexai_tutorial", "recipes/zero_redundancy_optimizer", "src/pytorch-sphinx-theme/docs/changelog", "src/pytorch-sphinx-theme/docs/configuring", "src/pytorch-sphinx-theme/docs/demo/api", "src/pytorch-sphinx-theme/docs/demo/demo", "src/pytorch-sphinx-theme/docs/demo/lists_tables", "src/pytorch-sphinx-theme/docs/demo/long", "src/pytorch-sphinx-theme/docs/demo/structure", "src/pytorch-sphinx-theme/docs/index", "src/pytorch-sphinx-theme/docs/installing", "src/pytorch_sphinx_theme/docs/changelog", "src/pytorch_sphinx_theme/docs/configuring", "src/pytorch_sphinx_theme/docs/demo/api", "src/pytorch_sphinx_theme/docs/demo/demo", "src/pytorch_sphinx_theme/docs/demo/lists_tables", "src/pytorch_sphinx_theme/docs/demo/long", "src/pytorch_sphinx_theme/docs/demo/structure", "src/pytorch_sphinx_theme/docs/index", "src/pytorch_sphinx_theme/docs/installing"], "filenames": ["advanced/ONNXLive.rst", "advanced/coding_ddpg.rst", "advanced/cpp_autograd.rst", "advanced/cpp_cuda_graphs.rst", "advanced/cpp_export.rst", "advanced/cpp_extension.rst", "advanced/cpp_frontend.rst", "advanced/ddp_pipeline.rst", "advanced/dispatcher.rst", "advanced/dynamic_quantization_tutorial.rst", "advanced/extend_dispatcher.rst", "advanced/generic_join.rst", "advanced/neural_style_tutorial.rst", "advanced/numpy_extensions_tutorial.rst", "advanced/pendulum.rst", "advanced/privateuseone.rst", "advanced/rpc_ddp_tutorial.rst", "advanced/semi_structured_sparse.rst", "advanced/sharding.rst", "advanced/static_quantization_tutorial.rst", "advanced/super_resolution_with_onnxruntime.rst", "advanced/torch-script-parallelism.rst", "advanced/torch_script_custom_classes.rst", "advanced/torch_script_custom_ops.rst", "advanced/usb_semisup_learn.rst", "beginner/Intro_to_TorchScript_tutorial.rst", "beginner/audio_data_augmentation_tutorial.rst", "beginner/audio_datasets_tutorial.rst", "beginner/audio_feature_augmentation_tutorial.rst", "beginner/audio_feature_extractions_tutorial.rst", "beginner/audio_io_tutorial.rst", "beginner/audio_resampling_tutorial.rst", "beginner/basics/autogradqs_tutorial.rst", "beginner/basics/buildmodel_tutorial.rst", "beginner/basics/data_tutorial.rst", "beginner/basics/index.rst", "beginner/basics/intro.rst", "beginner/basics/optimization_tutorial.rst", "beginner/basics/quickstart_tutorial.rst", "beginner/basics/saveloadrun_tutorial.rst", "beginner/basics/tensorqs_tutorial.rst", "beginner/basics/transforms_tutorial.rst", "beginner/bettertransformer_tutorial.rst", "beginner/blitz/autograd_tutorial.rst", "beginner/blitz/cifar10_tutorial.rst", "beginner/blitz/data_parallel_tutorial.rst", "beginner/blitz/index.rst", "beginner/blitz/neural_networks_tutorial.rst", "beginner/blitz/tensor_tutorial.rst", "beginner/chatbot_tutorial.rst", "beginner/colab.rst", "beginner/data_loading_tutorial.rst", "beginner/dcgan_faces_tutorial.rst", "beginner/ddp_series_fault_tolerance.rst", "beginner/ddp_series_intro.rst", "beginner/ddp_series_multigpu.rst", "beginner/ddp_series_theory.rst", "beginner/deep_learning_60min_blitz.rst", "beginner/deeplabv3_on_android.rst", "beginner/deeplabv3_on_ios.rst", "beginner/deploy_seq2seq_hybrid_frontend_tutorial.rst", "beginner/dist_overview.rst", "beginner/examples_autograd/index.rst", "beginner/examples_autograd/polynomial_autograd.rst", "beginner/examples_autograd/polynomial_custom_function.rst", "beginner/examples_nn/dynamic_net.rst", "beginner/examples_nn/index.rst", "beginner/examples_nn/polynomial_module.rst", "beginner/examples_nn/polynomial_nn.rst", "beginner/examples_nn/polynomial_optim.rst", "beginner/examples_tensor/index.rst", "beginner/examples_tensor/polynomial_numpy.rst", "beginner/examples_tensor/polynomial_tensor.rst", "beginner/fgsm_tutorial.rst", "beginner/finetuning_torchvision_models_tutorial.rst", "beginner/flava_finetuning_tutorial.rst", "beginner/former_torchies/autograd_tutorial_old.rst", "beginner/former_torchies/index.rst", "beginner/former_torchies/nnft_tutorial.rst", "beginner/former_torchies/parallelism_tutorial.rst", "beginner/former_torchies/tensor_tutorial_old.rst", "beginner/former_torchies_tutorial.rst", "beginner/hta_intro_tutorial.rst", "beginner/hta_trace_diff_tutorial.rst", "beginner/hybrid_frontend/index.rst", "beginner/hybrid_frontend/learning_hybrid_frontend_through_example_tutorial.rst", "beginner/hybrid_frontend_tutorial.rst", "beginner/hyperparameter_tuning_tutorial.rst", "beginner/introyt.rst", "beginner/introyt/autogradyt_tutorial.rst", "beginner/introyt/captumyt.rst", "beginner/introyt/index.rst", "beginner/introyt/introyt1_tutorial.rst", "beginner/introyt/modelsyt_tutorial.rst", "beginner/introyt/tensorboardyt_tutorial.rst", "beginner/introyt/tensors_deeper_tutorial.rst", "beginner/introyt/trainingyt.rst", "beginner/knowledge_distillation_tutorial.rst", "beginner/nlp/advanced_tutorial.rst", "beginner/nlp/deep_learning_tutorial.rst", "beginner/nlp/index.rst", "beginner/nlp/pytorch_tutorial.rst", "beginner/nlp/sequence_models_tutorial.rst", "beginner/nlp/word_embeddings_tutorial.rst", "beginner/nn_tutorial.rst", "beginner/onnx/export_simple_model_to_onnx_tutorial.rst", "beginner/onnx/index.rst", "beginner/onnx/intro_onnx.rst", "beginner/onnx/onnx_registry_tutorial.rst", "beginner/profiler.rst", "beginner/ptcheat.rst", "beginner/pytorch_with_examples.rst", "beginner/saving_loading_models.rst", "beginner/t5_tutorial.rst", "beginner/template_tutorial.rst", "beginner/text_sentiment_ngrams_tutorial.rst", "beginner/torchtext_custom_dataset_tutorial.rst", "beginner/transfer_learning_tutorial.rst", "beginner/translation_transformer.rst", "beginner/vt_tutorial.rst", "distributed/home.rst", "index.rst", "intermediate/FSDP_adavnced_tutorial.rst", "intermediate/FSDP_tutorial.rst", "intermediate/TP_tutorial.rst", "intermediate/autograd_saved_tensors_hooks_tutorial.rst", "intermediate/ax_multiobjective_nas_tutorial.rst", "intermediate/char_rnn_classification_tutorial.rst", "intermediate/char_rnn_generation_tutorial.rst", "intermediate/custom_function_conv_bn_tutorial.rst", "intermediate/custom_function_double_backward_tutorial.rst", "intermediate/ddp_series_minGPT.rst", "intermediate/ddp_series_multinode.rst", "intermediate/ddp_tutorial.rst", "intermediate/dist_pipeline_parallel_tutorial.rst", "intermediate/dist_tuto.rst", "intermediate/dqn_with_rnn_tutorial.rst", "intermediate/dynamic_quantization_bert_tutorial.rst", "intermediate/ensembling.rst", "intermediate/flask_rest_api_tutorial.rst", "intermediate/forced_alignment_with_torchaudio_tutorial.rst", "intermediate/forward_ad_usage.rst", "intermediate/fx_conv_bn_fuser.rst", "intermediate/fx_profiling_tutorial.rst", "intermediate/inductor_debug_cpu.rst", "intermediate/jacobians_hessians.rst", "intermediate/mario_rl_tutorial.rst", "intermediate/memory_format_tutorial.rst", "intermediate/mnist_train_nas.rst", "intermediate/model_parallel_tutorial.rst", "intermediate/neural_tangent_kernels.rst", "intermediate/nvfuser_intro_tutorial.rst", "intermediate/optimizer_step_in_backward_tutorial.rst", "intermediate/parametrizations.rst", "intermediate/per_sample_grads.rst", "intermediate/process_group_cpp_extension_tutorial.rst", "intermediate/pruning_tutorial.rst", "intermediate/quantized_transfer_learning_tutorial.rst", "intermediate/realtime_rpi.rst", "intermediate/reinforcement_ppo.rst", "intermediate/reinforcement_q_learning.rst", "intermediate/rpc_async_execution.rst", "intermediate/rpc_param_server_tutorial.rst", "intermediate/rpc_tutorial.rst", "intermediate/scaled_dot_product_attention_tutorial.rst", "intermediate/seq2seq_translation_tutorial.rst", "intermediate/spatial_transformer_tutorial.rst", "intermediate/speech_recognition_pipeline_tutorial.rst", "intermediate/tensorboard_profiler_tutorial.rst", "intermediate/tensorboard_tutorial.rst", "intermediate/text_to_speech_with_torchaudio.rst", "intermediate/tiatoolbox_tutorial.rst", "intermediate/torch_compile_tutorial.rst", "intermediate/torch_export_nightly_tutorial.rst", "intermediate/torch_export_tutorial.rst", "intermediate/torchrec_tutorial.rst", "intermediate/torchserve_with_ipex.rst", "intermediate/torchserve_with_ipex_2.rst", "intermediate/torchvision_tutorial.rst", "prototype/backend_config_tutorial.rst", "prototype/distributed_rpc_profiling.rst", "prototype/fx_graph_mode_ptq_dynamic.rst", "prototype/fx_graph_mode_ptq_static.rst", "prototype/fx_graph_mode_quant_guide.rst", "prototype/gpu_quantization_torchao_tutorial.rst", "prototype/graph_mode_dynamic_bert_tutorial.rst", "prototype/inductor_cpp_wrapper_tutorial.rst", "prototype/ios_coreml_workflow.rst", "prototype/ios_gpu_workflow.rst", "prototype/maskedtensor_adagrad.rst", "prototype/maskedtensor_advanced_semantics.rst", "prototype/maskedtensor_overview.rst", "prototype/maskedtensor_sparsity.rst", "prototype/nestedtensor.rst", "prototype/nnapi_mobilenetv2.rst", "prototype/numeric_suite_tutorial.rst", "prototype/prototype_index.rst", "prototype/pt2e_quant_ptq.rst", "prototype/pt2e_quant_qat.rst", "prototype/pt2e_quant_x86_inductor.rst", "prototype/pt2e_quantizer.rst", "prototype/semi_structured_sparse.rst", "prototype/skip_param_init.rst", "prototype/torchscript_freezing.rst", "prototype/tracing_based_selective_build.rst", "prototype/vmap_recipe.rst", "prototype/vulkan_workflow.rst", "recipes/amx.rst", "recipes/android_native_app_with_custom_op.rst", "recipes/bundled_inputs.rst", "recipes/compiling_optimizer.rst", "recipes/compiling_optimizer_lr_scheduler.rst", "recipes/cuda_rpc.rst", "recipes/deployment_with_flask.rst", "recipes/distributed_checkpoint_recipe.rst", "recipes/distributed_device_mesh.rst", "recipes/distributed_optim_torchscript.rst", "recipes/distributed_rpc_profiling.rst", "recipes/fuse.rst", "recipes/inference_tuning_on_aws_graviton.rst", "recipes/intel_extension_for_pytorch.rst", "recipes/intel_neural_compressor_for_pytorch.rst", "recipes/mobile_interpreter.rst", "recipes/mobile_perf.rst", "recipes/model_preparation_android.rst", "recipes/model_preparation_ios.rst", "recipes/profile_with_itt.rst", "recipes/ptmobile_recipes_summary.rst", "recipes/quantization.rst", "recipes/recipes/Captum_Recipe.rst", "recipes/recipes/amp_recipe.rst", "recipes/recipes/benchmark.rst", "recipes/recipes/changing_default_device.rst", "recipes/recipes/defining_a_neural_network.rst", "recipes/recipes/dynamic_quantization.rst", "recipes/recipes/index.rst", "recipes/recipes/loading_data_recipe.rst", "recipes/recipes/module_load_state_dict_tips.rst", "recipes/recipes/profiler_recipe.rst", "recipes/recipes/reasoning_about_shapes.rst", "recipes/recipes/save_load_across_devices.rst", "recipes/recipes/saving_and_loading_a_general_checkpoint.rst", "recipes/recipes/saving_and_loading_models_for_inference.rst", "recipes/recipes/saving_multiple_models_in_one_file.rst", "recipes/recipes/swap_tensors.rst", "recipes/recipes/tensorboard_with_pytorch.rst", "recipes/recipes/timer_quick_start.rst", "recipes/recipes/tuning_guide.rst", "recipes/recipes/warmstarting_model_using_parameters_from_a_different_model.rst", "recipes/recipes/what_is_state_dict.rst", "recipes/recipes/zeroing_out_gradients.rst", "recipes/recipes_index.rst", "recipes/script_optimized.rst", "recipes/torch_compile_backend_ipex.rst", "recipes/torch_compile_user_defined_triton_kernel_tutorial.rst", "recipes/torch_logs.rst", "recipes/torchscript_inference.rst", "recipes/torchserve_vertexai_tutorial.rst", "recipes/zero_redundancy_optimizer.rst", "src/pytorch-sphinx-theme/docs/changelog.rst", "src/pytorch-sphinx-theme/docs/configuring.rst", "src/pytorch-sphinx-theme/docs/demo/api.rst", "src/pytorch-sphinx-theme/docs/demo/demo.rst", "src/pytorch-sphinx-theme/docs/demo/lists_tables.rst", "src/pytorch-sphinx-theme/docs/demo/long.rst", "src/pytorch-sphinx-theme/docs/demo/structure.rst", "src/pytorch-sphinx-theme/docs/index.rst", "src/pytorch-sphinx-theme/docs/installing.rst", "src/pytorch_sphinx_theme/docs/changelog.rst", "src/pytorch_sphinx_theme/docs/configuring.rst", "src/pytorch_sphinx_theme/docs/demo/api.rst", "src/pytorch_sphinx_theme/docs/demo/demo.rst", "src/pytorch_sphinx_theme/docs/demo/lists_tables.rst", "src/pytorch_sphinx_theme/docs/demo/long.rst", "src/pytorch_sphinx_theme/docs/demo/structure.rst", "src/pytorch_sphinx_theme/docs/index.rst", "src/pytorch_sphinx_theme/docs/installing.rst"], "titles": ["ONNX Live Tutorial", "TorchRL objectives: Coding a DDPG loss", "Autograd in C++ Frontend", "Using CUDA Graphs in PyTorch C++ API", "\u5728 C++ \u4e2d\u52a0\u8f7d TorchScript \u6a21\u578b", "Custom C++ and CUDA Extensions", "Using the PyTorch C++ Frontend", "Training Transformer models using Distributed Data Parallel and Pipeline Parallelism", "Registering a Dispatched Operator in C++", "(beta) Dynamic Quantization on an LSTM Word Language Model", "Extending dispatcher for a new backend in C++", "Distributed Training with Uneven Inputs Using the Join Context Manager", "Neural Transfer Using PyTorch", "Creating Extensions Using NumPy and SciPy", "Pendulum\uff1a\u4f7f\u7528 TorchRL \u7f16\u5199\u73af\u5883\u548ctransforms", "Facilitating New Backend Integration by PrivateUse1", "Combining Distributed DataParallel with Distributed RPC Framework", "(beta) Accelerating BERT with semi-structured (2:4) sparsity", "Exploring TorchRec sharding", "(beta) Static Quantization with Eager Mode in PyTorch", "(optional) PyTorch \u6a21\u578b\u5bfc\u51fa\u5230 ONNX \u5e76\u4f7f\u7528 ONNX Runtime \u8fd0\u884c", "Dynamic Parallelism in TorchScript", "Extending TorchScript with Custom C++ Classes", "Extending TorchScript with Custom C++ Operators", "Semi-Supervised Learning using USB built upon PyTorch", "TorchScript \u4ecb\u7ecd", "\u97f3\u9891\u6570\u636e\u589e\u5f3a", "\u97f3\u9891\u6570\u636e\u96c6", "\u97f3\u9891\u7279\u5f81\u589e\u5f3a", "\u97f3\u9891\u7279\u5f81\u63d0\u53d6", "\u97f3\u9891 I/O", "Audio \u91cd\u91c7\u6837", "\u81ea\u52a8\u5fae\u5206", "\u6784\u5efa\u795e\u7ecf\u7f51\u7edc", "\u6570\u636e\u96c6\u4e0e\u6570\u636e\u52a0\u8f7d\u5668", "Learn the Basics", "\u57fa\u7840\u77e5\u8bc6", "\u4f18\u5316\u6a21\u578b\u53c2\u6570", "\u5feb\u901f\u5165\u95e8", "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b", "\u5f20\u91cf", "Transforms", "\u4f7f\u7528 Better Transformer \u8fdb\u884c\u5feb\u901f Transformer \u63a8\u65ad", "A Gentle Introduction to torch.autograd", "Training a Classifier", "Optional: Data Parallelism", "Deep Learning with PyTorch: A 60 Minute Blitz", "Neural Networks", "Tensors", "Chatbot Tutorial", "Running Tutorials in Google Colab", "Writing Custom Datasets, DataLoaders and Transforms", "DCGAN \u6559\u7a0b", "Fault-tolerant Distributed Training with torchrun", "PyTorch \u5206\u5e03\u5f0f\u5e76\u884c - Video Tutorials", "\u4f7f\u7528 DDP \u8fdb\u884c\u591a GPU \u8bad\u7ec3", "What is Distributed Data Parallel (DDP)", "PyTorch \u6df1\u5ea6\u5b66\u4e60\uff1a60\u5206\u949f\u5165\u95e8", "Image Segmentation DeepLabV3 on Android", "Image Segmentation DeepLabV3 on iOS", "Deploying a Seq2Seq Model with TorchScript", "PyTorch \u5206\u5e03\u5f0f\u6982\u8ff0", "<no title>", "PyTorch: Tensors and autograd", "PyTorch: Defining New autograd Functions", "PyTorch: Control Flow + Weight Sharing", "<no title>", "PyTorch: Custom nn Modules", "PyTorch: nn", "PyTorch: optim", "<no title>", "Warm-up: numpy", "PyTorch\uff1a\u5f20\u91cf(Tensors)", "\u5bf9\u6297\u6837\u672c\u751f\u6210", "Finetuning Torchvision Models", "TorchMultimodal \u6559\u7a0b\uff1a\u5fae\u8c03 FLAVA", "Autograd", "<no title>", "nn package", "Multi-GPU Examples", "Tensors", "PyTorch for Former Torch Users", "Holistic Trace Analysis \u4ecb\u7ecd", "Holistic Trace Analysis \u5dee\u5f02\u5206\u6790", "<no title>", "Learning Hybrid Frontend Syntax Through Example", "Hybrid Frontend \u6559\u7a0b", "Ray Tune \u8d85\u53c2\u6570\u8c03\u4f18", "PyTorch \u4ecb\u7ecd - YouTube", "\u81ea\u52a8\u5fae\u5206\u57fa\u7840", "\u4f7f\u7528 Captum \u8fdb\u884c\u6a21\u578b\u7406\u89e3", "Introduction to PyTorch on YouTube", "PyTorch \u7b80\u4ecb", "\u4f7f\u7528 PyTorch \u6784\u5efa\u6a21\u578b", "PyTorch TensorBoard \u652f\u6301", "PyTorch Tensors \u4ecb\u7ecd", "\u4f7f\u7528 PyTorch \u8bad\u7ec3\u6a21\u578b", "Knowledge Distillation \u6559\u7a0b", "Advanced: Making Dynamic Decisions and the Bi-LSTM CRF", "Deep Learning with PyTorch", "Deep Learning for NLP with Pytorch", "Introduction to PyTorch", "Sequence Models and Long Short-Term Memory Networks", "Word Embeddings: Encoding Lexical Semantics", "torch.nn \u5177\u4f53\u662f\u4ec0\u4e48?", "Export a PyTorch model to ONNX", "ONNX", "ONNX \u4ecb\u7ecd", "Extending the ONNX Registry", "PyTorch \u6a21\u578b\u5206\u6790", "PyTorch Cheat Sheet", "\u8ddf\u7740\u793a\u4f8b\u5b66\u4e60 PyTorch", "Saving and Loading Models", "T5-Base Model for Summarization, Sentiment Classification, and Translation", "Template Tutorial", "torchtext \u6587\u672c\u5206\u7c7b", "Torchtext \u9884\u5904\u7406\u81ea\u5b9a\u4e49\u6587\u672c\u6570\u636e\u96c6", "\u8ba1\u7b97\u673a\u89c6\u89c9\u8fc1\u79fb\u5b66\u4e60\u6559\u7a0b", "\u6570\u636e\u83b7\u53d6\u548c\u5904\u7406", "\u4f18\u5316\u89c6\u89c9 Transformer \u6a21\u578b", "Distributed and Parallel Training Tutorials", "\u6b22\u8fce\u6765\u5230 PyTorch \u6559\u7a0b", "Advanced Model Training with Fully Sharded Data Parallel (FSDP)", "Getting Started with Fully Sharded Data Parallel(FSDP)", "Large Scale Transformer model training with Tensor Parallel (TP)", "Hooks for autograd saved tensors", "Multi-Objective NAS with Ax", "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u5b57\u7b26\u7ea7 RNN \u8fdb\u884c\u59d3\u540d\u5206\u7c7b", "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u5b57\u7b26\u7ea7 RNN \u751f\u6210\u59d3\u540d", "Fusing Convolution and Batch Norm using Custom Function", "Double Backward with Custom Functions", "Training \u201creal-world\u201d models with DDP", "Multinode Training", "Getting Started with Distributed Data Parallel", "Distributed Pipeline Parallelism Using RPC", "Writing Distributed Applications with PyTorch", "Recurrent DQN: Training recurrent policies", "(beta) Dynamic Quantization on BERT", "Model ensembling", "API \u5b9a\u4e49", "Wav2Vec2 \u5f3a\u5236\u5bf9\u9f50", "Forward-mode Automatic Differentiation (Beta)", "(beta) Building a Convolution/Batch Norm fuser in FX", "(beta) Building a Simple CPU Performance Profiler with FX", "Inductor CPU backend debugging and profiling", "Jacobians, Hessians, hvp, vhp, and more: composing function transforms", "\u8bad\u7ec3\u4e00\u4e2a\u9a6c\u91cc\u5965\u6e38\u620f\u7684 RL Agent", "(beta) Channels Last Memory Format in PyTorch", "<no title>", "Single-Machine Model Parallel Best Practices", "Neural Tangent Kernels", "Getting Started - Accelerate Your Scripts with nvFuser", "How to save memory by fusing the optimizer step into the backward pass", "Parametrizations Tutorial", "Per-sample-gradients", "Customize Process Group Backends Using Cpp Extensions", "Pruning Tutorial", "(beta) Quantized Transfer Learning for Computer Vision Tutorial", "\u5728 Raspberry Pi 4 \u4e0a\u8fdb\u884c\u5b9e\u65f6\u63a8\u7406 (30 fps!)", "\u4f7f\u7528 TorchRL \u5f3a\u5316\u5b66\u4e60 (PPO) \u6559\u7a0b", "\u5f3a\u5316\u5b66\u4e60 (DQN) \u6559\u7a0b", "Implementing Batch RPC Processing Using Asynchronous Executions", "Implementing a Parameter Server Using Distributed RPC Framework", "Getting Started with Distributed RPC Framework", "(Beta) Implementing High-Performance Transformers with Scaled Dot Product Attention (SDPA)", "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u673a\u5236\u8fdb\u884c\u7ffb\u8bd1", "Spatial Transformer Networks \u6559\u7a0b", "Wav2Vec2 \u8fdb\u884c\u8bed\u97f3\u8bc6\u522b", "PyTorch Profiler With TensorBoard", "TensorBoard \u53ef\u89c6\u5316\u6a21\u578b\u3001\u6570\u636e\u548c\u8bad\u7ec3", "Tacotron2 \u6587\u672c\u8f6c\u8bed\u97f3", "PyTorch \u548c TIAToolbox \u8fdb\u884c\u5168\u5207\u7247\u56fe\u50cf\u5206\u7c7b", "Introduction to torch.compile", "torch.export Nightly Tutorial", "torch.export Tutorial", "Introduction to TorchRec", "Grokking PyTorch Intel CPU performance from first principles", "Grokking PyTorch Intel CPU performance from first principles (Part 2)", "TorchVision \u5bf9\u8c61\u68c0\u6d4b\u5fae\u8c03\u6559\u7a0b", "(prototype) PyTorch BackendConfig Tutorial", "Profiling PyTorch RPC-Based Workloads", "(prototype) FX Graph Mode Post Training Dynamic Quantization", "(prototype) FX Graph Mode Post Training Static Quantization", "(prototype) FX Graph Mode Quantization User Guide", "(prototype) GPU Quantization with TorchAO", "(prototype) Graph Mode Dynamic Quantization on BERT", "Inductor C++ Wrapper Tutorial", "(Prototype) Convert Mobilenetv2 to Core ML", "(Prototype) Use iOS GPU in PyTorch", "(Prototype) Efficiently writing \u201csparse\u201d semantics for Adagrad with MaskedTensor", "(Prototype) MaskedTensor Advanced Semantics", "(Prototype) MaskedTensor Overview", "(Prototype) MaskedTensor Sparsity", "Getting Started with Nested Tensors", "(Beta) Convert MobileNetV2 to NNAPI", "PyTorch Numeric Suite Tutorial", "PyTorch Prototype Recipes", "(prototype) PyTorch 2 Export Post Training Quantization", "(prototype) PyTorch 2 Export Quantization-Aware Training (QAT)", "PyTorch 2 Export Quantization with X86 Backend through Inductor", "How to Write a Quantizer for PyTorch 2 Export Quantization", "(prototype) Accelerating BERT with semi-structured (2:4) sparsity", "Skipping Module Parameter Initialization", "Model Freezing in TorchScript", "(prototype) Tracing-based Selective Build Mobile Interpreter in Android and iOS", "torch.vmap", "PyTorch Vulkan Backend User Workflow", "Leverage Intel\u00ae Advanced Matrix Extensions", "Making Native Android Application that uses PyTorch prebuilt libraries", "(beta) Bundling inputs to PyTorch Models", "(beta) Compiling the optimizer with torch.compile", "(beta) Running the compiled optimizer with an LR Scheduler", "Direct Device-to-Device Communication with TensorPipe CUDA RPC", "Deploying with Flask", "Getting Started with Distributed Checkpoint (DCP)", "Getting Started with DeviceMesh", "Distributed Optimizer with TorchScript support", "Profiling PyTorch RPC-Based Workloads", "Fuse Modules Recipe", "(Beta) PyTorch Inference Performance Tuning on AWS Graviton Processors", "Intel\u00ae Extension for PyTorch*", "Ease-of-use quantization for PyTorch with Intel\u00ae Neural Compressor", "(beta) Efficient mobile interpreter in Android and iOS", "Pytorch Mobile Performance Recipes", "Model Preparation for Android Recipe", "Model Preparation for iOS Recipe", "Profiling PyTorch workloads with The Instrumentation and Tracing Technology (ITT) API", "Summary of PyTorch Mobile Recipes", "Quantization Recipe", "Model Interpretability using Captum", "Automatic Mixed Precision", "PyTorch Benchmark", "Changing default device", "PyTorch \u521b\u5efa\u795e\u7ecf\u7f51\u7edc", "Dynamic Quantization", "PyTorch Recipes", "PyTorch \u52a0\u8f7d\u6570\u636e", "Tips for Loading an nn.Module from a Checkpoint", "PyTorch Profiler", "Reasoning about Shapes in PyTorch", "PyTorch \u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b", "PyTorch \u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9", "PyTorch \u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b", "PyTorch \u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b", "Extension points in nn.Module for load_state_dict and tensor subclasses", "How to use TensorBoard with PyTorch", "Timer\u5feb\u901f\u5165\u95e8", "Performance Tuning Guide", "PyTorch \u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8", "PyTorch \u4e2d state_dict \u662f\u4ec0\u4e48", "\u4ecb\u7ecd", "PyTorch \u793a\u4f8b", "Script and Optimize for Mobile Recipe", "Intel\u00ae Extension for PyTorch* Backend", "Using User-Defined Triton Kernels with torch.compile", "(beta) Using TORCH_LOGS python API with torch.compile", "TorchScript for Deployment", "Deploying a PyTorch Stable Diffusion model as a Vertex AI Endpoint", "Shard Optimizer States with ZeroRedundancyOptimizer", "Changelog", "Configuration", "5. test_py_module", "3. Paragraph Level Markup", "4. Lists & Tables", "1. Long Sticky Nav", "1. Structural Elements", "<no title>", "Installation", "Changelog", "Configuration", "5. test_py_module", "3. Paragraph Level Markup", "4. Lists & Tables", "1. Long Sticky Nav", "1. Structural Elements", "<no title>", "Installation"], "terms": {"thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 37, 40, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 85, 86, 87, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 237, 238, 239, 240, 241, 244, 245, 247, 252, 254, 255, 256, 257, 258, 260, 261, 262, 264, 265, 269, 270, 271, 273, 274], "show": [0, 1, 5, 10, 11, 12, 14, 17, 18, 19, 22, 24, 34, 42, 44, 51, 52, 58, 59, 61, 73, 75, 82, 83, 85, 87, 90, 104, 108, 109, 113, 115, 116, 117, 118, 119, 121, 123, 126, 127, 128, 129, 130, 133, 134, 136, 138, 139, 144, 145, 147, 149, 155, 157, 158, 159, 160, 161, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 179, 182, 185, 187, 188, 189, 194, 195, 197, 198, 201, 204, 208, 211, 212, 214, 215, 216, 220, 222, 223, 225, 226, 228, 229, 230, 231, 234, 245, 247, 257, 258, 260, 262, 269, 271], "you": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 31, 32, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 64, 65, 67, 68, 73, 75, 76, 78, 81, 82, 85, 86, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 108, 109, 111, 112, 113, 114, 117, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 178, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 219, 220, 222, 223, 224, 225, 226, 228, 230, 231, 232, 234, 237, 240, 241, 245, 247, 252, 254, 255, 256, 257, 258, 260, 262, 263, 264, 269, 271, 272, 273], "neural": [0, 2, 5, 13, 14, 17, 20, 32, 35, 43, 46, 49, 51, 57, 60, 68, 73, 78, 79, 81, 97, 98, 99, 100, 101, 102, 103, 105, 107, 111, 116, 117, 119, 121, 126, 127, 128, 129, 136, 149, 156, 159, 160, 162, 165, 166, 169, 171, 177, 187, 194, 196, 199, 201, 207, 219, 220, 226, 234, 235, 247, 251], "ha": [0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 42, 43, 44, 47, 49, 50, 58, 59, 60, 61, 63, 68, 73, 74, 75, 76, 78, 80, 83, 85, 87, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 111, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 135, 136, 137, 138, 140, 142, 144, 145, 147, 150, 151, 152, 153, 156, 157, 158, 159, 160, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 180, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 195, 197, 198, 200, 201, 202, 203, 208, 211, 212, 213, 216, 217, 220, 221, 223, 228, 229, 231, 232, 234, 244, 247, 252, 256, 257, 258, 262, 263, 271, 272], "been": [0, 1, 3, 4, 6, 7, 9, 14, 15, 17, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 42, 50, 58, 59, 69, 73, 74, 80, 83, 85, 87, 101, 102, 105, 113, 119, 123, 128, 129, 130, 131, 135, 136, 140, 142, 143, 144, 145, 150, 151, 152, 153, 156, 158, 159, 160, 164, 167, 168, 169, 170, 171, 173, 174, 176, 177, 180, 182, 187, 189, 192, 193, 198, 199, 200, 201, 211, 216, 217, 220, 221, 226, 231, 244, 245, 257, 263, 272], "export": [0, 4, 8, 20, 21, 23, 47, 60, 85, 106, 107, 108, 110, 121, 132, 133, 137, 144, 164, 172, 196, 203, 204, 207, 208, 209, 219, 222, 230, 247, 251, 257], "from": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 25, 33, 34, 37, 38, 41, 42, 44, 45, 47, 48, 49, 51, 52, 53, 55, 58, 59, 60, 61, 63, 64, 67, 68, 69, 73, 75, 76, 78, 80, 82, 83, 85, 87, 90, 92, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 179, 181, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 208, 209, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 234, 235, 238, 244, 245, 246, 247, 251, 252, 254, 256, 257, 258, 260, 261, 262, 263, 269, 270, 271, 272], "appl": [0, 98, 102, 176, 184, 187, 188], "format": [0, 1, 5, 7, 9, 12, 16, 17, 19, 20, 23, 25, 51, 52, 58, 59, 60, 87, 94, 95, 96, 97, 107, 108, 110, 115, 119, 121, 122, 123, 129, 135, 137, 143, 144, 156, 157, 158, 161, 163, 166, 168, 169, 171, 173, 174, 176, 178, 181, 182, 185, 187, 188, 189, 191, 192, 194, 197, 198, 200, 201, 203, 207, 216, 220, 221, 224, 225, 228, 229, 230, 231, 234, 236, 251, 256, 262, 263, 271, 272], "us": [0, 1, 4, 8, 9, 10, 14, 15, 16, 17, 18, 19, 21, 32, 33, 38, 42, 44, 45, 47, 48, 49, 51, 52, 54, 55, 56, 57, 58, 59, 61, 63, 64, 65, 67, 68, 69, 72, 73, 75, 76, 78, 79, 80, 81, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 107, 108, 110, 111, 114, 115, 117, 118, 120, 121, 122, 124, 125, 126, 127, 128, 130, 132, 135, 137, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 156, 157, 158, 159, 160, 165, 166, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 207, 209, 210, 211, 213, 216, 218, 219, 220, 224, 225, 227, 230, 231, 232, 234, 235, 239, 244, 246, 251, 257, 260, 261, 262, 263, 269, 270, 271, 272], "allow": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 19, 22, 23, 24, 25, 32, 43, 49, 50, 51, 52, 53, 60, 61, 79, 82, 83, 85, 87, 97, 99, 101, 102, 103, 105, 108, 113, 119, 122, 123, 124, 126, 128, 130, 135, 136, 137, 139, 142, 146, 147, 150, 152, 153, 155, 156, 157, 159, 160, 161, 163, 164, 165, 166, 171, 172, 173, 174, 175, 176, 177, 178, 185, 186, 189, 190, 193, 195, 197, 198, 199, 200, 206, 208, 212, 215, 216, 228, 230, 231, 234, 244, 245, 260, 269], "easili": [0, 1, 5, 12, 19, 24, 45, 60, 61, 73, 95, 97, 109, 112, 118, 119, 122, 124, 126, 133, 135, 142, 143, 144, 150, 156, 159, 160, 163, 171, 172, 173, 174, 176, 177, 178, 182, 184, 202, 214, 215, 221, 231], "deep": [0, 1, 6, 12, 13, 25, 47, 49, 52, 60, 69, 97, 101, 103, 117, 119, 120, 121, 127, 128, 129, 137, 144, 145, 146, 153, 156, 157, 160, 165, 171, 175, 177, 207, 210, 211, 218, 221, 226, 247, 260, 269], "learn": [0, 1, 4, 6, 7, 9, 13, 14, 17, 20, 21, 25, 43, 45, 47, 49, 51, 52, 53, 54, 55, 56, 57, 60, 61, 69, 73, 79, 81, 82, 84, 86, 87, 97, 101, 103, 104, 105, 107, 108, 112, 113, 114, 115, 116, 121, 122, 123, 126, 127, 128, 131, 132, 133, 135, 136, 144, 145, 148, 152, 153, 154, 156, 158, 159, 160, 162, 165, 166, 169, 171, 173, 174, 175, 177, 178, 184, 189, 190, 191, 192, 193, 196, 197, 199, 200, 201, 203, 204, 207, 208, 210, 211, 212, 213, 214, 215, 216, 219, 221, 223, 226, 229, 237, 244, 247, 251, 253, 256, 257, 258], "devic": [0, 1, 3, 6, 7, 8, 9, 10, 11, 14, 16, 18, 19, 20, 23, 24, 25, 33, 38, 40, 42, 43, 44, 45, 48, 49, 50, 52, 53, 55, 56, 58, 59, 60, 61, 63, 64, 72, 73, 79, 80, 87, 89, 95, 97, 99, 104, 105, 110, 111, 115, 117, 118, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 137, 138, 144, 146, 147, 149, 150, 152, 154, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 174, 175, 178, 179, 181, 182, 184, 185, 186, 187, 188, 193, 194, 197, 198, 199, 201, 202, 208, 210, 211, 214, 215, 218, 219, 220, 223, 228, 230, 231, 235, 239, 240, 244, 251, 252, 254, 255, 258], "case": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 14, 16, 17, 20, 22, 23, 25, 32, 43, 49, 51, 60, 61, 68, 73, 75, 82, 85, 97, 98, 99, 101, 102, 103, 108, 111, 112, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 134, 135, 136, 138, 139, 141, 144, 145, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 179, 184, 185, 189, 191, 192, 193, 194, 197, 200, 201, 202, 205, 206, 208, 216, 220, 223, 229, 230, 231, 234, 239, 244, 252, 254], "stream": [0, 3, 15, 82, 98, 119, 134, 149, 158, 186, 208, 220], "camera": [0, 121, 158], "open": [0, 5, 9, 12, 20, 38, 49, 50, 58, 59, 60, 75, 87, 90, 103, 104, 105, 107, 115, 116, 117, 119, 122, 127, 128, 135, 137, 138, 139, 143, 146, 152, 154, 165, 166, 168, 171, 181, 185, 188, 204, 206, 208, 213, 220, 221, 222, 223, 224, 225, 226, 229, 257], "network": [0, 2, 3, 5, 7, 8, 12, 13, 14, 17, 19, 20, 21, 25, 32, 35, 43, 46, 49, 51, 57, 60, 68, 69, 73, 78, 79, 81, 92, 97, 98, 100, 101, 103, 105, 107, 111, 116, 117, 119, 121, 125, 126, 129, 132, 133, 143, 149, 150, 153, 156, 157, 162, 165, 168, 169, 171, 177, 194, 196, 199, 201, 207, 219, 220, 221, 226, 234, 235, 239, 247, 252], "exchang": [0, 49, 105, 107, 122, 135, 165, 168], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 32, 42, 43, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 61, 65, 67, 69, 73, 75, 76, 78, 80, 82, 83, 85, 86, 87, 92, 97, 98, 99, 100, 101, 105, 107, 108, 109, 110, 111, 112, 113, 116, 117, 121, 122, 123, 124, 126, 127, 128, 129, 130, 132, 133, 134, 135, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 225, 226, 227, 228, 229, 230, 231, 232, 234, 235, 239, 244, 247, 251, 252, 254, 255, 256, 260, 262, 263, 269, 271, 272], "repres": [0, 1, 5, 7, 10, 12, 13, 18, 20, 21, 25, 43, 49, 51, 52, 60, 63, 73, 75, 82, 85, 97, 103, 105, 107, 109, 110, 115, 116, 122, 123, 124, 126, 127, 136, 139, 141, 142, 143, 146, 147, 159, 160, 163, 165, 171, 173, 174, 176, 178, 182, 189, 193, 197, 198, 204, 213, 231, 244, 262, 271], "With": [0, 4, 8, 10, 15, 16, 17, 18, 19, 21, 42, 48, 52, 58, 59, 61, 73, 85, 101, 115, 124, 130, 135, 137, 144, 149, 150, 152, 161, 162, 163, 164, 165, 176, 177, 184, 186, 194, 197, 199, 200, 201, 204, 207, 211, 212, 215, 216, 224, 225, 226, 228, 229, 234, 237, 244, 247, 256, 258, 260, 262, 269, 271], "ai": [0, 75, 90, 99, 100, 104, 123, 126, 137, 146, 165, 175, 207, 214, 220, 229, 251], "develop": [0, 1, 3, 5, 8, 10, 12, 15, 23, 24, 58, 59, 60, 82, 85, 101, 105, 107, 113, 115, 135, 139, 147, 155, 163, 168, 179, 184, 186, 187, 188, 189, 192, 197, 198, 200, 204, 208, 214, 220, 221, 222, 227, 234, 235, 262, 263, 271, 272], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 34, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 64, 65, 67, 68, 73, 76, 78, 79, 80, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 237, 239, 244, 245, 247, 249, 252, 254, 255, 256, 257, 258, 260, 262, 269, 271], "more": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 25, 38, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 55, 56, 61, 67, 69, 73, 75, 76, 78, 79, 85, 97, 98, 99, 101, 102, 103, 105, 109, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 139, 141, 142, 143, 146, 149, 150, 152, 153, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 183, 184, 185, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 201, 203, 204, 205, 206, 207, 208, 212, 213, 214, 215, 216, 219, 220, 221, 223, 226, 229, 237, 244, 247, 255, 256, 258, 260, 263, 269, 272], "move": [0, 1, 4, 5, 7, 12, 23, 26, 27, 28, 29, 30, 31, 40, 43, 47, 48, 73, 74, 99, 110, 122, 123, 124, 132, 133, 134, 136, 140, 146, 149, 152, 153, 154, 155, 157, 160, 162, 163, 164, 166, 167, 168, 170, 177, 178, 183, 188, 190, 198, 199, 206, 209, 212, 214, 219, 223, 231, 234, 247, 252], "between": [0, 1, 5, 6, 8, 11, 12, 14, 16, 17, 19, 21, 22, 23, 40, 47, 48, 49, 58, 59, 60, 65, 73, 82, 83, 85, 87, 95, 97, 98, 99, 102, 103, 108, 121, 123, 124, 126, 135, 136, 137, 143, 146, 147, 149, 150, 156, 160, 162, 163, 164, 165, 169, 171, 172, 173, 174, 176, 177, 178, 181, 184, 185, 186, 189, 190, 192, 195, 196, 198, 199, 200, 201, 218, 229, 230, 231, 232, 234, 247, 255, 258, 262, 263, 271, 272], "state": [0, 1, 5, 8, 9, 10, 11, 12, 14, 17, 22, 38, 44, 49, 52, 53, 55, 60, 61, 78, 79, 87, 97, 98, 102, 112, 119, 122, 123, 127, 128, 129, 131, 133, 136, 137, 138, 141, 146, 152, 154, 156, 159, 160, 161, 162, 163, 165, 168, 181, 185, 189, 192, 195, 201, 214, 216, 229, 230, 234, 237, 251], "art": [0, 5, 44, 52, 79, 103, 119, 137, 156, 185, 229], "tool": [0, 3, 6, 8, 14, 21, 25, 51, 60, 82, 87, 98, 123, 133, 135, 136, 144, 161, 164, 168, 169, 171, 177, 182, 195, 208, 209, 213, 223, 226, 237, 254, 257], "choos": [0, 1, 8, 10, 12, 15, 44, 49, 52, 55, 59, 65, 87, 99, 111, 112, 124, 128, 133, 135, 143, 146, 153, 158, 159, 160, 165, 168, 171, 177, 178, 184, 185, 197, 199, 212, 226, 227, 229, 230], "combin": [0, 5, 10, 21, 61, 75, 87, 97, 98, 101, 103, 115, 120, 121, 123, 125, 127, 128, 129, 138, 150, 156, 157, 160, 163, 165, 183, 186, 193, 197, 199, 215, 221, 231, 234], "best": [0, 5, 6, 7, 8, 17, 23, 37, 43, 52, 58, 61, 73, 87, 98, 105, 108, 109, 112, 115, 117, 119, 121, 131, 134, 135, 137, 138, 144, 154, 157, 158, 160, 161, 163, 166, 184, 194, 199, 201, 219, 220, 221, 223, 247, 251, 254, 262, 271], "them": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 19, 23, 25, 43, 44, 47, 48, 49, 51, 53, 55, 59, 60, 61, 65, 67, 68, 73, 75, 78, 87, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 111, 112, 115, 116, 118, 121, 122, 124, 126, 127, 128, 129, 130, 134, 135, 136, 138, 139, 143, 144, 145, 149, 150, 152, 153, 154, 156, 158, 160, 161, 162, 163, 171, 176, 177, 178, 181, 184, 191, 193, 194, 195, 200, 201, 202, 208, 209, 211, 213, 218, 219, 220, 221, 225, 230, 231, 234, 237, 244, 247, 252, 260, 269], "support": [0, 4, 6, 7, 11, 14, 15, 16, 17, 18, 19, 22, 23, 24, 42, 47, 51, 56, 60, 61, 73, 78, 80, 83, 85, 91, 97, 105, 107, 109, 113, 121, 122, 123, 126, 130, 132, 133, 135, 136, 137, 141, 144, 147, 153, 155, 156, 158, 159, 161, 162, 163, 168, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 185, 187, 188, 189, 190, 191, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 208, 210, 211, 212, 214, 219, 220, 221, 223, 228, 229, 231, 247, 251, 252, 254, 255, 260, 261, 269, 270], "commun": [0, 11, 15, 18, 55, 61, 110, 113, 121, 122, 123, 124, 126, 131, 132, 133, 155, 159, 161, 162, 163, 168, 171, 176, 196, 215, 247, 251], "partner": [0, 113], "about": [0, 1, 4, 5, 6, 7, 8, 9, 10, 14, 15, 17, 19, 20, 21, 22, 23, 38, 42, 43, 49, 52, 53, 54, 55, 57, 73, 78, 87, 97, 99, 100, 101, 102, 103, 105, 107, 108, 109, 112, 113, 117, 119, 120, 121, 122, 126, 127, 128, 130, 132, 133, 135, 138, 139, 142, 143, 144, 145, 152, 154, 157, 158, 159, 160, 161, 163, 164, 165, 166, 168, 171, 172, 173, 174, 176, 178, 183, 184, 185, 187, 188, 190, 191, 192, 194, 196, 197, 198, 199, 200, 201, 203, 204, 208, 209, 215, 216, 222, 223, 228, 234, 235, 237, 244, 251, 260, 269], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 37, 42, 43, 44, 47, 48, 49, 50, 51, 52, 53, 55, 56, 58, 59, 60, 61, 67, 68, 69, 73, 75, 76, 78, 80, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 226, 228, 229, 230, 231, 234, 237, 241, 244, 245, 247, 251, 252, 254, 255, 256, 257, 258, 260, 262, 263, 264, 269, 271, 272, 273], "go": [0, 4, 11, 12, 13, 14, 16, 18, 19, 21, 22, 23, 25, 48, 49, 51, 58, 59, 60, 78, 95, 98, 101, 102, 105, 107, 108, 117, 119, 121, 122, 125, 127, 132, 135, 138, 141, 142, 143, 145, 157, 158, 160, 162, 165, 169, 177, 178, 179, 184, 187, 188, 189, 200, 204, 213, 214, 223, 228, 231, 234, 245, 256], "walk": [0, 5, 6, 10, 15, 16, 22, 23, 24, 25, 43, 54, 58, 59, 60, 61, 100, 114, 120, 121, 125, 144, 146, 162, 176, 179, 184, 186, 187, 188, 199, 204, 222, 230, 245], "through": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 21, 22, 23, 24, 25, 34, 43, 44, 47, 49, 52, 54, 55, 58, 59, 60, 61, 73, 75, 78, 84, 87, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 114, 115, 118, 119, 120, 121, 122, 124, 125, 127, 129, 130, 135, 138, 142, 143, 144, 145, 146, 147, 149, 150, 152, 154, 155, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 172, 174, 175, 176, 177, 182, 183, 184, 186, 187, 188, 189, 191, 195, 196, 197, 200, 201, 204, 205, 208, 209, 212, 214, 219, 220, 221, 222, 228, 230, 231, 245, 262, 271], "4": [0, 1, 2, 3, 5, 6, 7, 12, 13, 14, 16, 21, 23, 24, 25, 32, 34, 36, 40, 43, 45, 48, 51, 52, 53, 54, 55, 63, 64, 65, 73, 75, 80, 87, 90, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 108, 111, 113, 115, 116, 117, 119, 121, 122, 123, 125, 126, 129, 131, 132, 135, 136, 144, 146, 147, 149, 152, 153, 156, 157, 159, 160, 161, 162, 163, 166, 171, 173, 174, 176, 178, 181, 184, 189, 190, 191, 192, 193, 196, 197, 198, 204, 207, 208, 215, 219, 222, 245, 252, 254, 260, 262, 263, 266, 269, 271, 272, 275], "main": [0, 1, 3, 4, 5, 6, 7, 11, 16, 19, 22, 23, 52, 53, 55, 58, 59, 61, 87, 97, 104, 107, 108, 113, 119, 122, 123, 127, 131, 134, 135, 137, 144, 157, 160, 161, 162, 163, 166, 173, 174, 176, 177, 178, 184, 186, 187, 197, 200, 205, 206, 208, 218, 220, 221, 222, 223, 226, 247, 256, 258, 260, 262, 264, 269, 271, 273], "step": [0, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 37, 38, 43, 44, 47, 49, 52, 60, 61, 65, 67, 69, 73, 82, 85, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 110, 111, 115, 117, 118, 119, 120, 121, 122, 123, 127, 128, 129, 131, 133, 135, 136, 137, 139, 142, 144, 146, 149, 150, 153, 157, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 184, 185, 188, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 210, 211, 214, 216, 220, 221, 222, 223, 226, 228, 230, 238, 244, 245, 247, 250, 252, 253, 257, 258], "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 34, 39, 40, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 73, 75, 76, 78, 79, 82, 83, 85, 87, 95, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 219, 222, 223, 224, 225, 226, 228, 229, 231, 234, 237, 239, 244, 245, 249, 252, 254, 255, 256, 257, 258, 260, 262, 269, 271], "work": [0, 1, 2, 4, 5, 6, 7, 9, 12, 14, 17, 18, 20, 21, 22, 23, 25, 42, 43, 49, 50, 51, 52, 55, 56, 58, 59, 60, 61, 73, 78, 85, 87, 97, 98, 100, 103, 113, 115, 116, 119, 121, 125, 127, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 141, 142, 143, 145, 149, 152, 153, 154, 155, 156, 158, 159, 161, 163, 164, 165, 168, 171, 173, 174, 176, 178, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 201, 202, 203, 205, 206, 207, 208, 213, 215, 219, 220, 223, 224, 225, 230, 231, 234, 244, 247, 252, 253, 262, 263, 271, 272], "virtualenv": 0, "order": [0, 4, 6, 11, 12, 15, 17, 20, 22, 34, 44, 45, 49, 50, 55, 60, 63, 64, 65, 67, 68, 69, 73, 82, 87, 105, 107, 108, 109, 111, 113, 118, 121, 123, 125, 126, 128, 130, 133, 134, 135, 142, 143, 144, 145, 147, 155, 156, 162, 165, 166, 171, 172, 173, 174, 175, 178, 179, 182, 188, 191, 193, 194, 200, 201, 205, 213, 216, 222, 237, 252], "avoid": [0, 5, 16, 44, 58, 59, 87, 97, 122, 123, 124, 129, 133, 134, 135, 147, 150, 152, 159, 161, 177, 184, 189, 190, 193, 196, 201, 202, 223, 230, 231, 234, 237, 244], "conflict": [0, 16, 144], "your": [0, 2, 6, 8, 9, 11, 12, 14, 15, 17, 18, 19, 22, 23, 25, 38, 42, 43, 44, 45, 47, 49, 50, 51, 53, 54, 55, 58, 59, 61, 67, 73, 75, 78, 82, 87, 99, 101, 102, 103, 105, 107, 108, 109, 110, 112, 113, 114, 121, 122, 123, 125, 129, 130, 131, 132, 133, 135, 136, 137, 139, 141, 143, 145, 146, 147, 149, 152, 153, 155, 156, 157, 158, 159, 162, 163, 164, 166, 168, 169, 171, 172, 173, 174, 176, 177, 185, 186, 187, 188, 194, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 209, 210, 215, 216, 218, 222, 224, 225, 229, 230, 231, 234, 245, 246, 251, 254, 257, 260, 262, 263, 267, 269, 271, 272, 276], "local": [0, 5, 6, 7, 8, 9, 16, 18, 19, 22, 23, 49, 50, 98, 112, 114, 122, 124, 126, 133, 134, 135, 137, 152, 156, 157, 161, 162, 163, 165, 166, 177, 185, 208, 212, 216, 218, 222, 223, 230, 247, 252, 258, 260, 269], "packag": [0, 2, 5, 6, 17, 18, 22, 23, 24, 44, 47, 51, 57, 61, 68, 69, 75, 76, 77, 79, 81, 87, 97, 99, 107, 110, 111, 115, 116, 117, 119, 120, 121, 122, 123, 133, 135, 137, 143, 155, 157, 158, 160, 163, 168, 171, 177, 185, 187, 201, 208, 213, 215, 220, 223, 229, 238, 246, 251, 256, 257], "also": [0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 37, 42, 43, 47, 48, 49, 51, 52, 53, 54, 58, 59, 60, 61, 65, 67, 68, 73, 75, 76, 78, 79, 80, 82, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 108, 109, 111, 112, 113, 115, 116, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 139, 141, 142, 143, 144, 145, 149, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 188, 189, 190, 191, 192, 195, 197, 199, 200, 201, 202, 203, 205, 206, 207, 208, 211, 213, 214, 215, 216, 219, 220, 221, 222, 223, 228, 230, 231, 232, 234, 237, 244, 245, 247, 252, 255, 256, 257, 258, 260, 262, 263, 269, 271, 272], "python": [0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 14, 15, 17, 18, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 56, 57, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 125, 126, 127, 128, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 166, 168, 172, 173, 174, 175, 177, 178, 181, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 199, 203, 204, 205, 208, 211, 213, 215, 216, 220, 221, 222, 223, 226, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 256, 262, 263, 271, 272], "3": [0, 1, 2, 3, 5, 6, 7, 13, 14, 16, 17, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 43, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 75, 76, 78, 80, 87, 89, 90, 92, 93, 95, 96, 97, 98, 99, 101, 102, 103, 104, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 122, 123, 124, 127, 129, 130, 135, 136, 138, 139, 140, 142, 143, 144, 146, 147, 149, 150, 151, 152, 153, 154, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 170, 171, 172, 173, 174, 175, 177, 178, 183, 184, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 201, 202, 203, 204, 205, 206, 207, 208, 211, 213, 215, 219, 220, 221, 222, 226, 227, 229, 230, 237, 239, 244, 247, 253, 254, 256, 262, 263, 266, 271, 272, 275], "6": [0, 3, 6, 7, 11, 13, 19, 23, 34, 36, 43, 44, 47, 49, 58, 59, 60, 61, 63, 64, 65, 67, 68, 71, 72, 85, 87, 90, 92, 93, 94, 95, 96, 101, 102, 103, 109, 111, 112, 116, 117, 129, 130, 134, 135, 137, 144, 147, 149, 155, 156, 158, 161, 163, 171, 173, 174, 176, 177, 184, 185, 193, 197, 198, 201, 208, 213, 215, 218, 219, 221, 224, 225, 227, 228, 230, 239, 241, 242, 243, 247, 248, 249, 250, 252, 256, 266, 275], "other": [0, 1, 5, 6, 7, 8, 10, 11, 14, 17, 19, 21, 22, 23, 25, 44, 47, 48, 49, 52, 53, 55, 56, 57, 58, 59, 60, 61, 68, 69, 73, 75, 79, 80, 82, 83, 87, 95, 97, 99, 101, 102, 103, 111, 112, 113, 114, 116, 123, 124, 126, 127, 128, 129, 131, 132, 133, 135, 136, 137, 139, 141, 142, 143, 144, 145, 146, 149, 150, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 165, 169, 172, 173, 174, 176, 177, 178, 179, 182, 183, 184, 185, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 202, 204, 209, 214, 215, 218, 223, 228, 230, 231, 234, 237, 244, 245, 247, 252, 254, 256, 257, 258, 261, 262, 270, 271], "version": [0, 1, 3, 4, 5, 6, 7, 8, 10, 12, 14, 20, 22, 23, 25, 42, 80, 105, 107, 108, 115, 116, 119, 122, 123, 125, 126, 127, 129, 135, 136, 137, 138, 141, 145, 147, 153, 155, 156, 157, 158, 159, 166, 168, 169, 171, 175, 178, 183, 184, 185, 187, 188, 189, 197, 198, 200, 203, 204, 206, 208, 218, 219, 220, 221, 222, 223, 228, 230, 231, 234, 237, 256, 257, 260, 263, 269, 272], "should": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 32, 42, 43, 44, 49, 50, 51, 52, 53, 55, 58, 59, 60, 69, 73, 78, 82, 85, 87, 97, 98, 99, 100, 102, 103, 111, 117, 119, 121, 122, 125, 126, 127, 130, 133, 135, 136, 138, 139, 143, 146, 147, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 169, 171, 172, 173, 174, 175, 176, 177, 178, 182, 184, 187, 188, 189, 190, 191, 197, 200, 205, 206, 208, 213, 214, 218, 219, 222, 223, 226, 230, 231, 245, 247, 252, 256, 260, 262, 265, 269, 271, 274], "well": [0, 1, 3, 4, 5, 6, 8, 10, 11, 19, 20, 22, 23, 42, 44, 48, 49, 53, 60, 67, 82, 85, 87, 97, 99, 101, 105, 110, 111, 112, 113, 117, 122, 123, 125, 126, 127, 129, 130, 135, 136, 137, 141, 142, 143, 152, 153, 157, 158, 161, 162, 163, 164, 165, 168, 169, 171, 172, 177, 178, 182, 185, 187, 188, 189, 190, 191, 193, 195, 197, 200, 202, 214, 215, 220, 222, 223, 226, 231, 234, 237, 244, 247, 255, 262, 271], "python3": [0, 5, 18, 22, 23, 168, 187, 219, 246], "m": [0, 4, 5, 6, 7, 8, 10, 14, 15, 19, 22, 23, 32, 43, 49, 52, 89, 93, 96, 101, 104, 110, 113, 116, 117, 118, 122, 123, 127, 128, 134, 137, 142, 144, 145, 146, 147, 149, 155, 156, 157, 161, 163, 165, 173, 174, 183, 185, 192, 197, 198, 199, 202, 208, 219, 226, 231, 237, 244, 246, 247, 263, 272], "venv": 0, "sourc": [0, 1, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 20, 22, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 55, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 124, 125, 126, 127, 128, 129, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 161, 163, 164, 165, 166, 168, 171, 172, 174, 177, 178, 181, 184, 186, 187, 189, 190, 191, 192, 193, 194, 195, 196, 199, 203, 204, 205, 206, 211, 218, 220, 221, 222, 223, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 257], "bin": [0, 4, 6, 22, 23, 92, 135, 186, 194, 195, 204, 208, 218, 220, 223, 226], "activ": [0, 5, 6, 9, 10, 12, 14, 15, 17, 19, 47, 52, 82, 93, 97, 99, 104, 122, 124, 131, 135, 137, 144, 145, 152, 156, 158, 164, 168, 177, 179, 182, 185, 186, 187, 195, 199, 200, 201, 205, 207, 208, 219, 220, 221, 226, 228, 229, 234, 238, 247, 256, 262, 271], "need": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 34, 43, 44, 45, 47, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 63, 64, 67, 75, 76, 79, 82, 83, 87, 97, 98, 99, 101, 102, 103, 105, 108, 111, 112, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 177, 178, 179, 182, 184, 185, 187, 188, 189, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 212, 213, 214, 215, 216, 219, 220, 221, 222, 223, 224, 225, 226, 228, 230, 231, 244, 245, 247, 252, 256, 262, 271], "instal": [0, 1, 5, 6, 7, 8, 17, 20, 23, 24, 50, 51, 53, 55, 57, 58, 87, 90, 94, 107, 115, 116, 118, 119, 122, 123, 124, 127, 128, 131, 132, 135, 136, 139, 141, 143, 146, 155, 158, 159, 160, 161, 165, 168, 171, 172, 178, 184, 185, 187, 188, 194, 204, 206, 208, 213, 219, 222, 223, 224, 225, 226, 227, 229, 231, 233, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 256, 266, 275], "pip": [0, 17, 20, 24, 50, 75, 82, 90, 94, 105, 107, 115, 118, 119, 137, 139, 146, 157, 158, 160, 168, 171, 172, 178, 184, 194, 206, 219, 221, 223, 229, 231, 233, 236, 238, 240, 241, 242, 243, 245, 248, 249, 250], "torchvis": [0, 4, 10, 12, 19, 20, 33, 34, 37, 38, 39, 41, 43, 44, 50, 52, 57, 58, 59, 73, 75, 87, 90, 92, 94, 96, 97, 110, 117, 119, 121, 122, 123, 129, 134, 137, 139, 142, 143, 146, 148, 149, 152, 157, 158, 161, 162, 166, 168, 169, 171, 172, 176, 177, 182, 184, 187, 188, 194, 195, 197, 198, 199, 200, 204, 206, 213, 220, 221, 223, 224, 225, 227, 228, 229, 233, 236, 238, 245, 247, 250, 253, 256], "xcode": [0, 59, 188, 204, 222, 223, 225, 227], "want": [0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 19, 21, 22, 23, 24, 32, 43, 44, 47, 49, 51, 52, 58, 59, 60, 63, 64, 67, 73, 76, 78, 79, 85, 87, 97, 98, 99, 100, 101, 102, 103, 108, 111, 112, 116, 124, 125, 126, 127, 135, 136, 137, 138, 141, 143, 145, 147, 148, 150, 153, 156, 157, 158, 159, 162, 164, 165, 166, 171, 173, 174, 175, 178, 181, 182, 183, 189, 191, 195, 196, 197, 198, 200, 205, 208, 221, 222, 223, 226, 228, 230, 231, 234, 237, 240, 244], "iphon": [0, 187, 223], "linux": [0, 5, 6, 18, 20, 22, 23, 105, 124, 133, 135, 158, 168, 176, 177, 178, 194, 206, 208, 220], "howev": [0, 1, 5, 6, 8, 10, 12, 14, 15, 17, 20, 22, 23, 25, 45, 47, 49, 51, 52, 60, 61, 73, 76, 85, 87, 97, 98, 113, 117, 124, 125, 129, 130, 134, 135, 136, 138, 139, 143, 147, 149, 152, 155, 156, 157, 160, 161, 162, 163, 164, 165, 169, 171, 172, 173, 174, 176, 179, 183, 186, 190, 191, 193, 198, 200, 201, 204, 205, 207, 214, 219, 222, 223, 231, 234, 237, 244, 254, 260, 261, 269, 270], "itself": [0, 5, 7, 11, 23, 32, 43, 60, 61, 82, 85, 97, 101, 102, 108, 112, 113, 124, 125, 127, 130, 135, 141, 142, 146, 159, 162, 163, 165, 195, 213, 216, 230], "mac": [0, 20, 137, 206, 225], "For": [0, 1, 2, 4, 5, 6, 7, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 61, 63, 64, 65, 68, 73, 75, 78, 79, 80, 82, 83, 87, 97, 98, 99, 100, 102, 103, 105, 108, 111, 112, 113, 114, 115, 116, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 153, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 218, 219, 220, 221, 223, 226, 227, 228, 229, 230, 231, 234, 237, 239, 244, 245, 247, 252, 254, 255, 256, 257, 258, 260, 262, 263, 269, 271, 272], "publish": [0, 208], "http": [0, 4, 6, 7, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 40, 45, 46, 49, 58, 59, 60, 74, 75, 77, 78, 84, 90, 91, 94, 100, 104, 105, 106, 108, 113, 115, 118, 119, 120, 122, 123, 127, 128, 129, 137, 139, 140, 141, 142, 143, 147, 152, 153, 154, 155, 157, 158, 160, 165, 167, 168, 169, 170, 171, 172, 174, 178, 179, 181, 182, 184, 187, 188, 190, 192, 194, 203, 204, 205, 206, 208, 213, 218, 221, 222, 229, 230, 231, 234, 235, 236, 237, 245, 260, 262, 269, 271], "github": [0, 2, 3, 4, 6, 7, 10, 11, 16, 19, 22, 23, 24, 33, 49, 53, 54, 55, 60, 61, 78, 104, 108, 115, 118, 121, 122, 123, 124, 129, 131, 132, 133, 134, 135, 137, 138, 139, 141, 142, 143, 146, 147, 154, 155, 161, 162, 163, 168, 171, 178, 179, 182, 184, 186, 188, 204, 205, 206, 207, 208, 213, 214, 215, 218, 220, 221, 222, 229, 260, 269], "com": [0, 7, 10, 18, 19, 20, 24, 25, 33, 37, 49, 60, 75, 78, 104, 108, 115, 118, 119, 123, 127, 128, 129, 141, 142, 143, 147, 154, 155, 160, 165, 171, 178, 179, 181, 182, 184, 194, 204, 205, 206, 208, 213, 218, 222, 229, 231], "exampl": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 76, 77, 80, 82, 83, 84, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 100, 101, 104, 105, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 260, 261, 263, 266, 269, 270, 272, 275], "tree": [0, 6, 10, 12, 15, 22, 49, 60, 78, 98, 103, 113, 129, 204, 222, 260, 269], "master": [0, 4, 16, 19, 49, 60, 78, 118, 119, 123, 129, 134, 135, 142, 143, 147, 162, 163, 178, 179, 182, 188, 194, 196, 199, 204, 206, 212, 220, 222], "fast_neural_styl": 0, "If": [0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 14, 16, 17, 18, 21, 22, 23, 24, 32, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 58, 60, 61, 63, 73, 75, 76, 78, 82, 87, 95, 97, 98, 99, 100, 101, 102, 103, 112, 113, 114, 117, 118, 122, 123, 124, 125, 127, 128, 129, 133, 135, 136, 138, 139, 141, 142, 143, 144, 145, 147, 149, 152, 153, 154, 155, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 197, 198, 201, 202, 205, 206, 207, 208, 209, 213, 214, 216, 218, 220, 221, 222, 223, 225, 226, 229, 230, 232, 234, 237, 241, 244, 245, 247, 252, 257, 260, 262, 269, 271], "would": [0, 3, 4, 5, 6, 7, 8, 14, 16, 18, 19, 20, 21, 22, 23, 25, 43, 49, 53, 55, 60, 61, 73, 76, 87, 97, 98, 101, 102, 103, 108, 112, 113, 116, 117, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 136, 137, 139, 142, 143, 144, 145, 147, 149, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 165, 171, 172, 173, 174, 176, 177, 178, 182, 185, 191, 192, 196, 198, 205, 207, 209, 214, 215, 216, 223, 225, 226, 230, 244, 247], "like": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 25, 43, 44, 45, 47, 48, 49, 51, 52, 53, 58, 59, 60, 61, 65, 67, 68, 75, 78, 79, 80, 82, 85, 87, 97, 98, 99, 101, 102, 103, 105, 108, 109, 110, 111, 112, 113, 114, 116, 117, 120, 121, 123, 124, 125, 126, 127, 128, 130, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 147, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 187, 190, 191, 192, 194, 196, 197, 198, 199, 200, 201, 205, 206, 207, 208, 209, 213, 214, 215, 216, 218, 219, 220, 221, 222, 225, 226, 229, 230, 231, 232, 234, 247, 256, 257, 261, 262, 270, 271], "differ": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 32, 47, 48, 49, 51, 52, 58, 59, 60, 61, 73, 80, 81, 82, 83, 85, 87, 92, 97, 98, 99, 103, 105, 115, 116, 119, 121, 122, 123, 124, 126, 127, 128, 129, 132, 133, 134, 135, 137, 138, 139, 141, 143, 144, 145, 147, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 179, 182, 184, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 204, 206, 208, 214, 215, 216, 218, 219, 223, 228, 231, 234, 235, 245, 247, 251, 252, 258, 260, 269], "feel": [0, 6, 10, 19, 43, 49, 78, 97, 103, 105, 107, 108, 112, 122, 142, 143, 144, 146, 147, 152, 168, 173, 174, 187], "free": [0, 6, 10, 19, 22, 23, 25, 43, 49, 60, 73, 78, 85, 97, 105, 107, 108, 112, 122, 126, 129, 135, 141, 142, 143, 146, 147, 152, 159, 161, 165, 168, 173, 174, 175, 187, 216, 229, 234, 246], "skip": [0, 1, 4, 5, 10, 14, 17, 19, 23, 42, 43, 98, 112, 116, 130, 141, 146, 161, 163, 168, 174, 182, 196, 201, 212, 230, 231, 254, 255], "These": [0, 1, 5, 7, 8, 11, 12, 14, 17, 19, 20, 21, 25, 43, 49, 52, 55, 82, 87, 98, 100, 102, 103, 108, 109, 113, 117, 118, 135, 146, 157, 159, 160, 162, 164, 165, 171, 176, 177, 182, 184, 197, 198, 200, 201, 219, 231, 254, 260, 262, 269, 271], "meant": [0, 6, 11, 85, 122, 191, 247, 256], "appli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 19, 23, 25, 51, 52, 58, 59, 60, 61, 64, 68, 73, 79, 82, 85, 97, 99, 108, 111, 113, 116, 119, 121, 123, 129, 130, 133, 134, 135, 138, 139, 141, 142, 145, 146, 147, 150, 152, 153, 154, 156, 159, 161, 162, 163, 165, 166, 171, 176, 177, 178, 181, 184, 185, 189, 190, 193, 198, 201, 202, 205, 207, 208, 210, 213, 214, 215, 216, 218, 220, 223, 228, 229, 244, 247, 251, 252, 253, 255], "still": [0, 1, 5, 6, 8, 10, 11, 12, 14, 15, 17, 18, 19, 20, 23, 42, 47, 52, 61, 73, 79, 80, 87, 97, 101, 105, 109, 112, 113, 119, 122, 126, 127, 128, 133, 135, 136, 141, 142, 143, 147, 149, 152, 163, 172, 174, 176, 179, 181, 182, 184, 186, 187, 188, 189, 191, 195, 197, 200, 201, 204, 208, 209, 214, 215, 219, 222, 223, 228, 247, 258], "imag": [0, 1, 19, 23, 34, 43, 47, 49, 51, 52, 57, 60, 73, 75, 82, 87, 90, 92, 94, 96, 97, 121, 124, 126, 138, 146, 147, 149, 152, 154, 156, 158, 160, 166, 168, 169, 178, 182, 184, 193, 197, 198, 199, 204, 206, 207, 208, 215, 222, 223, 224, 225, 229, 245, 251, 256], "realli": [0, 5, 8, 23, 25, 42, 44, 98, 99, 103, 108, 113, 125, 157, 169, 189, 191, 205, 231], "optim": [0, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 32, 35, 37, 38, 43, 47, 49, 53, 55, 58, 59, 60, 61, 65, 66, 67, 73, 75, 79, 82, 85, 87, 89, 92, 94, 96, 97, 98, 102, 103, 112, 115, 117, 118, 121, 122, 123, 124, 127, 129, 131, 133, 134, 135, 136, 138, 142, 143, 144, 146, 147, 148, 149, 153, 154, 156, 157, 158, 159, 160, 161, 162, 165, 166, 168, 169, 171, 172, 174, 175, 176, 178, 182, 184, 185, 188, 189, 193, 194, 195, 196, 198, 199, 201, 203, 204, 206, 207, 214, 218, 220, 221, 222, 227, 228, 230, 231, 237, 240, 241, 242, 243, 244, 245, 248, 249, 250, 251, 253, 254, 256], "fast": [0, 1, 5, 6, 17, 18, 21, 42, 49, 104, 123, 124, 133, 150, 159, 164, 171, 184, 196, 201, 223, 234], "enough": [0, 5, 6, 17, 21, 23, 49, 82, 101, 125, 129, 158, 201, 219, 229, 230], "video": [0, 20, 43, 44, 53, 55, 56, 75, 79, 114, 120, 121, 131, 132, 158, 168, 175, 247], "reduc": [0, 3, 6, 9, 11, 17, 19, 37, 43, 56, 58, 59, 61, 97, 109, 119, 122, 123, 124, 126, 129, 131, 133, 135, 137, 145, 146, 147, 152, 156, 158, 161, 163, 168, 171, 172, 173, 174, 176, 177, 185, 186, 194, 199, 201, 203, 204, 218, 222, 223, 227, 228, 230, 231, 234, 237, 251, 258], "resolut": [0, 20, 171], "low": [0, 1, 4, 5, 6, 7, 14, 24, 25, 49, 52, 68, 82, 99, 113, 121, 127, 146, 159, 168, 177, 220, 221], "thei": [0, 1, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 20, 21, 23, 25, 44, 48, 49, 52, 55, 58, 59, 60, 73, 80, 82, 85, 97, 99, 100, 101, 102, 103, 105, 107, 108, 109, 112, 113, 115, 122, 125, 126, 127, 128, 130, 133, 134, 135, 136, 144, 145, 147, 152, 153, 159, 160, 161, 163, 165, 171, 173, 174, 176, 177, 178, 179, 182, 185, 189, 190, 191, 192, 193, 195, 197, 198, 200, 202, 203, 207, 208, 214, 215, 220, 224, 225, 231, 234, 237, 245, 247, 252, 260, 262, 269, 271], "let": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 43, 44, 45, 47, 49, 51, 52, 58, 59, 60, 68, 73, 75, 76, 78, 79, 80, 85, 87, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 111, 112, 116, 117, 118, 119, 124, 126, 130, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 147, 149, 150, 152, 153, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 184, 187, 188, 189, 190, 193, 200, 201, 208, 210, 214, 215, 219, 222, 223, 229, 231, 237, 244, 245, 247, 256, 257, 260, 262, 269, 271], "s": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 57, 58, 59, 61, 68, 73, 76, 78, 79, 80, 85, 87, 92, 93, 95, 96, 97, 98, 99, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 115, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 207, 208, 209, 210, 212, 213, 214, 215, 216, 219, 222, 223, 224, 225, 228, 229, 230, 231, 234, 237, 244, 245, 247, 249, 251, 252, 254, 256, 257, 258, 260, 262, 263, 269, 271, 272], "git": [0, 178, 184, 213, 218, 266, 275], "clone": [0, 1, 11, 12, 14, 22, 23, 54, 95, 110, 127, 130, 131, 135, 144, 145, 147, 156, 208, 209, 213, 218], "cd": [0, 4, 6, 22, 23, 168, 178, 181, 188, 194, 206, 208, 218, 225, 226], "yourself": [0, 4, 5, 6, 8, 23, 42, 60, 101, 146, 183], "repositori": [0, 6, 10, 54, 58, 59, 83, 114, 119, 122, 124, 135, 155, 163, 164, 165, 178, 204, 206, 208, 213, 222, 260, 267, 269, 276], "just": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 16, 17, 19, 20, 21, 22, 23, 25, 42, 44, 45, 47, 49, 50, 51, 52, 53, 56, 60, 65, 67, 73, 76, 78, 85, 87, 95, 97, 98, 99, 101, 102, 103, 111, 112, 113, 116, 117, 122, 123, 124, 126, 127, 128, 133, 136, 137, 144, 145, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 169, 171, 176, 178, 182, 184, 186, 188, 191, 194, 197, 198, 200, 201, 204, 208, 213, 215, 216, 220, 228, 231, 232, 247, 262, 264, 271, 273], "inform": [0, 1, 2, 4, 5, 7, 8, 10, 14, 20, 22, 23, 25, 45, 49, 53, 64, 73, 78, 82, 87, 97, 101, 102, 103, 108, 111, 112, 113, 118, 119, 123, 125, 126, 127, 128, 133, 135, 136, 137, 141, 142, 143, 146, 157, 158, 159, 160, 162, 164, 165, 168, 169, 171, 173, 175, 176, 177, 178, 179, 182, 183, 184, 187, 192, 193, 194, 197, 202, 205, 206, 207, 213, 214, 215, 223, 226, 228, 230, 231, 247, 252, 255, 256, 262, 271], "how": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 42, 43, 44, 45, 47, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 73, 75, 78, 80, 82, 85, 86, 87, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 112, 113, 115, 116, 117, 118, 119, 120, 121, 125, 126, 127, 128, 130, 131, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 199, 201, 203, 204, 207, 208, 209, 211, 213, 218, 219, 221, 223, 224, 225, 228, 229, 230, 231, 234, 235, 237, 244, 247, 251, 252, 253, 254, 255, 257, 262, 264, 266, 271, 273, 275], "do": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 39, 42, 47, 49, 50, 51, 52, 54, 58, 59, 60, 61, 63, 64, 68, 69, 76, 78, 80, 85, 87, 97, 98, 99, 101, 102, 103, 105, 108, 111, 112, 114, 116, 118, 121, 123, 124, 125, 126, 127, 129, 132, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 148, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 163, 165, 169, 171, 173, 174, 176, 177, 178, 181, 182, 184, 185, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 208, 213, 214, 216, 218, 221, 222, 223, 224, 225, 226, 228, 230, 231, 232, 237, 241, 244, 245, 247, 251, 256, 261, 263, 270, 272], "now": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 42, 43, 44, 45, 47, 49, 50, 51, 52, 55, 58, 59, 60, 63, 73, 76, 78, 80, 85, 87, 96, 97, 98, 99, 101, 103, 105, 107, 108, 111, 116, 117, 118, 119, 122, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 139, 142, 143, 144, 145, 146, 150, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 165, 166, 168, 169, 171, 172, 174, 175, 176, 178, 179, 181, 182, 184, 185, 187, 188, 189, 190, 193, 194, 197, 199, 200, 201, 202, 205, 208, 211, 213, 214, 216, 223, 224, 230, 232, 234, 244, 245, 249, 256, 262, 271], "ll": [0, 1, 4, 5, 6, 8, 9, 10, 17, 19, 20, 22, 23, 48, 49, 50, 60, 87, 98, 105, 127, 128, 135, 136, 138, 139, 141, 145, 150, 152, 154, 158, 159, 160, 162, 165, 169, 176, 181, 182, 183, 184, 185, 187, 188, 189, 191, 195, 197, 198, 200, 201, 210, 211, 213, 223, 231, 255], "pre": [0, 19, 98, 122, 124, 135, 137, 157, 158, 171, 178, 184, 185, 187, 188, 200, 214, 216, 222, 223, 257], "script": [0, 1, 5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 20, 21, 22, 24, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 55, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 166, 168, 171, 172, 173, 174, 176, 177, 178, 181, 182, 184, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 206, 208, 209, 211, 213, 216, 218, 219, 220, 222, 223, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256], "provid": [0, 1, 4, 5, 6, 8, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 44, 49, 51, 52, 56, 58, 59, 60, 61, 73, 82, 83, 85, 87, 97, 98, 99, 105, 107, 108, 112, 113, 115, 116, 118, 120, 121, 122, 124, 125, 126, 131, 132, 133, 134, 135, 136, 137, 142, 143, 144, 145, 146, 147, 156, 158, 159, 161, 162, 164, 168, 171, 172, 173, 174, 178, 185, 187, 191, 192, 194, 195, 196, 197, 198, 200, 201, 202, 205, 207, 208, 209, 213, 214, 216, 218, 219, 220, 221, 223, 226, 227, 229, 230, 231, 234, 237, 245, 247, 262, 271], "download_saved_model": 0, "py": [0, 1, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 19, 20, 22, 23, 24, 25, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80, 84, 85, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 162, 164, 165, 166, 168, 172, 173, 174, 178, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 195, 199, 203, 204, 205, 206, 211, 213, 215, 221, 223, 226, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 257, 260, 262, 267, 269, 271, 276], "put": [0, 2, 5, 6, 8, 12, 14, 16, 42, 45, 49, 51, 59, 75, 85, 113, 115, 121, 122, 123, 134, 135, 136, 149, 153, 158, 159, 160, 162, 163, 165, 171, 187, 199, 200, 208, 262, 271], "saved_model": [0, 96], "folder": [0, 4, 6, 19, 23, 50, 52, 82, 83, 122, 137, 169, 178, 181, 182, 185, 188, 197, 198, 204, 206, 208, 213, 218, 224, 225], "There": [0, 4, 6, 8, 10, 14, 15, 17, 22, 23, 25, 47, 73, 76, 79, 85, 97, 98, 99, 102, 103, 113, 117, 120, 128, 132, 136, 138, 143, 145, 147, 149, 150, 152, 154, 157, 158, 159, 162, 163, 165, 173, 174, 178, 179, 181, 191, 194, 197, 200, 201, 213, 228, 231, 234, 247, 252, 255, 263, 272], "file": [0, 2, 5, 6, 7, 8, 9, 10, 15, 19, 20, 21, 22, 23, 50, 51, 52, 55, 58, 59, 60, 75, 82, 83, 87, 101, 109, 110, 114, 116, 118, 119, 122, 125, 126, 127, 128, 133, 135, 137, 139, 144, 152, 155, 158, 168, 171, 173, 174, 178, 181, 182, 185, 186, 188, 192, 193, 197, 198, 204, 206, 207, 209, 214, 215, 218, 220, 221, 222, 223, 224, 225, 230, 231, 235, 237, 245, 256, 257, 260, 261, 263, 267, 269, 270, 272, 276], "candi": 0, "pth": [0, 5, 9, 19, 20, 23, 24, 38, 39, 44, 60, 73, 112, 171, 181, 182, 184, 197, 198, 220, 221, 237, 242, 252], "mosaic": 0, "rain_princess": 0, "udni": 0, "directori": [0, 1, 4, 5, 6, 12, 22, 23, 49, 51, 52, 75, 87, 97, 112, 114, 117, 126, 127, 128, 137, 144, 157, 165, 168, 171, 184, 185, 188, 194, 204, 208, 214, 221, 223, 226, 245, 257], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 34, 40, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 63, 68, 69, 73, 76, 78, 79, 80, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 149, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 211, 213, 214, 215, 216, 219, 220, 222, 223, 224, 225, 226, 228, 230, 231, 232, 234, 240, 241, 244, 245, 247, 249, 252, 254, 256, 257, 258, 262, 271], "The": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 42, 43, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 67, 68, 69, 73, 75, 76, 78, 79, 80, 82, 83, 85, 91, 93, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 228, 230, 231, 234, 237, 244, 245, 247, 252, 253, 255, 256, 257, 258, 260, 263, 269, 272], "definit": [0, 5, 6, 8, 10, 20, 22, 25, 47, 58, 59, 60, 68, 73, 78, 85, 99, 111, 121, 143, 153, 160, 164, 181, 190, 208, 209, 218, 221, 228, 247, 252, 262, 271], "previous": [0, 4, 5, 8, 20, 32, 60, 85, 101, 115, 118, 141, 142, 156, 159, 160, 161, 168, 189, 197, 205, 223, 244], "few": [0, 5, 6, 8, 9, 10, 15, 19, 21, 22, 23, 47, 51, 56, 60, 79, 85, 97, 99, 100, 101, 102, 103, 112, 113, 115, 116, 120, 122, 125, 127, 128, 129, 133, 135, 136, 149, 153, 158, 159, 162, 165, 172, 177, 179, 184, 190, 191, 192, 197, 198, 208, 209, 211, 214, 216, 220, 221, 230, 247], "line": [0, 4, 5, 6, 8, 9, 12, 13, 17, 21, 22, 23, 49, 50, 51, 56, 58, 59, 60, 61, 82, 97, 99, 109, 115, 116, 126, 127, 128, 135, 143, 144, 149, 158, 162, 163, 165, 168, 169, 172, 173, 177, 181, 186, 188, 189, 191, 208, 214, 215, 220, 221, 222, 224, 225, 237, 245, 247, 252, 255, 256, 263, 272], "In": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 42, 43, 45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 64, 65, 67, 68, 73, 75, 76, 78, 79, 80, 81, 82, 83, 85, 86, 87, 95, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 226, 229, 230, 231, 234, 237, 244, 245, 247, 254, 255, 256, 257, 258, 262, 263, 265, 271, 272, 274], "instead": [0, 4, 5, 6, 8, 10, 14, 17, 19, 20, 22, 23, 25, 32, 44, 45, 49, 51, 52, 53, 58, 59, 60, 61, 64, 98, 99, 103, 107, 108, 109, 113, 116, 117, 122, 123, 125, 126, 127, 128, 129, 130, 131, 134, 135, 142, 143, 145, 146, 147, 149, 150, 152, 155, 156, 157, 158, 161, 162, 163, 165, 166, 169, 171, 172, 176, 177, 178, 179, 184, 189, 191, 192, 193, 198, 199, 200, 201, 205, 209, 214, 216, 219, 223, 239, 252, 258], "actual": [0, 1, 3, 5, 6, 8, 11, 13, 14, 15, 19, 21, 22, 23, 25, 38, 49, 51, 52, 58, 59, 60, 73, 85, 97, 98, 101, 103, 108, 112, 116, 118, 121, 125, 126, 127, 129, 133, 135, 139, 142, 143, 150, 152, 159, 165, 168, 169, 172, 173, 174, 175, 177, 182, 184, 189, 191, 197, 198, 200, 204, 205, 223, 224, 225, 231, 234, 252], "net": [0, 3, 6, 14, 19, 24, 44, 45, 47, 49, 52, 73, 79, 81, 85, 87, 92, 94, 97, 110, 123, 125, 129, 135, 146, 150, 158, 162, 166, 168, 169, 203, 209, 221, 230, 233, 239, 240, 241, 242, 243, 249, 250, 262, 263, 271, 272], "call": [0, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 32, 42, 43, 44, 45, 47, 49, 51, 52, 53, 55, 58, 59, 60, 61, 63, 67, 68, 69, 73, 75, 76, 78, 80, 85, 95, 97, 98, 99, 101, 102, 103, 109, 111, 112, 113, 116, 118, 120, 121, 123, 124, 125, 126, 128, 133, 134, 135, 136, 137, 141, 142, 143, 144, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 176, 177, 182, 183, 185, 186, 187, 188, 194, 195, 198, 201, 204, 205, 206, 207, 208, 211, 213, 214, 216, 218, 219, 223, 224, 225, 228, 230, 231, 232, 234, 237, 238, 241, 245, 247, 252, 262, 271], "torch": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 63, 64, 65, 67, 68, 69, 72, 73, 75, 76, 78, 79, 85, 87, 89, 90, 92, 94, 95, 96, 97, 98, 99, 102, 103, 105, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 127, 128, 129, 130, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 165, 166, 168, 169, 171, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 196, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 224, 225, 226, 228, 232, 233, 234, 236, 238, 239, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 256, 257, 258], "_export": [0, 174, 197, 198, 199], "which": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 42, 43, 44, 47, 48, 49, 50, 51, 52, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 69, 73, 75, 76, 78, 79, 82, 83, 85, 87, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 204, 207, 208, 211, 212, 215, 216, 221, 222, 223, 226, 227, 228, 229, 230, 231, 232, 234, 237, 244, 247, 252, 254, 255, 256, 258, 260, 262, 263, 269, 271, 272], "api": [0, 2, 5, 8, 10, 11, 14, 15, 18, 20, 21, 22, 23, 24, 25, 33, 34, 41, 48, 56, 60, 61, 82, 90, 107, 108, 109, 113, 121, 123, 124, 125, 126, 127, 133, 134, 135, 137, 143, 144, 145, 154, 157, 161, 162, 163, 168, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 194, 195, 196, 197, 198, 199, 203, 204, 205, 208, 212, 213, 214, 215, 216, 220, 221, 222, 223, 228, 229, 231, 232, 234, 236, 246, 251, 252, 253, 254, 256, 261, 270], "directli": [0, 4, 5, 6, 8, 11, 12, 14, 20, 22, 23, 25, 42, 48, 52, 61, 85, 87, 105, 107, 108, 113, 118, 124, 130, 131, 137, 145, 158, 159, 163, 165, 182, 184, 185, 191, 192, 193, 202, 206, 209, 212, 216, 221, 222, 228], "don": [0, 5, 6, 8, 10, 21, 42, 43, 44, 52, 53, 63, 73, 76, 87, 98, 99, 102, 108, 111, 112, 113, 117, 125, 126, 127, 129, 130, 137, 143, 145, 146, 148, 152, 157, 159, 160, 163, 164, 182, 183, 185, 187, 188, 189, 190, 191, 200, 211, 216, 222, 226, 230, 260, 262, 263, 269, 271, 272], "t": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 22, 23, 24, 25, 32, 34, 37, 38, 40, 42, 43, 44, 47, 48, 49, 50, 52, 53, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 76, 78, 87, 89, 94, 96, 97, 98, 99, 101, 102, 103, 105, 108, 110, 111, 112, 113, 115, 116, 117, 122, 123, 125, 126, 127, 129, 130, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 193, 195, 197, 198, 200, 201, 205, 206, 208, 209, 210, 211, 216, 219, 222, 226, 228, 230, 231, 234, 236, 237, 239, 247, 249, 252, 254, 255, 260, 262, 263, 269, 271, 272], "even": [0, 1, 4, 5, 6, 8, 10, 14, 16, 21, 23, 25, 43, 44, 51, 73, 76, 78, 95, 103, 108, 112, 113, 115, 122, 123, 124, 130, 133, 139, 142, 143, 145, 153, 159, 161, 164, 171, 173, 174, 176, 184, 189, 191, 192, 195, 200, 203, 213, 219, 228, 231, 247], "becaus": [0, 1, 2, 4, 5, 6, 8, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 32, 34, 42, 43, 44, 47, 48, 49, 51, 52, 55, 56, 58, 59, 60, 61, 63, 69, 73, 78, 79, 85, 87, 97, 98, 99, 101, 105, 108, 111, 112, 116, 117, 119, 125, 127, 129, 130, 133, 134, 136, 137, 141, 143, 145, 146, 147, 149, 150, 154, 156, 157, 161, 163, 165, 166, 168, 172, 173, 174, 176, 178, 181, 183, 184, 185, 188, 189, 191, 194, 195, 198, 200, 201, 203, 205, 208, 210, 211, 213, 219, 228, 230, 231, 234, 244, 247, 252, 254, 255], "alreadi": [0, 1, 2, 4, 5, 6, 10, 11, 15, 22, 23, 79, 97, 98, 108, 113, 124, 126, 129, 133, 139, 147, 149, 152, 157, 158, 159, 164, 169, 173, 174, 176, 177, 191, 194, 200, 212, 216, 219, 220, 223, 228, 231, 247, 258], "exist": [0, 2, 4, 6, 8, 9, 10, 11, 17, 22, 23, 25, 47, 49, 52, 53, 67, 73, 76, 80, 83, 85, 95, 101, 104, 121, 135, 137, 142, 156, 158, 163, 164, 165, 166, 168, 171, 172, 173, 174, 181, 185, 188, 189, 190, 192, 197, 200, 201, 203, 208, 209, 212, 216, 225, 230, 231, 244, 247], "neural_styl": 0, "take": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 19, 20, 21, 23, 25, 34, 43, 44, 47, 48, 49, 50, 51, 52, 58, 59, 60, 61, 68, 73, 75, 78, 82, 85, 95, 97, 99, 101, 102, 103, 108, 110, 112, 113, 116, 117, 118, 124, 125, 126, 127, 128, 130, 133, 134, 135, 137, 139, 143, 145, 146, 149, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 165, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 182, 184, 189, 192, 193, 195, 197, 198, 199, 200, 201, 205, 208, 209, 213, 216, 219, 220, 221, 222, 223, 228, 231, 232, 234, 244, 247, 252, 256, 257, 260, 262, 269, 271], "look": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 23, 25, 34, 43, 44, 47, 48, 49, 50, 51, 52, 73, 78, 79, 85, 87, 98, 99, 101, 102, 103, 105, 108, 112, 113, 116, 117, 118, 123, 124, 125, 126, 130, 135, 136, 138, 147, 149, 150, 152, 156, 158, 159, 162, 163, 164, 165, 168, 169, 171, 173, 174, 175, 177, 178, 181, 182, 186, 187, 189, 192, 193, 197, 198, 199, 213, 219, 220, 223, 231, 245, 257], "essenti": [0, 6, 10, 14, 32, 49, 98, 99, 101, 135, 160, 173, 174, 202, 209, 221, 234, 252], "trace": [0, 5, 8, 10, 20, 21, 43, 49, 60, 78, 107, 109, 110, 112, 121, 137, 142, 144, 150, 164, 168, 173, 174, 187, 194, 196, 203, 209, 220, 223, 224, 225, 238, 247, 251, 255], "so": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 42, 44, 47, 49, 51, 52, 53, 58, 59, 60, 65, 68, 73, 75, 76, 78, 80, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 108, 109, 111, 113, 115, 116, 117, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 134, 135, 136, 137, 139, 142, 143, 144, 145, 146, 148, 149, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 179, 182, 183, 184, 185, 187, 188, 189, 191, 192, 193, 194, 195, 197, 198, 200, 201, 202, 204, 206, 208, 209, 216, 219, 220, 222, 223, 224, 225, 226, 227, 228, 230, 231, 234, 237, 246, 247, 252, 257, 258, 261, 262, 263, 270, 271, 272], "intern": [0, 5, 8, 10, 11, 15, 22, 49, 56, 60, 68, 76, 97, 111, 113, 121, 123, 126, 135, 168, 176, 188, 189, 196, 203, 207, 208, 262, 271], "dummi": [0, 1, 8, 20, 47, 78, 85, 110, 133, 138, 145, 154, 155, 176, 185, 199, 214, 221, 252, 256], "data": [0, 2, 3, 5, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 24, 33, 34, 37, 38, 40, 41, 43, 46, 47, 48, 51, 58, 59, 67, 68, 71, 72, 73, 75, 76, 78, 79, 82, 85, 89, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 111, 112, 113, 116, 118, 119, 120, 121, 125, 126, 129, 131, 134, 135, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 154, 158, 160, 161, 162, 163, 169, 172, 173, 174, 176, 177, 178, 182, 183, 184, 185, 188, 190, 192, 193, 196, 197, 198, 199, 200, 201, 205, 206, 207, 208, 213, 214, 215, 216, 218, 219, 220, 221, 223, 226, 229, 230, 231, 234, 235, 236, 237, 239, 244, 245, 249, 250, 251, 252, 253, 258, 262, 266, 271, 275], "gener": [0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 22, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 53, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 114, 116, 117, 118, 119, 121, 124, 125, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160, 161, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 181, 184, 186, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 203, 204, 205, 207, 208, 209, 211, 213, 214, 219, 220, 221, 222, 223, 225, 226, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 254, 255, 260, 262, 263, 266, 269, 271, 272, 275], "graph": [0, 1, 5, 10, 14, 20, 22, 23, 25, 32, 47, 49, 63, 65, 68, 76, 78, 82, 85, 86, 98, 100, 107, 110, 111, 125, 127, 130, 142, 143, 144, 145, 147, 162, 163, 168, 169, 171, 176, 179, 186, 196, 197, 198, 200, 206, 207, 216, 218, 220, 221, 245, 252, 255, 256], "input": [0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 22, 23, 25, 32, 42, 43, 44, 45, 47, 48, 49, 56, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 76, 78, 79, 83, 85, 87, 89, 90, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 120, 122, 123, 124, 126, 128, 129, 131, 133, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 150, 152, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 181, 182, 183, 184, 185, 187, 188, 192, 193, 194, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 219, 220, 221, 223, 229, 230, 233, 234, 238, 239, 250, 255, 256, 263, 272], "simpli": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 19, 21, 23, 43, 44, 49, 53, 58, 59, 60, 78, 85, 101, 103, 112, 113, 124, 126, 128, 130, 134, 135, 144, 145, 149, 152, 155, 156, 159, 160, 161, 162, 165, 166, 169, 172, 176, 177, 179, 187, 188, 190, 202, 205, 214, 218, 220, 223, 224, 225, 228, 231, 234, 252], "blank": [0, 262, 271], "pixel": [0, 1, 20, 44, 73, 97, 136, 147, 166, 171, 204, 229], "size": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 21, 23, 25, 32, 33, 34, 37, 38, 43, 44, 45, 47, 49, 51, 52, 55, 58, 59, 60, 75, 78, 80, 82, 87, 92, 93, 97, 98, 101, 102, 103, 104, 110, 112, 113, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 135, 136, 138, 139, 141, 144, 145, 146, 147, 148, 149, 150, 152, 154, 155, 157, 158, 159, 160, 161, 162, 164, 165, 166, 168, 171, 172, 173, 174, 175, 177, 178, 181, 182, 183, 184, 188, 189, 192, 193, 194, 196, 198, 201, 203, 204, 208, 209, 213, 214, 216, 218, 220, 222, 223, 227, 228, 229, 230, 231, 237, 239, 245, 247, 249, 251, 252, 258, 260, 269], "import": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 52, 53, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 81, 82, 85, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 257, 258, 260, 262, 269, 271], "To": [0, 1, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 19, 20, 23, 42, 47, 49, 50, 51, 57, 58, 59, 60, 61, 64, 65, 79, 82, 83, 85, 87, 97, 98, 99, 101, 102, 103, 107, 108, 111, 112, 114, 115, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 135, 136, 137, 139, 141, 144, 149, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 168, 169, 171, 174, 175, 176, 177, 182, 184, 185, 186, 187, 188, 189, 191, 192, 196, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 215, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 237, 238, 240, 244, 245, 247, 252, 253, 255, 257, 260, 269], "get": [0, 1, 2, 5, 6, 7, 8, 11, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 38, 43, 44, 45, 49, 50, 51, 52, 55, 56, 60, 61, 63, 73, 75, 78, 83, 87, 92, 97, 98, 99, 100, 101, 102, 104, 105, 109, 111, 112, 116, 117, 119, 120, 121, 122, 124, 126, 127, 128, 129, 134, 135, 136, 137, 138, 139, 142, 143, 145, 146, 148, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 168, 169, 171, 173, 174, 175, 176, 177, 178, 181, 182, 184, 185, 189, 191, 194, 195, 197, 198, 199, 200, 201, 204, 206, 207, 208, 209, 212, 216, 218, 219, 222, 223, 226, 228, 229, 231, 234, 238, 247, 251, 256, 257, 258], "good": [0, 1, 2, 4, 5, 6, 20, 21, 44, 50, 52, 59, 97, 99, 103, 105, 113, 116, 123, 126, 135, 136, 144, 150, 158, 159, 160, 164, 169, 171, 176, 177, 178, 195, 200, 226, 228, 231, 247, 262, 271], "perform": [0, 1, 3, 4, 6, 8, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 23, 25, 42, 43, 44, 45, 49, 52, 56, 60, 61, 64, 65, 67, 73, 82, 85, 87, 97, 98, 99, 103, 108, 111, 112, 113, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 135, 136, 137, 139, 141, 142, 145, 146, 149, 150, 155, 157, 158, 159, 160, 161, 163, 166, 169, 171, 172, 178, 182, 184, 185, 186, 189, 190, 193, 194, 195, 198, 199, 201, 202, 207, 210, 212, 213, 215, 216, 218, 220, 226, 227, 228, 230, 231, 232, 234, 235, 237, 251, 252, 253, 254, 255, 256], "250x540": 0, "larger": [0, 3, 8, 12, 73, 82, 97, 112, 119, 122, 123, 124, 126, 131, 142, 149, 157, 160, 163, 165, 168, 171, 184, 193, 203, 213, 214, 219, 231, 260, 269], "care": [0, 1, 5, 14, 21, 61, 73, 87, 97, 113, 118, 130, 135, 149, 159, 163, 189, 197, 231, 232, 234], "less": [0, 3, 5, 6, 8, 19, 56, 60, 82, 97, 98, 113, 116, 117, 119, 122, 126, 136, 141, 152, 159, 160, 161, 168, 169, 172, 173, 174, 176, 184, 197, 215, 231, 234, 237], "fp": [0, 49, 87, 121, 150], "qualiti": [0, 24, 113, 146, 165], "imagemagick": 0, "creat": [0, 1, 2, 4, 5, 6, 7, 9, 10, 12, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 38, 39, 42, 43, 44, 47, 48, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 80, 82, 85, 95, 97, 98, 100, 102, 103, 105, 108, 110, 111, 114, 116, 117, 118, 119, 121, 122, 124, 130, 133, 134, 135, 136, 137, 139, 141, 142, 146, 147, 148, 149, 152, 153, 154, 155, 157, 158, 159, 160, 162, 163, 165, 168, 169, 171, 172, 175, 178, 181, 182, 184, 185, 187, 188, 189, 192, 193, 194, 195, 197, 199, 200, 202, 204, 206, 208, 209, 210, 211, 213, 214, 215, 219, 222, 223, 225, 226, 230, 231, 234, 239, 244, 245, 252, 256, 258, 262, 271], "xc": 0, "white": [0, 12, 17, 73, 113, 169, 171, 201, 262, 271], "png24": 0, "jpg": [0, 12, 20, 34, 51, 52, 58, 59, 90, 117, 139, 146, 204, 213, 229, 257], "eval": [0, 1, 7, 9, 12, 17, 19, 20, 24, 37, 38, 39, 42, 49, 58, 59, 60, 73, 90, 96, 97, 104, 112, 113, 115, 117, 118, 119, 122, 123, 125, 129, 137, 139, 142, 143, 157, 159, 162, 164, 165, 166, 171, 172, 173, 176, 177, 178, 181, 183, 184, 185, 187, 194, 195, 198, 199, 201, 204, 206, 208, 213, 220, 221, 222, 223, 228, 229, 241, 242, 243, 247, 253, 256], "content": [0, 2, 5, 9, 14, 23, 25, 50, 56, 61, 104, 112, 125, 133, 135, 158, 159, 163, 165, 172, 173, 174, 176, 177, 181, 188, 208, 213, 222, 229, 231, 266, 275], "output": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22, 23, 25, 32, 42, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 79, 82, 83, 85, 87, 90, 92, 94, 96, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 184, 185, 187, 193, 194, 195, 197, 198, 199, 200, 201, 203, 204, 206, 207, 208, 209, 210, 211, 212, 213, 218, 219, 220, 222, 223, 228, 229, 230, 231, 233, 234, 238, 239, 245, 247, 250, 252, 253, 254, 255, 256, 257, 258, 260, 262, 263, 269, 271, 272], "out": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 20, 21, 22, 23, 24, 25, 32, 40, 43, 44, 45, 47, 48, 49, 51, 52, 58, 59, 60, 61, 73, 75, 76, 78, 83, 85, 87, 89, 95, 97, 98, 99, 100, 102, 103, 104, 107, 109, 113, 117, 118, 119, 121, 124, 125, 126, 127, 130, 131, 134, 135, 136, 138, 139, 141, 143, 144, 145, 147, 149, 152, 153, 155, 156, 157, 158, 159, 161, 162, 163, 165, 168, 169, 171, 173, 174, 176, 177, 181, 182, 183, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 201, 205, 206, 207, 208, 213, 220, 221, 222, 229, 234, 235, 239, 244, 247, 252, 254, 262, 271], "cuda": [0, 1, 4, 6, 7, 8, 10, 11, 12, 15, 16, 17, 18, 19, 20, 23, 24, 33, 38, 40, 42, 43, 44, 45, 48, 49, 52, 53, 54, 55, 63, 64, 72, 73, 79, 83, 87, 89, 95, 97, 99, 104, 109, 110, 111, 112, 115, 117, 118, 121, 122, 123, 124, 129, 131, 132, 133, 134, 135, 136, 138, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 174, 175, 178, 184, 186, 193, 198, 201, 210, 211, 214, 215, 230, 231, 232, 237, 238, 240, 247, 251, 254, 255, 258], "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 55, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 197, 198, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 268, 270, 271], "export_onnx": 0, "end": [0, 4, 5, 6, 7, 8, 14, 17, 19, 22, 23, 25, 32, 43, 49, 52, 54, 58, 59, 60, 75, 82, 85, 89, 97, 102, 113, 115, 116, 121, 122, 124, 126, 127, 128, 129, 134, 135, 136, 137, 144, 146, 148, 152, 157, 158, 160, 161, 163, 165, 166, 168, 169, 172, 173, 174, 175, 176, 183, 184, 185, 189, 193, 198, 200, 201, 203, 208, 213, 220, 221, 222, 228, 230, 231, 234, 239, 244, 247, 258, 262, 271], "up": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14, 17, 18, 19, 21, 22, 42, 49, 52, 55, 60, 61, 70, 76, 78, 82, 85, 97, 98, 99, 101, 102, 103, 105, 109, 113, 119, 121, 122, 123, 124, 127, 128, 129, 131, 132, 133, 135, 136, 138, 143, 144, 150, 152, 154, 157, 158, 159, 160, 161, 162, 165, 166, 168, 169, 172, 175, 176, 177, 182, 185, 186, 187, 193, 196, 197, 198, 200, 201, 203, 204, 207, 212, 213, 215, 216, 220, 223, 224, 225, 231, 247, 251, 255, 258, 262, 271], "correspond": [0, 1, 2, 3, 5, 6, 8, 10, 12, 14, 15, 43, 49, 55, 60, 75, 82, 99, 102, 109, 112, 116, 118, 123, 125, 126, 133, 144, 152, 156, 159, 162, 165, 166, 168, 169, 171, 172, 175, 178, 185, 187, 192, 200, 209, 221, 229, 230, 237, 247, 251], "come": [0, 1, 5, 6, 10, 17, 19, 20, 22, 23, 51, 52, 60, 73, 85, 87, 97, 98, 112, 123, 124, 126, 135, 136, 144, 152, 153, 155, 159, 164, 172, 175, 182, 184, 185, 198, 199, 201, 221, 231, 258, 261, 270], "abov": [0, 1, 3, 4, 5, 6, 8, 10, 11, 14, 15, 16, 19, 20, 22, 23, 43, 44, 49, 51, 52, 58, 59, 61, 65, 67, 68, 73, 82, 95, 97, 98, 99, 101, 102, 103, 108, 110, 111, 113, 116, 122, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 139, 141, 144, 145, 146, 147, 149, 150, 152, 153, 154, 156, 157, 159, 161, 162, 163, 164, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 184, 187, 188, 189, 190, 191, 192, 195, 197, 198, 200, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 231, 234, 237, 244, 245, 252, 261, 262, 270, 271], "ad": [0, 2, 5, 6, 10, 15, 18, 22, 23, 24, 25, 32, 37, 49, 50, 53, 58, 59, 60, 61, 73, 83, 85, 95, 99, 101, 110, 112, 113, 115, 122, 123, 128, 133, 136, 139, 141, 145, 146, 150, 152, 155, 156, 160, 164, 165, 173, 174, 177, 178, 187, 188, 198, 209, 213, 220, 221, 223, 224, 225, 234, 244, 252], "our": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 16, 17, 19, 20, 21, 22, 23, 25, 40, 43, 44, 45, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 61, 64, 65, 67, 68, 69, 75, 78, 79, 87, 97, 98, 99, 102, 103, 104, 105, 108, 109, 111, 116, 117, 118, 122, 123, 126, 127, 128, 130, 131, 132, 136, 137, 139, 141, 143, 144, 145, 146, 147, 149, 150, 153, 154, 156, 157, 159, 160, 161, 162, 164, 165, 166, 169, 171, 172, 173, 174, 176, 178, 179, 182, 184, 187, 188, 189, 190, 191, 192, 194, 195, 197, 198, 201, 203, 205, 208, 209, 211, 213, 214, 216, 219, 222, 223, 229, 231, 234, 249, 251, 258], "path": [0, 4, 5, 6, 9, 18, 19, 22, 23, 34, 42, 44, 49, 50, 51, 52, 53, 59, 60, 73, 82, 87, 96, 97, 98, 104, 108, 112, 116, 117, 122, 123, 125, 126, 127, 128, 137, 139, 142, 144, 146, 148, 155, 157, 171, 172, 176, 178, 181, 182, 184, 185, 188, 189, 194, 195, 197, 198, 199, 200, 204, 206, 207, 208, 213, 214, 222, 223, 224, 225, 226, 228, 231, 234, 240, 241, 242, 243, 244, 246, 247, 248, 256, 257], "unfortun": [0, 8, 23, 25, 135], "won": [0, 3, 5, 10, 43, 115, 123, 129, 130, 141, 150, 154, 159, 228, 230, 252], "mark": [0, 49, 58, 59, 75, 124, 146, 147, 160, 161, 176, 177, 182, 183, 191, 226, 260, 269], "while": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 16, 17, 19, 21, 23, 49, 52, 55, 60, 78, 82, 89, 105, 108, 109, 113, 116, 119, 120, 122, 125, 126, 131, 133, 135, 136, 137, 139, 144, 145, 146, 147, 149, 152, 156, 157, 158, 159, 162, 163, 164, 165, 166, 172, 173, 174, 176, 177, 179, 182, 184, 185, 189, 190, 191, 192, 193, 197, 200, 201, 208, 223, 228, 230, 231, 237, 244, 247, 254], "onli": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 22, 23, 42, 43, 44, 45, 47, 49, 53, 55, 56, 60, 61, 73, 78, 80, 82, 87, 95, 97, 98, 99, 103, 107, 108, 109, 112, 113, 114, 116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 215, 216, 218, 222, 223, 224, 225, 226, 228, 230, 231, 244, 247, 252, 254, 258, 262, 271], "when": [0, 1, 5, 6, 8, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 23, 25, 32, 42, 43, 44, 45, 47, 48, 49, 50, 52, 53, 55, 58, 59, 60, 61, 65, 68, 73, 75, 78, 79, 82, 85, 87, 97, 98, 101, 103, 108, 109, 110, 111, 112, 115, 118, 119, 121, 122, 123, 125, 126, 128, 129, 132, 133, 134, 135, 136, 137, 139, 141, 143, 144, 146, 147, 149, 150, 152, 153, 155, 156, 157, 159, 160, 161, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 177, 178, 182, 183, 184, 188, 189, 192, 193, 195, 197, 198, 199, 200, 201, 202, 203, 206, 207, 208, 209, 211, 212, 213, 214, 215, 219, 226, 227, 230, 231, 234, 237, 239, 244, 247, 254, 258, 260, 262, 264, 269, 271, 273], "applic": [0, 2, 3, 11, 12, 14, 15, 23, 49, 58, 59, 60, 61, 75, 97, 105, 117, 120, 121, 123, 125, 126, 129, 133, 137, 139, 143, 149, 152, 156, 157, 161, 163, 171, 176, 184, 191, 194, 206, 212, 219, 221, 222, 223, 226, 247, 251], "netron": [0, 108], "see": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 19, 20, 21, 23, 24, 25, 42, 44, 45, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 65, 73, 75, 78, 80, 82, 83, 85, 87, 97, 98, 99, 100, 101, 102, 103, 105, 108, 109, 111, 112, 113, 116, 119, 122, 123, 124, 126, 127, 128, 129, 130, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 187, 188, 189, 191, 192, 194, 196, 197, 200, 201, 202, 203, 205, 206, 207, 208, 211, 213, 214, 215, 216, 218, 219, 222, 224, 225, 226, 228, 229, 230, 231, 234, 244, 245, 247, 252, 255, 256, 257, 262, 271], "name": [0, 1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 33, 49, 50, 51, 52, 59, 60, 78, 79, 82, 98, 103, 105, 108, 109, 110, 112, 122, 124, 125, 126, 128, 133, 134, 136, 137, 139, 141, 142, 143, 144, 147, 153, 155, 156, 159, 160, 161, 162, 164, 165, 168, 171, 172, 173, 174, 175, 178, 182, 185, 187, 195, 197, 198, 200, 201, 203, 204, 206, 208, 209, 213, 214, 215, 219, 220, 221, 222, 228, 231, 237, 238, 239, 246, 255, 256, 257, 262, 263, 271, 272], "186": [0, 184, 219], "numer": [0, 17, 19, 20, 49, 97, 98, 105, 113, 126, 129, 159, 182, 185, 196, 197, 198, 199, 201, 230, 247, 252, 263, 272], "id": [0, 9, 17, 49, 82, 95, 113, 126, 133, 137, 139, 153, 161, 162, 163, 171, 173, 174, 175, 178, 181, 201, 214, 244, 260, 261, 265, 269, 270, 274], "assign": [0, 6, 22, 45, 47, 53, 65, 67, 97, 98, 99, 102, 103, 111, 135, 153, 159, 176, 215, 226, 230, 244, 247, 261, 270], "small": [0, 1, 3, 5, 6, 9, 12, 17, 18, 20, 21, 23, 24, 25, 42, 43, 44, 47, 57, 73, 78, 79, 80, 97, 99, 100, 102, 103, 105, 116, 117, 122, 123, 126, 128, 129, 143, 149, 152, 153, 157, 158, 159, 160, 163, 165, 166, 171, 178, 184, 189, 201, 209, 219, 230, 231, 247, 255], "onnx_to_coreml": 0, "touch": [0, 2, 4, 6, 14, 22, 23, 207], "command": [0, 4, 5, 6, 14, 23, 50, 75, 107, 114, 119, 126, 127, 132, 133, 134, 137, 139, 155, 159, 161, 162, 163, 165, 168, 169, 171, 176, 178, 188, 208, 213, 215, 218, 219, 220, 222, 223, 245, 247, 255, 256, 262, 263, 271, 272], "edit": [0, 3, 6, 9, 11, 12, 16, 19, 20, 48, 50, 61, 113, 123, 124, 133, 134, 135, 137, 143, 144, 155, 157, 158, 161, 162, 163, 182, 184, 214, 215, 225, 260, 269], "favorit": [0, 42, 59, 135, 143], "editor": [0, 225], "add": [0, 2, 4, 6, 7, 8, 9, 10, 12, 14, 15, 17, 19, 21, 22, 23, 40, 44, 47, 48, 49, 50, 58, 59, 60, 61, 73, 78, 80, 85, 87, 98, 99, 102, 108, 113, 114, 116, 118, 121, 122, 123, 124, 126, 127, 128, 129, 135, 136, 139, 142, 143, 144, 145, 146, 152, 154, 155, 158, 159, 161, 162, 163, 165, 168, 173, 174, 176, 177, 181, 182, 184, 186, 187, 188, 189, 191, 199, 200, 201, 204, 206, 208, 216, 218, 222, 227, 231, 238, 251, 252, 255, 260, 262, 267, 269, 271, 276], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 42, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 73, 75, 81, 82, 83, 85, 86, 87, 97, 98, 99, 101, 102, 103, 105, 107, 108, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 129, 131, 132, 133, 135, 136, 137, 139, 142, 143, 144, 145, 146, 147, 149, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 187, 188, 190, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 205, 206, 208, 209, 213, 214, 215, 216, 218, 219, 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 237, 239, 244, 245, 252, 253, 254, 256, 257, 260, 262, 263, 267, 269, 271, 272, 276], "code": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 181, 182, 184, 185, 187, 188, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 203, 205, 207, 211, 212, 214, 215, 216, 218, 220, 221, 222, 223, 224, 225, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 261, 263, 270, 272], "sy": [0, 3, 7, 18, 19, 53, 55, 90, 133, 137, 148, 155, 182, 185, 194, 197, 198, 210, 211], "onnx_pb": 0, "onnx_coreml": 0, "model_in": 0, "argv": [0, 4, 22, 23, 53, 55, 220, 256], "1": [0, 1, 2, 3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 45, 47, 48, 49, 51, 52, 53, 55, 60, 61, 63, 64, 68, 69, 73, 75, 76, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 171, 172, 173, 174, 175, 177, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 214, 215, 216, 219, 220, 221, 222, 226, 227, 229, 230, 237, 239, 244, 245, 247, 249, 253, 256, 257, 258, 259, 260, 262, 263, 266, 268, 269, 271, 272, 275], "model_out": 0, "2": [0, 1, 2, 3, 5, 6, 7, 11, 12, 14, 15, 16, 18, 20, 21, 23, 24, 32, 33, 34, 36, 40, 42, 43, 47, 48, 49, 51, 52, 53, 55, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 135, 136, 138, 139, 141, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 171, 172, 173, 174, 175, 183, 184, 186, 189, 190, 191, 192, 193, 196, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 219, 220, 221, 222, 229, 230, 232, 237, 239, 244, 247, 254, 255, 256, 258, 260, 262, 263, 266, 269, 271, 272, 275], "model_fil": [0, 19, 182, 197, 198, 204], "rb": [0, 49, 87, 104, 116, 136, 139, 223], "model_proto": [0, 108], "modelproto": [0, 20], "parsefromstr": 0, "read": [0, 1, 2, 5, 6, 9, 14, 19, 22, 23, 38, 47, 49, 51, 73, 101, 102, 112, 113, 116, 117, 120, 122, 125, 126, 127, 128, 135, 137, 139, 142, 144, 149, 152, 158, 159, 162, 165, 166, 169, 172, 185, 187, 188, 195, 204, 208, 222, 223, 227, 230, 231, 260, 262, 269, 271], "coreml_model": 0, "image_input_nam": 0, "image_output_nam": 0, "save": [0, 2, 4, 6, 7, 9, 11, 12, 19, 20, 23, 35, 38, 39, 44, 48, 49, 50, 52, 58, 59, 73, 87, 96, 97, 108, 115, 117, 119, 121, 123, 124, 126, 127, 129, 137, 139, 144, 145, 148, 156, 157, 160, 161, 162, 163, 165, 168, 171, 181, 182, 185, 187, 188, 194, 195, 204, 206, 208, 218, 220, 221, 222, 223, 224, 225, 228, 234, 235, 237, 241, 242, 243, 245, 247, 248, 251, 252, 256], "mlmodel": [0, 187], "i": [0, 1, 5, 6, 7, 8, 9, 11, 12, 14, 17, 18, 19, 22, 23, 25, 32, 34, 39, 42, 43, 49, 51, 52, 58, 59, 60, 61, 69, 73, 75, 76, 85, 87, 89, 90, 92, 94, 96, 98, 99, 101, 102, 103, 104, 111, 112, 113, 116, 117, 118, 122, 124, 127, 128, 132, 134, 135, 136, 138, 142, 146, 147, 152, 153, 154, 156, 159, 161, 162, 163, 165, 169, 171, 172, 173, 174, 175, 176, 177, 181, 189, 191, 192, 193, 201, 202, 203, 208, 209, 212, 215, 216, 221, 226, 231, 234, 237, 250, 262, 263, 271, 272], "e": [0, 4, 5, 6, 7, 8, 10, 11, 18, 22, 23, 25, 32, 39, 42, 43, 44, 49, 51, 52, 58, 60, 61, 65, 69, 73, 75, 76, 79, 85, 87, 89, 95, 97, 100, 103, 108, 110, 111, 112, 117, 121, 123, 124, 126, 127, 128, 130, 132, 133, 134, 135, 138, 142, 146, 147, 153, 154, 155, 156, 159, 161, 163, 165, 168, 172, 173, 174, 175, 176, 179, 182, 184, 185, 190, 191, 192, 193, 196, 200, 202, 205, 206, 208, 212, 215, 216, 220, 231, 247, 256], "one": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 18, 19, 21, 22, 23, 25, 45, 47, 48, 49, 51, 52, 55, 56, 60, 61, 73, 76, 80, 85, 87, 93, 95, 97, 98, 100, 101, 102, 103, 108, 112, 113, 114, 116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 149, 152, 153, 154, 156, 158, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 173, 174, 175, 177, 178, 179, 183, 184, 189, 190, 191, 193, 194, 195, 198, 200, 201, 205, 208, 213, 214, 215, 216, 224, 228, 231, 234, 235, 237, 247, 252, 254, 258, 262, 271], "re": [0, 1, 4, 5, 6, 7, 9, 10, 14, 16, 19, 21, 22, 23, 24, 44, 48, 49, 50, 60, 73, 78, 97, 98, 117, 125, 127, 128, 136, 138, 139, 141, 143, 145, 150, 152, 154, 158, 159, 160, 161, 162, 165, 173, 174, 175, 176, 178, 182, 184, 187, 189, 194, 197, 198, 202, 205, 208, 213, 214, 223, 230, 231, 234, 237, 246, 247, 262, 271], "current": [0, 1, 5, 6, 8, 10, 11, 12, 14, 15, 19, 22, 23, 37, 38, 49, 52, 60, 82, 107, 113, 117, 122, 123, 125, 126, 127, 128, 135, 136, 141, 142, 146, 147, 149, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 168, 173, 174, 179, 182, 185, 187, 188, 189, 191, 192, 193, 194, 195, 197, 198, 214, 216, 218, 219, 224, 228, 247, 254, 260, 269], "readm": [0, 119, 179], "md": [0, 119, 179], "contain": [0, 1, 2, 4, 6, 8, 9, 10, 12, 14, 15, 17, 20, 21, 22, 23, 25, 34, 42, 47, 49, 50, 55, 58, 60, 64, 67, 68, 69, 75, 76, 78, 82, 85, 95, 101, 102, 111, 112, 116, 117, 122, 123, 125, 126, 127, 131, 133, 134, 136, 139, 142, 149, 153, 156, 157, 159, 160, 161, 163, 164, 165, 166, 168, 169, 171, 173, 174, 175, 178, 179, 181, 182, 187, 192, 195, 198, 200, 201, 202, 206, 208, 212, 213, 221, 222, 223, 226, 230, 237, 244, 247, 262, 263, 271, 272], "abl": [0, 1, 3, 4, 5, 6, 14, 15, 17, 23, 49, 60, 85, 97, 98, 100, 103, 112, 117, 126, 129, 130, 131, 132, 135, 136, 138, 139, 144, 146, 147, 152, 154, 157, 159, 162, 169, 172, 173, 174, 178, 182, 185, 188, 191, 197, 200, 201, 207, 208, 223, 234, 244], "phone": [0, 97, 105, 188, 223], "onnxliv": 0, "xcodeproj": [0, 223], "project": [0, 4, 5, 6, 23, 52, 58, 59, 60, 112, 116, 124, 139, 155, 160, 164, 165, 169, 187, 188, 193, 204, 208, 220, 221, 222, 223, 224, 225, 226, 227, 251, 256, 257, 258, 261, 266, 270, 275], "recommend": [0, 4, 6, 8, 10, 15, 18, 19, 20, 23, 61, 82, 108, 115, 116, 119, 121, 128, 133, 137, 157, 158, 165, 168, 172, 175, 176, 177, 178, 181, 182, 185, 191, 196, 199, 207, 219, 220, 226, 227, 228, 230, 237, 245, 247, 256, 262, 271], "9": [0, 1, 3, 5, 6, 17, 18, 19, 23, 34, 43, 44, 49, 65, 87, 92, 94, 95, 96, 103, 104, 109, 111, 112, 115, 116, 117, 118, 144, 146, 153, 157, 158, 160, 161, 168, 169, 171, 172, 173, 176, 177, 178, 201, 204, 206, 208, 219, 220, 221, 222, 229, 231, 238, 241, 242, 243, 249, 250, 253, 266, 275], "x": [0, 1, 2, 5, 6, 7, 12, 14, 17, 18, 19, 20, 21, 22, 23, 25, 32, 33, 37, 38, 40, 43, 44, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 76, 78, 79, 80, 85, 87, 89, 92, 93, 94, 95, 96, 97, 98, 99, 101, 104, 105, 108, 110, 111, 112, 113, 114, 115, 116, 117, 123, 124, 125, 127, 128, 129, 130, 133, 134, 135, 138, 139, 141, 142, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 166, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 183, 184, 186, 193, 195, 197, 198, 199, 201, 203, 205, 208, 209, 212, 213, 214, 215, 218, 219, 220, 221, 223, 226, 228, 231, 233, 237, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 252, 254, 255, 263, 272], "might": [0, 1, 5, 8, 10, 15, 16, 25, 44, 50, 51, 52, 53, 60, 79, 97, 98, 102, 103, 105, 108, 109, 113, 127, 130, 131, 132, 133, 135, 142, 143, 145, 149, 153, 157, 163, 164, 165, 168, 172, 178, 182, 184, 185, 188, 189, 197, 200, 204, 206, 223, 231, 232, 244, 252, 260, 269], "issu": [0, 2, 4, 5, 6, 8, 9, 19, 20, 22, 23, 51, 58, 113, 118, 122, 132, 137, 138, 142, 143, 144, 147, 154, 158, 168, 174, 184, 185, 186, 187, 188, 189, 191, 193, 195, 199, 204, 205, 207, 213, 222, 226, 230, 232, 244], "older": [0, 56, 109, 138, 154, 160, 175, 184], "some": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 22, 23, 25, 42, 43, 44, 47, 48, 49, 50, 51, 52, 58, 59, 60, 61, 63, 68, 73, 76, 78, 80, 82, 87, 92, 97, 98, 99, 100, 101, 102, 103, 108, 109, 110, 112, 113, 116, 121, 122, 123, 126, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 152, 154, 156, 157, 159, 160, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 182, 183, 184, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 202, 203, 205, 209, 213, 214, 216, 220, 221, 223, 230, 231, 234, 237, 238, 239, 247, 252, 254, 261, 262, 270, 271], "replac": [0, 3, 6, 12, 19, 24, 43, 55, 57, 58, 59, 78, 99, 108, 109, 117, 118, 119, 123, 135, 137, 139, 141, 142, 147, 156, 157, 163, 165, 168, 173, 174, 177, 178, 184, 191, 194, 218, 220, 222, 231, 234, 252], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 34, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53, 55, 56, 58, 59, 60, 61, 63, 68, 69, 73, 76, 78, 80, 82, 85, 87, 90, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 147, 148, 149, 150, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 184, 185, 187, 188, 189, 190, 192, 193, 196, 197, 199, 200, 201, 202, 204, 205, 206, 208, 212, 213, 220, 221, 223, 226, 228, 229, 231, 234, 237, 239, 244, 245, 246, 251, 255, 256, 258, 262, 263, 271, 272], "set": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 37, 42, 43, 44, 47, 48, 49, 50, 52, 53, 55, 58, 59, 60, 61, 63, 64, 68, 73, 76, 79, 82, 83, 86, 97, 98, 99, 102, 103, 104, 105, 110, 111, 112, 113, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 131, 132, 133, 135, 136, 139, 144, 146, 148, 149, 152, 153, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 177, 178, 181, 187, 188, 189, 191, 193, 194, 198, 199, 201, 204, 206, 207, 208, 213, 214, 215, 219, 220, 221, 223, 224, 225, 226, 228, 231, 232, 237, 241, 244, 255, 260, 264, 267, 269, 273, 276], "tap": 0, "screen": [0, 58, 59, 146, 160, 226, 260, 269], "switch": [0, 5, 8, 15, 19, 95, 112, 139, 152, 194, 206, 219, 230, 232], "hope": [0, 5, 25, 49, 146, 152, 165, 172, 219, 263, 272], "gave": [0, 103, 213], "framework": [0, 6, 7, 10, 24, 25, 52, 60, 61, 99, 100, 120, 121, 134, 149, 161, 164, 171, 176, 177, 183, 188, 207, 212, 216, 221, 222, 257], "experi": [0, 6, 10, 97, 98, 122, 135, 137, 146, 149, 155, 157, 159, 160, 164, 165, 166, 171, 172, 175, 176, 177, 184, 185, 189, 196, 205, 212, 228, 230, 255], "test": [0, 3, 8, 13, 19, 20, 22, 23, 24, 37, 38, 42, 49, 58, 59, 60, 83, 85, 92, 97, 99, 100, 105, 108, 113, 114, 119, 122, 123, 135, 136, 138, 139, 141, 144, 147, 158, 159, 162, 165, 166, 169, 172, 173, 174, 181, 182, 183, 184, 196, 197, 199, 204, 205, 213, 219, 220, 221, 222, 223, 231, 234, 256, 262, 263, 271, 272], "own": [0, 5, 6, 7, 8, 10, 11, 14, 16, 17, 18, 23, 25, 49, 52, 58, 59, 64, 73, 87, 103, 108, 109, 111, 113, 121, 122, 123, 128, 129, 133, 139, 144, 149, 152, 153, 156, 158, 159, 162, 163, 165, 171, 172, 176, 178, 179, 184, 194, 195, 197, 198, 200, 201, 209, 216, 231, 244, 262, 271], "pleas": [0, 2, 4, 5, 6, 7, 9, 10, 19, 20, 22, 23, 44, 45, 47, 51, 61, 75, 87, 108, 113, 115, 118, 122, 123, 124, 133, 137, 138, 141, 142, 143, 144, 147, 149, 152, 154, 155, 157, 161, 162, 163, 168, 171, 172, 173, 174, 175, 176, 178, 179, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 205, 209, 214, 215, 219, 220, 221, 222, 226, 230, 232, 234, 247, 252, 257, 262, 271], "know": [0, 1, 5, 6, 8, 11, 18, 19, 22, 23, 43, 49, 73, 95, 99, 101, 103, 108, 113, 125, 127, 128, 130, 135, 136, 138, 144, 146, 147, 149, 150, 154, 159, 160, 161, 165, 169, 173, 174, 176, 177, 178, 179, 182, 190, 195, 221, 231, 260, 262, 269, 271], "hit": [0, 5, 9, 19, 61, 73, 113, 124, 168], "ani": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 22, 23, 43, 45, 47, 49, 51, 52, 53, 55, 60, 65, 67, 76, 97, 98, 100, 101, 103, 105, 107, 108, 110, 111, 112, 113, 115, 120, 123, 124, 125, 127, 130, 131, 135, 137, 138, 141, 142, 143, 146, 147, 149, 152, 153, 154, 158, 159, 160, 162, 163, 166, 168, 171, 173, 174, 176, 177, 181, 183, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 198, 201, 202, 204, 207, 208, 209, 210, 211, 214, 215, 216, 218, 222, 225, 226, 228, 230, 237, 239, 240, 244, 252, 255, 260, 262, 269, 271], "give": [0, 1, 2, 5, 6, 11, 14, 17, 23, 25, 45, 47, 49, 50, 52, 58, 59, 60, 61, 73, 75, 79, 97, 98, 99, 101, 102, 103, 112, 118, 128, 131, 138, 142, 143, 144, 145, 146, 154, 158, 162, 165, 168, 171, 172, 173, 174, 176, 177, 182, 190, 193, 201, 216, 219, 223, 231, 234, 256, 260, 262, 269, 271], "feedback": [0, 6, 9, 19, 122, 137, 142, 143, 146, 147, 176, 177, 185, 187, 188, 195, 196, 197, 204, 222], "d": [0, 2, 5, 6, 7, 8, 12, 19, 22, 52, 61, 63, 64, 65, 67, 71, 72, 76, 87, 89, 92, 95, 99, 103, 111, 113, 115, 122, 124, 126, 127, 128, 129, 133, 135, 137, 145, 146, 149, 152, 165, 168, 171, 175, 185, 192, 193, 198, 205, 208, 215, 220, 250, 262, 263, 271, 272], "hear": [0, 142, 143], "think": [0, 6, 22, 23, 44, 52, 68, 78, 98, 99, 101, 102, 103, 113, 143, 145, 159, 162, 164, 192, 205, 234, 262, 271], "click": [1, 7, 9, 12, 13, 14, 17, 20, 21, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 172, 174, 178, 181, 184, 188, 189, 190, 191, 192, 193, 195, 203, 204, 205, 208, 211, 225, 226, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "here": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 175, 176, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 203, 204, 205, 208, 209, 211, 214, 216, 218, 219, 220, 221, 222, 223, 225, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 254, 255, 260, 262, 263, 269, 271, 272], "download": [1, 4, 6, 7, 9, 12, 13, 14, 17, 19, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 162, 164, 165, 166, 168, 169, 172, 174, 178, 182, 184, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 203, 204, 205, 206, 208, 211, 220, 221, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 253, 254, 255, 266, 275], "full": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 19, 20, 22, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 131, 134, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 161, 164, 165, 166, 168, 172, 174, 178, 181, 182, 184, 189, 190, 191, 192, 193, 194, 195, 198, 203, 204, 205, 208, 209, 211, 222, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256], "author": [1, 5, 7, 9, 11, 12, 13, 14, 16, 17, 19, 24, 36, 42, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 73, 81, 82, 83, 85, 86, 97, 98, 99, 101, 102, 103, 104, 107, 108, 109, 111, 112, 113, 114, 116, 117, 122, 123, 124, 126, 127, 128, 131, 132, 133, 134, 135, 136, 137, 139, 142, 143, 144, 146, 147, 149, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 172, 173, 174, 176, 177, 179, 181, 182, 183, 184, 185, 186, 187, 188, 197, 198, 199, 200, 201, 204, 205, 206, 208, 209, 210, 211, 214, 215, 219, 222, 230, 237, 244, 247, 254, 255, 263, 272], "vincent": [1, 14, 136, 159], "moen": [1, 14, 136, 159], "separ": [1, 5, 6, 7, 8, 20, 22, 23, 25, 49, 52, 85, 97, 109, 124, 126, 138, 144, 146, 153, 157, 162, 165, 171, 178, 179, 181, 182, 189, 193, 197, 200, 216, 231, 247, 255], "rl": [1, 61, 121, 159, 160, 161], "algorithm": [1, 5, 6, 10, 11, 12, 49, 52, 56, 69, 82, 87, 98, 99, 100, 101, 111, 118, 122, 124, 126, 129, 135, 136, 146, 155, 159, 162, 166, 210, 211, 216, 229, 247], "variou": [1, 8, 15, 47, 48, 49, 50, 60, 83, 85, 102, 109, 112, 116, 126, 143, 145, 156, 159, 162, 163, 171, 184, 191, 193, 207, 234], "piec": [1, 5, 8, 14, 59, 85, 158, 159, 163, 171, 175, 177, 178, 179, 188, 213], "assembl": [1, 8, 49, 134], "collect": [1, 4, 6, 11, 14, 15, 17, 18, 19, 21, 42, 43, 44, 45, 49, 55, 60, 61, 73, 75, 79, 97, 99, 103, 121, 122, 123, 124, 133, 134, 136, 143, 146, 149, 155, 160, 163, 175, 177, 201, 214, 215, 226, 230, 247], "final": [1, 6, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 42, 43, 47, 49, 52, 58, 60, 73, 75, 85, 87, 97, 102, 105, 107, 108, 109, 112, 113, 117, 118, 119, 122, 123, 124, 126, 127, 128, 129, 130, 134, 135, 139, 143, 144, 145, 146, 150, 152, 154, 156, 157, 159, 160, 161, 162, 163, 165, 168, 169, 175, 176, 177, 179, 184, 185, 187, 188, 189, 192, 197, 198, 199, 200, 201, 203, 204, 208, 213, 216, 221], "function": [1, 3, 4, 5, 6, 8, 9, 10, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 32, 38, 42, 43, 48, 49, 51, 53, 55, 59, 60, 61, 62, 65, 67, 68, 69, 75, 76, 79, 80, 82, 83, 89, 90, 92, 93, 94, 95, 96, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 134, 135, 136, 138, 142, 143, 144, 146, 147, 148, 149, 152, 153, 155, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 185, 186, 187, 189, 190, 191, 192, 193, 194, 195, 200, 201, 202, 203, 205, 206, 208, 209, 210, 211, 213, 216, 219, 220, 221, 223, 226, 230, 232, 233, 234, 239, 244, 246, 249, 250, 252, 254, 255, 256, 258], "trainabl": [1, 6, 68, 97, 99, 157], "paramet": [1, 4, 5, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 22, 24, 25, 32, 33, 35, 37, 38, 43, 44, 47, 48, 49, 51, 52, 61, 65, 67, 68, 69, 73, 75, 85, 87, 89, 92, 94, 96, 97, 98, 99, 101, 102, 103, 104, 109, 110, 111, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 141, 142, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 157, 160, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 182, 184, 189, 195, 196, 197, 201, 203, 210, 211, 212, 214, 216, 219, 220, 221, 226, 228, 230, 234, 235, 237, 239, 241, 242, 243, 244, 245, 249, 250, 252, 253, 254, 258, 266, 275], "tutori": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 43, 44, 45, 46, 51, 52, 53, 55, 56, 58, 59, 60, 61, 73, 74, 75, 77, 79, 81, 82, 84, 86, 87, 91, 97, 98, 100, 101, 104, 105, 106, 107, 108, 112, 113, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 154, 155, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 175, 177, 178, 180, 181, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 217, 219, 222, 223, 228, 229, 230, 234, 235, 237, 244, 245, 247, 251, 252, 255, 256, 257, 258], "guid": [1, 17, 58, 59, 61, 82, 85, 123, 135, 147, 158, 168, 173, 174, 176, 184, 196, 201, 213, 226, 229, 231, 235, 251, 261, 270], "ground": [1, 14, 44, 73, 178], "aim": [1, 6, 61, 75, 97, 100, 152, 160, 163, 192, 221], "focus": [1, 3, 20, 97, 100, 149, 155, 165, 221], "rel": [1, 5, 6, 7, 117, 119, 125, 126, 137, 145, 149, 150, 163, 165, 176, 186, 197, 221, 234], "straightforward": [1, 5, 6, 16, 17, 49, 60, 97, 98, 144, 200, 234], "determinist": [1, 11, 14, 136, 148, 160, 247], "gradient": [1, 6, 7, 10, 11, 13, 14, 16, 25, 37, 42, 43, 44, 47, 49, 52, 56, 61, 63, 64, 65, 67, 68, 69, 71, 72, 78, 87, 97, 98, 99, 101, 102, 103, 104, 110, 111, 115, 117, 121, 122, 123, 124, 125, 127, 129, 130, 131, 133, 135, 141, 145, 146, 149, 152, 156, 157, 159, 160, 161, 162, 163, 169, 171, 189, 205, 214, 216, 229, 235, 258], "simpl": [1, 3, 4, 5, 6, 8, 12, 15, 16, 17, 19, 21, 22, 23, 24, 25, 47, 49, 51, 54, 56, 61, 67, 73, 79, 85, 87, 97, 107, 112, 116, 120, 121, 123, 125, 126, 130, 135, 138, 139, 144, 145, 150, 154, 156, 159, 161, 162, 163, 164, 166, 168, 172, 182, 185, 199, 201, 205, 207, 210, 211, 213, 214, 215, 220, 221, 228, 231, 234, 237, 245, 251, 252, 254, 255, 258, 262, 263, 271, 272], "continu": [1, 5, 17, 20, 21, 49, 53, 60, 73, 85, 87, 97, 102, 113, 116, 121, 124, 128, 131, 135, 142, 143, 146, 157, 159, 163, 165, 168, 176, 187, 188, 189, 191, 192, 198, 199, 200, 201, 204, 222, 231, 234, 247, 252, 262, 271], "control": [1, 4, 8, 10, 14, 21, 23, 25, 34, 43, 60, 61, 66, 83, 85, 97, 110, 111, 113, 114, 122, 125, 126, 134, 135, 141, 153, 159, 160, 161, 172, 183, 197, 208, 226, 231, 252], "It": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 43, 44, 45, 47, 49, 51, 52, 60, 61, 73, 74, 75, 76, 82, 87, 95, 97, 98, 99, 100, 101, 103, 108, 112, 113, 115, 117, 122, 123, 124, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 138, 140, 141, 143, 144, 145, 146, 149, 150, 152, 153, 154, 156, 157, 160, 161, 163, 165, 166, 167, 168, 170, 171, 173, 174, 177, 178, 179, 193, 200, 201, 202, 203, 204, 205, 208, 212, 213, 214, 215, 216, 222, 223, 224, 225, 228, 231, 232, 245, 247, 253, 254, 256, 260, 262, 269, 271], "consist": [1, 3, 6, 7, 14, 15, 16, 22, 24, 25, 43, 75, 97, 99, 118, 124, 131, 142, 143, 146, 150, 152, 159, 164, 165, 168, 173, 174, 177, 179, 191, 192, 199, 200, 208, 211, 231, 247, 262, 271], "parametr": [1, 2, 17, 121, 159, 201], "action": [1, 19, 58, 59, 101, 113, 122, 123, 146, 156, 159, 160, 161, 162, 163, 168, 182, 189, 190, 191, 192, 197, 198, 204, 208, 251, 262, 271], "pair": [1, 6, 14, 47, 49, 52, 116, 118, 128, 129, 137, 150, 154, 159, 160, 165, 168, 178, 179, 194, 199, 211, 226, 262, 271], "maxim": [1, 14, 52, 73, 82, 97, 99, 126, 146, 160, 172, 176, 194, 247], "given": [1, 6, 8, 10, 12, 14, 17, 20, 21, 22, 23, 25, 32, 43, 48, 49, 51, 52, 60, 61, 73, 76, 78, 82, 85, 97, 98, 100, 101, 103, 112, 116, 122, 127, 128, 133, 135, 138, 141, 142, 145, 146, 147, 154, 156, 159, 160, 162, 163, 165, 172, 173, 174, 177, 178, 192, 195, 200, 201, 216, 219, 231, 239, 247, 258], "certain": [1, 4, 5, 6, 10, 11, 15, 49, 55, 60, 101, 113, 120, 122, 124, 125, 129, 141, 145, 147, 159, 164, 188, 189, 192, 193, 194, 198, 229, 244, 254], "what": [1, 2, 3, 5, 8, 14, 18, 19, 20, 21, 22, 23, 25, 43, 45, 46, 53, 54, 55, 58, 59, 61, 73, 78, 86, 87, 98, 99, 101, 102, 103, 114, 121, 124, 125, 126, 128, 131, 132, 135, 136, 142, 146, 150, 152, 156, 159, 160, 161, 164, 169, 171, 173, 178, 187, 191, 195, 197, 200, 210, 222, 230, 231, 232, 235, 237, 249, 252, 262, 271], "write": [1, 4, 8, 9, 10, 21, 22, 23, 44, 49, 58, 59, 60, 61, 64, 75, 98, 99, 100, 101, 104, 116, 117, 121, 125, 126, 130, 131, 133, 136, 137, 139, 141, 142, 144, 146, 147, 149, 150, 153, 155, 159, 162, 163, 165, 168, 171, 172, 185, 188, 192, 196, 197, 198, 205, 206, 208, 223, 224, 225, 230, 231, 232, 239, 257, 262, 271], "custom": [1, 4, 6, 8, 11, 17, 49, 52, 64, 65, 66, 79, 90, 109, 111, 121, 126, 136, 146, 159, 162, 171, 172, 177, 179, 183, 188, 195, 197, 199, 200, 201, 202, 204, 220, 221, 226, 230, 235, 244, 247, 251, 253], "its": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 25, 43, 47, 49, 51, 52, 53, 55, 60, 61, 68, 69, 73, 75, 80, 82, 95, 97, 99, 101, 102, 103, 105, 107, 109, 111, 112, 113, 115, 122, 123, 124, 125, 126, 127, 128, 135, 136, 137, 138, 139, 141, 143, 144, 146, 147, 149, 152, 153, 156, 159, 160, 161, 162, 163, 165, 168, 169, 172, 173, 174, 175, 176, 184, 188, 191, 192, 193, 197, 200, 201, 202, 204, 206, 207, 208, 209, 214, 215, 218, 220, 222, 226, 228, 230, 231, 237, 244, 247, 258, 262, 271], "includ": [1, 2, 3, 4, 5, 6, 8, 14, 15, 16, 22, 23, 24, 25, 42, 48, 49, 53, 55, 58, 59, 60, 61, 69, 73, 75, 82, 85, 87, 97, 98, 105, 107, 109, 113, 115, 124, 126, 127, 128, 130, 131, 133, 135, 136, 144, 146, 147, 155, 156, 159, 162, 165, 168, 169, 172, 173, 174, 175, 176, 177, 178, 182, 184, 188, 189, 191, 194, 199, 200, 204, 206, 208, 212, 214, 216, 219, 220, 221, 222, 224, 225, 226, 228, 229, 230, 231, 234, 238, 244, 247, 254, 256, 257, 260, 262, 269, 271], "design": [1, 5, 6, 14, 17, 24, 25, 52, 56, 61, 73, 85, 103, 128, 133, 136, 159, 160, 161, 163, 164, 168, 169, 177, 179, 189, 190, 191, 195, 197, 200, 201, 205, 207, 219, 231, 234, 247, 253, 254, 257], "effici": [1, 5, 7, 10, 12, 15, 17, 20, 23, 25, 42, 49, 51, 73, 82, 95, 97, 101, 103, 115, 119, 122, 123, 124, 126, 127, 135, 136, 145, 150, 156, 159, 163, 164, 168, 171, 175, 177, 186, 187, 192, 193, 194, 201, 204, 231, 237, 253, 254], "store": [1, 4, 5, 6, 16, 17, 19, 20, 22, 23, 40, 43, 48, 51, 53, 60, 68, 87, 95, 98, 99, 101, 103, 105, 111, 125, 126, 128, 135, 136, 141, 143, 144, 146, 147, 153, 155, 156, 159, 160, 161, 162, 163, 165, 182, 184, 192, 197, 198, 201, 204, 216, 234, 247, 252, 254, 257], "trajectori": [1, 14, 61, 136, 159], "transit": [1, 14, 60, 85, 86, 98, 136, 160, 200], "assum": [1, 2, 4, 6, 8, 10, 12, 14, 15, 19, 21, 22, 43, 44, 51, 54, 60, 73, 97, 98, 100, 102, 116, 124, 125, 127, 128, 135, 136, 139, 153, 156, 159, 162, 164, 165, 173, 174, 175, 178, 191, 192, 193, 199, 200, 223, 237, 244], "complet": [1, 4, 5, 6, 15, 21, 25, 49, 76, 78, 85, 87, 98, 99, 101, 113, 117, 119, 122, 124, 126, 130, 135, 156, 157, 158, 159, 160, 162, 165, 171, 172, 177, 178, 184, 191, 192, 225, 228, 229, 234, 247, 252, 256], "ppo": [1, 121], "compon": [1, 5, 6, 8, 10, 14, 20, 25, 52, 61, 85, 97, 101, 112, 113, 115, 119, 121, 126, 136, 142, 146, 159, 163, 166, 168, 172, 173, 174, 177, 193, 207, 256], "depend": [1, 5, 6, 7, 8, 11, 14, 21, 22, 23, 42, 47, 50, 52, 60, 73, 82, 85, 97, 98, 102, 110, 118, 119, 121, 124, 126, 129, 130, 135, 136, 137, 139, 141, 142, 143, 145, 146, 149, 155, 158, 159, 162, 168, 172, 173, 174, 181, 182, 183, 184, 188, 191, 196, 197, 198, 204, 206, 207, 208, 210, 213, 219, 222, 224, 225, 231, 232, 234, 239, 244, 247, 252, 256], "tensordict": [1, 14, 136, 146, 159], "nn": [1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 32, 37, 38, 39, 42, 43, 44, 45, 47, 49, 52, 55, 60, 65, 66, 69, 73, 75, 77, 79, 87, 89, 90, 92, 94, 96, 97, 98, 99, 102, 103, 105, 107, 108, 109, 110, 115, 117, 118, 119, 121, 122, 123, 124, 125, 127, 128, 129, 133, 134, 136, 137, 138, 141, 142, 143, 145, 146, 147, 148, 149, 150, 153, 154, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 179, 181, 182, 183, 185, 190, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 223, 226, 228, 230, 232, 233, 234, 235, 238, 239, 241, 242, 243, 245, 247, 248, 249, 250, 251, 252, 253, 256, 258], "tensordictmodul": [1, 14, 136, 159], "although": [1, 12, 16, 43, 49, 60, 61, 98, 99, 103, 105, 108, 115, 119, 125, 146, 149, 153, 157, 162, 172, 173, 174, 176, 182, 203, 219, 247, 262, 271], "suffici": [1, 6, 49, 52, 97, 98, 117, 131, 133, 152], "transpar": [1, 12, 42, 99, 136, 162, 206, 220], "understood": [1, 4, 113], "without": [1, 4, 5, 6, 8, 9, 10, 14, 17, 20, 23, 32, 42, 49, 53, 55, 60, 73, 78, 97, 98, 107, 112, 113, 116, 123, 124, 125, 128, 129, 135, 137, 138, 141, 143, 145, 146, 147, 152, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 168, 171, 176, 177, 189, 191, 192, 193, 194, 199, 200, 201, 203, 208, 209, 211, 215, 220, 227, 228, 230, 234, 237, 239, 244, 247, 251, 252, 258, 260, 262, 269, 271], "understand": [1, 2, 4, 6, 15, 23, 43, 44, 52, 57, 58, 59, 82, 85, 91, 98, 99, 101, 108, 117, 121, 125, 126, 127, 128, 130, 135, 137, 141, 143, 144, 149, 157, 165, 171, 173, 174, 176, 190, 195, 199, 200, 208, 215, 226, 229, 245, 249, 254], "class": [1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 19, 20, 21, 23, 24, 25, 33, 34, 37, 38, 42, 44, 45, 47, 49, 52, 53, 58, 59, 60, 64, 65, 67, 73, 75, 76, 78, 79, 83, 85, 87, 89, 90, 92, 93, 94, 96, 98, 99, 100, 102, 103, 104, 105, 108, 109, 110, 111, 112, 115, 117, 118, 119, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 149, 150, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 189, 190, 191, 193, 194, 195, 197, 198, 199, 200, 202, 203, 208, 209, 212, 213, 214, 215, 216, 218, 219, 221, 223, 226, 229, 231, 233, 234, 237, 239, 240, 241, 242, 243, 244, 248, 249, 250, 252, 261, 262, 263, 270, 271, 272], "sota": [1, 75, 113, 119], "implement": [1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 17, 20, 24, 42, 43, 45, 47, 49, 51, 55, 57, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 76, 79, 85, 103, 108, 111, 115, 120, 121, 124, 125, 126, 127, 130, 133, 134, 135, 136, 138, 139, 141, 144, 145, 146, 147, 149, 150, 154, 156, 159, 160, 163, 168, 173, 174, 178, 179, 186, 190, 192, 193, 194, 196, 197, 200, 201, 204, 206, 207, 208, 216, 219, 220, 221, 222, 224, 231, 237, 244, 247, 253, 254, 257, 261, 270], "rather": [1, 13, 23, 25, 49, 52, 69, 73, 85, 97, 103, 112, 121, 128, 129, 143, 144, 149, 153, 154, 159, 171, 184, 188, 189, 207, 223, 231, 234, 247], "high": [1, 2, 5, 6, 14, 15, 19, 23, 25, 42, 44, 49, 52, 53, 55, 57, 60, 82, 85, 99, 103, 105, 109, 112, 121, 122, 123, 124, 126, 127, 129, 135, 139, 146, 149, 159, 168, 169, 171, 176, 177, 186, 192, 195, 196, 197, 199, 212, 216, 234, 247, 252, 254, 256, 258, 260, 269], "level": [1, 2, 5, 6, 17, 19, 20, 23, 25, 44, 49, 53, 55, 57, 68, 79, 100, 105, 115, 122, 123, 124, 126, 127, 128, 131, 133, 135, 137, 141, 142, 143, 144, 147, 149, 164, 165, 168, 171, 173, 174, 176, 177, 182, 185, 195, 196, 197, 199, 201, 209, 212, 215, 216, 221, 223, 227, 234, 258, 266, 275], "illustr": [1, 19, 44, 47, 56, 116, 117, 124, 125, 126, 138, 160, 169, 171, 178, 191, 192, 195, 215, 226, 229, 230, 244, 247], "librari": [1, 3, 4, 5, 6, 8, 12, 14, 18, 20, 22, 23, 25, 42, 44, 50, 51, 57, 61, 75, 87, 107, 108, 113, 115, 118, 121, 126, 129, 130, 137, 139, 143, 155, 158, 159, 163, 168, 173, 174, 177, 194, 204, 206, 207, 215, 219, 220, 222, 223, 226, 227, 228, 249, 251], "featur": [1, 4, 6, 10, 11, 12, 14, 17, 19, 22, 23, 34, 49, 50, 51, 52, 58, 59, 60, 61, 82, 83, 85, 90, 94, 95, 97, 98, 103, 108, 113, 121, 123, 125, 136, 137, 144, 145, 146, 149, 152, 155, 158, 159, 163, 164, 169, 172, 173, 174, 175, 176, 177, 178, 185, 186, 187, 188, 192, 193, 196, 199, 201, 204, 205, 206, 207, 208, 212, 216, 219, 226, 229, 234, 237, 244, 247, 251, 252, 254], "context": [1, 2, 5, 8, 14, 16, 17, 43, 49, 60, 61, 64, 73, 103, 109, 111, 120, 124, 134, 141, 153, 159, 162, 163, 164, 165, 168, 177, 186, 199, 201, 206, 208, 212, 230, 232, 237, 239, 247], "bash": [1, 18, 20, 146, 160, 226], "pip3": [1, 18, 50, 122, 136, 159, 160, 168, 175, 184, 187, 188], "mujoco": [1, 136, 159], "glfw": 1, "tqdm": [1, 14, 17, 122, 136, 137, 159, 185, 201], "avail": [1, 2, 3, 5, 6, 10, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 40, 42, 43, 44, 48, 50, 51, 52, 53, 58, 59, 73, 80, 87, 97, 101, 105, 113, 115, 119, 122, 125, 135, 136, 139, 141, 146, 147, 156, 157, 158, 159, 160, 163, 164, 165, 168, 171, 175, 176, 177, 178, 181, 182, 187, 188, 196, 197, 198, 199, 201, 205, 212, 213, 214, 220, 222, 223, 224, 225, 226, 227, 228, 229, 231, 232, 247, 255, 256, 260, 269], "is_fork": [1, 136, 159], "multiprocess": [1, 6, 7, 11, 14, 34, 51, 53, 55, 56, 110, 122, 123, 133, 134, 135, 136, 159, 162, 163, 212, 214, 216, 258], "get_start_method": [1, 136, 159], "fork": [1, 21, 136, 159, 160], "is_avail": [1, 5, 6, 12, 20, 33, 38, 40, 42, 44, 45, 48, 49, 52, 63, 73, 80, 87, 89, 95, 97, 104, 110, 111, 115, 117, 118, 129, 136, 146, 147, 155, 156, 157, 159, 160, 162, 164, 165, 166, 172, 178, 193, 230], "els": [1, 4, 5, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 23, 25, 33, 38, 42, 44, 45, 47, 49, 51, 52, 58, 59, 60, 63, 73, 87, 94, 95, 96, 97, 103, 104, 105, 108, 110, 111, 115, 116, 117, 118, 122, 127, 128, 129, 134, 135, 136, 137, 142, 146, 147, 150, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 178, 181, 182, 185, 186, 193, 195, 197, 198, 201, 208, 209, 212, 215, 216, 218, 222, 230, 231, 244, 246, 252, 254, 255, 256, 258, 262, 263, 271, 272], "cpu": [1, 3, 5, 6, 8, 9, 10, 11, 12, 14, 15, 18, 19, 20, 23, 33, 38, 42, 43, 44, 45, 48, 49, 52, 60, 63, 64, 72, 73, 80, 82, 83, 87, 89, 90, 95, 97, 99, 104, 105, 108, 109, 110, 111, 115, 117, 118, 121, 123, 124, 129, 133, 134, 135, 136, 137, 146, 147, 150, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 175, 178, 181, 182, 185, 186, 187, 188, 193, 194, 195, 197, 198, 199, 202, 206, 212, 216, 219, 223, 226, 229, 230, 231, 232, 234, 237, 238, 240, 244, 251, 252, 253], "collector_devic": 1, "chang": [1, 2, 5, 6, 10, 11, 12, 14, 19, 21, 22, 23, 24, 40, 43, 48, 50, 51, 52, 53, 55, 58, 59, 61, 76, 78, 79, 80, 82, 83, 85, 87, 95, 97, 98, 100, 101, 102, 105, 108, 112, 116, 121, 123, 124, 126, 131, 132, 135, 136, 137, 139, 141, 144, 145, 146, 149, 152, 153, 155, 156, 157, 161, 168, 171, 172, 173, 174, 177, 181, 182, 184, 186, 187, 188, 191, 193, 197, 198, 200, 204, 206, 207, 208, 211, 212, 214, 216, 220, 221, 222, 229, 230, 231, 234, 235, 244, 245, 247, 252, 253, 255, 260, 269], "seri": [1, 6, 15, 23, 52, 53, 54, 55, 56, 82, 91, 120, 121, 127, 128, 131, 132, 139, 143, 156, 159, 191, 219], "reusabl": [1, 6, 25], "swappabl": 1, "signatur": [1, 5, 8, 10, 14, 15, 23, 108, 135, 153, 162, 173, 174, 252], "characterist": [1, 14, 43, 143, 145, 146, 158, 164], "copi": [1, 5, 6, 12, 18, 22, 23, 44, 45, 50, 55, 58, 61, 73, 82, 97, 109, 110, 112, 114, 117, 123, 125, 129, 133, 135, 136, 137, 138, 141, 142, 143, 146, 149, 153, 157, 162, 168, 171, 181, 182, 183, 188, 194, 198, 199, 204, 206, 208, 212, 213, 218, 219, 234, 237, 247, 257, 263, 272], "loss_modul": [1, 159], "whatev": [1, 8, 22, 23, 99, 101, 112, 195, 226], "convent": [1, 14, 52, 60, 112, 126, 136, 171, 216, 231], "receiv": [1, 4, 6, 14, 16, 55, 64, 87, 101, 111, 135, 159, 161, 162, 163, 172, 230, 247], "necessari": [1, 4, 5, 6, 7, 8, 10, 12, 15, 16, 18, 19, 23, 24, 44, 52, 53, 55, 60, 85, 87, 98, 112, 113, 122, 123, 124, 129, 133, 146, 149, 159, 161, 162, 163, 168, 173, 174, 177, 179, 182, 185, 191, 193, 195, 197, 198, 199, 230, 247, 249], "return": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 33, 34, 37, 38, 40, 44, 45, 47, 49, 51, 52, 59, 60, 64, 65, 67, 68, 73, 75, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 122, 123, 124, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 189, 191, 193, 194, 195, 197, 198, 199, 200, 201, 203, 205, 206, 208, 209, 210, 212, 213, 214, 215, 218, 219, 220, 221, 222, 223, 226, 229, 230, 231, 233, 234, 237, 239, 240, 241, 242, 243, 244, 246, 247, 248, 249, 250, 252, 254, 255, 256, 257], "replay_buff": [1, 159], "sampl": [1, 6, 8, 44, 47, 48, 49, 51, 52, 55, 60, 61, 75, 78, 79, 87, 92, 97, 99, 105, 110, 115, 116, 117, 118, 121, 123, 127, 129, 135, 136, 137, 139, 145, 146, 152, 153, 157, 159, 160, 161, 163, 171, 173, 174, 178, 182, 185, 193, 194, 197, 199, 205, 209, 210, 225, 229, 247, 262, 271], "loss_dict": 1, "instanc": [1, 4, 5, 6, 7, 11, 12, 14, 21, 22, 23, 25, 45, 53, 54, 55, 58, 59, 60, 78, 82, 87, 97, 98, 99, 102, 103, 122, 123, 125, 126, 131, 132, 133, 134, 136, 144, 146, 157, 159, 161, 162, 163, 165, 172, 182, 183, 197, 199, 200, 202, 219, 220, 226, 230, 234, 245, 247, 252, 256, 257, 258], "written": [1, 4, 5, 6, 8, 10, 14, 22, 23, 25, 85, 100, 130, 136, 143, 150, 153, 154, 157, 164, 168, 171, 184, 189, 213, 220, 245, 254], "under": [1, 4, 5, 8, 14, 18, 19, 23, 47, 49, 50, 52, 54, 56, 97, 99, 109, 113, 115, 124, 125, 135, 137, 139, 145, 146, 153, 156, 163, 168, 169, 177, 178, 179, 187, 188, 190, 192, 204, 212, 214, 216, 221, 222, 225, 226, 230, 262, 271], "loss_": 1, "smth": 1, "where": [1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 32, 47, 49, 51, 60, 61, 64, 68, 75, 78, 79, 83, 85, 87, 97, 98, 99, 101, 102, 103, 110, 113, 122, 124, 126, 127, 128, 130, 132, 133, 134, 135, 137, 138, 139, 141, 144, 147, 149, 150, 152, 153, 154, 158, 159, 160, 161, 162, 163, 164, 165, 169, 172, 174, 175, 177, 178, 179, 182, 184, 187, 189, 192, 193, 194, 195, 200, 201, 204, 208, 213, 215, 216, 226, 228, 230, 231, 244, 245, 263, 272], "string": [1, 8, 15, 22, 23, 49, 51, 58, 59, 60, 65, 67, 105, 111, 115, 116, 118, 126, 127, 128, 136, 139, 156, 159, 165, 171, 182, 208, 209, 226, 231, 257, 260, 269], "describ": [1, 4, 5, 6, 8, 10, 14, 15, 16, 19, 20, 21, 22, 23, 48, 49, 52, 58, 59, 61, 73, 97, 105, 114, 120, 135, 150, 159, 160, 163, 168, 171, 173, 174, 176, 196, 197, 198, 202, 215, 231, 234, 252], "addit": [1, 2, 5, 7, 8, 11, 15, 17, 19, 50, 60, 73, 75, 97, 102, 105, 108, 109, 113, 122, 124, 125, 133, 135, 137, 138, 139, 142, 144, 147, 149, 156, 161, 162, 165, 169, 172, 173, 174, 176, 185, 189, 190, 191, 192, 197, 200, 201, 206, 208, 216, 218, 219, 220, 231, 247, 254], "kei": [1, 6, 8, 11, 14, 15, 17, 49, 58, 75, 82, 90, 100, 103, 105, 109, 112, 114, 115, 116, 119, 122, 126, 136, 137, 139, 143, 146, 156, 158, 159, 160, 161, 164, 165, 168, 169, 171, 173, 174, 175, 177, 185, 193, 194, 195, 201, 209, 210, 211, 220, 234, 237, 245, 254, 262, 271], "mai": [1, 4, 5, 6, 8, 10, 11, 12, 14, 15, 17, 19, 21, 22, 23, 25, 42, 49, 50, 52, 58, 59, 60, 68, 73, 85, 95, 99, 112, 113, 116, 123, 124, 125, 126, 129, 130, 136, 137, 138, 139, 141, 143, 144, 145, 150, 152, 153, 158, 159, 162, 165, 168, 171, 172, 173, 174, 176, 177, 179, 181, 182, 185, 188, 191, 193, 197, 198, 199, 200, 201, 202, 207, 208, 210, 218, 228, 231, 234, 247, 252, 262, 263, 271, 272], "metric": [1, 17, 87, 97, 109, 122, 137, 146, 168, 171, 177, 178, 201, 221, 226, 231, 245], "log": [1, 7, 14, 18, 49, 50, 52, 53, 58, 73, 97, 98, 99, 102, 103, 104, 118, 123, 126, 129, 132, 137, 148, 158, 159, 161, 163, 166, 168, 169, 171, 173, 174, 177, 185, 195, 208, 211, 221, 251, 255], "dure": [1, 3, 7, 8, 12, 14, 16, 18, 19, 25, 32, 37, 49, 52, 60, 61, 63, 64, 76, 78, 85, 97, 99, 103, 108, 111, 112, 113, 118, 121, 122, 123, 124, 125, 128, 129, 130, 131, 133, 136, 142, 143, 144, 149, 150, 153, 157, 158, 159, 160, 161, 163, 168, 172, 176, 177, 178, 185, 196, 198, 202, 206, 214, 216, 220, 223, 224, 225, 226, 228, 234, 244, 245, 252], "reason": [1, 5, 6, 8, 14, 15, 17, 23, 25, 52, 78, 82, 97, 99, 102, 112, 117, 125, 129, 135, 144, 149, 157, 159, 164, 165, 184, 191, 201, 214, 223, 231, 235, 237, 251, 252], "independ": [1, 7, 23, 49, 60, 79, 103, 108, 110, 145, 146, 150, 162, 189], "user": [1, 3, 5, 14, 17, 18, 19, 22, 24, 25, 44, 49, 50, 60, 76, 79, 82, 83, 85, 97, 101, 108, 110, 113, 114, 115, 122, 124, 128, 133, 137, 139, 142, 143, 144, 147, 161, 163, 164, 165, 166, 168, 171, 173, 174, 175, 176, 177, 178, 179, 182, 185, 187, 189, 190, 191, 192, 195, 196, 197, 198, 199, 200, 201, 204, 207, 212, 215, 216, 220, 221, 226, 228, 251, 262, 263, 271, 272], "sum": [1, 2, 4, 5, 7, 11, 13, 14, 16, 18, 19, 21, 25, 37, 38, 40, 43, 44, 49, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 76, 78, 82, 87, 89, 92, 97, 98, 99, 101, 103, 104, 109, 111, 115, 117, 122, 123, 125, 127, 128, 129, 130, 135, 136, 145, 146, 150, 152, 153, 156, 157, 159, 160, 161, 162, 163, 166, 168, 172, 173, 174, 175, 182, 189, 190, 191, 192, 197, 198, 210, 211, 212, 214, 221, 231, 252, 258], "done": [1, 4, 5, 6, 8, 10, 14, 16, 17, 19, 20, 21, 22, 23, 25, 37, 38, 49, 54, 58, 59, 82, 85, 97, 98, 99, 108, 113, 115, 122, 123, 124, 125, 128, 129, 135, 136, 138, 143, 144, 146, 147, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 169, 171, 173, 174, 184, 185, 194, 201, 202, 208, 216, 220, 223, 234, 237, 247, 256, 257], "via": [1, 3, 5, 6, 7, 16, 17, 18, 20, 22, 23, 54, 55, 58, 59, 73, 85, 97, 121, 122, 123, 124, 126, 135, 136, 139, 145, 153, 158, 159, 164, 169, 171, 172, 176, 177, 178, 188, 191, 201, 212, 213, 215, 216, 219, 220, 221, 226, 237, 244, 245, 260, 266, 269, 275], "loss_val": [1, 136, 159], "item": [1, 2, 6, 7, 9, 10, 11, 12, 14, 15, 34, 37, 38, 40, 44, 49, 52, 60, 63, 64, 65, 67, 68, 69, 72, 73, 87, 90, 92, 94, 95, 96, 97, 98, 101, 103, 104, 109, 111, 112, 114, 115, 117, 118, 119, 122, 123, 127, 128, 129, 135, 136, 137, 139, 141, 143, 146, 147, 157, 158, 159, 160, 161, 162, 163, 165, 166, 169, 171, 178, 179, 181, 193, 209, 213, 218, 221, 230, 234, 247, 250, 261, 263, 270, 272], "startswith": [1, 83, 147, 165, 246], "parent": [1, 14, 104, 115, 142, 146, 183, 185], "As": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 25, 43, 49, 50, 52, 58, 59, 60, 61, 73, 85, 87, 97, 103, 105, 108, 112, 116, 118, 122, 123, 124, 125, 126, 127, 133, 135, 136, 137, 141, 142, 143, 144, 145, 146, 149, 152, 153, 156, 157, 159, 160, 161, 162, 163, 164, 168, 171, 174, 175, 176, 177, 178, 179, 182, 184, 185, 187, 188, 192, 193, 195, 197, 200, 204, 207, 208, 212, 219, 221, 222, 226, 231, 234, 237, 247, 254, 256, 258], "mani": [1, 2, 4, 5, 6, 10, 14, 15, 17, 18, 23, 25, 49, 51, 52, 60, 61, 65, 69, 73, 82, 97, 99, 100, 101, 104, 105, 107, 111, 113, 122, 124, 126, 127, 129, 135, 137, 138, 145, 147, 149, 150, 154, 157, 159, 161, 162, 165, 173, 174, 176, 177, 191, 194, 201, 204, 205, 220, 221, 229, 230, 231, 247, 252, 260, 262, 263, 269, 271, 272], "expect": [1, 4, 5, 6, 10, 11, 14, 20, 22, 23, 32, 45, 47, 49, 51, 58, 59, 60, 61, 73, 85, 87, 97, 101, 102, 103, 112, 113, 117, 119, 126, 129, 133, 134, 136, 145, 146, 152, 153, 156, 158, 159, 160, 161, 162, 164, 171, 172, 173, 174, 176, 178, 179, 182, 187, 188, 194, 195, 197, 199, 200, 204, 205, 213, 220, 223, 226, 229, 230, 231, 234, 244, 247, 258], "similar": [1, 3, 5, 8, 10, 11, 14, 15, 19, 22, 23, 48, 49, 58, 59, 61, 82, 83, 97, 98, 103, 108, 116, 124, 130, 134, 135, 136, 139, 143, 149, 153, 159, 161, 162, 163, 164, 165, 168, 169, 171, 176, 178, 179, 182, 185, 189, 190, 191, 192, 193, 198, 199, 213, 218, 219, 230, 231, 234, 247, 258], "structur": [1, 4, 5, 6, 8, 9, 14, 18, 19, 20, 21, 22, 23, 33, 48, 49, 52, 53, 60, 61, 78, 85, 97, 98, 102, 105, 110, 112, 121, 131, 136, 138, 143, 146, 147, 149, 153, 154, 156, 159, 163, 169, 171, 172, 178, 192, 194, 196, 197, 205, 208, 234, 245, 260, 262, 266, 269, 271, 275], "make": [1, 4, 5, 6, 8, 10, 12, 14, 18, 19, 22, 23, 43, 44, 45, 47, 49, 50, 51, 53, 54, 55, 57, 58, 59, 60, 61, 68, 69, 73, 87, 97, 99, 100, 101, 102, 103, 108, 111, 112, 113, 114, 115, 117, 118, 121, 122, 123, 124, 126, 127, 128, 129, 133, 135, 136, 137, 139, 142, 143, 144, 145, 146, 149, 152, 153, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 169, 171, 172, 173, 174, 176, 178, 182, 184, 185, 188, 189, 190, 191, 192, 193, 194, 195, 197, 200, 205, 212, 213, 214, 215, 216, 218, 219, 220, 223, 227, 228, 229, 230, 231, 234, 237, 239, 245, 247, 251, 252, 254, 256, 262, 264, 271, 273], "possibl": [1, 2, 4, 5, 6, 8, 10, 14, 15, 17, 22, 23, 52, 60, 61, 75, 98, 101, 108, 119, 125, 129, 130, 136, 138, 141, 143, 145, 146, 149, 157, 158, 159, 161, 162, 165, 178, 182, 185, 187, 193, 197, 198, 199, 200, 201, 202, 204, 207, 216, 220, 221, 223, 230, 234, 237, 247, 252, 254, 262, 271], "across": [1, 5, 7, 8, 9, 11, 14, 16, 18, 20, 24, 49, 52, 54, 55, 56, 61, 82, 97, 105, 115, 120, 122, 123, 124, 131, 132, 133, 134, 135, 138, 146, 149, 156, 162, 163, 175, 176, 181, 211, 214, 215, 229, 235, 245, 247, 258, 260, 269], "modal": [1, 60, 229], "complex": [1, 6, 23, 25, 50, 61, 67, 68, 97, 105, 112, 120, 123, 133, 150, 153, 161, 163, 169, 193, 203, 209, 234, 239, 254], "multipl": [1, 5, 8, 10, 11, 14, 16, 17, 18, 19, 20, 23, 40, 45, 48, 49, 53, 54, 55, 56, 61, 65, 78, 79, 81, 82, 87, 97, 101, 110, 120, 123, 124, 125, 126, 127, 128, 133, 134, 135, 138, 139, 143, 144, 146, 149, 158, 159, 161, 162, 163, 165, 168, 169, 171, 173, 174, 175, 176, 177, 182, 184, 193, 199, 200, 201, 207, 213, 214, 219, 230, 231, 235, 247, 250, 262, 263, 271, 272], "entri": [1, 4, 11, 14, 23, 53, 75, 98, 101, 103, 109, 110, 112, 115, 131, 136, 143, 144, 156, 159, 161, 164, 168, 173, 174, 191, 192, 193, 195, 212], "word": [1, 6, 7, 10, 11, 14, 42, 44, 49, 60, 73, 79, 82, 97, 98, 100, 102, 112, 115, 116, 118, 121, 127, 128, 135, 137, 143, 152, 153, 156, 163, 165, 176, 181, 190, 192, 193, 195, 199, 234, 262, 271], "oblivi": [1, 159], "type": [1, 4, 5, 6, 8, 9, 10, 14, 18, 19, 20, 21, 22, 23, 37, 38, 40, 42, 48, 49, 50, 51, 52, 60, 61, 73, 78, 80, 82, 85, 95, 101, 105, 108, 113, 118, 120, 122, 123, 124, 126, 134, 137, 138, 139, 142, 143, 144, 147, 148, 154, 155, 156, 159, 161, 162, 163, 164, 168, 171, 172, 173, 174, 175, 177, 179, 181, 185, 187, 189, 194, 197, 199, 200, 202, 204, 207, 208, 209, 212, 213, 214, 216, 220, 221, 222, 223, 226, 228, 229, 244, 245, 247, 253, 257, 262, 271], "being": [1, 3, 4, 5, 6, 10, 12, 14, 17, 20, 21, 23, 42, 47, 49, 52, 58, 59, 60, 76, 80, 82, 97, 98, 99, 101, 103, 105, 110, 113, 117, 122, 124, 126, 129, 135, 136, 142, 153, 156, 159, 160, 162, 177, 185, 188, 190, 191, 193, 195, 199, 201, 202, 220, 231, 237, 247], "run": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 51, 52, 56, 57, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 76, 78, 79, 80, 82, 87, 89, 90, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 172, 173, 175, 176, 177, 178, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 214, 215, 216, 218, 219, 220, 222, 223, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 248, 249, 250, 251, 252, 254, 255, 262, 271], "elementari": [1, 2, 234], "those": [1, 4, 5, 6, 10, 11, 14, 17, 42, 43, 61, 79, 87, 98, 103, 113, 115, 116, 124, 125, 127, 135, 138, 143, 152, 153, 155, 156, 163, 165, 169, 171, 173, 174, 177, 182, 184, 188, 190, 201, 202, 204, 205, 206, 207, 221, 223, 226, 230, 231, 262, 271], "keep": [1, 6, 7, 10, 11, 14, 23, 43, 49, 51, 52, 60, 61, 73, 82, 85, 95, 97, 99, 101, 102, 108, 112, 116, 119, 121, 122, 123, 124, 125, 127, 128, 132, 133, 136, 142, 144, 150, 157, 159, 163, 165, 177, 181, 182, 197, 208, 218, 231, 247, 257, 258], "didact": [1, 135], "displai": [1, 2, 5, 6, 12, 14, 34, 44, 52, 58, 75, 108, 109, 117, 129, 139, 157, 160, 165, 168, 212, 230, 231, 245, 257, 260, 269], "each": [1, 2, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 21, 23, 24, 25, 34, 43, 44, 45, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 61, 65, 68, 73, 75, 76, 79, 82, 83, 85, 87, 97, 98, 99, 102, 103, 107, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 138, 141, 142, 143, 145, 146, 147, 149, 150, 152, 153, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 173, 174, 175, 176, 177, 178, 185, 186, 189, 192, 193, 195, 197, 198, 200, 201, 208, 209, 211, 212, 215, 216, 220, 221, 226, 229, 230, 231, 234, 237, 239, 244, 245, 247, 252, 255, 257, 258, 260, 262, 269, 271], "popul": [1, 14, 22, 43, 49, 58, 59, 87, 122, 136, 146, 159, 161, 211, 216], "later": [1, 3, 4, 5, 6, 11, 23, 47, 49, 52, 60, 73, 78, 87, 97, 101, 102, 112, 113, 123, 124, 127, 128, 129, 130, 134, 135, 138, 141, 142, 143, 144, 145, 146, 150, 154, 159, 160, 163, 164, 165, 169, 171, 173, 174, 182, 189, 197, 198, 210, 211, 223, 226, 228, 230, 231, 232, 237, 244, 247, 254, 255], "stage": [1, 7, 14, 16, 148, 186, 188, 206, 212], "start": [1, 4, 5, 6, 9, 11, 14, 16, 17, 18, 19, 23, 24, 25, 43, 44, 49, 50, 52, 53, 54, 55, 59, 60, 61, 73, 87, 97, 98, 100, 101, 105, 113, 116, 120, 121, 122, 124, 125, 126, 127, 128, 129, 134, 135, 137, 139, 143, 144, 145, 146, 148, 149, 152, 153, 157, 158, 160, 161, 162, 165, 168, 169, 171, 172, 173, 176, 177, 178, 182, 184, 185, 187, 191, 195, 197, 198, 199, 200, 201, 203, 208, 212, 213, 216, 219, 223, 226, 231, 234, 239, 245, 247, 251, 254, 258, 263, 272], "solv": [1, 6, 14, 49, 51, 97, 103, 117, 118, 149, 153, 157, 159, 161, 163, 176, 191, 231, 237, 247], "task": [1, 6, 7, 13, 14, 17, 21, 24, 49, 58, 59, 60, 75, 97, 98, 103, 109, 113, 116, 117, 118, 119, 120, 121, 123, 136, 137, 153, 157, 159, 160, 165, 166, 171, 178, 185, 201, 204, 208, 231, 247], "strategi": [1, 5, 17, 18, 24, 52, 82, 113, 121, 128, 135, 144, 145, 149, 154, 161, 162, 201, 207, 215, 216, 221], "predict": [1, 9, 17, 19, 20, 33, 37, 38, 43, 44, 49, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 87, 89, 90, 92, 97, 98, 102, 103, 104, 111, 113, 115, 116, 118, 121, 124, 126, 127, 128, 137, 138, 145, 146, 149, 154, 160, 165, 169, 178, 181, 182, 197, 198, 201, 213, 219, 229, 251, 256, 257], "henc": [1, 14, 17, 43, 48, 61, 78, 80, 82, 113, 123, 125, 133, 134, 147, 149, 150, 155, 159, 161, 163, 176, 201, 219, 220, 231], "two": [1, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 25, 40, 42, 43, 48, 49, 50, 52, 57, 58, 59, 60, 73, 75, 83, 85, 87, 92, 95, 97, 98, 99, 101, 102, 103, 105, 107, 108, 109, 116, 117, 119, 122, 123, 126, 127, 129, 130, 132, 133, 134, 135, 136, 139, 141, 143, 144, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 159, 160, 161, 163, 164, 165, 171, 175, 176, 177, 178, 179, 183, 184, 186, 190, 192, 193, 195, 197, 198, 199, 200, 201, 202, 203, 207, 212, 215, 216, 219, 221, 224, 225, 226, 229, 231, 234, 237, 244, 247, 252, 256, 258, 262, 263, 267, 271, 272, 276], "constructor": [1, 6, 10, 11, 12, 21, 22, 23, 25, 60, 65, 67, 69, 78, 85, 111, 116, 122, 123, 133, 134, 143, 155, 156, 159, 161, 163, 192, 202, 230, 231, 252], "both": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 42, 49, 51, 52, 58, 59, 60, 61, 73, 82, 85, 97, 103, 109, 113, 116, 118, 122, 124, 126, 127, 129, 132, 133, 134, 135, 141, 142, 144, 145, 147, 149, 150, 156, 157, 159, 161, 162, 163, 164, 165, 173, 174, 175, 176, 177, 178, 179, 182, 184, 185, 186, 189, 192, 194, 195, 197, 199, 200, 209, 212, 215, 219, 220, 221, 223, 226, 228, 229, 230, 231, 244, 256, 260, 262, 269, 271], "compat": [1, 4, 5, 6, 8, 11, 17, 50, 60, 94, 95, 101, 136, 147, 164, 173, 174, 182, 187, 202, 204, 216, 222, 256], "comput": [1, 3, 5, 6, 8, 11, 12, 13, 16, 17, 19, 20, 21, 23, 24, 25, 32, 37, 38, 40, 44, 47, 48, 49, 52, 53, 57, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 83, 85, 95, 97, 98, 99, 100, 102, 105, 107, 110, 111, 115, 117, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 135, 136, 137, 139, 141, 142, 143, 144, 146, 148, 149, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 182, 184, 187, 188, 193, 194, 195, 196, 197, 198, 199, 201, 202, 205, 206, 207, 208, 210, 211, 216, 219, 223, 228, 230, 231, 234, 237, 239, 254, 256, 262, 271], "fit": [1, 6, 7, 9, 10, 11, 12, 20, 24, 61, 87, 103, 122, 123, 124, 133, 148, 149, 163, 181, 230, 262, 271], "crucial": [1, 2, 12, 14, 23, 82, 101, 136, 159, 223], "convert_to_funct": 1, "extract": [1, 5, 20, 49, 52, 58, 59, 73, 97, 116, 117, 127, 128, 137, 141, 144, 154, 157, 159, 165, 172, 173, 174, 178, 208, 212, 213, 216], "convert": [1, 5, 9, 10, 12, 14, 19, 20, 22, 23, 44, 49, 51, 52, 55, 73, 75, 95, 97, 105, 107, 110, 112, 113, 115, 116, 118, 119, 121, 127, 128, 137, 139, 157, 158, 159, 160, 161, 162, 166, 169, 177, 178, 181, 183, 184, 185, 188, 189, 190, 192, 193, 196, 199, 200, 209, 213, 216, 218, 220, 223, 224, 225, 227, 228, 229, 234, 244, 247, 251, 252], "strictli": [1, 159], "speak": [1, 8, 43, 125, 135, 149, 247], "perfectli": [1, 14, 65, 78, 111], "encourag": [1, 6, 19, 139, 160, 165, 171], "usag": [1, 3, 4, 11, 13, 15, 21, 23, 37, 60, 82, 109, 116, 121, 123, 125, 135, 136, 144, 145, 159, 161, 163, 164, 168, 177, 184, 185, 188, 193, 194, 195, 199, 207, 220, 226, 230, 245, 247, 251, 256, 262, 271], "doe": [1, 2, 5, 6, 8, 13, 14, 15, 19, 22, 23, 25, 43, 47, 60, 61, 73, 79, 80, 85, 97, 98, 99, 101, 103, 105, 108, 112, 113, 117, 122, 123, 130, 133, 134, 135, 136, 139, 142, 145, 146, 147, 149, 152, 153, 158, 159, 160, 162, 163, 164, 165, 168, 169, 172, 173, 174, 176, 178, 182, 183, 184, 190, 191, 192, 197, 199, 202, 203, 205, 208, 216, 223, 225, 226, 228, 230, 231, 234, 237, 244, 247, 262, 271], "often": [1, 4, 5, 6, 10, 14, 17, 49, 73, 87, 97, 99, 101, 103, 112, 113, 124, 125, 126, 128, 146, 153, 177, 193, 201, 203, 210, 216, 230, 247, 262, 271], "same": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17, 19, 20, 21, 22, 23, 25, 32, 40, 43, 44, 47, 49, 51, 52, 53, 55, 58, 59, 60, 65, 73, 78, 80, 85, 87, 95, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 118, 119, 122, 123, 124, 125, 127, 129, 132, 133, 135, 137, 138, 139, 141, 144, 145, 146, 147, 149, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 179, 181, 182, 185, 186, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 208, 213, 214, 218, 222, 223, 228, 230, 231, 234, 244, 247, 252, 256, 258, 260, 262, 269, 271], "usual": [1, 5, 6, 8, 19, 23, 43, 58, 59, 60, 61, 99, 100, 102, 103, 113, 117, 124, 125, 128, 129, 130, 133, 135, 136, 144, 147, 152, 156, 157, 159, 166, 195, 205, 230, 237, 247, 260, 269], "former": [1, 5, 61, 79, 127, 128, 165], "lag": [1, 159], "absolut": [1, 6, 7, 10, 82, 99, 126, 156, 160, 208, 234], "dilut": 1, "averag": [1, 3, 19, 49, 52, 61, 82, 87, 97, 113, 115, 123, 127, 128, 129, 135, 137, 143, 146, 154, 159, 160, 163, 165, 166, 168, 176, 177, 182, 197, 198, 231, 247], "associ": [1, 5, 6, 8, 10, 17, 50, 82, 130, 141, 142, 156, 164, 171, 190, 201, 202, 244, 247], "One": [1, 2, 4, 5, 6, 7, 10, 11, 15, 21, 23, 49, 51, 60, 61, 73, 79, 82, 97, 98, 99, 101, 122, 123, 124, 125, 128, 133, 135, 137, 138, 142, 143, 149, 152, 153, 166, 169, 172, 177, 178, 191, 195, 200, 205, 209, 221, 223, 231, 239, 244, 247, 262, 263, 271, 272], "advantag": [1, 3, 6, 14, 17, 23, 49, 60, 85, 95, 98, 107, 120, 122, 125, 135, 136, 153, 159, 172, 177, 182, 185, 192, 201, 209, 220, 222, 226, 234, 247, 257], "match": [1, 4, 5, 10, 14, 17, 19, 20, 22, 49, 51, 58, 59, 60, 61, 68, 75, 76, 92, 97, 105, 108, 111, 112, 113, 134, 137, 138, 142, 144, 147, 149, 152, 154, 159, 162, 172, 173, 174, 182, 185, 190, 192, 195, 197, 201, 219, 220, 230, 239], "exactli": [1, 5, 7, 8, 10, 12, 17, 25, 43, 51, 52, 60, 78, 80, 101, 103, 105, 136, 144, 153, 174, 185, 201], "configur": [1, 4, 5, 6, 14, 18, 19, 20, 22, 23, 24, 42, 49, 50, 60, 61, 82, 113, 122, 124, 131, 133, 142, 144, 149, 152, 157, 159, 162, 168, 171, 176, 183, 184, 199, 200, 208, 212, 219, 220, 221, 225, 254, 266, 275], "pessimist": [1, 159], "bound": [1, 23, 49, 112, 126, 144, 159, 160, 168, 173, 174, 176, 178, 184, 230, 231, 247], "pai": [1, 10, 45, 49, 60, 115], "attent": [1, 7, 10, 42, 45, 49, 115, 118, 119, 121, 124, 136, 166, 184, 185, 193, 252, 254], "create_target_param": 1, "keyword": [1, 5, 156, 159, 171, 237, 244], "argument": [1, 2, 4, 5, 6, 8, 14, 21, 22, 23, 32, 43, 44, 48, 51, 55, 60, 69, 76, 78, 82, 89, 97, 99, 102, 103, 109, 111, 112, 115, 122, 123, 126, 127, 128, 132, 133, 135, 136, 138, 144, 145, 154, 155, 156, 159, 161, 162, 163, 164, 168, 171, 172, 173, 174, 179, 188, 191, 194, 199, 205, 206, 208, 209, 212, 222, 223, 230, 231, 237, 244, 245, 247, 254, 262, 263, 271, 272], "below": [1, 2, 4, 6, 10, 11, 12, 14, 16, 17, 18, 19, 20, 23, 24, 34, 43, 45, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 79, 82, 85, 97, 98, 99, 101, 102, 103, 105, 107, 108, 113, 114, 116, 118, 119, 124, 126, 129, 131, 132, 133, 134, 135, 136, 137, 141, 144, 147, 149, 152, 155, 157, 159, 160, 161, 162, 163, 164, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 184, 185, 186, 188, 190, 191, 192, 193, 195, 202, 203, 204, 211, 212, 213, 214, 216, 218, 219, 221, 222, 223, 225, 226, 228, 230, 231, 234, 237, 247, 252, 253, 258, 262, 271], "tell": [1, 18, 23, 42, 69, 87, 103, 111, 126, 127, 136, 138, 141, 152, 160, 161, 163, 165, 175, 187, 188, 209, 231, 262, 271], "fals": [1, 2, 6, 7, 10, 11, 12, 14, 19, 20, 23, 24, 34, 37, 38, 42, 43, 44, 49, 52, 55, 59, 60, 63, 64, 73, 82, 83, 87, 89, 92, 94, 96, 97, 101, 110, 111, 112, 115, 116, 117, 119, 122, 123, 124, 125, 126, 129, 134, 137, 141, 143, 144, 146, 147, 148, 150, 152, 153, 157, 158, 159, 160, 161, 162, 164, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 184, 185, 186, 190, 191, 192, 194, 195, 197, 198, 200, 201, 206, 208, 210, 211, 218, 219, 220, 221, 223, 228, 230, 232, 244, 246, 247, 248, 250, 252, 253, 258, 260, 261, 262, 263, 269, 270, 271, 272], "target_actor_network_param": 1, "attribut": [1, 6, 11, 14, 22, 25, 43, 47, 53, 60, 73, 76, 79, 82, 85, 90, 103, 108, 116, 125, 134, 136, 141, 147, 148, 153, 156, 173, 174, 176, 182, 185, 193, 194, 196, 199, 203, 207, 230, 251, 262, 271], "access": [1, 5, 6, 7, 10, 12, 14, 17, 19, 23, 50, 60, 68, 73, 78, 79, 87, 97, 102, 111, 112, 118, 119, 122, 125, 131, 135, 142, 153, 158, 160, 162, 171, 173, 174, 177, 185, 187, 189, 190, 192, 194, 201, 208, 209, 215, 218, 252, 260, 269], "detach": [1, 2, 6, 9, 11, 12, 13, 20, 32, 52, 73, 89, 90, 95, 101, 105, 108, 137, 150, 154, 165, 181, 185, 229, 244], "def": [1, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 33, 34, 37, 38, 44, 45, 47, 49, 51, 52, 53, 55, 60, 64, 65, 67, 73, 75, 78, 79, 85, 87, 89, 90, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 111, 112, 113, 115, 116, 117, 118, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 189, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 205, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 221, 223, 226, 228, 230, 231, 233, 234, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 254, 255, 258, 262, 271], "_init": 1, "self": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 25, 33, 34, 37, 38, 44, 45, 47, 49, 51, 52, 53, 55, 60, 65, 67, 73, 78, 79, 85, 87, 89, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 111, 112, 115, 118, 123, 124, 125, 127, 128, 129, 133, 134, 135, 138, 142, 143, 144, 146, 148, 149, 150, 153, 154, 156, 160, 161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 185, 193, 194, 195, 197, 198, 199, 202, 203, 209, 212, 214, 215, 216, 218, 219, 221, 222, 223, 226, 228, 233, 234, 237, 238, 239, 240, 241, 242, 243, 244, 248, 249, 250, 252], "actor_network": [1, 159], "value_network": [1, 159], "none": [1, 7, 11, 12, 14, 15, 17, 18, 19, 20, 24, 34, 49, 51, 60, 63, 64, 76, 79, 87, 89, 90, 97, 104, 105, 108, 111, 113, 115, 117, 118, 119, 122, 123, 129, 134, 135, 137, 138, 141, 142, 144, 145, 146, 147, 148, 150, 152, 154, 157, 160, 162, 164, 165, 171, 173, 174, 175, 178, 179, 182, 185, 194, 201, 202, 207, 209, 213, 215, 216, 230, 244, 245, 252, 260, 262, 269, 271], "super": [1, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 25, 33, 37, 38, 44, 45, 47, 49, 52, 59, 60, 65, 67, 73, 78, 79, 85, 87, 89, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 109, 111, 112, 115, 118, 123, 125, 127, 128, 129, 133, 134, 138, 142, 143, 146, 148, 149, 150, 153, 154, 156, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 177, 179, 181, 193, 194, 195, 197, 198, 199, 202, 203, 208, 209, 212, 214, 215, 218, 219, 221, 222, 223, 226, 233, 234, 237, 239, 240, 241, 242, 243, 248, 249, 250], "true": [1, 2, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 23, 24, 32, 34, 37, 38, 41, 42, 43, 44, 45, 47, 49, 51, 52, 55, 58, 59, 60, 63, 64, 68, 73, 76, 82, 87, 89, 90, 92, 94, 95, 96, 97, 98, 101, 104, 108, 109, 110, 111, 113, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 129, 130, 133, 134, 135, 136, 137, 139, 141, 143, 144, 146, 147, 148, 149, 153, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 184, 185, 186, 187, 188, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 203, 204, 205, 206, 208, 211, 212, 213, 214, 218, 220, 221, 222, 223, 224, 225, 228, 229, 230, 231, 234, 236, 238, 244, 250, 252, 253, 254, 255, 256, 257, 258, 260, 263, 269, 272], "compare_against": 1, "list": [1, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 24, 44, 47, 48, 49, 50, 52, 60, 61, 68, 73, 87, 90, 101, 102, 103, 105, 107, 108, 110, 111, 113, 115, 116, 118, 119, 125, 127, 128, 134, 135, 137, 142, 143, 147, 153, 154, 156, 157, 158, 159, 161, 162, 163, 165, 168, 169, 171, 172, 173, 174, 178, 183, 185, 186, 191, 193, 198, 200, 201, 204, 206, 208, 209, 212, 215, 216, 218, 222, 223, 227, 228, 229, 231, 234, 237, 251, 252, 266, 275], "actor_in_kei": 1, "in_kei": [1, 14, 136, 159], "sinc": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 16, 19, 20, 21, 23, 44, 49, 51, 52, 53, 60, 65, 73, 78, 85, 97, 98, 99, 101, 102, 103, 105, 111, 113, 115, 116, 117, 118, 119, 124, 126, 127, 128, 130, 131, 135, 136, 139, 142, 143, 148, 150, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 169, 171, 172, 175, 176, 178, 179, 182, 183, 184, 185, 187, 188, 189, 190, 191, 197, 198, 199, 200, 204, 207, 210, 212, 214, 223, 226, 230, 231, 237, 239, 258, 262, 271], "base": [1, 5, 6, 7, 9, 10, 11, 14, 16, 17, 18, 20, 23, 24, 25, 42, 44, 49, 52, 57, 58, 59, 60, 73, 75, 76, 78, 85, 87, 97, 99, 105, 109, 112, 115, 116, 119, 120, 121, 122, 123, 126, 127, 136, 137, 146, 155, 156, 160, 162, 165, 168, 169, 171, 174, 177, 178, 181, 182, 184, 185, 186, 191, 195, 196, 197, 198, 199, 200, 201, 212, 219, 223, 225, 230, 234, 244, 247, 251, 262, 271], "singl": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 20, 21, 22, 23, 43, 47, 51, 53, 54, 55, 56, 58, 59, 60, 61, 78, 85, 87, 97, 99, 113, 115, 121, 122, 123, 124, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 143, 145, 146, 150, 154, 159, 160, 161, 162, 163, 165, 168, 171, 172, 173, 174, 175, 179, 182, 184, 193, 197, 200, 201, 205, 213, 214, 218, 219, 223, 227, 231, 234, 247, 251, 252, 262, 271], "critic": [1, 52, 73, 85, 132, 216, 223, 228], "actor_crit": 1, "actorcriticwrapp": 1, "loss_funct": [1, 99, 102, 103], "l2": [1, 87, 93, 156], "q": [1, 7, 17, 43, 49, 60, 121, 124, 146, 164, 171, 195, 197, 201, 234], "empir": [1, 150, 159], "bootstrap": [1, 136], "td": [1, 14, 52, 136], "varianc": [1, 6, 19, 159], "bia": [1, 2, 5, 6, 7, 9, 13, 19, 43, 47, 52, 68, 69, 93, 99, 104, 109, 111, 112, 115, 123, 129, 134, 136, 142, 145, 156, 159, 163, 164, 166, 173, 179, 181, 185, 193, 195, 198, 200, 201, 203, 218, 223, 244], "mean": [1, 2, 5, 6, 7, 10, 12, 14, 19, 23, 25, 42, 47, 49, 51, 52, 58, 59, 60, 68, 73, 76, 80, 82, 85, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104, 109, 111, 112, 115, 116, 117, 122, 124, 126, 127, 129, 135, 137, 139, 143, 146, 147, 149, 153, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 169, 171, 173, 174, 182, 185, 187, 189, 190, 191, 193, 197, 198, 200, 204, 205, 206, 207, 210, 214, 228, 229, 231, 234, 237, 238, 247, 252], "obtain": [1, 9, 24, 49, 60, 68, 87, 111, 126, 129, 135, 137, 142, 145, 154, 159, 160, 162, 168, 171, 178], "reward": [1, 4, 14, 136, 146, 159, 160, 161, 163], "noth": [1, 16, 23, 42, 73, 113, 130, 149, 159, 163, 168, 179, 256], "mont": 1, "carlo": 1, "whole": [1, 3, 25, 44, 47, 60, 112, 113, 121, 135, 143, 156, 157, 159, 165, 182, 183, 185, 190, 200, 205, 208, 234], "sequenc": [1, 5, 6, 12, 21, 23, 48, 49, 60, 67, 68, 98, 100, 103, 111, 112, 113, 115, 116, 118, 136, 137, 153, 159, 164, 165, 173, 174, 175, 182, 184, 185, 193, 195, 205, 210, 211, 218, 223, 230, 234, 247, 252, 262, 271], "upcom": 1, "intermedi": [1, 17, 25, 74, 108, 112, 120, 121, 131, 134, 141, 144, 145, 146, 149, 152, 200, 201, 231, 239, 256], "lambda": [1, 5, 7, 17, 20, 22, 49, 90, 104, 115, 116, 125, 143, 158, 160, 161, 172, 173, 174, 201, 205, 230, 231, 246, 254, 262, 271], "compromis": 1, "easi": [1, 2, 5, 6, 9, 23, 24, 44, 45, 51, 58, 59, 60, 61, 68, 80, 95, 97, 99, 122, 124, 126, 135, 142, 143, 145, 150, 153, 159, 168, 176, 183, 186, 195, 201, 205, 209, 220, 231, 257], "valueestim": 1, "enum": 1, "pointer": [1, 5, 6, 22, 23, 98, 162], "defin": [1, 2, 5, 12, 14, 15, 16, 17, 18, 20, 21, 23, 25, 38, 43, 45, 52, 58, 59, 62, 65, 67, 68, 69, 73, 78, 79, 85, 87, 98, 99, 103, 105, 111, 112, 113, 116, 118, 121, 122, 123, 125, 127, 131, 135, 136, 138, 139, 142, 143, 146, 150, 152, 154, 160, 161, 162, 164, 166, 168, 169, 172, 173, 174, 183, 187, 189, 195, 199, 200, 201, 208, 209, 210, 216, 219, 220, 221, 228, 234, 235, 237, 244, 251, 258, 260, 269], "default": [1, 3, 5, 6, 8, 9, 10, 11, 12, 15, 19, 20, 21, 24, 43, 45, 49, 51, 52, 55, 60, 63, 64, 69, 75, 76, 78, 82, 95, 99, 101, 108, 111, 115, 116, 117, 118, 119, 121, 122, 123, 124, 129, 134, 135, 136, 138, 141, 142, 144, 147, 149, 152, 155, 157, 158, 159, 161, 162, 163, 164, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 186, 188, 192, 193, 194, 195, 197, 198, 199, 200, 202, 206, 207, 208, 213, 214, 216, 219, 220, 223, 226, 228, 231, 234, 235, 237, 244, 245, 247, 252, 253, 258, 260, 261, 262, 269, 270, 271], "simplest": [1, 6, 23, 47, 99, 136, 159, 165, 213, 247], "util": [1, 3, 5, 7, 10, 14, 15, 17, 19, 20, 22, 23, 24, 25, 33, 34, 37, 38, 44, 45, 49, 51, 52, 53, 55, 60, 73, 75, 82, 87, 92, 94, 96, 104, 109, 112, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 126, 129, 134, 135, 137, 138, 141, 142, 144, 145, 147, 148, 153, 154, 155, 157, 158, 159, 162, 164, 165, 166, 168, 169, 171, 172, 176, 177, 178, 182, 184, 185, 188, 193, 194, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 210, 216, 218, 220, 221, 222, 224, 225, 226, 229, 230, 236, 240, 245, 246, 250, 252, 253, 254], "default_value_estim": 1, "td0": 1, "instruct": [1, 6, 7, 19, 23, 24, 42, 108, 113, 115, 116, 118, 127, 128, 136, 137, 141, 156, 157, 159, 161, 163, 165, 176, 177, 182, 194, 197, 198, 199, 206, 207, 208, 213, 219, 220, 226, 229, 234, 246, 247, 256], "queri": [1, 14, 22, 49, 60, 112, 118, 162, 164, 165, 178, 185, 193, 197, 200], "default_value_kwarg": 1, "td0estim": 1, "td1estim": 1, "tdlambdaestim": 1, "make_value_estim": 1, "value_typ": 1, "hyperparam": [1, 201], "hp": 1, "dict": [1, 18, 49, 51, 142, 143, 146, 147, 152, 153, 156, 159, 173, 174, 178, 195, 200, 209, 214, 216, 230, 237, 244], "hasattr": 1, "gamma": [1, 7, 115, 117, 122, 123, 129, 146, 157, 159, 160, 161, 163, 178], "value_kei": 1, "state_action_valu": [1, 160], "td1": 1, "_value_estim": 1, "elif": [1, 12, 16, 19, 49, 52, 60, 134, 137, 146, 147, 150, 156, 185, 216], "gae": [1, 159], "rais": [1, 8, 11, 12, 19, 49, 60, 73, 124, 125, 128, 144, 146, 147, 158, 159, 172, 173, 174, 204, 216, 244, 247], "notimplementederror": [1, 244], "f": [1, 5, 7, 8, 9, 11, 12, 14, 17, 18, 19, 22, 32, 33, 34, 37, 38, 40, 42, 43, 44, 47, 48, 49, 53, 55, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 87, 89, 90, 92, 93, 94, 96, 97, 99, 102, 103, 104, 105, 108, 110, 111, 112, 113, 116, 117, 118, 122, 123, 124, 125, 127, 129, 133, 134, 135, 136, 137, 138, 139, 144, 145, 146, 148, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 178, 181, 182, 184, 185, 186, 187, 188, 193, 195, 197, 198, 201, 204, 205, 210, 212, 213, 214, 215, 216, 219, 221, 226, 231, 233, 234, 237, 239, 240, 241, 242, 243, 244, 246, 248, 249, 250, 254, 255, 256, 257, 258, 262, 271], "tdlambda": 1, "unknown": [1, 49, 60, 75, 116, 213], "set_kei": 1, "central": [1, 8, 73, 102, 103, 131, 257], "quit": [1, 6, 17, 23, 49, 60, 73, 125, 135, 139, 149, 152, 159, 163, 189, 201, 208, 215, 231], "weight": [1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 17, 19, 20, 24, 33, 39, 43, 44, 49, 60, 63, 64, 66, 67, 68, 69, 71, 72, 73, 78, 89, 90, 93, 97, 99, 100, 102, 103, 104, 110, 111, 112, 115, 117, 121, 123, 129, 131, 134, 136, 137, 138, 139, 142, 144, 145, 147, 152, 153, 154, 156, 157, 159, 160, 163, 165, 166, 168, 171, 173, 177, 178, 179, 181, 182, 183, 184, 185, 188, 197, 198, 199, 200, 201, 202, 203, 205, 216, 219, 221, 223, 228, 229, 232, 234, 244, 253, 256, 262, 271], "must": [1, 2, 4, 5, 6, 8, 10, 11, 12, 14, 22, 23, 42, 49, 52, 60, 61, 67, 73, 85, 98, 99, 103, 107, 108, 111, 112, 113, 122, 133, 135, 136, 138, 141, 157, 159, 162, 168, 171, 172, 173, 174, 179, 189, 190, 192, 193, 194, 198, 200, 202, 205, 212, 227, 237, 239, 241, 244, 254, 257, 262, 263, 271, 272], "sure": [1, 4, 5, 6, 8, 10, 11, 14, 19, 22, 51, 57, 58, 59, 60, 87, 97, 98, 99, 103, 108, 112, 113, 115, 118, 123, 124, 128, 133, 135, 136, 137, 139, 143, 149, 157, 159, 161, 171, 185, 188, 190, 192, 194, 200, 205, 212, 213, 220, 229, 230, 237, 245, 247, 254], "otherwis": [1, 8, 10, 12, 14, 17, 19, 23, 55, 82, 85, 112, 113, 123, 125, 130, 133, 136, 141, 144, 145, 147, 152, 159, 160, 162, 198, 201, 205, 206, 212, 230], "mix": [1, 8, 15, 60, 61, 109, 113, 147, 182, 199, 220, 221, 235, 251, 252], "hold_out_param": 1, "_loss_actor": 1, "tensor": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 21, 22, 23, 35, 37, 40, 41, 42, 43, 44, 45, 46, 47, 49, 51, 57, 58, 59, 60, 61, 62, 64, 65, 67, 68, 69, 70, 73, 75, 77, 78, 81, 85, 88, 89, 91, 92, 93, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 112, 115, 116, 117, 118, 121, 122, 123, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 144, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 178, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 194, 195, 196, 197, 199, 201, 202, 203, 205, 206, 208, 209, 212, 213, 215, 216, 219, 220, 228, 229, 230, 231, 234, 235, 237, 239, 246, 250, 251, 254, 256], "td_copi": 1, "select": [1, 5, 10, 17, 23, 42, 50, 60, 80, 82, 87, 97, 105, 147, 156, 160, 161, 163, 168, 169, 182, 185, 191, 196, 197, 201, 206, 219, 238, 247, 254, 261, 264, 270, 273], "made": [1, 6, 10, 15, 19, 25, 51, 52, 87, 97, 98, 103, 113, 119, 122, 125, 135, 136, 165, 169, 171, 173, 174, 175, 177, 192, 196, 200, 224, 225, 228, 229, 234, 247, 262, 271], "pass": [1, 2, 3, 4, 6, 8, 10, 12, 13, 14, 15, 16, 19, 22, 23, 25, 43, 44, 49, 51, 52, 53, 56, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 82, 85, 87, 97, 98, 99, 101, 102, 103, 111, 112, 113, 115, 116, 118, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133, 134, 135, 136, 138, 141, 143, 146, 147, 149, 150, 153, 154, 156, 159, 160, 161, 162, 163, 165, 166, 168, 171, 172, 173, 174, 179, 183, 184, 185, 187, 189, 192, 193, 194, 195, 198, 200, 202, 211, 212, 213, 214, 216, 219, 222, 230, 231, 237, 238, 239, 244, 247, 252, 258], "param": [1, 7, 14, 16, 19, 33, 43, 47, 51, 68, 85, 93, 99, 111, 112, 117, 122, 123, 130, 133, 135, 138, 141, 150, 154, 157, 162, 163, 178, 179, 189, 216, 231, 244, 247, 252, 257, 258], "actor_network_param": 1, "value_network_param": 1, "reli": [1, 3, 6, 8, 14, 23, 49, 103, 125, 146, 152, 156, 159, 191, 204, 207, 212, 247], "distance_loss": 1, "_loss_valu": 1, "v": [1, 2, 7, 9, 19, 24, 32, 37, 43, 49, 52, 53, 55, 60, 89, 101, 102, 103, 105, 108, 124, 137, 141, 147, 150, 154, 160, 162, 168, 178, 181, 183, 189, 192, 200, 205, 208, 209, 263, 272], "pred_val": 1, "squeez": [1, 9, 10, 12, 14, 34, 49, 60, 73, 90, 95, 110, 137, 146, 149, 150, 165, 169, 178, 184, 185, 229], "manual": [1, 5, 8, 12, 22, 23, 47, 49, 53, 63, 64, 69, 97, 111, 112, 130, 136, 138, 141, 153, 154, 157, 182, 183, 185, 193, 198, 207, 212, 215, 226, 230, 261, 262, 270, 271], "reconstruct": 1, "first": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 40, 42, 44, 45, 49, 50, 51, 52, 53, 55, 58, 59, 60, 61, 68, 69, 73, 76, 78, 79, 80, 82, 83, 85, 87, 97, 99, 101, 102, 103, 109, 111, 112, 113, 115, 116, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 149, 150, 152, 154, 155, 156, 157, 159, 160, 161, 162, 163, 165, 168, 171, 172, 173, 174, 175, 178, 179, 182, 184, 185, 187, 188, 189, 191, 192, 193, 194, 195, 197, 198, 200, 201, 203, 205, 208, 212, 213, 214, 215, 216, 218, 219, 221, 222, 223, 225, 230, 231, 234, 237, 244, 247, 254, 262, 263, 271, 272], "belong": [1, 7, 127, 137, 213, 262, 271], "second": [1, 4, 5, 6, 7, 8, 9, 12, 13, 14, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 123, 125, 126, 127, 128, 129, 130, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 156, 159, 160, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 178, 181, 184, 185, 189, 190, 191, 192, 193, 195, 200, 203, 205, 211, 212, 218, 221, 223, 224, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 262, 271], "target_param": 1, "target_value_network_param": 1, "batch_siz": [1, 5, 6, 7, 14, 16, 17, 19, 20, 24, 34, 37, 38, 44, 45, 49, 51, 52, 55, 60, 73, 75, 78, 87, 89, 92, 94, 96, 97, 104, 110, 113, 115, 116, 117, 118, 122, 123, 124, 126, 129, 134, 135, 136, 137, 145, 146, 148, 149, 152, 154, 157, 159, 160, 161, 162, 164, 165, 166, 168, 169, 171, 175, 176, 177, 178, 182, 185, 193, 197, 198, 201, 205, 220, 221, 230, 234, 236, 250, 253], "target_valu": 1, "value_estim": 1, "l1": [1, 17, 87, 156, 177, 201], "smooth": [1, 6, 97, 171], "loss_valu": [1, 159], "td_error": 1, "pow": [1, 2, 5, 32, 63, 64, 68, 69, 72, 89, 111, 125, 189], "miss": [1, 51, 112, 113, 133, 136, 168, 172, 177, 190, 204, 222, 230, 262, 271], "glue": [1, 137, 163], "cost": [1, 5, 14, 49, 52, 97, 99, 109, 122, 123, 124, 125, 150, 168, 194, 223, 232, 247], "deliv": [1, 42, 177, 207, 220, 254], "tensordictbas": [1, 14], "_forward": 1, "input_tensordict": 1, "unsqueez": [1, 2, 7, 12, 14, 47, 49, 58, 59, 60, 68, 69, 78, 90, 94, 95, 104, 110, 111, 117, 118, 129, 136, 139, 146, 150, 154, 158, 160, 161, 163, 165, 169, 204, 206, 229], "ndimens": 1, "inplac": [1, 12, 19, 20, 52, 110, 123, 134, 157, 173, 174, 181, 195, 201, 218, 223, 228], "loss_actor": 1, "pred_valu": 1, "pred_value_max": 1, "max": [1, 10, 11, 17, 19, 44, 49, 52, 58, 59, 60, 73, 75, 82, 87, 92, 95, 97, 98, 104, 117, 118, 123, 126, 129, 135, 136, 137, 139, 146, 157, 159, 160, 164, 166, 169, 171, 173, 174, 178, 182, 184, 185, 193, 197, 198, 200, 201, 213, 230, 247, 258, 260, 269], "target_value_max": 1, "ddpgloss": 1, "most": [1, 2, 4, 5, 11, 14, 17, 22, 23, 25, 42, 43, 49, 51, 52, 58, 59, 60, 73, 75, 87, 99, 101, 102, 109, 112, 117, 120, 123, 124, 125, 126, 128, 129, 130, 135, 137, 142, 143, 144, 146, 147, 152, 157, 158, 159, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 177, 182, 191, 192, 194, 195, 197, 198, 200, 201, 208, 213, 220, 221, 223, 229, 244, 247], "taken": [1, 6, 8, 14, 19, 22, 25, 60, 82, 83, 113, 119, 136, 139, 143, 152, 159, 160, 171, 184, 185, 234, 239, 262, 271], "condit": [1, 14, 49, 55, 65, 102, 111, 113, 115, 123, 135, 137, 153, 172, 173, 174, 202, 216, 262, 271], "remaind": [1, 7, 9, 134, 141, 181], "cheetah": 1, "goal": [1, 6, 14, 15, 44, 49, 52, 58, 61, 73, 85, 97, 125, 126, 135, 136, 143, 159, 161, 163, 176, 189, 221], "half": [1, 7, 8, 17, 95, 117, 147, 176, 177, 201, 230, 258, 262, 271], "dm_control": 1, "gym": [1, 14, 121, 136, 146, 159, 160, 161, 163], "env": [1, 18, 132, 135, 136, 146, 159, 160, 161, 163, 187, 194, 206, 208, 231, 246], "gymenv": [1, 136, 159], "halfcheetah": 1, "v4": [1, 159], "dmcontrolenv": 1, "By": [1, 8, 17, 19, 25, 43, 60, 63, 64, 76, 82, 87, 101, 103, 111, 113, 122, 124, 126, 135, 138, 141, 143, 144, 152, 156, 160, 168, 173, 174, 176, 177, 186, 190, 192, 193, 194, 201, 206, 213, 214, 226, 247, 252, 254, 260, 269], "disabl": [1, 9, 11, 15, 42, 122, 123, 146, 148, 150, 158, 162, 164, 168, 181, 184, 189, 190, 191, 192, 198, 204, 206, 214, 230, 252, 260, 261, 269, 270], "render": [1, 6, 58, 82, 90, 126, 146, 159, 260, 269], "easier": [1, 17, 18, 23, 24, 50, 51, 58, 98, 123, 126, 143, 144, 152, 161, 165, 169, 176, 184, 189, 192, 194, 200, 201, 205, 214, 216, 231, 254], "than": [1, 3, 5, 6, 8, 10, 11, 12, 13, 14, 17, 19, 23, 25, 44, 48, 49, 50, 52, 53, 60, 67, 69, 73, 82, 85, 95, 97, 98, 99, 101, 103, 105, 112, 113, 116, 117, 121, 122, 123, 126, 128, 129, 132, 133, 135, 138, 143, 144, 145, 146, 149, 150, 152, 153, 154, 158, 159, 160, 161, 168, 169, 171, 172, 177, 178, 182, 184, 188, 189, 193, 194, 195, 197, 201, 203, 204, 206, 207, 209, 223, 228, 231, 234, 237, 247, 261, 262, 270, 271], "focu": [1, 6, 7, 10, 18, 58, 59, 97, 99, 107, 122, 124, 125, 137, 139, 159, 161, 163, 165, 177, 184, 190, 221, 234], "from_pixel": [1, 136], "pixels_onli": 1, "make_env": 1, "helper": [1, 5, 8, 9, 14, 16, 17, 23, 47, 51, 55, 59, 97, 98, 110, 118, 122, 123, 126, 127, 128, 129, 134, 135, 136, 160, 161, 162, 163, 165, 166, 169, 171, 178, 201, 208, 210, 211], "either": [1, 2, 4, 5, 6, 8, 17, 19, 23, 42, 44, 49, 60, 65, 87, 97, 105, 111, 112, 113, 117, 122, 124, 133, 136, 137, 147, 156, 160, 161, 162, 168, 172, 182, 185, 192, 193, 198, 199, 201, 203, 209, 213, 216, 220, 221, 224, 225, 226, 230, 244, 247, 254, 256, 260, 262, 269, 271], "backend": [1, 5, 6, 7, 11, 14, 16, 18, 20, 24, 25, 33, 38, 53, 55, 61, 105, 117, 119, 120, 121, 126, 129, 132, 133, 136, 137, 147, 150, 158, 159, 168, 172, 174, 175, 177, 187, 188, 194, 196, 200, 207, 212, 219, 223, 228, 230, 251, 252, 261, 270], "consid": [1, 6, 10, 11, 14, 23, 49, 60, 61, 68, 73, 82, 111, 115, 116, 123, 130, 133, 135, 141, 147, 150, 152, 153, 155, 157, 161, 165, 168, 172, 178, 189, 190, 191, 205, 223, 237, 239, 252], "dm": [1, 127, 128, 165], "lib": [1, 4, 5, 6, 10, 18, 22, 23, 108, 136, 144, 159, 187, 204, 208, 220, 246], "env_librari": 1, "env_nam": [1, 82, 159], "global": [1, 5, 6, 17, 25, 49, 56, 60, 87, 124, 138, 144, 145, 149, 152, 154, 160, 162, 164, 166, 173, 174, 182, 184, 201, 210, 212, 216, 230, 231, 232, 244, 246, 247, 252], "env_task": 1, "env_arg": 1, "env_kwarg": 1, "frame_skip": [1, 159], "modifi": [1, 3, 6, 10, 11, 14, 19, 43, 44, 49, 52, 58, 59, 73, 78, 97, 98, 118, 119, 124, 135, 139, 142, 143, 144, 155, 156, 157, 159, 161, 165, 173, 174, 179, 188, 195, 203, 213, 223, 244, 247, 263, 272], "represent": [1, 4, 10, 14, 23, 25, 43, 52, 60, 85, 97, 99, 102, 103, 105, 108, 110, 112, 121, 126, 137, 142, 143, 146, 165, 168, 169, 173, 174, 175, 193, 196, 197, 200, 203, 209, 216, 231, 234, 244, 256], "friendli": [1, 4, 15, 23, 177, 216, 230], "append": [1, 7, 8, 9, 12, 14, 16, 17, 18, 19, 21, 49, 52, 60, 73, 98, 103, 109, 112, 115, 118, 122, 125, 127, 128, 129, 134, 135, 136, 137, 143, 146, 148, 149, 156, 159, 160, 161, 162, 163, 164, 165, 169, 172, 178, 181, 182, 185, 197, 198, 201, 216, 230, 231], "special": [1, 7, 10, 18, 22, 23, 48, 60, 73, 99, 101, 103, 113, 115, 116, 118, 125, 136, 147, 155, 156, 168, 171, 173, 174, 182, 193, 197, 202, 244, 252], "torchr": 1, "transformedenv": [1, 14, 136, 159], "common": [1, 4, 6, 8, 10, 14, 17, 19, 44, 49, 51, 60, 61, 82, 95, 97, 99, 101, 103, 112, 117, 121, 124, 133, 134, 137, 143, 146, 153, 156, 157, 158, 159, 164, 171, 175, 178, 183, 187, 191, 193, 201, 216, 221, 231, 232, 246, 247, 262, 271], "rescal": [1, 51, 178, 184], "heurist": [1, 82, 200, 219, 254], "multipli": [1, 5, 12, 19, 48, 49, 60, 95, 104, 127, 142, 165, 176, 177, 231, 234], "5": [1, 2, 3, 5, 6, 7, 9, 11, 14, 17, 20, 23, 24, 32, 34, 36, 37, 38, 40, 43, 45, 47, 48, 49, 52, 60, 64, 65, 73, 75, 78, 80, 82, 85, 87, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 109, 110, 111, 112, 113, 114, 115, 116, 118, 122, 123, 125, 126, 127, 129, 133, 135, 137, 138, 141, 142, 143, 144, 146, 147, 149, 150, 153, 154, 156, 157, 158, 161, 162, 163, 164, 165, 166, 171, 172, 173, 174, 176, 177, 178, 181, 187, 189, 190, 191, 192, 193, 194, 195, 197, 198, 201, 202, 203, 205, 207, 208, 210, 211, 213, 215, 218, 219, 220, 221, 224, 226, 227, 233, 239, 243, 244, 245, 247, 248, 249, 253, 256, 257, 262, 263, 266, 271, 272, 275], "interfac": [1, 4, 5, 6, 14, 15, 20, 22, 23, 25, 49, 60, 126, 132, 135, 159, 171, 186, 194, 209, 220, 226], "simul": [1, 17, 18, 19, 59, 119, 159, 160, 201, 204, 215, 222], "doubl": [1, 2, 5, 6, 13, 23, 58, 80, 95, 104, 109, 117, 121, 125, 129, 136, 137, 141, 146, 154, 157, 159, 169, 185, 192, 219, 230, 262, 271], "precis": [1, 4, 8, 10, 15, 20, 61, 125, 129, 130, 137, 147, 159, 169, 177, 182, 185, 188, 199, 219, 220, 221, 234, 235, 251], "number": [1, 5, 6, 7, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 42, 44, 49, 51, 52, 53, 55, 58, 60, 65, 82, 85, 87, 97, 99, 101, 103, 109, 112, 115, 116, 122, 123, 124, 125, 126, 127, 132, 133, 134, 135, 136, 137, 138, 139, 141, 144, 145, 148, 149, 150, 153, 156, 157, 158, 159, 160, 161, 162, 163, 168, 171, 172, 175, 178, 184, 185, 187, 188, 192, 193, 198, 199, 205, 206, 210, 213, 214, 219, 223, 228, 231, 234, 247, 255, 260, 269], "presum": 1, "ones": [1, 2, 4, 6, 11, 12, 14, 19, 21, 32, 40, 48, 49, 60, 76, 80, 85, 89, 92, 95, 97, 110, 113, 118, 125, 135, 138, 143, 153, 154, 155, 157, 159, 160, 168, 173, 174, 177, 178, 179, 190, 191, 198, 202, 209, 216, 220, 231, 246, 255, 262, 271], "goe": [1, 4, 5, 23, 51, 95, 98, 99, 130, 145, 155, 159, 162, 213, 228, 262, 271], "wai": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 20, 21, 22, 25, 32, 43, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 60, 67, 73, 78, 80, 82, 87, 95, 98, 99, 101, 103, 105, 108, 110, 112, 113, 115, 120, 123, 124, 125, 126, 127, 130, 132, 133, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 156, 157, 159, 161, 162, 164, 166, 169, 173, 174, 175, 178, 179, 184, 185, 190, 191, 192, 193, 195, 196, 197, 198, 200, 202, 204, 209, 213, 214, 216, 222, 223, 229, 232, 234, 239, 240, 244, 247, 252], "doubletofloat": [1, 159], "refer": [1, 4, 5, 6, 8, 13, 15, 16, 17, 21, 22, 23, 24, 25, 49, 59, 60, 61, 73, 76, 82, 85, 97, 99, 101, 102, 103, 105, 107, 108, 109, 112, 113, 118, 122, 123, 124, 125, 127, 128, 132, 133, 144, 149, 152, 156, 157, 159, 161, 162, 163, 168, 171, 173, 174, 177, 178, 185, 188, 189, 192, 194, 197, 198, 199, 201, 204, 208, 209, 219, 221, 222, 224, 225, 229, 230, 231, 237, 244, 247, 252, 254, 256, 257, 261, 266, 270, 275], "float": [1, 5, 6, 7, 8, 9, 11, 12, 13, 19, 23, 37, 38, 40, 41, 44, 48, 51, 52, 58, 59, 63, 64, 72, 73, 80, 89, 95, 101, 103, 104, 108, 109, 111, 118, 122, 123, 124, 126, 135, 137, 143, 144, 146, 147, 148, 155, 156, 157, 160, 161, 163, 164, 166, 178, 179, 181, 184, 185, 186, 189, 190, 191, 192, 193, 194, 197, 198, 200, 206, 208, 216, 218, 219, 221, 223, 228, 230, 234, 238, 244], "in_keys_inv": [1, 14], "befor": [1, 3, 5, 6, 8, 9, 10, 11, 12, 14, 16, 19, 20, 22, 23, 25, 32, 33, 42, 43, 44, 45, 47, 49, 51, 52, 55, 58, 59, 60, 68, 69, 73, 85, 95, 97, 98, 99, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 115, 117, 119, 122, 124, 126, 127, 129, 133, 135, 136, 137, 139, 141, 144, 146, 149, 152, 153, 156, 157, 158, 159, 161, 162, 163, 165, 168, 169, 172, 173, 174, 176, 177, 178, 179, 182, 183, 185, 187, 189, 190, 192, 195, 197, 198, 200, 215, 218, 224, 225, 227, 228, 230, 231, 237, 241, 244, 245, 247, 251, 252, 254, 258], "concaten": [1, 14, 48, 49, 60, 79, 101, 102, 110, 115, 124, 128, 134, 160, 197], "cattensor": [1, 14], "leav": [1, 8, 17, 43, 49, 51, 53, 60, 61, 85, 113, 126, 152, 153, 158, 201, 204, 219, 222, 244], "constant": [1, 2, 6, 17, 20, 23, 25, 48, 58, 60, 82, 87, 99, 108, 113, 119, 136, 153, 159, 160, 169, 172, 174, 177, 185, 197, 201, 247, 252], "envcreat": 1, "inittrack": [1, 136], "observationnorm": [1, 136, 159], "parallelenv": [1, 159], "rewardsc": [1, 136], "stepcount": [1, 136, 159], "make_transformed_env": 1, "scale": [1, 6, 12, 19, 51, 56, 61, 73, 97, 105, 112, 120, 121, 122, 123, 126, 135, 136, 146, 159, 160, 166, 177, 178, 179, 184, 185, 200, 221, 230, 234, 244, 247, 254, 256, 257], "base_env": [1, 159], "syntax": [1, 3, 23, 25, 48, 60, 84, 86, 99, 112, 121], "append_transform": [1, 14, 136], "loc": [1, 20, 83, 133, 136, 159, 165, 230], "reward_sc": 1, "observation_vector": 1, "renam": [1, 179, 182, 187, 197, 198], "facilit": [1, 11, 14, 49, 60, 97, 112, 121, 124, 136, 193], "downstream": [1, 6, 113, 171], "oper": [1, 4, 6, 13, 14, 15, 17, 18, 19, 20, 21, 25, 42, 43, 45, 47, 49, 51, 60, 61, 63, 64, 65, 67, 68, 76, 80, 82, 83, 85, 92, 97, 98, 99, 103, 105, 107, 109, 110, 111, 116, 118, 121, 123, 124, 125, 127, 130, 135, 136, 137, 138, 141, 142, 144, 145, 147, 149, 150, 154, 155, 158, 159, 161, 165, 168, 169, 171, 172, 173, 174, 176, 182, 183, 184, 185, 187, 188, 189, 190, 194, 196, 197, 198, 199, 201, 203, 204, 205, 206, 214, 216, 219, 220, 222, 226, 228, 229, 230, 231, 234, 237, 238, 239, 246, 251, 252, 258], "vector": [1, 2, 4, 5, 6, 12, 14, 22, 23, 32, 49, 52, 60, 82, 97, 99, 101, 102, 103, 110, 115, 127, 128, 136, 137, 141, 144, 154, 155, 165, 177, 186, 199, 205, 207, 208, 219, 220, 234, 247, 254, 256], "snippet": [1, 10, 21, 58, 59, 122, 123, 135, 144, 155, 164, 176, 185, 189, 197, 198, 208, 215, 222, 228, 230, 237, 246, 247, 252, 257], "selected_kei": 1, "observation_spec": [1, 14, 159], "out_kei": [1, 14, 136, 159], "instanti": [1, 5, 6, 10, 14, 21, 22, 25, 51, 52, 65, 67, 78, 85, 97, 105, 111, 113, 118, 126, 155, 156, 160, 171, 175, 202, 234, 237], "stateless": [1, 14, 22, 138, 141], "standard_norm": [1, 136], "max_frames_per_traj": [1, 159], "marker": [1, 51, 128], "ornstein": 1, "uhlenbeck": 1, "ou": 1, "significantli": [1, 19, 102, 119, 120, 124, 129, 149, 172, 176, 184, 197, 199, 203, 228, 234, 239, 247, 260, 269], "speed": [1, 5, 6, 10, 14, 19, 48, 49, 61, 85, 97, 120, 121, 122, 124, 131, 136, 138, 144, 147, 158, 159, 161, 164, 172, 176, 184, 185, 186, 196, 203, 207, 212, 216, 223, 228, 231, 234, 245, 247, 251], "throughput": [1, 122, 177, 234, 247], "whether": [1, 6, 8, 10, 11, 14, 20, 22, 49, 52, 95, 97, 105, 108, 112, 126, 130, 135, 137, 143, 146, 152, 159, 161, 168, 169, 171, 179, 192, 231, 247, 261, 270], "individu": [1, 5, 6, 12, 21, 25, 49, 78, 85, 110, 115, 124, 126, 129, 143, 149, 154, 156, 162, 165, 169, 179, 213, 226, 230, 231, 247], "approach": [1, 4, 5, 6, 22, 23, 25, 56, 107, 112, 131, 139, 149, 153, 154, 159, 162, 165, 178, 183, 189, 192, 199, 204, 205, 208, 221, 223, 228, 231, 234, 244], "num_work": [1, 24, 44, 51, 52, 87, 92, 94, 97, 117, 122, 123, 129, 157, 166, 168, 169, 176, 178, 247, 250], "leverag": [1, 6, 49, 73, 97, 107, 108, 112, 121, 122, 124, 133, 135, 145, 178, 186, 188, 196, 199, 215, 216, 222, 247, 251, 257], "capabl": [1, 3, 11, 15, 17, 49, 60, 73, 124, 164, 168, 197, 199, 201, 207, 210, 211, 222, 230], "pytorch": [1, 2, 7, 8, 9, 11, 14, 17, 18, 21, 23, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 62, 66, 70, 73, 74, 75, 77, 78, 79, 80, 83, 84, 85, 87, 89, 90, 97, 98, 104, 106, 107, 112, 113, 114, 115, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 148, 149, 150, 152, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 172, 173, 174, 175, 178, 181, 182, 183, 184, 186, 187, 189, 190, 191, 192, 193, 194, 201, 203, 204, 205, 210, 211, 212, 213, 214, 215, 216, 218, 222, 228, 229, 230, 232, 234, 237, 244, 246, 250, 252, 254, 255, 256, 258], "adopt": [1, 20, 24, 61, 152, 155, 162, 221], "parallel_env_constructor": 1, "env_per_collector": 1, "transform_state_dict": 1, "make_t_env": 1, "init_stat": [1, 136, 159], "copy_": [1, 3, 40, 48, 109, 144, 161, 166, 237, 244], "env_creat": 1, "parallel_env": 1, "create_env_fn": 1, "create_env_kwarg": 1, "pin_memori": [1, 122, 123, 125, 129, 247], "limit": [1, 4, 6, 9, 10, 11, 14, 15, 17, 19, 49, 73, 119, 123, 124, 136, 137, 138, 146, 147, 149, 154, 165, 172, 173, 174, 177, 182, 184, 185, 187, 188, 194, 197, 201, 223, 228, 231, 234, 244, 261, 270], "lazi": [1, 59], "cat_dim": [1, 136, 159], "reduce_dim": [1, 136, 159], "load_state_dict": [1, 9, 19, 20, 38, 39, 44, 49, 53, 60, 73, 87, 96, 97, 112, 117, 121, 133, 146, 157, 160, 171, 181, 182, 197, 198, 214, 221, 230, 235, 240, 241, 242, 243, 248], "frame": [1, 6, 107, 136, 146, 158, 159, 168], "count": [1, 6, 11, 19, 22, 42, 44, 49, 60, 61, 82, 99, 103, 135, 136, 148, 159, 160, 163, 165, 168, 171, 177, 182, 197, 198, 246], "frames_per_batch": [1, 136, 159], "total_fram": [1, 136, 159], "adjust": [1, 7, 14, 19, 43, 49, 52, 73, 115, 124, 126, 150, 161, 194, 262, 271], "total": [1, 5, 7, 9, 11, 12, 13, 14, 16, 17, 20, 21, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 125, 126, 127, 128, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 166, 168, 171, 172, 174, 176, 178, 181, 182, 184, 185, 189, 190, 191, 192, 193, 195, 203, 205, 211, 212, 219, 221, 224, 225, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "unchang": [1, 8, 83, 209], "seem": [1, 44, 52, 113, 125, 127, 136, 231], "cheat": [1, 121, 165], "compar": [1, 5, 10, 15, 17, 19, 20, 23, 44, 58, 59, 61, 83, 97, 102, 108, 116, 117, 123, 124, 126, 127, 135, 137, 143, 144, 145, 147, 150, 152, 154, 156, 159, 161, 163, 165, 168, 171, 172, 173, 174, 176, 177, 181, 182, 184, 186, 189, 196, 197, 199, 200, 201, 207, 212, 219, 220, 223, 228, 234, 237, 245, 247, 251], "dataset": [1, 6, 9, 17, 24, 33, 34, 35, 37, 38, 41, 42, 43, 44, 47, 49, 52, 53, 55, 57, 58, 59, 73, 75, 87, 90, 92, 94, 96, 97, 99, 116, 117, 118, 119, 120, 122, 123, 126, 127, 128, 129, 131, 135, 138, 148, 154, 157, 158, 162, 164, 165, 166, 168, 169, 171, 175, 181, 195, 199, 201, 213, 220, 221, 233, 234, 236, 247, 250, 253], "10m": 1, "element": [1, 5, 6, 7, 9, 12, 17, 19, 40, 48, 49, 58, 59, 73, 76, 95, 99, 101, 102, 103, 116, 125, 135, 144, 150, 153, 159, 160, 171, 173, 174, 178, 181, 190, 191, 192, 193, 201, 223, 231, 262, 263, 266, 271, 272, 275], "anoth": [1, 4, 5, 7, 8, 11, 14, 20, 21, 23, 25, 43, 48, 49, 52, 59, 60, 63, 73, 80, 85, 98, 102, 108, 109, 112, 113, 115, 121, 128, 129, 130, 132, 135, 136, 141, 142, 153, 156, 159, 161, 162, 163, 164, 165, 172, 174, 176, 178, 179, 182, 184, 188, 195, 197, 200, 206, 213, 228, 229, 231, 247, 252, 262, 263, 271, 272], "ratio": [1, 51, 82, 97, 115, 144, 159, 168, 178, 195], "interact": [1, 5, 6, 14, 49, 51, 60, 117, 126, 130, 146, 159, 162, 166, 169, 172, 173, 174, 197, 262, 271], "nutshel": [1, 191], "cautiou": 1, "deal": [1, 5, 44, 49, 51, 52, 60, 97, 110, 112, 122, 145, 159, 221], "lead": [1, 5, 6, 14, 49, 52, 61, 73, 79, 82, 87, 97, 115, 119, 130, 136, 138, 149, 157, 191, 205, 244, 247, 262, 271], "bias": [1, 33, 43, 97, 112, 164, 244], "comparison": [1, 9, 17, 21, 83, 95, 97, 98, 123, 137, 144, 145, 176, 181, 184, 189, 191, 193, 195, 201, 204, 222], "help": [1, 5, 8, 10, 15, 17, 18, 19, 22, 23, 32, 43, 49, 52, 58, 59, 60, 61, 68, 82, 87, 97, 98, 101, 102, 103, 112, 113, 120, 121, 122, 123, 126, 132, 133, 134, 136, 137, 138, 144, 145, 148, 150, 152, 155, 159, 161, 162, 163, 164, 165, 171, 176, 177, 184, 185, 190, 191, 192, 193, 197, 201, 205, 210, 212, 214, 215, 216, 221, 222, 223, 226, 227, 229, 230, 231, 245, 247, 254, 255, 257], "signal": [1, 13, 43, 133, 159, 161, 195, 234], "magnitud": [1, 17, 42, 156, 201, 230], "truncat": [1, 17, 109, 113, 144, 159, 160, 201], "A": [1, 5, 6, 7, 8, 11, 12, 14, 16, 17, 21, 22, 25, 42, 47, 48, 49, 51, 52, 53, 55, 57, 60, 63, 64, 67, 68, 69, 73, 78, 82, 83, 92, 97, 99, 101, 102, 103, 110, 112, 113, 115, 120, 121, 125, 126, 127, 128, 130, 131, 135, 138, 142, 143, 146, 149, 152, 153, 154, 159, 160, 161, 162, 164, 165, 166, 169, 171, 173, 174, 175, 176, 177, 193, 197, 201, 219, 220, 222, 228, 231, 237, 244, 247, 252, 254, 256, 263, 272], "thousand": [1, 103, 120, 124, 127, 136, 165, 171], "500": [1, 6, 17, 24, 49, 52, 60, 75, 109, 115, 128, 145, 147, 160, 163, 166, 178, 231], "statist": [1, 44, 52, 87, 117, 121, 129, 142, 143, 156, 157, 159, 165, 168, 169, 171, 177, 182, 195, 197, 198, 221, 231], "arbitrari": [1, 5, 8, 14, 64, 67, 78, 97, 102, 111, 122, 138, 146, 154, 169, 172, 175, 195, 239], "random": [1, 6, 14, 16, 19, 20, 21, 25, 40, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 71, 72, 73, 76, 78, 80, 92, 95, 101, 102, 105, 109, 110, 111, 116, 117, 122, 123, 126, 127, 128, 133, 134, 135, 137, 138, 146, 149, 150, 152, 153, 156, 157, 159, 160, 161, 163, 164, 165, 169, 172, 182, 185, 193, 197, 198, 209, 212, 231, 234, 239, 247], "standard": [1, 5, 8, 20, 23, 25, 44, 48, 52, 60, 61, 73, 82, 87, 92, 97, 98, 99, 105, 107, 108, 113, 135, 139, 149, 158, 166, 172, 173, 174, 178, 184, 193, 209, 213, 223, 234, 247, 257, 262, 271], "deviat": [1, 73, 82, 92, 97, 139, 149], "purpos": [1, 5, 20, 21, 22, 57, 73, 78, 85, 115, 118, 123, 125, 126, 128, 135, 136, 142, 143, 144, 152, 158, 159, 162, 163, 168, 172, 182, 184, 190, 197, 214, 221, 234, 244, 247], "summari": [1, 82, 103, 126, 136, 143, 159, 168, 173, 176, 197, 245, 246], "over": [1, 4, 5, 6, 7, 10, 11, 14, 17, 18, 19, 20, 22, 23, 34, 44, 47, 48, 49, 50, 51, 52, 53, 60, 61, 73, 75, 78, 79, 87, 97, 98, 99, 101, 102, 103, 109, 113, 117, 121, 122, 123, 124, 127, 129, 132, 133, 135, 138, 142, 143, 144, 145, 146, 147, 150, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 172, 174, 176, 178, 182, 184, 185, 187, 194, 197, 198, 201, 205, 219, 230, 234, 247, 250, 252, 262, 271], "get_env_stat": 1, "proof_env": 1, "init_env_step": 1, "state_dict": [1, 9, 19, 38, 39, 44, 49, 53, 55, 87, 96, 97, 117, 122, 123, 133, 137, 146, 156, 157, 160, 181, 182, 195, 197, 198, 214, 220, 228, 230, 233, 234, 235, 237, 240, 241, 243, 244, 248, 251], "close": [1, 4, 6, 9, 14, 17, 19, 23, 52, 61, 94, 97, 98, 115, 122, 126, 137, 149, 152, 169, 181, 185, 201, 245, 247, 252], "5000": [1, 2, 7, 118, 127, 128, 139, 213, 231], "earlier": [1, 4, 5, 6, 22, 23, 73, 98, 99, 102, 116, 123, 124, 136, 152, 159, 165, 173, 174, 177, 223, 230, 231], "compositespec": [1, 14], "turn": [1, 4, 5, 6, 7, 8, 9, 14, 15, 19, 20, 23, 25, 49, 98, 102, 103, 109, 113, 126, 128, 136, 145, 152, 153, 156, 161, 165, 181, 186, 190, 191, 199, 213, 216, 256], "seen": [1, 7, 10, 11, 18, 19, 44, 47, 49, 51, 97, 102, 103, 109, 113, 116, 118, 136, 143, 154, 162, 172, 173, 174, 231, 262, 263, 271, 272], "requir": [1, 2, 4, 5, 6, 8, 10, 12, 14, 15, 18, 19, 20, 22, 23, 24, 25, 43, 49, 50, 51, 52, 55, 60, 61, 75, 83, 85, 87, 103, 107, 108, 113, 115, 116, 119, 123, 124, 126, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 145, 148, 149, 150, 152, 153, 154, 157, 158, 159, 161, 162, 163, 164, 165, 171, 172, 173, 174, 175, 176, 177, 178, 181, 182, 183, 184, 185, 186, 190, 191, 192, 194, 200, 202, 205, 207, 208, 209, 210, 211, 214, 215, 219, 220, 221, 222, 224, 230, 232, 237, 238, 244, 247, 255, 257, 260, 269], "recal": [1, 6, 23, 52, 60, 98, 103, 133, 137, 159, 169, 173, 174, 190, 191, 192, 244], "wrap": [1, 5, 6, 7, 9, 10, 16, 22, 25, 45, 60, 63, 76, 79, 87, 98, 99, 101, 102, 103, 105, 109, 110, 111, 123, 125, 129, 133, 136, 142, 146, 157, 159, 162, 163, 171, 173, 174, 175, 181, 183, 194, 199, 210, 211, 213, 214, 226, 230, 234, 258, 262, 265, 271, 274], "flow": [1, 4, 5, 14, 21, 23, 25, 43, 52, 60, 66, 85, 97, 110, 111, 113, 159, 160, 168, 172, 182, 183, 185, 197, 198, 199, 208, 247, 252, 262, 271], "handl": [1, 5, 8, 10, 23, 49, 52, 53, 61, 78, 85, 108, 113, 123, 126, 127, 137, 138, 139, 154, 156, 158, 159, 162, 163, 164, 165, 171, 172, 173, 174, 177, 182, 185, 189, 191, 193, 203, 205, 207, 214, 220, 229, 237, 257], "specifi": [1, 4, 5, 6, 7, 8, 9, 11, 17, 19, 20, 22, 23, 24, 34, 39, 51, 52, 59, 76, 82, 87, 101, 110, 113, 116, 122, 123, 124, 126, 130, 134, 136, 137, 138, 141, 155, 156, 159, 162, 163, 168, 171, 173, 174, 179, 189, 190, 191, 192, 193, 196, 197, 198, 200, 201, 204, 205, 206, 208, 209, 212, 221, 222, 228, 237, 242, 245, 247, 252, 256, 257, 260, 262, 269, 271], "scenario": [1, 4, 6, 14, 61, 105, 107, 108, 112, 117, 125, 160, 163, 199, 219, 244], "tensordictsequenti": [1, 136], "valueoper": [1, 159], "automat": [1, 2, 5, 6, 8, 10, 14, 15, 22, 25, 35, 40, 43, 45, 46, 47, 48, 53, 57, 61, 76, 80, 98, 114, 121, 122, 123, 124, 125, 126, 130, 137, 139, 142, 144, 147, 149, 159, 160, 163, 166, 168, 171, 176, 177, 182, 185, 207, 209, 212, 214, 216, 219, 220, 221, 226, 232, 235, 237, 247, 251, 252, 254, 262, 271], "state_valu": 1, "built": [1, 4, 5, 6, 7, 8, 22, 23, 47, 49, 59, 60, 61, 99, 108, 113, 115, 116, 121, 135, 136, 137, 159, 164, 169, 173, 174, 177, 178, 195, 204, 216, 221, 222, 229, 231, 257], "present": [1, 6, 8, 18, 22, 61, 82, 83, 97, 108, 134, 137, 143, 153, 155, 156, 157, 160, 161, 163, 171, 172, 175, 178, 193, 247, 258], "origin": [1, 5, 6, 7, 8, 12, 14, 17, 19, 23, 32, 49, 52, 58, 59, 60, 73, 87, 90, 97, 102, 105, 113, 115, 118, 119, 124, 125, 127, 128, 137, 142, 150, 153, 154, 156, 157, 160, 171, 172, 173, 174, 176, 177, 179, 181, 182, 183, 184, 186, 192, 197, 200, 201, 218, 220, 221, 226, 228, 234, 252, 257], "paper": [1, 5, 12, 16, 17, 52, 58, 59, 61, 73, 97, 113, 114, 118, 119, 124, 137, 159, 162, 164, 165, 166, 193, 201], "found": [1, 4, 5, 6, 10, 16, 22, 23, 25, 42, 49, 50, 60, 79, 97, 113, 115, 116, 118, 126, 128, 133, 134, 135, 136, 137, 142, 143, 147, 160, 162, 163, 164, 171, 173, 174, 181, 182, 183, 185, 193, 206, 220, 222, 226, 247, 262, 271], "ddpgmlpactor": 1, "ddpgmlpqnet": 1, "materi": [1, 61, 123, 124, 145, 189, 202, 208, 234, 239, 244], "achiev": [1, 3, 6, 14, 17, 19, 24, 32, 44, 49, 56, 82, 87, 97, 108, 119, 121, 125, 129, 135, 136, 137, 144, 149, 152, 153, 156, 157, 159, 160, 168, 176, 179, 182, 184, 185, 198, 199, 201, 203, 212, 219, 222, 247, 251, 254], "practic": [1, 5, 6, 11, 20, 23, 37, 47, 49, 51, 52, 58, 59, 60, 61, 97, 99, 114, 117, 121, 124, 125, 126, 127, 131, 134, 136, 137, 144, 153, 156, 159, 173, 174, 175, 177, 189, 190, 193, 195, 231, 232, 237, 247], "fake": [1, 6, 12, 17, 19, 25, 47, 52, 78, 152, 157, 193, 197, 198, 200, 201, 228], "spec": [1, 108, 126, 136, 159, 163, 179, 200, 231], "ornsteinuhlenbeckprocesswrapp": 1, "probabilisticactor": [1, 159], "tanhdelta": 1, "make_ddpg_actor": 1, "proof_environ": 1, "out_featur": [1, 33, 109, 123, 136, 179, 201], "action_spec": [1, 14, 136, 159], "shape": [1, 4, 12, 17, 23, 34, 38, 40, 42, 43, 47, 48, 49, 51, 52, 58, 59, 60, 63, 68, 76, 85, 90, 92, 95, 97, 98, 101, 103, 104, 109, 111, 118, 122, 124, 127, 128, 136, 137, 138, 141, 142, 145, 146, 147, 150, 152, 154, 156, 159, 168, 171, 178, 184, 185, 187, 192, 193, 195, 197, 201, 202, 209, 213, 219, 226, 231, 234, 235, 238, 244, 247, 251, 254], "actor_net": [1, 159], "action_dim": [1, 146], "distribution_class": [1, 159], "q_net": 1, "qnet": 1, "initi": [1, 6, 8, 11, 14, 16, 18, 19, 20, 21, 22, 23, 25, 37, 43, 49, 55, 60, 64, 71, 72, 73, 80, 97, 98, 99, 102, 103, 109, 111, 112, 117, 122, 123, 124, 127, 128, 129, 136, 138, 142, 144, 147, 148, 152, 156, 157, 158, 160, 161, 162, 163, 165, 166, 168, 173, 174, 175, 189, 192, 196, 198, 203, 206, 213, 214, 219, 223, 226, 229, 231, 234, 237, 244, 256, 262, 271], "reset": [1, 19, 117, 128, 136, 146, 159, 160, 161, 163, 165, 168, 172, 173, 174, 182, 186, 195, 197, 198, 221, 255], "suggest": [1, 4, 12, 52, 86, 97, 128, 137, 144, 145, 146, 147, 150, 157, 168, 171, 173, 174, 175, 234], "nois": [1, 6, 12, 52, 73, 148, 195], "reach": [1, 10, 17, 52, 60, 61, 97, 133, 135, 137, 146, 147, 149, 159, 163, 173, 174, 201, 221, 231], "minimum": [1, 49, 82, 159, 163, 173, 174, 177, 191], "annealing_fram": 1, "1_000_000": [1, 96, 136], "actor_model_explor": 1, "annealing_num_step": [1, 136], "share_memori": 1, "iter": [1, 3, 4, 6, 11, 12, 14, 16, 24, 34, 42, 43, 44, 47, 52, 53, 55, 60, 75, 85, 87, 92, 94, 96, 98, 103, 105, 112, 113, 116, 117, 118, 126, 127, 128, 131, 133, 134, 136, 142, 144, 149, 157, 159, 160, 161, 162, 163, 166, 168, 169, 172, 178, 181, 182, 194, 197, 198, 203, 211, 218, 223, 226, 230, 234, 245, 247, 258], "tight": [1, 105, 107, 108], "per": [1, 5, 6, 8, 11, 19, 61, 87, 97, 103, 121, 122, 126, 127, 128, 129, 133, 135, 136, 137, 145, 147, 152, 156, 159, 163, 164, 165, 168, 169, 171, 175, 176, 177, 178, 185, 189, 194, 205, 207, 212, 214, 216, 218, 221, 223, 231, 237, 246, 258], "sync": [1, 7, 10, 11, 16, 55, 121, 122, 123, 142, 146, 188, 194, 257], "natur": [1, 5, 6, 17, 18, 23, 24, 25, 45, 61, 73, 75, 97, 107, 116, 119, 126, 127, 135, 136, 137, 162, 171, 191, 193, 197, 200, 201, 207, 262, 271], "resourc": [1, 53, 58, 59, 61, 73, 87, 105, 119, 123, 133, 135, 152, 159, 168, 171, 176, 216, 223, 231, 236, 247, 253], "alloc": [1, 6, 18, 21, 22, 23, 48, 55, 59, 129, 135, 152, 168, 175, 176, 193, 202, 214, 223, 237, 258], "gpu": [1, 3, 4, 7, 12, 17, 18, 19, 20, 24, 33, 38, 40, 42, 43, 47, 48, 49, 50, 52, 53, 54, 56, 57, 60, 61, 64, 72, 73, 77, 80, 81, 82, 83, 88, 92, 96, 97, 99, 105, 111, 114, 117, 120, 121, 122, 123, 124, 125, 131, 132, 133, 134, 135, 136, 137, 138, 144, 147, 148, 149, 150, 152, 154, 157, 159, 160, 162, 163, 164, 171, 172, 175, 177, 178, 185, 186, 196, 201, 206, 207, 210, 214, 216, 223, 230, 231, 234, 240, 251, 252, 254, 257], "worker": [1, 6, 7, 11, 16, 51, 52, 61, 115, 120, 122, 123, 134, 135, 147, 159, 162, 163, 168, 212, 216, 247], "syncdatacollector": [1, 136, 159], "process": [1, 4, 5, 6, 11, 12, 14, 15, 16, 17, 18, 20, 22, 23, 24, 25, 42, 47, 49, 50, 51, 52, 56, 60, 61, 73, 82, 85, 97, 103, 105, 110, 112, 113, 114, 116, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 131, 132, 135, 136, 137, 143, 144, 146, 147, 149, 154, 158, 160, 162, 163, 164, 165, 168, 171, 173, 174, 175, 176, 177, 182, 184, 185, 187, 188, 193, 195, 196, 201, 203, 204, 207, 208, 212, 214, 215, 221, 228, 231, 237, 247, 251, 255, 258, 261, 262, 270, 271], "offer": [1, 11, 14, 18, 42, 43, 53, 61, 99, 122, 124, 138, 141, 144, 145, 197, 214, 216, 229, 231, 247], "multiasyncdatacollector": [1, 159], "rollout": [1, 136, 159], "asynchron": [1, 21, 61, 120, 121, 126, 134, 149, 155, 159, 163], "manner": [1, 5, 8, 14, 19, 61, 159, 171, 216], "therebi": [1, 186, 189, 193], "decoupl": [1, 61, 153, 197], "factori": [1, 6, 101, 115, 190, 191, 232, 237], "empti": [1, 5, 6, 8, 14, 19, 21, 23, 49, 80, 95, 108, 128, 129, 143, 144, 147, 153, 158, 165, 168, 171, 173, 174, 176, 185, 191, 193, 202, 206, 238, 246, 263, 272], "maximum": [1, 11, 49, 60, 82, 102, 113, 126, 128, 136, 137, 144, 159, 164, 165, 173, 174, 185, 194, 195, 213, 247], "non": [1, 2, 3, 5, 8, 11, 14, 19, 22, 49, 51, 53, 54, 56, 60, 82, 85, 97, 98, 100, 103, 112, 113, 119, 122, 126, 129, 130, 134, 135, 136, 137, 139, 141, 145, 147, 150, 156, 157, 160, 161, 164, 165, 168, 172, 173, 176, 182, 184, 185, 189, 199, 202, 214, 228, 231, 244, 252, 263, 265, 272, 274], "termin": [1, 14, 23, 53, 60, 87, 159, 160, 162, 163, 171, 188, 206, 213, 225], "effect": [1, 5, 6, 8, 9, 11, 23, 55, 73, 82, 97, 103, 108, 124, 127, 128, 138, 152, 154, 156, 160, 164, 165, 171, 176, 177, 191, 199, 200, 205, 230, 234, 247, 260, 269], "regist": [1, 22, 43, 47, 78, 108, 109, 112, 121, 122, 124, 133, 141, 152, 153, 159, 173, 174, 177, 207, 208, 216, 220, 226, 230, 239], "new": [1, 2, 4, 5, 6, 8, 9, 12, 13, 14, 22, 23, 24, 25, 31, 42, 43, 45, 48, 49, 50, 52, 55, 60, 62, 73, 75, 79, 80, 82, 85, 97, 99, 102, 103, 108, 109, 110, 112, 113, 117, 121, 122, 123, 125, 126, 127, 136, 137, 141, 142, 144, 146, 149, 152, 153, 154, 155, 156, 157, 159, 160, 161, 164, 165, 168, 171, 173, 174, 178, 179, 181, 186, 187, 188, 189, 193, 195, 196, 197, 198, 199, 200, 204, 205, 206, 207, 208, 213, 216, 222, 223, 224, 225, 226, 234, 244, 247, 251, 257, 262, 271], "infer": [1, 3, 6, 8, 9, 10, 19, 20, 21, 22, 23, 42, 48, 49, 60, 61, 97, 101, 103, 105, 113, 121, 125, 126, 129, 139, 142, 144, 158, 159, 161, 171, 172, 177, 178, 185, 187, 188, 193, 194, 196, 197, 198, 199, 201, 203, 206, 207, 209, 214, 221, 223, 224, 225, 226, 228, 234, 235, 241, 251], "around": [1, 5, 6, 11, 23, 24, 49, 55, 58, 59, 75, 97, 117, 128, 138, 144, 145, 150, 154, 157, 165, 168, 169, 173, 174, 182, 189, 190, 194, 197, 219, 234, 239, 262, 265, 271, 274], "1m": [1, 136, 159], "10_000": [1, 97], "outer": [1, 6, 122, 145], "loop": [1, 3, 4, 5, 7, 8, 11, 16, 17, 19, 21, 25, 44, 47, 49, 51, 52, 59, 60, 65, 73, 75, 78, 85, 87, 97, 111, 118, 123, 126, 127, 137, 138, 144, 145, 146, 152, 154, 162, 163, 165, 169, 177, 183, 185, 201, 219, 231, 247, 250], "equal": [1, 4, 10, 95, 97, 115, 116, 125, 137, 147, 156, 159, 160, 171, 173, 174, 176, 192, 216, 247, 254], "length": [1, 7, 12, 14, 17, 20, 42, 45, 49, 52, 60, 102, 103, 105, 113, 115, 116, 124, 128, 136, 137, 146, 159, 164, 165, 175, 185, 191, 193, 196, 201, 205, 208, 216, 251, 263, 272], "sub": [1, 6, 20, 25, 49, 60, 109, 124, 143, 149, 159, 163, 165, 168, 176, 177, 185, 215, 246, 262, 271], "traj_len": [1, 136], "200": [1, 6, 9, 90, 93, 136, 147, 163, 184, 194, 219], "init_random_fram": 1, "num_collector": 1, "explorationtyp": [1, 136, 159], "reset_at_each_it": 1, "split_traj": [1, 159], "exploration_typ": 1, "assess": 1, "mode": [1, 4, 7, 9, 12, 13, 16, 20, 37, 42, 43, 49, 51, 52, 55, 60, 73, 79, 82, 85, 86, 87, 97, 112, 115, 116, 117, 121, 122, 129, 130, 134, 136, 139, 142, 144, 146, 147, 150, 157, 161, 164, 165, 166, 169, 171, 172, 174, 177, 179, 184, 187, 188, 194, 195, 196, 198, 199, 200, 216, 219, 221, 231, 241, 247], "dedic": [1, 10, 55, 60, 112, 134, 162, 163, 177, 199, 208, 223, 228, 229, 230, 258, 263, 272], "frequenc": [1, 7, 83, 126, 223], "trainer": [1, 16, 17, 24, 55, 126, 131, 148, 161, 162, 163, 201, 214], "make_record": 1, "record_interv": 1, "load": [1, 5, 17, 18, 19, 20, 21, 23, 24, 34, 35, 38, 39, 42, 43, 47, 51, 52, 55, 73, 75, 87, 90, 96, 98, 104, 105, 110, 113, 116, 119, 121, 123, 125, 127, 139, 144, 147, 152, 159, 168, 169, 171, 174, 178, 181, 182, 184, 185, 186, 187, 194, 195, 201, 204, 206, 208, 213, 220, 221, 222, 224, 225, 230, 235, 240, 241, 242, 243, 244, 246, 248, 249, 251, 254], "recorder_obj": 1, "record_fram": 1, "1000": [1, 2, 7, 9, 17, 19, 43, 52, 79, 89, 94, 96, 117, 119, 122, 123, 125, 127, 134, 136, 144, 149, 159, 160, 169, 172, 176, 177, 187, 199, 201, 203, 212, 213, 226, 231, 237, 246], "policy_explor": 1, "everi": [1, 2, 6, 8, 10, 12, 14, 15, 17, 18, 19, 24, 43, 44, 47, 49, 51, 52, 60, 61, 87, 103, 117, 124, 125, 127, 128, 129, 135, 136, 141, 146, 147, 150, 152, 153, 154, 156, 157, 159, 160, 161, 163, 165, 168, 169, 178, 193, 197, 198, 201, 208, 210, 223, 232, 245, 247, 258], "10": [1, 3, 4, 6, 7, 8, 11, 13, 14, 16, 17, 19, 20, 23, 25, 33, 34, 37, 38, 41, 42, 43, 44, 45, 47, 49, 51, 52, 53, 60, 73, 78, 79, 80, 83, 87, 89, 92, 93, 94, 95, 96, 103, 104, 105, 109, 112, 115, 117, 122, 123, 125, 126, 127, 129, 133, 135, 136, 138, 139, 141, 142, 144, 146, 147, 148, 149, 150, 154, 156, 157, 158, 159, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 184, 187, 189, 190, 191, 194, 195, 196, 197, 198, 201, 202, 203, 204, 206, 208, 209, 210, 211, 212, 215, 219, 221, 223, 226, 231, 233, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 266, 275], "lazymemmapstorag": [1, 136, 146], "prioritizedsampl": 1, "randomsampl": [1, 19, 137, 165, 182, 185, 197, 198], "tensordictreplaybuff": [1, 136, 146], "flavor": [1, 5, 23, 107], "priorit": [1, 193], "error": [1, 4, 5, 6, 8, 10, 11, 12, 22, 37, 38, 43, 47, 49, 50, 52, 53, 58, 60, 61, 68, 78, 97, 101, 107, 108, 111, 122, 125, 130, 134, 139, 148, 152, 155, 159, 160, 172, 173, 174, 184, 189, 190, 195, 197, 204, 208, 215, 220, 222, 231, 244, 247, 256, 262, 271], "higher": [1, 19, 44, 48, 53, 82, 97, 99, 122, 123, 127, 128, 130, 141, 145, 157, 158, 159, 160, 168, 169, 171, 182, 185, 195, 197, 199, 203, 205, 207, 211, 215, 223, 228, 234, 260, 262, 269, 271], "likelihood": [1, 49, 99, 104, 127, 213], "regular": [1, 4, 5, 6, 8, 10, 19, 23, 24, 97, 114, 127, 128, 134, 145, 153, 154, 164, 165, 166, 189, 191, 193, 199, 220, 247], "circular": 1, "compos": [1, 5, 6, 10, 12, 17, 19, 21, 25, 44, 52, 58, 59, 73, 75, 79, 87, 90, 92, 94, 96, 97, 99, 108, 110, 113, 115, 117, 119, 121, 123, 129, 135, 136, 139, 141, 142, 146, 148, 150, 154, 157, 158, 159, 162, 164, 166, 168, 169, 171, 178, 182, 197, 198, 200, 204, 209, 213, 215, 220, 221, 229, 250, 253], "pick": [1, 6, 19, 44, 98, 127, 160, 165, 216], "physic": [1, 14, 103, 177, 237, 247], "memori": [1, 4, 5, 6, 8, 10, 16, 17, 18, 19, 21, 22, 23, 37, 48, 49, 51, 55, 61, 80, 87, 95, 97, 100, 105, 110, 112, 115, 118, 121, 122, 123, 124, 131, 135, 136, 144, 145, 146, 150, 156, 162, 164, 168, 171, 175, 178, 184, 188, 189, 192, 193, 194, 199, 201, 207, 212, 218, 220, 228, 230, 231, 234, 237, 239, 251, 258], "map": [1, 6, 7, 12, 13, 17, 49, 52, 58, 60, 75, 90, 97, 98, 102, 103, 104, 108, 110, 112, 113, 115, 116, 119, 127, 136, 138, 139, 143, 145, 152, 153, 154, 159, 160, 163, 171, 173, 174, 176, 178, 182, 197, 200, 201, 205, 209, 212, 213, 214, 237, 247], "arrai": [1, 6, 32, 43, 44, 47, 51, 58, 59, 85, 89, 95, 103, 109, 117, 127, 128, 139, 146, 157, 158, 160, 165, 166, 171, 192, 229], "desir": [1, 5, 8, 12, 14, 16, 49, 51, 52, 73, 82, 97, 110, 112, 116, 135, 142, 156, 168, 171, 184, 190, 202, 226, 230, 263, 272], "hyperparamet": [1, 6, 14, 17, 52, 87, 112, 115, 121, 126, 189, 193], "randomcroptensordict": 1, "make_replay_buff": 1, "buffer_s": 1, "random_crop_len": 1, "prefetch": [1, 136, 177], "prb": 1, "sampler": [1, 6, 19, 34, 55, 110, 122, 123, 137, 159, 165, 166, 182, 185, 197, 198], "max_capac": 1, "alpha": [1, 5, 6, 15, 98, 108, 127, 128, 146, 149, 171, 178, 189, 193, 263, 272], "7": [1, 3, 5, 6, 17, 18, 19, 22, 23, 34, 36, 51, 58, 59, 80, 85, 95, 96, 101, 109, 116, 117, 122, 123, 129, 134, 135, 146, 147, 149, 157, 158, 166, 171, 172, 173, 174, 175, 177, 178, 184, 188, 199, 202, 203, 204, 206, 207, 208, 210, 211, 215, 218, 219, 221, 222, 224, 225, 227, 228, 230, 247, 252, 255, 266, 275], "beta": [1, 6, 20, 52, 105, 118, 121, 192, 216, 234, 247, 251], "scratch_dir": 1, "buffer_scratch_dir": 1, "sample_dim": 1, "temporari": [1, 5, 117, 126, 177, 181], "disk": [1, 4, 23, 25, 105, 112, 136, 187, 188, 194, 208, 223, 231, 237, 245], "tempfil": [1, 7, 87, 117, 125, 126, 133], "tmpdir": 1, "temporarydirectori": [1, 87, 117, 125], "along": [1, 4, 5, 6, 7, 8, 14, 17, 21, 23, 43, 48, 49, 53, 54, 55, 56, 60, 83, 97, 101, 102, 110, 116, 117, 119, 122, 123, 127, 128, 131, 132, 136, 152, 156, 160, 162, 169, 171, 175, 191, 201, 202], "dimens": [1, 5, 6, 7, 12, 14, 18, 20, 21, 44, 47, 48, 49, 60, 78, 79, 87, 92, 99, 101, 102, 103, 110, 115, 121, 124, 127, 129, 136, 138, 146, 147, 154, 156, 158, 159, 161, 173, 174, 175, 190, 193, 197, 198, 205, 213, 223, 230, 234, 239, 247], "feed": [1, 6, 12, 19, 44, 47, 49, 60, 97, 100, 102, 105, 112, 124, 127, 128, 133, 134, 146, 160, 165, 169, 176, 195, 214], "adapt": [1, 2, 14, 17, 24, 87, 105, 126, 201, 231], "divid": [1, 7, 8, 9, 10, 11, 12, 14, 15, 19, 85, 97, 99, 127, 134, 135, 149, 153, 163, 176, 177, 181], "yield": [1, 6, 11, 12, 16, 17, 19, 21, 104, 112, 115, 116, 118, 124, 125, 161, 163, 184, 192, 201, 219, 221, 241, 247], "regard": [1, 6, 11, 14, 23, 60, 112, 144, 145, 159, 168, 262, 271], "25": [1, 7, 9, 22, 23, 73, 89, 90, 97, 109, 117, 123, 157, 162, 164, 171, 181, 184, 203, 219, 231, 233, 238], "balanc": [1, 6, 18, 133, 168, 226], "choic": [1, 4, 6, 8, 49, 87, 126, 128, 165, 210, 247], "heterogen": [1, 196], "figur": [1, 8, 12, 14, 22, 34, 49, 51, 52, 73, 82, 97, 117, 121, 124, 126, 127, 128, 136, 144, 149, 159, 160, 161, 165, 168, 169, 171, 176, 178, 182, 195, 197, 236, 263, 265, 272, 274], "dataflow": 1, "8": [1, 3, 5, 6, 7, 9, 13, 14, 16, 17, 19, 23, 34, 49, 52, 58, 59, 65, 73, 87, 90, 93, 101, 102, 109, 111, 115, 116, 118, 119, 122, 124, 127, 128, 129, 133, 134, 137, 142, 144, 146, 147, 149, 153, 157, 158, 164, 165, 166, 168, 171, 172, 173, 174, 176, 178, 184, 185, 187, 188, 189, 193, 199, 201, 206, 207, 208, 212, 214, 215, 216, 219, 221, 223, 224, 225, 228, 230, 234, 238, 247, 254, 257, 258, 262, 263, 266, 271, 272, 275], "ceil_div": 1, "y": [1, 2, 5, 7, 17, 18, 20, 22, 23, 25, 32, 37, 38, 40, 41, 43, 47, 48, 51, 52, 63, 64, 65, 67, 68, 69, 71, 72, 73, 76, 82, 85, 89, 92, 93, 95, 96, 97, 98, 101, 102, 104, 110, 111, 113, 116, 122, 125, 137, 141, 144, 146, 147, 148, 155, 164, 168, 171, 172, 173, 174, 175, 185, 186, 191, 195, 205, 208, 212, 245, 246, 254, 255, 263, 272], "known": [1, 4, 5, 12, 17, 42, 113, 124, 135, 137, 141, 143, 156, 160, 165, 185, 188, 200, 201, 207, 231, 234], "utd": [1, 136], "update_to_data": 1, "64": [1, 5, 6, 14, 15, 17, 18, 19, 20, 23, 34, 37, 38, 43, 49, 52, 60, 73, 87, 95, 97, 102, 104, 115, 119, 122, 123, 124, 126, 129, 134, 136, 138, 145, 146, 154, 158, 159, 161, 162, 164, 166, 173, 174, 175, 178, 184, 201, 203, 205, 207, 208, 219, 221, 231, 233, 238], "reproduc": [1, 12, 25, 52, 73, 97, 137, 144, 159, 163, 172, 185, 219, 231, 234, 247], "realiz": [1, 17, 201], "sever": [1, 2, 3, 10, 11, 15, 16, 19, 22, 25, 45, 47, 52, 53, 54, 61, 73, 78, 97, 99, 113, 122, 127, 132, 135, 142, 146, 149, 152, 153, 155, 157, 159, 161, 162, 168, 169, 172, 173, 174, 176, 177, 191, 200, 208, 219, 220, 223, 231, 252], "ve": [1, 5, 6, 7, 8, 17, 21, 22, 25, 45, 47, 50, 76, 78, 113, 121, 125, 129, 136, 142, 143, 145, 152, 154, 160, 162, 169, 176, 184, 189, 191, 192, 201, 213, 214, 231, 234, 257], "_must_": 1, "99": [1, 63, 64, 67, 68, 69, 71, 72, 111, 159, 160, 163], "lmbda": [1, 159], "tau": [1, 160], "001": [1, 12, 14, 24, 44, 51, 89, 92, 94, 96, 97, 103, 112, 117, 133, 149, 160, 161, 165, 168, 169, 220, 230, 241, 242, 243, 249, 250, 253], "decai": [1, 117, 136, 157, 160, 216], "factor": [1, 18, 20, 117, 129, 157, 160, 161, 172, 183, 184, 234], "off": [1, 7, 8, 9, 12, 16, 19, 21, 24, 34, 43, 49, 51, 52, 98, 112, 113, 117, 119, 123, 126, 127, 144, 152, 157, 159, 161, 162, 163, 171, 181, 187, 189, 213, 234, 256], "dictat": [1, 14], "introduc": [1, 11, 15, 16, 17, 21, 22, 23, 24, 42, 54, 60, 75, 78, 79, 87, 97, 99, 109, 118, 119, 121, 122, 133, 144, 147, 149, 152, 161, 163, 164, 165, 171, 172, 173, 174, 175, 177, 181, 182, 185, 186, 188, 189, 191, 192, 195, 197, 199, 200, 201, 203, 204, 205, 207, 209, 212, 216, 220, 222, 223, 244, 247, 255], "outdat": 1, "trick": [1, 6, 10, 49, 130, 135, 145], "multi": [1, 5, 6, 14, 18, 47, 49, 52, 53, 54, 55, 56, 61, 77, 99, 113, 121, 122, 124, 131, 132, 133, 134, 136, 137, 149, 159, 161, 164, 168, 177, 178, 185, 193, 214, 215, 247], "altern": [1, 6, 10, 23, 48, 49, 102, 113, 117, 123, 138, 143, 147, 155, 157, 159, 165, 168, 171, 172, 182, 184, 192, 199, 209, 244, 247, 255], "hack": [1, 137, 185, 189, 244], "find": [1, 2, 4, 5, 6, 8, 10, 17, 22, 23, 48, 52, 73, 82, 83, 85, 87, 98, 101, 121, 123, 127, 128, 135, 137, 141, 142, 144, 149, 153, 157, 160, 163, 165, 168, 173, 174, 183, 189, 190, 191, 192, 195, 197, 200, 201, 204, 208, 213, 221, 222, 223, 226, 229, 231, 245, 252], "despit": [1, 73, 133], "fact": [1, 3, 5, 6, 8, 12, 14, 19, 22, 23, 60, 73, 80, 97, 99, 103, 113, 125, 153, 159, 160, 169], "part": [1, 3, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 20, 23, 42, 43, 45, 49, 52, 58, 59, 60, 73, 76, 87, 98, 100, 103, 113, 116, 118, 121, 122, 124, 125, 128, 130, 131, 134, 135, 136, 137, 139, 143, 144, 149, 152, 153, 159, 165, 173, 174, 181, 182, 183, 184, 186, 188, 189, 191, 196, 198, 204, 208, 209, 213, 216, 221, 222, 223, 226, 229, 230, 234, 244, 252, 254, 260, 261, 262, 269, 270, 271], "thank": [1, 9, 19, 49, 104, 115, 119, 126, 127, 128, 135, 137, 165, 176, 177, 185, 187, 188, 195, 204, 222], "hardupd": 1, "softupd": [1, 136], "appropri": [1, 6, 7, 8, 42, 49, 60, 126, 127, 133, 153, 157, 162, 169, 175, 182, 197, 198, 199, 213, 219, 220, 230], "locat": [1, 6, 31, 48, 78, 80, 82, 103, 109, 113, 135, 157, 159, 165, 168, 173, 174, 176, 178, 188, 204, 222, 223, 226, 238, 247, 257], "target_net_updat": 1, "ep": [1, 13, 73, 118, 129, 136, 142, 163, 173, 174, 179, 189, 198, 200, 201, 218], "adam": [1, 6, 11, 13, 14, 47, 49, 52, 69, 96, 97, 99, 110, 111, 118, 135, 136, 146, 148, 152, 159, 160, 161, 163, 165, 172, 210, 211, 214, 258], "optimizer_actor": 1, "lr": [1, 7, 11, 14, 16, 19, 24, 37, 38, 43, 44, 47, 49, 52, 65, 67, 69, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 110, 111, 112, 115, 117, 118, 122, 123, 129, 133, 134, 135, 136, 144, 146, 148, 149, 157, 159, 160, 161, 162, 163, 165, 166, 168, 169, 178, 210, 214, 216, 220, 221, 230, 237, 241, 242, 243, 245, 249, 250, 251, 253, 258], "1e": [1, 13, 17, 20, 37, 38, 43, 63, 65, 67, 68, 69, 71, 72, 87, 93, 98, 111, 118, 125, 126, 129, 138, 150, 154, 157, 159, 160, 161, 163, 179, 189, 201, 218, 237], "weight_decai": [1, 98, 112, 157, 178, 216], "optimizer_valu": 1, "total_collection_step": 1, "pretti": [1, 16, 21, 44, 109, 113, 126, 145, 163, 182, 205], "rewards_ev": 1, "collected_fram": 1, "pbar": [1, 14, 136, 159], "r0": [1, 122], "enumer": [1, 7, 17, 19, 37, 38, 44, 49, 51, 52, 75, 87, 92, 94, 96, 98, 103, 115, 117, 123, 124, 127, 129, 136, 157, 158, 159, 162, 165, 166, 168, 169, 193, 201, 220, 221, 250, 253], "update_policy_weights_": 1, "numel": [1, 7, 8, 78, 97, 125, 129, 136, 147, 150, 159, 161, 189, 246, 254], "extend": [1, 4, 5, 6, 8, 19, 24, 52, 58, 59, 61, 87, 105, 106, 107, 113, 121, 123, 128, 134, 136, 158, 159, 162, 163, 171, 175, 177, 179, 186, 199, 208, 220, 221, 247], "current_fram": 1, "_": [1, 5, 11, 12, 14, 15, 16, 19, 21, 33, 34, 35, 36, 37, 40, 44, 48, 49, 52, 60, 75, 80, 87, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 102, 104, 106, 111, 115, 117, 118, 134, 135, 136, 137, 138, 139, 142, 144, 145, 147, 149, 150, 152, 157, 159, 160, 161, 163, 164, 165, 169, 172, 176, 177, 181, 182, 184, 185, 195, 197, 198, 199, 204, 210, 211, 212, 213, 219, 229, 230, 234, 237, 256, 258, 262, 271], "rang": [1, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 25, 34, 37, 38, 42, 44, 49, 51, 52, 53, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 82, 85, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 105, 107, 108, 111, 113, 115, 116, 117, 118, 122, 123, 126, 127, 128, 129, 134, 135, 136, 137, 138, 142, 144, 146, 149, 152, 154, 157, 158, 159, 160, 161, 163, 164, 165, 166, 168, 169, 172, 173, 174, 176, 177, 178, 179, 181, 184, 185, 186, 193, 194, 195, 198, 201, 203, 209, 210, 211, 212, 215, 219, 221, 226, 229, 230, 234, 237, 238, 245, 247, 250, 254, 258], "sampled_tensordict": 1, "backward": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 15, 16, 19, 25, 32, 37, 38, 43, 44, 45, 47, 49, 52, 61, 63, 64, 65, 67, 68, 69, 73, 75, 76, 87, 89, 92, 94, 96, 97, 98, 99, 101, 102, 103, 104, 111, 115, 117, 118, 121, 123, 124, 125, 127, 128, 131, 133, 134, 135, 136, 141, 145, 146, 149, 150, 154, 157, 159, 160, 161, 162, 163, 165, 166, 168, 169, 172, 173, 174, 191, 198, 210, 211, 212, 214, 216, 220, 221, 230, 238, 245, 247, 250, 253, 258], "gn1": 1, "clip_grad_norm_": [1, 7, 14, 49, 115, 159, 230], "zero_grad": [1, 3, 6, 7, 12, 14, 19, 37, 38, 44, 47, 49, 52, 65, 67, 68, 69, 73, 75, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 111, 115, 117, 118, 122, 123, 127, 128, 129, 133, 135, 136, 146, 149, 152, 157, 159, 160, 161, 163, 165, 166, 168, 169, 172, 198, 214, 220, 221, 230, 245, 250, 253], "gn2": 1, "gn": [1, 14], "prioriti": [1, 8, 182], "update_tensordict_prior": 1, "td_record": 1, "r_evalu": 1, "len": [1, 7, 9, 12, 14, 17, 19, 34, 37, 38, 45, 47, 49, 51, 52, 55, 60, 73, 75, 79, 87, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 115, 116, 117, 118, 122, 123, 125, 127, 128, 129, 135, 137, 142, 149, 157, 160, 161, 162, 165, 166, 169, 171, 175, 178, 181, 185, 200, 201, 209, 215, 216, 221], "rn": 1, "rs": [1, 165], "std": [1, 2, 4, 5, 6, 12, 15, 19, 22, 23, 51, 58, 59, 73, 90, 92, 95, 97, 117, 149, 155, 157, 158, 163, 166, 171, 182, 186, 187, 189, 197, 198, 204, 208, 220, 222, 229, 231, 256], "set_descript": [1, 14, 136, 159], "2f": [1, 7, 19, 97, 115, 119, 123, 127, 129, 156, 158, 161, 163, 176, 177, 182, 184, 197, 198, 203, 228, 231, 234], "grad": [1, 2, 6, 12, 13, 16, 32, 43, 47, 63, 64, 68, 73, 76, 78, 89, 101, 104, 111, 123, 125, 127, 128, 129, 130, 133, 135, 141, 145, 150, 152, 159, 161, 162, 163, 189, 205, 211, 216, 230, 250], "norm": [1, 2, 14, 17, 19, 52, 78, 89, 97, 110, 121, 124, 153, 156, 159, 171, 182, 195, 201], "shutdown": [1, 16, 134, 161, 162, 163, 212], "del": [1, 44, 129, 141, 152, 159, 184, 186, 237], "plot": [1, 6, 12, 14, 17, 51, 52, 73, 82, 89, 113, 117, 126, 136, 146, 149, 159, 160, 161, 166, 169, 171, 195, 236], "mention": [1, 5, 6, 10, 11, 15, 16, 52, 60, 73, 85, 95, 97, 98, 112, 123, 124, 135, 136, 160, 162, 168, 171, 185, 197, 226, 237, 244], "greater": [1, 11, 49, 52, 125, 176, 188, 206], "matplotlib": [1, 6, 12, 14, 34, 44, 51, 52, 57, 73, 75, 89, 90, 92, 94, 96, 104, 117, 127, 128, 136, 146, 149, 157, 159, 160, 165, 166, 169, 171, 178, 195, 236], "pyplot": [1, 6, 12, 14, 34, 44, 51, 52, 73, 75, 89, 90, 92, 94, 96, 104, 117, 127, 128, 136, 146, 149, 157, 159, 160, 165, 166, 169, 171, 178, 195, 236], "plt": [1, 6, 12, 14, 34, 44, 51, 52, 73, 75, 89, 90, 92, 94, 96, 117, 127, 128, 136, 146, 149, 157, 159, 160, 165, 166, 169, 171, 178, 195, 236], "zip": [1, 6, 17, 18, 44, 49, 50, 52, 104, 105, 108, 112, 116, 128, 137, 138, 150, 154, 160, 161, 163, 169, 171, 178, 181, 185, 201, 208, 216, 223, 230], "label": [1, 6, 17, 34, 40, 43, 44, 51, 52, 58, 59, 73, 75, 78, 87, 90, 92, 94, 96, 97, 99, 103, 109, 110, 113, 115, 117, 119, 122, 124, 127, 133, 134, 137, 146, 149, 157, 158, 161, 165, 168, 169, 178, 185, 201, 208, 213, 221, 226, 231, 234, 236, 250, 251, 258, 262, 271], "legend": [1, 52, 146, 262, 271], "xlabel": [1, 14, 52, 73, 136, 160, 171], "ylabel": [1, 17, 52, 73, 160, 171], "tight_layout": [1, 51, 73, 149, 157], "concret": [1, 5, 6, 8, 11, 149, 159, 189, 200], "takeawai": [1, 114], "further": [1, 4, 5, 6, 8, 19, 21, 23, 47, 61, 73, 87, 97, 113, 116, 118, 124, 127, 142, 144, 149, 156, 159, 171, 172, 177, 184, 193, 195, 196, 197, 198, 199, 204, 216, 220, 222, 228, 237, 247, 252, 253], "dispatch": [1, 5, 15, 121, 155, 177, 207, 208, 219, 230], "distpatch": 1, "iql": 1, "flexibl": [1, 2, 5, 6, 23, 24, 25, 49, 60, 85, 105, 112, 115, 121, 122, 131, 199, 231, 240, 257], "minut": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 164, 165, 166, 168, 169, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "000": [1, 7, 9, 12, 13, 14, 17, 19, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 171, 172, 174, 176, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "coding_ddpg": 1, "jupyt": [1, 7, 9, 12, 13, 14, 17, 20, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 171, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "notebook": [1, 7, 9, 12, 13, 14, 17, 18, 20, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 171, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 257], "ipynb": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "galleri": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "sphinx": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 260, 261, 262, 263, 267, 269, 270, 271, 272, 276], "build": [2, 6, 7, 12, 14, 19, 20, 25, 35, 47, 49, 60, 61, 65, 68, 69, 75, 76, 78, 81, 87, 91, 95, 98, 103, 109, 111, 113, 114, 115, 118, 120, 121, 127, 128, 134, 135, 136, 137, 139, 141, 152, 154, 159, 160, 161, 162, 163, 174, 175, 181, 182, 185, 187, 188, 193, 194, 196, 197, 199, 205, 220, 223, 224, 225, 231, 246, 247, 254, 261, 266, 270, 275], "highli": [2, 5, 6, 10, 18, 49, 60, 87, 165, 175, 177, 205, 247], "dynam": [2, 4, 5, 6, 8, 12, 14, 15, 19, 20, 22, 23, 25, 43, 53, 61, 65, 97, 100, 107, 111, 112, 119, 121, 147, 156, 159, 179, 182, 183, 184, 196, 197, 198, 199, 208, 220, 221, 222, 230, 235, 247, 251, 254], "explor": [2, 6, 8, 14, 21, 23, 45, 49, 73, 108, 121, 126, 130, 136, 144, 146, 152, 159, 164, 165, 229, 254], "note": [2, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 43, 44, 45, 47, 49, 50, 52, 61, 73, 85, 99, 100, 101, 102, 103, 108, 109, 112, 113, 116, 117, 122, 123, 124, 125, 126, 129, 130, 132, 133, 134, 135, 137, 138, 141, 142, 144, 145, 147, 149, 152, 154, 155, 156, 157, 161, 162, 163, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 187, 188, 189, 190, 191, 192, 193, 197, 198, 199, 201, 202, 203, 204, 205, 207, 212, 214, 215, 216, 222, 238, 247, 252, 257, 258, 260, 262, 269, 271], "differenti": [2, 5, 6, 14, 18, 25, 35, 40, 46, 47, 57, 76, 121, 136, 154, 160, 166, 191], "requires_grad": [2, 6, 7, 8, 12, 13, 20, 32, 37, 43, 47, 63, 64, 68, 73, 76, 89, 95, 101, 104, 105, 108, 110, 111, 117, 125, 129, 130, 141, 146, 147, 157, 178, 191, 201, 205, 237, 244, 250], "track": [2, 5, 7, 8, 9, 14, 43, 52, 63, 82, 99, 101, 110, 111, 117, 122, 127, 128, 132, 136, 142, 157, 163, 165, 168, 208, 245, 257], "auto": [2, 3, 5, 6, 8, 10, 12, 22, 55, 59, 122, 123, 144, 155, 186, 187, 188, 206, 208, 220, 221, 231, 246, 262, 263, 271, 272], "cout": [2, 4, 6, 22, 23, 187, 256], "endl": [2, 6, 22, 23, 187, 208], "cpufloattyp": [2, 4, 6, 23, 208], "wa": [2, 3, 4, 5, 11, 17, 20, 22, 23, 25, 42, 44, 49, 51, 52, 58, 59, 60, 61, 73, 76, 79, 95, 97, 98, 99, 101, 108, 112, 113, 115, 116, 123, 124, 126, 133, 135, 146, 150, 152, 153, 154, 156, 158, 159, 160, 163, 164, 165, 169, 176, 177, 184, 188, 191, 192, 198, 201, 208, 223, 226, 230, 231, 234, 257, 262, 271], "result": [2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 19, 20, 21, 23, 24, 25, 43, 44, 51, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 76, 78, 82, 83, 87, 97, 101, 107, 108, 111, 112, 114, 116, 119, 122, 124, 125, 128, 133, 135, 136, 137, 141, 142, 143, 144, 145, 146, 147, 149, 150, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 182, 184, 188, 190, 191, 192, 193, 195, 197, 198, 199, 200, 202, 203, 204, 205, 206, 208, 209, 210, 212, 218, 219, 221, 222, 223, 228, 233, 234, 237, 238, 241, 244, 246, 247, 251, 252, 256, 258, 260, 269], "grad_fn": [2, 4, 25, 32, 43, 47, 76, 89, 101, 125, 130, 173, 185], "addbackward1": 2, "z": [2, 5, 7, 23, 32, 43, 49, 52, 60, 76, 80, 85, 89, 92, 95, 101, 147, 165, 174, 191, 203, 208, 255, 263, 272], "27": [2, 7, 51, 144, 163, 176, 184, 219, 228, 231], "mulbackward1": 2, "meanbackward0": 2, "requires_grad_": [2, 12, 32, 76, 101, 104, 145], "flag": [2, 5, 14, 23, 43, 73, 76, 101, 137, 150, 153, 165, 174, 176, 185, 196, 198, 204, 237], "place": [2, 5, 6, 11, 12, 14, 18, 22, 23, 43, 45, 48, 49, 52, 76, 78, 85, 99, 101, 108, 113, 116, 118, 122, 126, 129, 133, 135, 138, 148, 149, 152, 154, 156, 157, 159, 160, 165, 171, 172, 175, 182, 189, 197, 198, 199, 205, 208, 212, 213, 214, 230, 237, 244, 247, 252, 262, 263, 264, 271, 272, 273], "randn": [2, 5, 6, 12, 13, 20, 23, 32, 45, 47, 52, 63, 65, 67, 71, 72, 76, 78, 80, 89, 97, 98, 99, 101, 102, 104, 105, 108, 110, 111, 125, 133, 134, 138, 141, 142, 143, 144, 145, 149, 150, 154, 161, 163, 164, 172, 173, 174, 184, 186, 191, 193, 197, 198, 199, 205, 208, 212, 230, 231, 232, 234, 238, 239, 245, 254, 258], "b": [2, 5, 6, 7, 12, 18, 21, 23, 32, 43, 47, 63, 64, 65, 67, 71, 72, 76, 80, 83, 89, 92, 93, 95, 98, 99, 102, 103, 104, 109, 110, 111, 125, 127, 128, 129, 142, 144, 145, 147, 149, 158, 160, 172, 174, 191, 193, 194, 203, 209, 231, 238, 246, 263, 272], "sumbackward0": 2, "backprop": [2, 43, 71, 72, 76, 98, 101, 111, 127, 146], "scalar": [2, 5, 14, 15, 23, 32, 43, 49, 52, 60, 63, 76, 101, 111, 169, 197, 206], "equival": [2, 4, 5, 11, 13, 17, 22, 23, 32, 43, 99, 137, 141, 154, 160, 162, 171, 173, 174, 185, 186, 189, 191, 193, 198, 199, 200, 201, 247, 255, 256], "print": [2, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 33, 34, 37, 38, 40, 42, 43, 44, 45, 47, 48, 49, 51, 52, 53, 58, 59, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 201, 203, 206, 208, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 223, 228, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 244, 246, 247, 249, 250, 252, 254, 255, 256, 258, 262, 271], "dx": [2, 64, 76, 99, 111, 130, 174], "got": [2, 15, 19, 55, 98, 99, 101, 113, 133, 146, 147, 155, 162, 188, 197, 200, 213, 262, 271], "matrix": [2, 5, 6, 12, 17, 23, 32, 40, 43, 48, 82, 92, 98, 99, 101, 103, 109, 110, 124, 127, 128, 145, 150, 153, 164, 165, 166, 171, 173, 174, 176, 177, 192, 193, 199, 201, 205, 219, 220, 221, 226, 247, 251], "explan": [2, 52, 61, 160, 169, 237], "arriv": [2, 6, 15, 23, 42, 113, 122, 133, 161, 208, 247], "valu": [2, 4, 5, 6, 7, 9, 12, 14, 18, 19, 20, 21, 22, 23, 25, 32, 33, 40, 41, 43, 47, 48, 49, 50, 55, 58, 59, 60, 61, 63, 68, 73, 80, 82, 85, 87, 92, 97, 98, 99, 101, 102, 103, 105, 108, 111, 113, 115, 124, 125, 126, 127, 129, 132, 133, 135, 137, 138, 139, 141, 143, 146, 149, 150, 154, 155, 156, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 182, 183, 185, 187, 189, 190, 191, 192, 193, 195, 196, 197, 198, 200, 203, 204, 208, 209, 211, 213, 216, 222, 229, 230, 231, 234, 244, 245, 258, 260, 269], "section": [2, 4, 5, 6, 7, 8, 11, 15, 18, 19, 21, 23, 43, 44, 47, 50, 51, 52, 73, 95, 97, 98, 99, 102, 103, 108, 113, 116, 118, 125, 129, 135, 139, 141, 144, 146, 150, 157, 160, 161, 163, 168, 171, 173, 176, 177, 178, 179, 182, 188, 190, 191, 200, 202, 207, 211, 213, 220, 226, 230, 231, 237, 247, 260, 262, 263, 264, 266, 269, 271, 272, 273, 275], "jacobian": [2, 43, 89, 121, 141, 205], "product": [2, 3, 4, 6, 12, 40, 42, 43, 48, 60, 61, 85, 99, 105, 113, 121, 122, 135, 139, 141, 165, 175, 176, 177, 185, 199, 200, 205, 209, 231, 234, 251, 254, 257], "1021": 2, "4020": 2, "314": 2, "6695": 2, "613": [2, 219], "4944": [2, 208], "0001": [2, 19, 49, 87, 89, 118, 144, 221], "kfloat": [2, 3, 59, 186, 188, 206], "102": 2, "4000": [2, 49, 60, 92, 246], "1024": [2, 5, 18, 21, 42, 82, 97, 129, 147, 164, 184, 199, 208, 210, 211, 231, 239], "0000": [2, 23, 173, 201, 208, 263, 272], "stop": [2, 4, 5, 23, 51, 58, 59, 76, 78, 87, 98, 101, 110, 126, 128, 135, 147, 152, 159, 161, 165, 168], "histori": [2, 9, 47, 48, 101, 110, 113, 117, 128, 146, 156, 157, 165, 181], "nogradguard": [2, 256], "block": [2, 5, 6, 7, 8, 10, 12, 16, 17, 19, 22, 23, 47, 49, 75, 76, 82, 90, 101, 115, 116, 123, 124, 134, 135, 136, 144, 157, 161, 162, 163, 164, 168, 171, 184, 201, 207, 208, 212, 247, 266, 275], "no_grad": [2, 7, 9, 12, 17, 19, 32, 37, 38, 42, 43, 44, 52, 58, 59, 63, 64, 68, 76, 87, 89, 92, 96, 97, 98, 99, 101, 102, 104, 110, 111, 115, 117, 122, 123, 127, 128, 129, 136, 137, 144, 146, 157, 158, 159, 160, 162, 165, 166, 169, 172, 174, 177, 178, 181, 182, 184, 185, 194, 197, 198, 199, 202, 216, 220, 247, 253, 256], "Or": [2, 21, 23, 152, 163, 179, 198, 206, 208, 262, 271], "eq": [2, 19, 23, 49, 60, 95, 123, 129, 162, 166, 173, 182, 197, 198, 221, 238, 262, 271], "bool": [2, 11, 14, 15, 17, 23, 95, 109, 118, 137, 143, 146, 155, 159, 160, 164, 171, 179, 185, 190, 192, 201, 208, 252, 260, 269], "is_leaf": 2, "detach_": [2, 163], "register_hook": 2, "retain_grad": 2, "doc": [2, 4, 6, 32, 33, 34, 37, 38, 40, 60, 69, 94, 104, 109, 111, 132, 135, 142, 143, 161, 163, 171, 174, 181, 193, 205, 226, 230, 245, 260, 261, 262, 267, 269, 270, 271, 276], "calcul": [2, 12, 17, 43, 44, 49, 52, 56, 60, 73, 82, 85, 87, 97, 110, 127, 128, 137, 143, 146, 160, 161, 163, 164, 165, 171, 177, 182, 191, 193, 197, 200, 201, 215, 221], "penalti": [2, 153, 158, 230], "h": [2, 4, 5, 6, 7, 8, 9, 10, 12, 22, 23, 25, 38, 49, 51, 96, 124, 129, 137, 144, 146, 147, 155, 178, 181, 185, 188, 208, 213, 220, 222, 225, 246, 256], "model": [2, 3, 5, 8, 11, 14, 16, 22, 23, 24, 33, 35, 37, 38, 39, 42, 43, 44, 47, 48, 52, 53, 54, 56, 61, 65, 67, 68, 69, 75, 78, 86, 87, 89, 90, 91, 93, 95, 96, 98, 99, 100, 101, 104, 106, 107, 108, 109, 110, 111, 116, 118, 119, 120, 121, 123, 126, 127, 128, 129, 132, 135, 139, 141, 142, 144, 145, 148, 152, 153, 154, 158, 159, 160, 161, 162, 163, 164, 172, 173, 174, 176, 177, 183, 184, 186, 193, 196, 199, 200, 201, 204, 205, 207, 212, 213, 214, 215, 216, 219, 222, 227, 228, 230, 235, 237, 238, 239, 241, 242, 243, 244, 245, 248, 249, 250, 251, 253, 254, 258], "linear": [2, 5, 6, 7, 9, 11, 16, 17, 19, 25, 37, 38, 43, 44, 45, 47, 48, 49, 60, 68, 69, 73, 78, 79, 87, 89, 92, 93, 94, 96, 97, 98, 100, 102, 103, 105, 109, 110, 111, 112, 115, 117, 118, 119, 123, 124, 125, 127, 128, 129, 133, 134, 137, 138, 141, 144, 145, 146, 148, 149, 150, 153, 154, 156, 157, 160, 161, 162, 163, 164, 165, 166, 169, 172, 173, 174, 177, 179, 181, 182, 184, 185, 189, 193, 195, 197, 198, 199, 200, 201, 202, 203, 205, 207, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 223, 226, 228, 230, 232, 233, 234, 237, 239, 240, 241, 242, 243, 244, 245, 248, 249, 250, 252, 258], "loss": [2, 3, 5, 6, 7, 9, 11, 14, 16, 17, 19, 32, 38, 43, 48, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 87, 89, 92, 94, 96, 99, 102, 103, 104, 111, 112, 115, 117, 118, 121, 122, 123, 125, 127, 129, 134, 135, 146, 147, 148, 149, 152, 154, 157, 160, 162, 163, 165, 166, 168, 169, 172, 178, 181, 182, 188, 191, 197, 198, 201, 216, 220, 221, 234, 241, 245, 250, 253, 258], "target": [2, 3, 4, 6, 9, 12, 14, 16, 18, 19, 22, 23, 44, 47, 49, 55, 60, 73, 78, 90, 94, 97, 98, 99, 102, 103, 104, 113, 116, 118, 123, 127, 128, 129, 134, 135, 136, 138, 142, 144, 152, 154, 155, 158, 160, 161, 162, 163, 165, 166, 169, 171, 172, 173, 174, 178, 179, 181, 182, 188, 197, 198, 199, 200, 204, 206, 208, 220, 221, 222, 225, 226, 229, 230, 231, 234, 253, 256], "mseloss": [2, 12, 37, 47, 65, 67, 68, 69, 78, 97, 110, 111, 133, 134, 149, 161, 214, 230, 245, 258], "grad_output": [2, 8, 10, 13, 64, 76, 78, 111], "ones_lik": [2, 32, 40, 48, 95, 142, 191], "create_graph": [2, 130], "gradient_penalti": 2, "dim": [2, 4, 5, 11, 14, 21, 33, 40, 41, 45, 48, 49, 60, 73, 90, 92, 93, 94, 96, 97, 99, 102, 103, 104, 110, 115, 118, 123, 127, 128, 129, 134, 144, 147, 148, 149, 154, 156, 158, 159, 161, 162, 163, 164, 165, 166, 169, 171, 173, 174, 190, 191, 192, 193, 203, 206, 219, 221, 233, 256], "combined_loss": 2, "1042": 2, "0638": 2, "0103": 2, "0723": 2, "2543": 2, "1222": 2, "0071": 2, "0814": 2, "1683": 2, "1052": 2, "0355": 2, "document": [2, 4, 5, 6, 20, 47, 52, 60, 61, 79, 82, 85, 87, 101, 112, 113, 117, 121, 133, 135, 136, 139, 141, 143, 144, 157, 162, 163, 164, 168, 171, 172, 173, 174, 176, 177, 178, 179, 191, 197, 199, 205, 206, 209, 213, 214, 218, 220, 221, 228, 247, 252, 254, 255, 256, 257, 260, 262, 263, 267, 269, 271, 272, 276], "link": [2, 4, 5, 6, 10, 12, 22, 23, 52, 58, 59, 82, 105, 108, 114, 116, 118, 135, 139, 141, 191, 204, 206, 208, 220, 260, 261, 266, 269, 270, 275], "subclass": [2, 5, 6, 14, 17, 25, 64, 67, 79, 111, 121, 126, 136, 146, 156, 162, 169, 178, 191, 193, 201, 219, 229, 230, 235, 251, 254, 256], "encod": [2, 7, 9, 14, 17, 42, 47, 48, 75, 76, 100, 104, 113, 118, 122, 126, 127, 128, 136, 153, 159, 163, 171, 178, 181, 184, 185, 195, 200, 201, 208, 230, 252], "method": [2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 19, 21, 23, 25, 44, 47, 49, 51, 55, 58, 59, 60, 64, 65, 67, 73, 79, 83, 85, 90, 95, 97, 99, 101, 111, 112, 113, 115, 120, 121, 126, 130, 133, 136, 137, 139, 141, 142, 143, 144, 145, 146, 149, 153, 154, 155, 156, 157, 159, 160, 161, 162, 169, 171, 172, 173, 174, 176, 182, 183, 189, 197, 198, 200, 201, 203, 208, 209, 213, 221, 223, 224, 225, 228, 229, 230, 245, 247, 262, 271], "forward": [2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 22, 23, 25, 33, 37, 38, 43, 44, 45, 47, 49, 52, 56, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 79, 85, 87, 89, 92, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 108, 111, 112, 115, 117, 118, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 133, 134, 135, 138, 139, 142, 146, 148, 149, 150, 152, 153, 154, 156, 157, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 179, 181, 182, 183, 185, 187, 188, 193, 194, 195, 197, 198, 199, 203, 204, 206, 208, 209, 211, 212, 213, 214, 215, 218, 219, 220, 221, 226, 228, 230, 233, 234, 237, 238, 239, 240, 241, 242, 243, 247, 248, 249, 250, 252, 256, 258], "detail": [2, 5, 6, 8, 10, 12, 15, 16, 20, 22, 23, 25, 43, 44, 45, 52, 53, 58, 59, 60, 61, 69, 73, 82, 83, 85, 111, 113, 116, 119, 123, 124, 126, 128, 129, 131, 133, 142, 144, 149, 150, 152, 157, 160, 163, 164, 168, 169, 172, 173, 174, 177, 179, 185, 188, 189, 190, 191, 192, 194, 198, 199, 205, 207, 208, 211, 213, 218, 219, 220, 224, 225, 226, 228, 229, 230, 231, 234, 237, 246, 247, 252, 257], "namespac": [2, 6, 8, 10, 22, 23, 108, 137, 155, 179, 185, 193, 208, 256], "inherit": [2, 11, 15, 22, 51, 60, 85, 99, 143, 146, 149, 159, 171, 178, 191, 193, 195, 199, 216], "linearfunct": 2, "public": [2, 8, 10, 15, 155, 208, 263, 272], "static": [2, 8, 10, 14, 21, 58, 59, 60, 107, 121, 137, 141, 142, 155, 173, 174, 181, 183, 184, 185, 196, 197, 198, 199, 200, 208, 221, 247, 260, 269], "option": [2, 5, 6, 8, 10, 11, 14, 23, 44, 46, 49, 51, 53, 60, 61, 82, 87, 97, 109, 120, 121, 126, 131, 134, 136, 138, 144, 147, 149, 156, 158, 171, 173, 174, 182, 183, 184, 185, 193, 194, 197, 198, 199, 200, 204, 209, 212, 216, 218, 227, 230, 231, 251, 252, 253, 255, 262, 266, 271, 275], "autogradcontext": [2, 8, 10], "ctx": [2, 5, 8, 10, 13, 18, 64, 111, 129, 130, 141, 212], "save_for_backward": [2, 5, 13, 64, 111, 129, 130], "mm": [2, 5, 12, 59, 110, 137, 185, 186, 188, 194, 197, 206, 207, 222, 225], "expand_a": [2, 19, 182, 197, 198], "tensor_list": [2, 8, 10, 135], "get_saved_vari": 2, "grad_input": [2, 13, 78, 129, 130], "grad_weight": 2, "grad_bia": [2, 13], "Then": [2, 12, 15, 17, 20, 22, 24, 25, 44, 45, 52, 58, 59, 61, 73, 85, 98, 99, 102, 103, 114, 121, 123, 133, 134, 149, 152, 155, 156, 159, 160, 161, 163, 165, 168, 173, 174, 188, 195, 200, 201, 212, 215, 222, 224, 225, 228, 244], "5314": 2, "2807": 2, "4864": 2, "7608": 2, "9101": [2, 173], "0073": 2, "mulconst": [2, 78], "object": [2, 4, 5, 6, 7, 9, 10, 11, 14, 19, 20, 22, 23, 43, 49, 51, 52, 60, 61, 64, 68, 69, 75, 95, 97, 101, 110, 111, 112, 116, 117, 118, 121, 125, 129, 135, 136, 141, 142, 143, 145, 154, 155, 159, 160, 161, 162, 163, 164, 168, 169, 171, 173, 174, 177, 181, 182, 193, 197, 198, 200, 216, 220, 221, 223, 225, 229, 231, 244, 246, 247], "stash": [2, 64, 111], "saved_data": 2, "were": [2, 3, 5, 6, 9, 12, 17, 18, 23, 32, 52, 60, 83, 85, 97, 99, 101, 103, 113, 114, 126, 132, 133, 138, 147, 153, 159, 160, 162, 164, 165, 173, 174, 176, 189, 201, 204, 205, 226, 231, 234, 237, 244], "todoubl": 2, "On": [2, 4, 5, 6, 8, 17, 19, 21, 22, 23, 115, 117, 122, 133, 135, 137, 147, 153, 156, 161, 162, 172, 177, 178, 201, 203, 208, 219, 226, 230, 247], "easiest": [2, 5, 9, 23, 121, 139, 145, 157, 159, 228, 247], "tabl": [2, 16, 21, 89, 103, 109, 115, 121, 122, 135, 137, 143, 144, 162, 163, 164, 168, 173, 174, 175, 219, 231, 238, 266, 275], "set_data": 2, "output_nr": 2, "after": [2, 3, 5, 6, 7, 9, 10, 12, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 32, 33, 34, 43, 45, 47, 49, 52, 53, 58, 59, 60, 61, 63, 64, 76, 79, 87, 97, 98, 99, 102, 103, 105, 110, 111, 112, 113, 115, 116, 122, 124, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 144, 146, 147, 149, 152, 153, 155, 156, 157, 158, 159, 160, 162, 163, 165, 166, 168, 169, 173, 174, 176, 178, 179, 181, 182, 183, 185, 187, 188, 195, 197, 198, 199, 200, 201, 202, 203, 204, 206, 208, 213, 214, 223, 224, 225, 228, 230, 231, 234, 237, 244, 245, 247, 252, 254, 257, 258], "bug": [2, 5, 10, 23, 108, 144, 186], "report": [2, 10, 17, 23, 52, 73, 87, 98, 121, 137, 144, 161, 163, 164, 186, 201], "fix": [2, 14, 17, 20, 23, 24, 49, 50, 51, 52, 97, 108, 113, 125, 157, 161, 173, 174, 184, 201, 226, 247, 262, 271], "soon": [2, 5, 52, 58, 59, 122, 147, 152, 198, 220], "overview": [2, 5, 6, 11, 53, 55, 61, 113, 119, 120, 121, 127, 128, 133, 134, 135, 142, 155, 159, 161, 162, 163, 165, 168, 189, 190, 192, 196, 207, 210, 227, 257], "alwai": [2, 3, 4, 6, 9, 14, 16, 18, 19, 22, 23, 49, 52, 99, 102, 103, 108, 113, 124, 125, 129, 135, 136, 137, 139, 158, 159, 160, 161, 163, 173, 178, 185, 187, 188, 189, 195, 204, 207, 222, 252, 262, 271], "problem": [2, 4, 6, 11, 14, 15, 18, 22, 23, 49, 51, 52, 61, 98, 100, 103, 115, 117, 126, 136, 142, 144, 145, 149, 153, 157, 159, 161, 163, 168, 172, 176, 189, 191, 207, 231, 232, 237, 247, 262, 271], "question": [2, 4, 5, 6, 8, 10, 17, 22, 23, 49, 75, 122, 135, 137, 143, 165, 183, 190, 200, 201, 207, 231], "forum": [2, 4, 5, 6, 22, 23, 44, 79, 110, 142, 143, 183, 207], "view": [3, 7, 9, 10, 11, 12, 14, 15, 16, 19, 25, 47, 49, 50, 52, 53, 55, 56, 61, 73, 78, 82, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 105, 110, 112, 118, 123, 124, 126, 127, 131, 132, 133, 134, 135, 141, 142, 143, 144, 149, 150, 155, 156, 160, 161, 162, 163, 164, 165, 166, 169, 173, 174, 181, 182, 183, 193, 197, 198, 206, 211, 214, 215, 226, 229, 239, 240, 241, 242, 243, 245, 248, 249, 250, 255, 260, 269], "prerequisit": [3, 7, 53, 55, 56, 100, 108, 114, 124, 131, 132, 133, 134, 135, 136, 155, 161, 162, 163, 171, 197, 214, 215], "frontend": [3, 10, 84, 110, 121, 177, 186, 187, 193, 199, 220, 221, 253], "semant": [3, 6, 22, 49, 58, 59, 68, 95, 100, 102, 111, 135, 137, 191, 192, 193, 196, 205, 262, 271], "11": [3, 5, 6, 7, 11, 17, 18, 23, 59, 61, 95, 104, 109, 122, 123, 141, 158, 163, 171, 172, 173, 174, 175, 194, 204, 208, 215, 219, 225, 227, 231, 238, 256, 262, 266, 271, 275], "nvidia": [3, 5, 17, 50, 95, 129, 135, 137, 147, 172, 201, 215, 230, 247, 251, 257], "toolkit": [3, 23, 100, 142, 146, 245], "releas": [3, 4, 6, 10, 17, 20, 23, 24, 42, 50, 105, 108, 109, 112, 122, 123, 125, 139, 142, 152, 162, 164, 168, 199, 201, 204, 208, 212, 219, 220, 221, 247, 262, 271], "greatli": [3, 6, 49, 160], "overhead": [3, 5, 6, 10, 17, 56, 82, 109, 122, 123, 124, 133, 145, 147, 149, 158, 161, 163, 164, 168, 172, 176, 177, 184, 186, 193, 199, 201, 231, 247], "increas": [3, 5, 6, 18, 19, 20, 24, 44, 73, 82, 83, 87, 97, 122, 123, 124, 126, 128, 131, 134, 142, 152, 158, 168, 182, 184, 193, 194, 197, 209, 219, 229, 230, 231, 234, 247], "mostli": [3, 10, 19, 85, 97, 116, 127, 163, 165, 179, 197, 198, 199], "deploy": [3, 4, 25, 42, 60, 97, 112, 126, 177, 186, 199, 204, 220, 227, 228, 234, 251, 252, 257], "appear": [3, 11, 14, 22, 25, 103, 226, 229, 234, 262, 271], "heart": [3, 49, 113, 219, 263, 272], "veri": [3, 4, 5, 6, 8, 12, 14, 15, 18, 19, 21, 22, 23, 24, 25, 45, 47, 48, 49, 58, 59, 60, 61, 65, 73, 75, 76, 85, 99, 101, 113, 115, 117, 123, 124, 125, 127, 134, 135, 149, 152, 153, 157, 160, 161, 163, 164, 165, 166, 168, 169, 176, 178, 182, 189, 191, 195, 198, 205, 226, 234, 247, 263, 264, 272, 273], "time": [3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 181, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 203, 204, 205, 206, 211, 212, 214, 219, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 256, 257, 260, 262, 269, 271], "compil": [3, 4, 6, 8, 10, 17, 21, 22, 25, 60, 85, 98, 108, 121, 135, 143, 173, 174, 175, 184, 186, 193, 199, 204, 207, 216, 220, 223, 231, 247, 251, 253, 256, 260, 269], "boost": [3, 97, 99, 144, 145, 176, 184, 199, 207, 216, 220, 221, 247], "demonstr": [3, 7, 9, 14, 16, 17, 20, 21, 22, 25, 42, 43, 50, 57, 61, 75, 82, 85, 108, 113, 120, 121, 122, 123, 124, 125, 127, 129, 130, 133, 134, 137, 138, 141, 142, 143, 144, 150, 155, 159, 161, 162, 163, 164, 168, 171, 173, 174, 177, 179, 184, 185, 186, 187, 188, 191, 193, 195, 198, 201, 202, 203, 204, 211, 214, 215, 218, 219, 221, 222, 224, 225, 228, 230, 231, 234, 237, 252, 254, 255, 258, 262, 263, 264, 271, 272, 273], "mnist": [3, 6, 34, 44, 47, 73, 78, 92, 94, 96, 119, 120, 121, 123, 126, 129, 135, 138, 148, 154, 162, 166, 169, 221, 233], "libtorch": [3, 6, 22, 23, 187, 204, 206, 208, 220, 222, 225, 251, 256], "counterpart": [3, 17, 108, 134, 144, 195, 201, 215, 220, 247, 252], "depict": 3, "chunk": [3, 5, 7, 55, 135, 152, 164], "batch": [3, 5, 6, 9, 12, 16, 17, 19, 21, 34, 37, 38, 39, 42, 44, 45, 47, 49, 51, 52, 53, 55, 56, 60, 61, 73, 75, 78, 79, 82, 87, 90, 92, 94, 97, 102, 104, 110, 112, 113, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 131, 134, 135, 136, 137, 138, 139, 146, 147, 148, 149, 150, 152, 154, 157, 158, 159, 160, 162, 163, 164, 166, 168, 169, 171, 172, 173, 174, 175, 177, 178, 181, 182, 184, 185, 191, 193, 196, 198, 201, 204, 205, 213, 221, 223, 230, 231, 239, 241, 242, 243], "data_load": [3, 6, 19, 178, 182, 197, 198, 199, 236], "nll_loss": [3, 73, 123, 129, 135, 148, 154, 162, 166, 221], "updat": [3, 6, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 42, 43, 44, 49, 51, 52, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 82, 97, 98, 99, 102, 103, 110, 111, 112, 117, 122, 123, 126, 129, 136, 137, 139, 147, 152, 159, 160, 162, 163, 168, 178, 182, 185, 189, 197, 198, 199, 200, 201, 204, 207, 210, 214, 216, 218, 221, 222, 228, 230, 244, 258], "captur": [3, 4, 6, 22, 23, 25, 52, 60, 107, 123, 141, 148, 158, 171, 172, 173, 174, 186, 194, 197, 198, 200, 231], "But": [3, 6, 8, 10, 20, 42, 44, 45, 52, 73, 78, 101, 103, 116, 125, 147, 152, 153, 154, 160, 173, 174, 176, 178, 182, 185, 189, 192, 200, 205, 218, 221, 223, 228, 231, 252, 262, 271], "slightli": [3, 5, 14, 23, 122, 135, 136, 158, 165, 173, 174, 192, 231, 247], "prealloc": [3, 14], "reus": [3, 10, 65, 78, 111, 130, 137, 141, 153, 160, 176, 177, 185, 187, 247], "tensoropt": [3, 186], "floatcuda": 3, "dtype": [3, 7, 8, 9, 10, 13, 14, 15, 38, 40, 41, 48, 49, 51, 52, 60, 63, 64, 72, 78, 80, 85, 89, 92, 95, 98, 101, 102, 103, 109, 111, 115, 119, 127, 129, 130, 137, 141, 144, 146, 147, 150, 160, 164, 165, 166, 173, 174, 175, 178, 179, 185, 186, 189, 190, 191, 192, 193, 195, 197, 199, 200, 206, 209, 218, 220, 223, 228, 230, 234, 237, 244, 247, 252, 253], "longcuda": 3, "klong": 3, "zero": [3, 6, 7, 11, 16, 17, 19, 25, 32, 40, 41, 44, 47, 48, 49, 60, 63, 64, 65, 67, 68, 69, 73, 78, 87, 92, 95, 98, 99, 103, 104, 110, 111, 117, 118, 122, 123, 127, 128, 134, 135, 136, 141, 144, 149, 150, 153, 155, 156, 157, 160, 161, 163, 165, 169, 178, 181, 185, 189, 191, 192, 194, 200, 201, 209, 221, 223, 230, 235, 246, 247, 252, 255, 258], "ktrainbatchs": 3, "28": [3, 6, 7, 17, 33, 34, 37, 38, 47, 78, 93, 94, 104, 138, 148, 154, 169, 176, 201, 203, 204, 208, 219, 221, 223, 231, 233, 246], "training_step": [3, 148], "void": [3, 5, 6, 15, 22, 23, 59, 144, 155, 186, 188, 208, 231, 238, 246], "cudagraph": 3, "cudastream": 3, "capturestream": 3, "getstreamfrompool": 3, "setcurrentcudastream": 3, "capture_begin": 3, "capture_end": 3, "warm": [3, 21, 70, 103, 109, 168, 172, 176, 177, 193, 203, 219, 231, 247], "side": [3, 20, 51, 52, 82, 103, 138, 147, 152, 154, 155, 160, 161, 166, 168, 188, 226, 260, 269], "prepar": [3, 11, 17, 19, 25, 44, 51, 52, 58, 59, 68, 69, 102, 103, 111, 112, 116, 134, 137, 138, 152, 155, 159, 161, 181, 185, 193, 195, 196, 199, 200, 201, 204, 209, 212, 218, 222, 227, 228, 251], "cach": [3, 64, 111, 137, 144, 168, 176, 177, 184, 185, 247], "cubla": [3, 231], "cudnn": [3, 5, 78, 117, 129, 136, 147, 150, 230], "warmupstream": 3, "int": [3, 4, 5, 6, 9, 11, 14, 18, 19, 22, 23, 24, 51, 53, 55, 58, 59, 60, 75, 85, 87, 98, 109, 115, 118, 122, 123, 126, 135, 137, 144, 146, 148, 155, 156, 161, 162, 163, 164, 168, 172, 173, 174, 178, 181, 185, 188, 193, 206, 208, 209, 213, 215, 220, 223, 252, 256, 260, 269], "num_warmup_it": 3, "success": [3, 6, 14, 23, 73, 101, 103, 126, 144, 165, 188, 204, 206, 226], "replai": [3, 14, 25, 76, 146], "spin": [3, 60, 176], "ordinari": [3, 194], "epoch": [3, 6, 7, 9, 16, 19, 24, 37, 38, 44, 52, 53, 55, 75, 87, 92, 94, 96, 97, 98, 99, 102, 103, 104, 112, 115, 117, 118, 122, 123, 126, 129, 135, 147, 148, 152, 157, 159, 163, 165, 166, 169, 178, 198, 221, 230, 241, 245, 250], "59584": 3, "60000": [3, 135], "3921": 3, "2051": 3, "accuraci": [3, 9, 17, 19, 20, 24, 37, 38, 44, 92, 97, 104, 115, 119, 120, 121, 122, 123, 126, 129, 148, 150, 156, 157, 158, 162, 166, 169, 171, 177, 182, 185, 194, 195, 198, 199, 201, 218, 219, 227, 228, 230, 245, 251], "938": [3, 6, 147], "1826": 3, "1273": 3, "960": 3, "1796": 3, "1012": [3, 147], "968": 3, "1603": 3, "0869": 3, "973": 3, "2315": 3, "0736": 3, "978": 3, "0511": [3, 185], "0704": 3, "977": [3, 147, 219], "0802": 3, "0654": 3, "979": 3, "0774": 3, "0604": 3, "980": [3, 176], "0669": 3, "0544": 3, "984": [3, 219], "0219": 3, "0517": 3, "983": 3, "real": [3, 6, 14, 20, 32, 52, 54, 58, 97, 98, 99, 100, 103, 121, 123, 126, 127, 128, 135, 136, 149, 152, 155, 158, 160, 165, 172, 176, 191, 193, 197, 200, 218, 219, 231, 234], "0m44": 3, "287": [3, 177, 262, 271], "018": 3, "0m1": 3, "116": [3, 185], "produc": [3, 4, 5, 6, 11, 22, 23, 25, 60, 68, 97, 111, 113, 115, 126, 136, 138, 141, 143, 145, 147, 149, 159, 160, 165, 171, 173, 174, 179, 182, 183, 185, 197, 198, 199, 206, 214, 230, 234, 247, 262, 271], "4092": 3, "2037": 3, "2039": 3, "1274": 3, "961": 3, "1779": 3, "1017": 3, "1559": 3, "0871": 3, "972": 3, "2240": 3, "0735": [3, 201], "0520": 3, "0710": 3, "0935": 3, "0666": [3, 23], "0744": 3, "0603": 3, "981": 3, "0762": 3, "0547": 3, "0207": 3, "0525": [3, 208], "0m6": 3, "952": [3, 144], "0m7": 3, "048": [3, 207], "0m0": 3, "619": 3, "gain": [3, 5, 17, 82, 145, 154, 168, 176, 201], "six": [3, 159, 166, 262, 271], "kind": [3, 5, 6, 19, 23, 44, 47, 49, 58, 59, 73, 98, 102, 112, 119, 121, 137, 173, 177, 197, 252], "larg": [3, 5, 6, 7, 12, 16, 17, 18, 23, 42, 49, 87, 97, 102, 103, 105, 117, 120, 121, 122, 123, 126, 129, 133, 135, 138, 139, 149, 150, 159, 160, 162, 163, 164, 171, 172, 176, 177, 178, 191, 199, 201, 202, 210, 219, 223, 230, 239, 247, 257, 260, 262, 269, 271], "improv": [3, 5, 6, 8, 10, 17, 19, 21, 24, 42, 49, 56, 97, 108, 120, 121, 122, 123, 124, 129, 142, 145, 147, 149, 153, 154, 157, 160, 164, 165, 171, 172, 176, 177, 184, 185, 194, 197, 200, 201, 204, 207, 210, 212, 216, 218, 220, 222, 230, 231, 245, 247, 253, 254, 263, 272], "due": [3, 5, 6, 17, 18, 22, 52, 58, 60, 82, 85, 108, 122, 123, 124, 133, 152, 153, 157, 162, 172, 176, 182, 184, 191, 200, 201, 202, 211, 216, 221, 234, 261, 262, 270, 271], "heavi": [3, 6, 49, 97, 101, 223], "impact": [3, 12, 17, 87, 97, 136, 161, 164, 184, 201, 209, 229, 252, 258], "smaller": [3, 9, 51, 79, 97, 103, 123, 124, 157, 159, 161, 171, 203, 208, 223, 229, 231, 234, 237], "nevertheless": [3, 5, 19, 23, 147, 159], "primari": [4, 5, 6, 15, 142, 175, 176, 177, 186, 193, 206, 247], "program": [4, 5, 18, 21, 22, 23, 25, 60, 61, 98, 100, 101, 103, 121, 124, 127, 143, 162, 172, 173, 177, 197, 198, 199, 200, 214, 231, 247, 256], "languag": [4, 5, 6, 7, 21, 23, 24, 25, 44, 49, 58, 59, 60, 78, 79, 98, 100, 102, 116, 118, 119, 121, 124, 126, 127, 128, 137, 163, 165, 173, 174, 181, 186, 195, 207, 219, 234, 246, 247, 252, 254, 256, 261, 262, 263, 270, 271, 272], "suitabl": [4, 8, 131, 135, 139, 171, 199, 223], "prefer": [4, 6, 8, 53, 58, 145, 150, 155, 159, 176, 194, 230, 252], "eas": [4, 5, 85, 122, 177, 220, 237, 251], "situat": [4, 15, 23, 25, 37, 129, 130, 133, 135, 178, 184, 195], "properti": [4, 5, 6, 11, 14, 21, 23, 25, 32, 40, 48, 101, 103, 126, 147, 153, 165, 173, 174, 176, 177, 190, 208, 220, 230, 231, 244, 249, 256, 260, 269], "unfavor": 4, "environ": [4, 5, 6, 7, 11, 17, 18, 22, 25, 42, 55, 61, 82, 85, 105, 112, 114, 115, 121, 122, 123, 124, 132, 133, 134, 135, 144, 148, 149, 155, 160, 161, 162, 163, 172, 173, 174, 175, 176, 204, 206, 207, 208, 212, 213, 214, 215, 216, 219, 222, 223, 226, 229, 231, 247, 252, 255, 256, 258], "latter": [4, 5, 6, 60, 61, 126, 161, 198], "land": [4, 23, 113, 146, 191, 220, 258], "latenc": [4, 6, 17, 121, 124, 126, 132, 144, 158, 172, 176, 177, 187, 194, 201, 219, 223], "strict": [4, 112, 171, 190, 220, 248], "bind": [4, 6, 10, 23, 121, 176, 177, 247, 262, 271], "java": [4, 58, 177, 204, 222, 223], "rust": 4, "paragraph": [4, 6, 23, 263, 266, 272, 275], "outlin": [4, 5, 6, 23, 227], "pure": [4, 5, 6, 10, 23, 47, 121, 127, 130, 138, 154, 178, 186, 199], "journei": [4, 6, 52, 137], "enabl": [4, 5, 6, 8, 11, 14, 15, 16, 18, 19, 23, 24, 42, 47, 55, 56, 58, 59, 60, 61, 75, 82, 97, 107, 112, 122, 123, 124, 126, 129, 130, 133, 135, 137, 144, 147, 152, 156, 158, 159, 168, 169, 171, 175, 176, 177, 179, 183, 184, 189, 191, 193, 195, 196, 199, 204, 207, 214, 216, 219, 220, 224, 225, 226, 228, 230, 240, 244, 251, 258, 260, 269], "vanilla": [4, 5, 6, 23, 49, 65, 99, 111, 127, 171, 189, 258], "eager": [4, 10, 23, 60, 85, 86, 121, 144, 147, 164, 172, 174, 181, 195, 197, 198, 199, 200, 210, 221, 247], "discuss": [4, 5, 6, 8, 10, 15, 16, 23, 44, 73, 79, 101, 102, 116, 122, 123, 134, 142, 143, 144, 149, 150, 172, 176, 177, 183, 189, 190, 191, 192, 228, 237, 254], "littl": [4, 17, 25, 52, 61, 97, 99, 113, 136, 159, 161, 163, 164, 166, 168, 201], "effort": [4, 14, 49, 51, 52, 108, 182, 195, 196], "next": [4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 19, 20, 22, 23, 34, 42, 43, 49, 51, 53, 55, 56, 58, 59, 60, 75, 78, 80, 82, 85, 92, 94, 96, 97, 98, 99, 102, 103, 105, 112, 113, 115, 117, 121, 122, 123, 124, 125, 127, 128, 129, 130, 132, 136, 137, 138, 139, 143, 144, 146, 149, 150, 152, 154, 157, 160, 161, 162, 163, 165, 166, 168, 169, 177, 178, 181, 182, 184, 187, 188, 191, 192, 195, 197, 198, 199, 201, 203, 208, 216, 219, 220, 222, 223, 226, 230, 234, 237, 260, 262, 263, 269, 271, 272], "mechan": [4, 5, 6, 11, 14, 15, 24, 32, 49, 56, 60, 130, 143, 153, 165, 166, 168, 174, 177, 199, 216, 220, 221, 226], "evalu": [4, 6, 9, 12, 17, 19, 20, 24, 37, 73, 97, 105, 107, 112, 118, 145, 150, 159, 160, 162, 169, 172, 173, 174, 178, 181, 198, 201, 221, 241], "onc": [4, 5, 6, 8, 10, 11, 14, 16, 17, 20, 21, 22, 23, 25, 51, 52, 56, 60, 82, 97, 98, 102, 105, 113, 131, 136, 139, 147, 148, 152, 153, 156, 158, 159, 160, 162, 165, 168, 169, 177, 184, 185, 188, 193, 195, 201, 213, 220, 223, 226, 230, 231, 247, 257], "record": [4, 6, 8, 19, 20, 23, 25, 43, 49, 60, 112, 121, 122, 123, 127, 129, 130, 143, 146, 152, 159, 160, 162, 163, 172, 174, 204, 221, 234, 252], "explicit": [4, 6, 21, 23, 60, 139, 147, 163, 190, 200, 209, 226, 230, 262, 271], "pars": [4, 5, 23, 49, 51, 103, 116, 122, 123, 126, 209, 231, 262, 271], "subject": [4, 11, 14, 23, 42, 108, 113, 123, 141, 165, 173, 174, 187, 188, 193, 198, 204, 205, 206, 207, 212, 216, 222, 231], "constraint": [4, 6, 12, 17, 18, 60, 85, 98, 99, 121, 124, 126, 153, 159, 171, 197, 198, 200, 201, 230, 231, 244, 252], "impos": [4, 223, 232, 244], "guidanc": [4, 8, 176, 177, 195, 230], "offici": [4, 82, 108, 113, 115, 135, 160, 172, 174, 181, 199, 218, 220, 252], "jit": [4, 6, 8, 15, 19, 21, 22, 25, 49, 58, 59, 60, 85, 112, 119, 137, 142, 147, 172, 177, 182, 185, 187, 188, 194, 197, 198, 203, 204, 206, 207, 208, 209, 216, 218, 220, 222, 223, 224, 225, 231, 238, 247, 252, 254, 256], "scriptmodul": [4, 22, 23, 25, 85, 203, 222, 252, 256], "embed": [4, 7, 9, 16, 21, 23, 49, 60, 75, 79, 93, 98, 100, 102, 110, 112, 115, 118, 121, 122, 124, 137, 162, 163, 165, 169, 175, 181, 188, 193, 195, 241, 262, 271], "resnet18": [4, 43, 90, 117, 147, 157, 158, 168, 171, 182, 195, 197, 198, 199, 229, 238, 256], "normal": [4, 6, 8, 11, 12, 19, 20, 21, 37, 39, 49, 51, 52, 58, 59, 60, 65, 73, 80, 85, 87, 90, 92, 94, 96, 97, 98, 99, 102, 103, 111, 112, 117, 119, 123, 127, 128, 129, 135, 136, 139, 146, 148, 153, 157, 158, 161, 162, 164, 165, 166, 168, 169, 171, 172, 177, 182, 184, 190, 197, 198, 204, 209, 213, 216, 220, 221, 223, 224, 225, 228, 229, 241, 242, 243, 247, 250, 252, 253, 262, 271], "rand": [4, 5, 6, 14, 15, 17, 21, 23, 25, 33, 40, 43, 48, 85, 89, 92, 93, 95, 96, 109, 114, 129, 130, 144, 146, 152, 153, 164, 176, 177, 178, 179, 187, 195, 197, 198, 201, 203, 206, 210, 211, 214, 219, 220, 223, 224, 225, 226, 233, 239, 247, 252, 253, 256], "224": [4, 12, 19, 20, 51, 58, 59, 75, 90, 97, 117, 119, 139, 142, 143, 152, 157, 158, 166, 168, 171, 176, 177, 182, 187, 188, 194, 197, 198, 199, 204, 206, 213, 218, 220, 223, 224, 225, 229, 238, 247, 252, 253, 256], "traced_script_modul": [4, 223], "ident": [4, 6, 17, 55, 85, 124, 132, 142, 150, 157, 166, 169, 185, 192, 194, 201, 218, 231], "2698": 4, "0381": 4, "4023": 4, "3010": 4, "0448": 4, "slicebackward": 4, "circumst": [4, 5, 230], "emploi": [4, 97, 165, 168], "particular": [4, 5, 6, 8, 11, 23, 42, 44, 51, 60, 82, 83, 87, 103, 124, 126, 127, 135, 136, 138, 139, 150, 154, 162, 171, 173, 174, 178, 179, 189, 190, 192, 193, 213, 223, 237, 247], "form": [4, 6, 9, 12, 15, 17, 23, 47, 49, 52, 60, 98, 105, 110, 113, 116, 121, 125, 128, 139, 144, 165, 171, 174, 184, 193, 201, 202, 213, 214, 226, 234, 247, 262, 271], "accordingli": [4, 10, 12, 18, 22, 136, 149, 152, 161, 171, 188, 207, 260, 269], "sai": [4, 5, 6, 24, 43, 51, 99, 101, 103, 113, 115, 125, 138, 145, 149, 152, 156, 168, 184, 200, 222, 234, 263, 272], "mymodul": [4, 6, 109, 172, 173, 174, 202, 212], "__init__": [4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 19, 20, 21, 22, 25, 33, 37, 38, 44, 45, 47, 49, 51, 52, 53, 60, 65, 67, 73, 78, 79, 85, 87, 89, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 109, 111, 112, 115, 118, 123, 125, 127, 128, 129, 133, 134, 135, 138, 142, 143, 146, 148, 149, 150, 153, 154, 156, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 193, 194, 195, 197, 198, 199, 202, 203, 209, 212, 214, 215, 216, 218, 219, 221, 223, 226, 228, 233, 234, 237, 239, 240, 241, 242, 243, 244, 248, 249, 250, 252, 262, 271], "n": [4, 5, 6, 7, 9, 12, 17, 19, 22, 23, 32, 33, 37, 38, 40, 43, 47, 48, 49, 51, 59, 60, 75, 82, 85, 89, 90, 93, 94, 95, 97, 104, 110, 113, 115, 118, 122, 123, 127, 129, 133, 135, 136, 137, 143, 145, 146, 147, 150, 153, 156, 160, 161, 162, 163, 165, 166, 169, 178, 182, 184, 185, 189, 190, 191, 192, 193, 197, 198, 200, 201, 205, 208, 213, 220, 230, 231, 236, 244, 247, 254, 256], "mv": [4, 110], "my_modul": 4, "20": [4, 6, 7, 9, 13, 16, 17, 19, 23, 33, 58, 59, 61, 78, 79, 82, 85, 87, 93, 95, 109, 123, 126, 128, 133, 135, 136, 142, 144, 146, 147, 149, 150, 152, 156, 161, 163, 166, 168, 173, 174, 177, 184, 187, 192, 195, 198, 201, 209, 221, 223, 231, 232, 234, 238, 246, 258, 266, 275], "sm": [4, 168], "exclud": [4, 8, 43], "doesn": [4, 7, 8, 10, 12, 13, 17, 25, 58, 99, 101, 103, 113, 125, 143, 145, 147, 156, 171, 172, 176, 179, 183, 184, 189, 195, 198, 200, 201, 205, 208, 210, 211, 228, 247, 255, 262, 271], "yet": [4, 6, 10, 11, 18, 23, 50, 73, 102, 107, 108, 113, 135, 162, 165, 175, 179, 185, 193, 198, 199, 216, 220, 224, 225, 247], "could": [4, 5, 6, 8, 10, 11, 23, 52, 60, 87, 97, 98, 99, 101, 102, 103, 105, 109, 122, 123, 124, 125, 127, 128, 129, 135, 139, 147, 149, 152, 159, 160, 161, 162, 163, 165, 168, 169, 171, 176, 177, 178, 179, 189, 191, 197, 199, 200, 205, 214, 215, 216, 220, 221, 237, 247], "ignor": [4, 19, 49, 51, 97, 102, 103, 112, 142, 148, 155, 159, 171, 178, 179, 182, 187, 189, 190, 191, 192, 193, 197, 198, 218, 230], "readi": [4, 6, 9, 10, 16, 22, 23, 42, 49, 58, 59, 60, 98, 99, 102, 103, 122, 134, 135, 150, 155, 159, 161, 162, 163, 175, 178, 187, 194, 197, 198, 199, 208, 213, 223, 224, 225, 228, 252], "hand": [4, 5, 6, 8, 14, 17, 18, 23, 61, 73, 98, 103, 128, 135, 139, 154, 172, 177, 190, 201, 234], "shown": [4, 6, 8, 17, 19, 20, 21, 52, 58, 59, 113, 116, 124, 126, 137, 144, 146, 157, 160, 161, 163, 164, 168, 171, 172, 176, 177, 183, 188, 190, 191, 192, 195, 198, 200, 201, 213, 214, 219, 220, 226, 228, 234, 252, 255, 257, 258, 260, 262, 269, 271], "filenam": [4, 6, 49, 104, 109, 116, 127, 128, 171, 230], "traced_resnet_model": 4, "pt": [4, 6, 22, 23, 25, 53, 58, 59, 75, 112, 117, 119, 122, 123, 137, 188, 194, 204, 206, 208, 218, 220, 221, 222, 223, 224, 225, 228, 240, 241, 242, 243, 248, 256], "my_module_model": 4, "left": [4, 17, 32, 43, 47, 49, 51, 52, 64, 85, 89, 99, 103, 111, 112, 113, 135, 137, 146, 150, 159, 160, 162, 164, 168, 169, 200, 201, 226, 234, 260, 262, 269, 271], "realm": [4, 6], "cross": [4, 7, 8, 13, 20, 44, 52, 95, 118, 124, 126, 176, 247, 262, 271], "sphere": 4, "distribut": [4, 5, 6, 14, 15, 19, 24, 52, 54, 73, 75, 79, 80, 87, 97, 99, 103, 108, 113, 121, 122, 123, 124, 126, 131, 132, 137, 147, 149, 152, 155, 159, 161, 168, 176, 185, 193, 196, 202, 208, 212, 215, 223, 229, 231, 251, 258], "encompass": 4, "share": [4, 5, 6, 10, 11, 18, 22, 23, 48, 55, 66, 78, 80, 87, 97, 101, 108, 110, 113, 121, 122, 125, 133, 135, 136, 146, 159, 161, 162, 163, 173, 174, 176, 195, 208, 220, 231, 237], "header": [4, 5, 6, 8, 22, 23, 143, 155, 188, 204, 208, 222, 225, 231, 260, 262, 263, 269, 271, 272], "cmake": [4, 6, 188, 206, 220, 256], "futur": [4, 7, 18, 21, 22, 42, 49, 58, 59, 109, 110, 118, 123, 134, 137, 141, 146, 152, 155, 157, 160, 161, 162, 163, 173, 174, 179, 181, 187, 188, 192, 197, 198, 199, 200, 204, 208, 219, 222, 252], "begin": [4, 5, 6, 7, 11, 12, 17, 19, 22, 23, 25, 32, 43, 49, 50, 52, 55, 58, 59, 73, 85, 89, 102, 103, 108, 113, 115, 116, 122, 124, 137, 142, 152, 157, 160, 162, 168, 169, 191, 193, 201, 223, 228, 230, 231, 262, 271], "iostream": [4, 5, 6, 22, 23, 220], "argc": [4, 22, 23, 220, 256], "const": [4, 5, 6, 8, 10, 15, 22, 23, 59, 144, 155, 186, 208, 220, 222, 231, 246, 256], "char": [4, 22, 23, 59, 144, 208, 220, 256], "cerr": [4, 22, 23, 220, 256], "app": [4, 23, 105, 119, 121, 139, 194, 204, 220, 222, 227, 228, 251, 252], "try": [4, 6, 12, 14, 15, 17, 19, 21, 22, 23, 25, 42, 44, 47, 48, 49, 52, 53, 58, 59, 60, 61, 73, 79, 97, 98, 99, 100, 101, 104, 105, 109, 116, 125, 126, 127, 128, 129, 136, 142, 144, 146, 147, 149, 150, 152, 155, 156, 159, 160, 164, 165, 168, 172, 173, 174, 176, 182, 184, 187, 190, 197, 201, 203, 208, 213, 216, 219, 220, 222, 230, 231, 234, 244, 245, 256, 262, 263, 271, 272], "deseri": [4, 6, 23, 112, 182, 197, 198, 256], "catch": [4, 8, 11, 22, 58, 208, 220, 222, 256], "c10": [4, 8, 10, 15, 22, 144, 155, 186, 188, 208, 219, 220, 231, 246, 256], "ok": [4, 103, 161, 262, 271], "relev": [4, 6, 14, 53, 98, 100, 103, 113, 114, 122, 124, 156, 171, 247], "accept": [4, 5, 20, 67, 78, 87, 97, 102, 111, 115, 116, 124, 126, 141, 145, 150, 154, 159, 162, 168, 171, 179, 200, 202, 205, 212, 219, 247, 252], "proce": [4, 11, 25, 97, 99, 144, 157, 165, 234, 247], "examin": [4, 11, 22, 25, 58, 59, 82, 97, 143], "moment": [4, 6, 11, 173, 179, 192, 206, 223], "cpp": [4, 5, 6, 8, 22, 23, 120, 121, 144, 187, 196, 199, 208, 220, 246, 256], "cmakelist": [4, 6, 22, 23, 208, 220, 256], "txt": [4, 5, 6, 9, 22, 23, 49, 75, 116, 127, 128, 137, 144, 158, 165, 185, 208, 220, 256], "cmake_minimum_requir": [4, 6, 22, 23, 208, 220, 256], "fatal_error": [4, 6, 22, 23, 208, 220, 256], "custom_op": [4, 108, 173, 174, 256], "find_packag": [4, 6, 22, 23, 220, 256], "add_execut": [4, 6, 22, 23, 220, 256], "target_link_librari": [4, 6, 22, 23, 208, 220, 256], "torch_librari": [4, 6, 8, 22, 23, 220, 256], "set_properti": [4, 6, 220, 256], "cxx_standard": [4, 6, 220, 256], "14": [4, 6, 22, 23, 24, 47, 73, 92, 123, 144, 171, 176, 208, 219, 220, 221, 228, 231, 238, 266, 275], "last": [4, 6, 11, 12, 14, 19, 23, 40, 43, 49, 52, 53, 59, 60, 73, 83, 85, 87, 99, 102, 105, 113, 117, 121, 124, 125, 127, 128, 135, 136, 142, 144, 148, 149, 152, 157, 159, 160, 161, 163, 164, 165, 169, 176, 178, 188, 189, 192, 193, 218, 220, 222, 228, 230, 247, 252], "thing": [4, 5, 6, 8, 15, 21, 22, 23, 25, 43, 44, 47, 49, 58, 59, 85, 87, 97, 98, 99, 101, 102, 103, 113, 116, 124, 125, 126, 129, 130, 131, 132, 135, 136, 139, 143, 144, 147, 148, 153, 158, 159, 166, 177, 182, 184, 195, 197, 208, 213, 231, 262, 271], "grab": [4, 6, 52, 158, 163], "latest": [4, 6, 10, 14, 20, 87, 107, 108, 112, 121, 137, 157, 158, 159, 162, 165, 166, 171, 172, 208, 257, 260, 269], "stabl": [4, 20, 26, 27, 28, 29, 30, 32, 33, 34, 37, 38, 40, 94, 98, 113, 140, 158, 167, 168, 170, 181, 221, 223, 230, 233, 251, 260, 269], "page": [4, 6, 10, 22, 23, 50, 54, 61, 109, 127, 139, 163, 168, 175, 199, 204, 207, 208, 209, 217, 220, 222, 247, 264, 266, 273, 275], "websit": [4, 6, 160, 226, 229], "unzip": [4, 6, 19, 50, 171, 178, 181, 182, 197, 198, 208], "archiv": [4, 5, 6, 25, 147, 257], "against": [4, 22, 23, 44, 60, 81, 105, 135, 147, 159, 212, 220, 231, 234], "window": [4, 5, 6, 7, 20, 44, 51, 103, 105, 133, 162, 168, 178, 206, 213, 226, 262, 271], "debug": [4, 6, 8, 19, 25, 58, 59, 60, 78, 98, 121, 125, 173, 174, 186, 195, 196, 231, 255], "abi": [4, 5, 6, 22, 23, 204, 206, 208, 220], "plan": [4, 6, 10, 18, 60, 112, 122, 124, 171, 175, 182, 187, 192, 198, 206, 208, 224], "correct": [4, 5, 6, 8, 10, 11, 12, 13, 19, 37, 38, 43, 44, 47, 49, 60, 64, 73, 85, 87, 92, 97, 98, 99, 102, 111, 122, 123, 125, 127, 129, 133, 136, 144, 147, 153, 156, 159, 161, 162, 165, 166, 168, 169, 182, 193, 197, 198, 215, 221, 230, 244, 260, 269], "laid": 4, "within": [4, 5, 7, 14, 18, 21, 23, 61, 85, 103, 105, 109, 110, 124, 130, 137, 142, 144, 153, 156, 160, 162, 171, 176, 177, 185, 186, 192, 193, 195, 199, 206, 208, 213, 215, 219, 231, 239, 247, 260, 262, 269, 271], "mkdir": [4, 6, 23, 104, 146, 168, 171, 181, 194, 208], "dcmake_prefix_path": [4, 6, 22, 23, 220, 256], "config": [4, 6, 10, 17, 20, 24, 87, 123, 126, 137, 144, 158, 176, 177, 179, 184, 185, 186, 197, 199, 201, 220, 221, 244, 254], "someth": [4, 5, 6, 11, 14, 19, 23, 25, 44, 87, 99, 101, 113, 116, 135, 144, 157, 158, 159, 165, 205, 231, 234, 262, 271], "root": [4, 5, 6, 14, 22, 23, 34, 37, 38, 41, 43, 44, 51, 52, 87, 92, 97, 98, 110, 129, 136, 144, 162, 163, 166, 168, 178, 188, 204, 213, 220, 223, 226, 236, 245, 250, 252, 253, 260, 269], "4b5a67132e81": 4, "identif": [4, 6, 22, 23, 220], "gnu": [4, 5, 6, 22, 23, 220, 247], "cxx": [4, 6, 22, 23, 204, 206, 208, 220], "check": [4, 5, 6, 7, 8, 13, 14, 15, 19, 20, 22, 23, 25, 42, 43, 44, 45, 49, 50, 52, 55, 58, 59, 60, 73, 75, 85, 97, 98, 101, 104, 105, 108, 109, 110, 115, 116, 122, 126, 133, 135, 136, 139, 141, 142, 144, 146, 147, 153, 154, 156, 158, 159, 162, 171, 172, 173, 174, 176, 178, 188, 192, 193, 198, 200, 206, 208, 213, 214, 219, 220, 222, 223, 226, 230, 252, 253, 256], "usr": [4, 6, 18, 22, 23, 135, 194, 220], "cc": [4, 6, 22, 23, 43, 108, 118, 204, 206, 220], "detect": [4, 6, 11, 12, 18, 22, 23, 52, 75, 121, 139, 158, 168, 172, 220, 247], "info": [4, 5, 6, 22, 23, 82, 118, 132, 135, 137, 146, 160, 171, 173, 174, 175, 185, 207, 220, 221, 228], "pthread": [4, 5, 6, 22, 23, 208, 220], "pthread_creat": [4, 6, 22, 23, 220], "thread": [4, 5, 6, 8, 9, 21, 22, 23, 52, 61, 109, 133, 134, 137, 149, 158, 161, 162, 163, 176, 177, 181, 182, 194, 216, 220, 226, 231, 246, 247], "scan": [4, 6, 22, 23, 171], "50": [4, 6, 7, 12, 16, 17, 19, 21, 22, 23, 24, 49, 52, 53, 58, 78, 92, 136, 144, 147, 156, 160, 163, 166, 177, 178, 182, 185, 191, 197, 199, 201, 203, 219, 221, 223, 228, 230, 247], "cmakefil": [4, 6, 22, 23], "dir": [4, 6, 22, 23, 82, 126, 147, 148, 204, 208, 223, 246], "o": [4, 5, 6, 7, 17, 22, 23, 90, 97, 98, 108, 128, 137, 150, 152, 171, 201, 231, 262, 271], "100": [4, 6, 9, 14, 16, 17, 19, 21, 22, 23, 37, 38, 44, 45, 48, 49, 52, 63, 64, 67, 68, 69, 71, 72, 80, 89, 92, 93, 94, 97, 99, 111, 119, 123, 125, 127, 128, 129, 133, 138, 143, 144, 145, 146, 147, 149, 154, 156, 158, 159, 160, 163, 165, 166, 169, 171, 172, 173, 174, 176, 177, 182, 187, 191, 195, 197, 198, 201, 215, 219, 221, 231, 234, 246, 257], "suppli": [4, 6, 101, 147, 158, 262, 271], "binari": [4, 6, 20, 22, 23, 49, 52, 105, 135, 147, 156, 172, 178, 188, 190, 196, 199, 204, 208, 212, 218, 220, 222, 223, 231], "incompat": [4, 173, 174, 197], "1d": [4, 68, 93, 111, 205, 247], "4d": [4, 47, 78, 147, 200], "path_to_model": 4, "successfulli": [4, 6, 22, 50, 58, 59, 60, 105, 119, 126, 135, 144, 162, 191, 194, 206, 219, 225, 227, 241, 256], "coupl": [4, 14, 49, 103, 122, 124, 130, 136, 138, 152, 169, 183, 203, 247], "awai": [4, 5, 6, 23, 47, 60, 98, 99, 101, 113, 143, 149, 159, 160, 161, 192, 234, 262, 271], "ivalu": [4, 23, 58, 144, 155, 206, 208, 220, 223, 256], "push_back": [4, 22, 23, 220, 256], "totensor": [4, 12, 19, 20, 23, 34, 37, 38, 44, 51, 52, 58, 59, 73, 75, 87, 90, 92, 94, 96, 97, 116, 117, 119, 123, 129, 135, 139, 148, 157, 158, 162, 166, 168, 169, 171, 182, 187, 188, 197, 198, 204, 206, 213, 220, 221, 223, 229, 250, 253, 256], "slice": [4, 5, 48, 80, 102, 127, 150, 156, 193, 206], "eras": [4, 25], "org": [4, 6, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 40, 42, 45, 46, 49, 58, 59, 74, 77, 84, 91, 93, 94, 96, 100, 104, 106, 113, 120, 122, 127, 128, 137, 140, 141, 142, 143, 152, 153, 157, 158, 165, 167, 168, 170, 172, 174, 181, 184, 187, 188, 190, 192, 194, 196, 203, 204, 205, 206, 208, 213, 221, 222, 223, 224, 226, 230, 233, 234, 235, 236, 237, 256, 260, 262, 269, 271], "cppdoc": [4, 6], "pariti": 4, "manipul": [4, 60, 103, 143, 152, 182, 185, 213], "five": [4, 9, 65, 95, 111, 113], "ideal": [4, 6, 14, 58, 59, 97, 149, 165, 177, 197, 207], "variabl": [4, 5, 6, 7, 8, 12, 20, 22, 23, 42, 49, 60, 69, 76, 82, 87, 98, 99, 101, 111, 114, 127, 132, 135, 144, 161, 164, 173, 174, 176, 184, 191, 193, 205, 206, 207, 208, 219, 222, 226, 252, 255], "kcuda": [4, 6, 186], "live": [4, 6, 10, 15, 121, 125, 134, 162, 163, 192, 216, 262, 271], "hopefulli": [4, 6, 50, 51, 73, 85, 99, 112], "equip": [4, 5, 130, 136, 189], "concept": [4, 6, 11, 22, 55, 100, 101, 114, 121, 126, 146, 161, 164, 165, 186, 197, 199, 200], "Of": [4, 14, 23, 97, 101, 125, 133, 135, 169, 190, 192, 226], "cours": [4, 6, 14, 17, 19, 23, 53, 97, 100, 101, 103, 104, 125, 133, 135, 169, 201, 213, 226], "did": [4, 6, 8, 19, 23, 25, 44, 52, 60, 68, 105, 111, 113, 135, 141, 153, 159, 162, 165, 176, 182, 231, 262, 271], "cover": [4, 5, 14, 15, 16, 18, 22, 25, 47, 58, 59, 100, 108, 113, 114, 119, 121, 122, 126, 135, 155, 159, 162, 163, 169, 172, 173, 174, 175, 191, 193, 197, 200, 212, 219, 220, 230, 245, 252], "insid": [4, 5, 6, 10, 16, 17, 18, 20, 22, 23, 45, 78, 108, 124, 168, 178, 195, 201, 205, 207, 223, 262, 271], "shortli": [4, 161], "html": [4, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 40, 45, 46, 52, 57, 74, 77, 84, 90, 91, 94, 100, 104, 106, 113, 114, 118, 120, 122, 137, 140, 142, 143, 157, 167, 170, 171, 174, 181, 187, 188, 190, 192, 203, 204, 230, 233, 234, 235, 237, 262, 271], "peter": 5, "goldsborough": 5, "plethora": 5, "relat": [5, 11, 14, 52, 60, 101, 103, 113, 124, 144, 153, 173, 174, 182, 231, 247, 262, 271], "algebra": [5, 14, 48, 99, 219], "wrangl": 5, "novel": 5, "research": [5, 6, 17, 19, 23, 25, 49, 52, 60, 73, 75, 85, 99, 114, 115, 135, 137, 150, 154, 156, 171, 181, 201, 216], "modul": [5, 7, 9, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 33, 37, 38, 39, 42, 44, 45, 47, 49, 52, 53, 55, 58, 59, 65, 66, 68, 73, 78, 79, 87, 89, 92, 94, 95, 96, 97, 98, 99, 102, 103, 105, 107, 108, 109, 110, 112, 115, 116, 117, 118, 121, 122, 123, 124, 125, 127, 128, 129, 133, 135, 138, 142, 143, 144, 146, 147, 150, 152, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 175, 176, 177, 179, 181, 182, 183, 184, 185, 186, 187, 188, 193, 194, 196, 197, 198, 199, 200, 201, 203, 206, 208, 209, 212, 214, 215, 219, 220, 221, 222, 223, 226, 227, 228, 231, 233, 234, 235, 238, 239, 240, 241, 242, 243, 247, 248, 249, 250, 251, 252, 256, 261, 262, 263, 270, 271, 272], "power": [5, 6, 23, 43, 49, 57, 65, 73, 75, 87, 97, 99, 121, 123, 126, 135, 144, 146, 150, 155, 156, 158, 165, 171, 184, 187, 192, 194, 227, 231, 254, 262, 271], "spare": [5, 6], "deriv": [5, 6, 10, 17, 23, 25, 43, 48, 76, 78, 99, 101, 102, 103, 110, 125, 129, 130, 141, 145, 195, 201, 247], "express": [5, 13, 23, 95, 98, 107, 114, 124, 137, 173, 174, 191, 197, 198, 200, 209, 262, 271], "better": [5, 6, 14, 17, 19, 21, 44, 52, 56, 61, 79, 97, 103, 109, 113, 115, 121, 126, 127, 128, 139, 144, 145, 146, 152, 154, 157, 159, 160, 165, 168, 169, 171, 173, 174, 176, 177, 182, 184, 189, 190, 195, 197, 198, 199, 200, 201, 207, 223, 231, 247, 253, 257], "frequent": [5, 22, 23, 75, 82, 103, 123, 175, 176, 177, 191, 220], "expens": [5, 17, 97, 109, 163, 177, 184, 201], "plausibl": 5, "address": [5, 12, 18, 22, 24, 82, 135, 161, 162, 174, 176, 197, 221, 244, 263, 272], "nativ": [5, 6, 8, 15, 23, 42, 55, 87, 107, 108, 119, 121, 122, 124, 136, 137, 163, 176, 177, 179, 184, 189, 192, 197, 216, 219, 220, 223, 238, 246, 247, 251], "intend": [5, 6, 8, 12, 23, 97, 123, 124, 129, 144, 147, 164, 172, 173, 174, 189, 197, 212, 247], "much": [5, 6, 8, 10, 12, 14, 17, 19, 23, 25, 52, 56, 73, 97, 98, 99, 103, 112, 119, 122, 125, 126, 142, 145, 146, 152, 158, 159, 162, 163, 165, 168, 169, 172, 176, 184, 189, 192, 200, 201, 218, 226, 227, 228, 230, 231, 234, 237, 245, 247, 251, 260, 262, 269, 271], "boilerpl": [5, 6, 19, 44, 99, 169, 189], "degre": [5, 64, 126, 165, 168, 192], "matter": [5, 134, 171, 189, 191, 210, 230], "organ": [5, 8, 14, 23, 51, 112, 127, 143, 149, 231, 257, 263, 272], "tackl": [5, 109], "decid": [5, 6, 8, 10, 17, 18, 52, 87, 160, 175, 192, 196, 201], "contribut": [5, 52, 61, 65, 82, 111, 137, 147, 168, 176], "upstream": [5, 220, 247], "rest": [5, 6, 14, 44, 117, 121, 136, 139, 143, 157, 159, 161, 162, 191, 198, 218, 234, 244, 262, 263, 271, 272], "chase": [5, 113], "someon": [5, 165], "fire": [5, 133], "dai": [5, 42, 103, 115, 116, 124, 244], "head": [5, 7, 17, 21, 42, 75, 83, 109, 113, 124, 126, 133, 157, 164, 178, 193, 201], "straight": [5, 6, 23, 139, 165], "recurr": [5, 9, 44, 49, 60, 79, 81, 98, 102, 110, 121, 127, 128, 153, 165, 181, 195, 234], "unit": [5, 6, 25, 49, 110, 122, 123, 145, 150, 156, 159, 160, 165, 171, 176, 177, 187, 247], "superior": 5, "lstm": [5, 44, 49, 78, 79, 93, 100, 110, 119, 121, 127, 128, 163, 181, 183, 195, 228, 234, 251], "lack": [5, 15, 82, 189], "forget": [5, 6, 112, 157, 172, 188], "gate": [5, 49, 244], "exponenti": [5, 49, 99, 101, 153, 160, 184], "elu": [5, 110], "never": [5, 7, 98, 99, 100, 103, 115, 125, 156, 166], "lltm": 5, "long": [5, 6, 7, 9, 10, 20, 23, 49, 50, 60, 78, 80, 82, 87, 98, 99, 100, 101, 103, 113, 118, 122, 125, 127, 128, 136, 137, 143, 144, 149, 153, 160, 163, 165, 168, 178, 185, 186, 195, 197, 208, 223, 231, 234, 238, 246, 247, 262, 263, 271, 272], "term": [5, 6, 15, 52, 73, 99, 100, 101, 109, 122, 124, 150, 156, 159, 174, 184, 192, 197, 198, 199, 200, 202, 234, 239, 262, 263, 271, 272], "signific": [5, 6, 9, 19, 42, 52, 58, 59, 82, 122, 129, 137, 143, 144, 145, 147, 152, 159, 164, 168, 172, 177, 203, 214, 215, 219, 221, 223, 230, 231, 234, 254, 262, 271], "lstmcell": 5, "cell": [5, 21, 23, 25, 50, 60, 75, 80, 109, 159, 160, 164, 171, 184, 234, 247, 263, 272], "plain": [5, 6, 23, 49, 127, 128, 165, 178, 244], "input_featur": 5, "state_s": 5, "candid": [5, 144, 247], "reset_paramet": [5, 129], "stdv": 5, "math": [5, 7, 10, 49, 63, 64, 65, 67, 68, 69, 71, 72, 85, 89, 95, 101, 104, 110, 111, 118, 127, 128, 129, 150, 158, 160, 164, 165, 234, 247, 266, 275], "sqrt": [5, 7, 85, 104, 118, 129, 189, 202], "uniform_": [5, 6, 7, 9, 115, 163, 181, 195, 202], "old_h": 5, "old_cel": 5, "cat": [5, 7, 9, 20, 21, 40, 44, 48, 49, 60, 78, 90, 92, 98, 101, 102, 110, 115, 118, 128, 134, 139, 144, 149, 160, 163, 165, 169, 178, 181, 200, 229, 250], "gate_weight": 5, "split": [5, 7, 8, 9, 18, 19, 20, 21, 45, 49, 52, 60, 79, 85, 87, 98, 99, 102, 103, 113, 118, 121, 127, 128, 133, 134, 137, 142, 149, 159, 162, 163, 165, 178, 181, 182, 185, 193, 197, 198, 212, 226, 246], "input_g": 5, "sigmoid": [5, 6, 52, 93, 110, 179, 200, 247], "output_g": 5, "tanh": [5, 6, 14, 25, 49, 52, 60, 93, 99, 110, 127, 145, 159, 165, 247], "candidate_cel": 5, "new_cel": 5, "hidden": [5, 7, 9, 21, 49, 60, 78, 97, 98, 102, 124, 126, 127, 128, 136, 142, 148, 163, 164, 165, 181, 195, 197, 229, 234, 260, 269], "new_h": [5, 25, 51], "rnn": [5, 9, 21, 25, 45, 49, 60, 61, 78, 79, 93, 110, 118, 121, 134, 136, 153, 162, 165, 181, 195, 199, 247], "new_c": 5, "intel": [5, 121, 135, 144, 147, 199, 206, 251], "mkl": [5, 144, 238], "nnpack": 5, "why": [5, 6, 8, 11, 14, 25, 44, 52, 85, 97, 99, 103, 112, 114, 130, 133, 144, 152, 165, 172, 173, 174, 190, 192, 231, 262, 271], "room": [5, 97, 149, 219, 262, 271], "obviou": [5, 113, 231], "knowledg": [5, 49, 52, 73, 99, 100, 114, 121, 144, 146, 262, 271], "execut": [5, 6, 7, 8, 11, 15, 16, 20, 21, 22, 23, 25, 42, 43, 45, 50, 60, 61, 76, 78, 82, 98, 108, 120, 121, 125, 126, 134, 135, 136, 143, 144, 147, 149, 155, 159, 160, 162, 163, 164, 172, 173, 174, 176, 177, 182, 183, 185, 186, 187, 194, 203, 204, 206, 207, 208, 212, 219, 223, 224, 225, 226, 230, 234, 252, 256], "kernel": [5, 6, 8, 13, 17, 18, 23, 47, 83, 108, 110, 121, 138, 144, 147, 149, 153, 154, 156, 164, 165, 168, 172, 176, 177, 184, 186, 199, 201, 207, 216, 231, 237, 247, 251], "involv": [5, 8, 9, 15, 16, 17, 19, 23, 25, 50, 60, 85, 98, 101, 105, 112, 120, 125, 127, 132, 139, 146, 152, 163, 165, 173, 174, 182, 184, 193, 201, 239, 247, 254], "launch": [5, 6, 21, 53, 61, 115, 126, 132, 133, 149, 161, 162, 163, 164, 168, 176, 206, 219, 221, 231, 247], "amount": [5, 19, 25, 73, 82, 112, 124, 133, 156, 172, 184, 223, 247], "becom": [5, 6, 11, 21, 24, 52, 61, 73, 75, 78, 85, 97, 124, 130, 145, 147, 168, 169, 176, 186, 193, 197, 210, 216, 219, 230, 252], "furthermor": [5, 19, 97, 138, 145, 169, 176, 186, 200, 224, 225, 231], "interpret": [5, 6, 23, 25, 40, 56, 82, 85, 103, 121, 127, 128, 137, 165, 172, 173, 174, 186, 196, 216, 231, 235, 251, 262, 271], "slow": [5, 6, 8, 42, 123, 148, 176, 228, 247], "down": [5, 8, 10, 11, 16, 19, 42, 50, 82, 87, 99, 104, 123, 136, 144, 145, 146, 162, 166, 169, 176, 189, 247, 260, 269], "therefor": [5, 6, 9, 15, 19, 49, 51, 60, 97, 108, 112, 113, 115, 120, 133, 134, 147, 150, 155, 156, 162, 163, 173, 174, 176, 191, 192, 200, 206, 223, 230, 262, 271], "rewrit": [5, 21, 45, 60, 107, 129, 153, 173, 174, 200, 205, 206, 252], "fuse": [5, 17, 19, 121, 144, 157, 158, 176, 177, 179, 181, 182, 184, 194, 198, 201, 206, 227, 251, 252], "group": [5, 7, 11, 16, 18, 19, 24, 49, 61, 83, 109, 113, 120, 121, 122, 123, 128, 129, 131, 133, 134, 135, 144, 168, 175, 178, 214, 215, 216, 231, 258, 262, 263, 271, 272], "profit": 5, "fewer": [5, 11, 129, 145], "visibl": [5, 22, 23, 44, 87, 171, 182], "aten": [5, 8, 10, 15, 23, 42, 109, 144, 168, 173, 174, 177, 182, 185, 186, 188, 197, 198, 199, 219, 220, 226, 238, 244, 246], "translat": [5, 23, 25, 49, 60, 105, 107, 116, 118, 150, 165, 187, 191, 213, 247, 252], "benefit": [5, 6, 9, 17, 18, 42, 43, 85, 87, 119, 122, 141, 147, 152, 157, 164, 176, 184, 197, 201, 216, 219, 220, 230, 234, 247, 257], "massiv": [5, 25, 44, 101, 103, 220], "parallel": [5, 6, 11, 16, 18, 44, 46, 49, 51, 52, 55, 73, 79, 87, 112, 121, 126, 131, 135, 137, 144, 150, 159, 161, 162, 163, 175, 176, 214, 215, 216, 230, 240, 258], "ahead": [5, 22, 152, 169, 173, 174, 179, 188, 214, 234, 247, 256], "cpp_extens": [5, 10, 23, 155, 208, 231], "setup": [5, 6, 7, 10, 16, 19, 22, 42, 52, 53, 55, 122, 123, 126, 133, 148, 149, 152, 155, 158, 163, 184, 188, 191, 192, 204, 205, 206, 214, 215, 246, 251], "lltm_cpp": 5, "ext_modul": [5, 10, 23, 155], "cppextens": [5, 10, 23, 155], "cmdclass": [5, 10, 23, 155], "build_ext": [5, 10, 23, 155], "buildextens": [5, 10, 23, 155], "conveni": [5, 8, 14, 22, 23, 44, 47, 49, 101, 125, 127, 128, 138, 145, 155, 159, 190, 192, 213, 220, 230, 231, 252], "wrapper": [5, 6, 8, 16, 55, 112, 122, 123, 130, 136, 146, 159, 171, 196, 199, 240], "include_dir": [5, 10, 155], "include_path": 5, "manag": [5, 22, 43, 49, 61, 108, 109, 113, 120, 124, 131, 132, 133, 149, 153, 164, 168, 177, 214, 215, 216, 230, 231, 232, 237, 239, 247, 257], "And": [5, 6, 10, 22, 23, 24, 25, 52, 101, 103, 105, 113, 130, 144, 145, 147, 150, 158, 168, 169, 172, 173, 174, 176, 177, 195, 199, 200, 213, 231], "overal": [5, 19, 42, 49, 122, 123, 135, 149, 160, 171, 197, 200, 219, 228, 231, 247], "d_sigmoid": 5, "bit": [5, 12, 15, 23, 25, 51, 68, 95, 109, 113, 117, 136, 148, 158, 159, 160, 165, 184, 189, 197, 199, 207, 221, 228, 231, 234], "pybind11": [5, 8, 22, 23, 155, 231], "datatyp": [5, 23, 40, 48, 109, 220, 230, 234, 247], "Its": [5, 97, 99, 193, 262, 271], "inspect": [5, 23, 78, 97, 108, 122, 126, 143, 164, 166, 172, 173, 174, 182, 185, 216, 231], "notic": [5, 8, 14, 21, 22, 23, 25, 32, 42, 43, 44, 52, 60, 73, 85, 97, 99, 112, 130, 135, 144, 146, 149, 153, 154, 157, 159, 168, 172, 173, 174, 176, 177, 188, 189, 191, 195, 256], "dispos": 5, "nvcc": 5, "workaround": [5, 7, 23, 79, 85, 130, 141], "logic": [5, 6, 11, 17, 23, 85, 98, 123, 126, 132, 134, 156, 162, 163, 171, 177, 183, 201, 202, 214, 216], "sigmoidalphablendforwardcuda": 5, "port": [5, 16, 135, 162, 213], "entir": [5, 6, 14, 16, 18, 19, 25, 47, 49, 53, 60, 78, 97, 99, 102, 117, 121, 122, 123, 127, 129, 134, 142, 149, 152, 154, 156, 157, 159, 163, 165, 176, 182, 189, 190, 191, 194, 197, 198, 208, 214, 230, 237, 239, 247, 262, 271], "lltm_forward": 5, "addmm": [5, 6, 109, 144, 173, 188, 197, 206, 207, 219, 238], "transpos": [5, 6, 7, 12, 40, 44, 48, 49, 51, 52, 60, 90, 92, 94, 96, 110, 117, 118, 129, 144, 146, 153, 157, 160, 164, 166, 169, 173, 174, 193, 206, 229], "respect": [5, 16, 32, 34, 43, 49, 51, 52, 63, 64, 68, 69, 71, 72, 99, 101, 111, 114, 115, 124, 125, 134, 136, 141, 143, 144, 145, 154, 159, 163, 165, 168, 173, 174, 176, 177, 198, 212, 244, 247, 249], "ultim": [5, 19, 49, 52, 60, 85, 189, 207], "plop": [5, 23], "autograd": [5, 12, 13, 15, 16, 21, 25, 32, 40, 42, 46, 47, 57, 59, 61, 62, 68, 69, 77, 78, 81, 91, 93, 98, 100, 101, 104, 109, 110, 119, 121, 127, 128, 129, 130, 133, 134, 144, 145, 150, 154, 160, 161, 162, 165, 177, 191, 200, 205, 208, 212, 213, 216, 226, 230, 247, 254, 256], "nice": [5, 12, 49, 80, 143, 152, 154, 159], "dig": [5, 99, 103, 164], "deeper": [5, 11, 12, 95, 97, 99, 143, 144, 164, 177, 211, 256], "interest": [5, 6, 10, 14, 17, 20, 23, 25, 44, 49, 51, 58, 59, 78, 87, 97, 99, 105, 107, 108, 113, 117, 122, 126, 145, 152, 153, 157, 159, 166, 173, 174, 176, 178, 201, 205, 231, 234, 262, 271], "alex": 5, "grave": 5, "thesi": 5, "d_tanh": 5, "relu": [5, 6, 12, 19, 20, 23, 25, 37, 38, 44, 47, 52, 73, 78, 87, 89, 92, 93, 94, 96, 97, 99, 103, 104, 105, 110, 112, 123, 133, 134, 138, 144, 146, 148, 149, 150, 154, 156, 157, 158, 160, 161, 162, 163, 165, 166, 169, 172, 173, 174, 177, 181, 182, 200, 203, 205, 214, 215, 218, 219, 220, 221, 223, 230, 233, 239, 240, 241, 242, 243, 247, 248, 249, 250, 252], "exp": [5, 7, 9, 65, 89, 98, 99, 104, 111, 118, 125, 130, 141, 160, 191], "d_elu": 5, "mask": [5, 17, 58, 75, 90, 109, 118, 121, 136, 153, 156, 160, 164, 171, 178, 184, 189, 190, 192, 193, 196, 201, 220, 254], "type_a": [5, 118], "lltm_backward": 5, "grad_h": 5, "grad_cel": 5, "d_output_g": 5, "d_tanh_new_cel": 5, "d_new_cel": 5, "d_old_cel": 5, "d_candidate_cel": 5, "d_input_g": 5, "d_gate": 5, "d_weight": 5, "d_bia": 5, "keepdim": [5, 13, 19, 73, 123, 129, 162, 166, 182, 197, 198, 221], "d_x": [5, 52], "d_old_h": 5, "d_input": 5, "span": [5, 17, 75, 98, 133, 149, 168, 201, 226, 263, 272], "four": [5, 7, 14, 18, 22, 61, 67, 85, 94, 95, 108, 111, 115, 119, 122, 134, 135, 149, 169, 223, 228, 257, 262, 263, 271, 272], "pybind11_modul": [5, 155], "torch_extension_nam": [5, 155], "macro": [5, 6, 8, 15, 23], "maintain": [5, 10, 14, 22, 43, 49, 61, 73, 97, 102, 108, 121, 131, 135, 146, 160, 163, 176, 177, 194, 230, 258], "mismatch": [5, 61, 97], "nasti": [5, 244], "hard": [5, 6, 8, 15, 21, 99, 126, 156, 231], "At": [5, 6, 8, 14, 15, 17, 20, 23, 43, 47, 49, 50, 85, 87, 102, 116, 122, 123, 124, 136, 141, 146, 157, 159, 160, 161, 164, 165, 168, 189, 192, 197, 201, 206, 223, 244, 261, 270], "point": [5, 6, 8, 10, 11, 14, 17, 18, 19, 20, 22, 23, 43, 47, 49, 50, 51, 52, 53, 58, 60, 82, 85, 97, 98, 100, 101, 102, 103, 110, 123, 124, 125, 126, 130, 131, 133, 143, 146, 149, 150, 157, 159, 161, 165, 169, 171, 173, 174, 181, 182, 184, 185, 189, 191, 192, 194, 197, 200, 201, 208, 221, 223, 228, 234, 235, 245, 247, 251, 260, 261, 262, 269, 270, 271], "bdist_egg": 5, "egg_info": [5, 23], "egg": [5, 23], "pkg": [5, 23, 257], "dependency_link": [5, 23], "top": [5, 6, 8, 17, 19, 20, 22, 23, 38, 50, 51, 52, 82, 83, 94, 96, 97, 115, 124, 127, 135, 139, 143, 157, 158, 163, 164, 168, 169, 176, 178, 182, 197, 198, 199, 201, 209, 219, 226, 227, 229, 256, 260, 264, 269, 273], "top_level": [5, 23], "manifest": [5, 23, 191, 194], "bdist": 5, "x86_64": [5, 18, 23, 204, 208], "install_lib": 5, "temp": [5, 9, 19, 23, 125, 137, 181, 182, 185, 197, 198, 234], "gcc": [5, 23, 108, 144], "miniconda": [5, 18, 23], "compiler_compat": [5, 23], "wl": [5, 22, 23], "sysroot": [5, 23], "wsign": [5, 23], "dndebug": [5, 23], "g": [5, 6, 7, 8, 10, 11, 12, 14, 18, 23, 25, 42, 43, 49, 51, 52, 60, 61, 79, 87, 89, 97, 99, 100, 103, 108, 110, 117, 121, 123, 126, 127, 128, 133, 135, 137, 138, 144, 152, 154, 155, 159, 161, 163, 165, 168, 173, 174, 176, 179, 182, 185, 186, 192, 196, 200, 205, 206, 215, 231, 247, 257, 262, 271], "fwrapv": [5, 23], "o3": [5, 23, 231], "wall": [5, 23, 98, 143, 231, 246], "wstrict": [5, 23], "prototyp": [5, 10, 11, 15, 23, 61, 113, 173, 174, 186, 193, 194, 200, 205, 206, 212], "fpic": [5, 23, 108], "site": [5, 18, 22, 23, 50, 52, 58, 59, 142, 143, 165, 187, 213, 224, 225, 227, 238, 246, 257, 262, 271], "csrc": [5, 22, 23, 155, 188, 222], "th": [5, 14, 23, 51, 99, 103, 135, 146], "thc": [5, 23], "7m": [5, 23], "dtorch_api_include_extension_h": [5, 23], "dtorch_extension_nam": [5, 23], "d_glibcxx_use_cxx11_abi": [5, 23], "cc1plu": [5, 23], "warn": [5, 19, 23, 42, 51, 137, 144, 148, 159, 164, 171, 172, 173, 174, 182, 185, 187, 189, 190, 191, 192, 197, 198, 216, 231, 252], "valid": [5, 7, 9, 13, 17, 20, 23, 24, 49, 87, 94, 97, 104, 107, 109, 112, 113, 115, 117, 118, 122, 123, 126, 129, 130, 148, 155, 157, 171, 178, 181, 182, 190, 191, 200, 201, 204, 222, 231], "objc": [5, 23], "l": [5, 7, 12, 14, 20, 23, 43, 49, 51, 52, 89, 99, 108, 110, 127, 128, 159, 160, 165, 173, 193, 194, 231], "rpath": [5, 23], "cpython": [5, 23], "37m": [5, 23], "stub": [5, 157, 209, 223, 263, 272], "loader": [5, 6, 12, 24, 38, 44, 79, 159, 162, 178, 222, 231], "byte": [5, 137, 139, 174, 181, 208, 230], "37": [5, 7, 17, 109, 158, 163, 177, 201, 219, 238], "pyc": 5, "native_lib": 5, "zip_saf": 5, "analyz": [5, 19, 23, 60, 82, 121, 152, 159, 172, 174, 185], "__pycache__": 5, "__file__": [5, 155, 231], "dist": [5, 7, 11, 16, 18, 110, 122, 123, 133, 135, 153, 155, 162, 175, 214, 215, 258], "py3": 5, "remov": [5, 9, 12, 17, 19, 49, 52, 53, 59, 60, 83, 109, 110, 114, 116, 125, 133, 137, 142, 144, 152, 158, 164, 165, 171, 172, 173, 174, 178, 181, 182, 183, 184, 185, 189, 190, 193, 194, 197, 198, 201, 204, 216, 228, 231, 234, 246, 252, 260, 269], "everyth": [5, 43, 87, 97, 99, 108, 126, 127, 130, 136, 139, 157, 158, 159, 160, 161, 165, 169, 187, 188, 212, 213, 223, 246], "finish": [5, 6, 16, 23, 44, 45, 58, 87, 92, 94, 115, 133, 134, 135, 143, 149, 161, 163, 169, 188, 199, 204, 212, 218, 223, 226, 247, 250], "ubuntu": [5, 6, 168, 208], "16": [5, 7, 16, 17, 19, 23, 24, 44, 47, 52, 87, 89, 92, 93, 94, 96, 97, 104, 105, 112, 126, 133, 136, 141, 145, 147, 156, 157, 158, 163, 164, 169, 171, 172, 173, 174, 177, 178, 184, 187, 191, 194, 201, 204, 208, 214, 219, 231, 239, 240, 241, 242, 243, 248, 249, 250, 266, 275], "04": [5, 7, 118, 168, 219, 231], "recent": [5, 49, 75, 102, 109, 113, 115, 124, 135, 137, 144, 150, 153, 157, 160, 168, 208], "maco": [5, 6, 105, 135, 171], "clang": [5, 204, 206], "worst": [5, 115, 137], "resolv": [5, 23, 97, 142, 147, 177, 191], "symbol": [5, 25, 115, 118, 142, 173, 174, 182, 200, 231, 246, 262, 271], "linker": [5, 23, 204], "pycapsul": [5, 23], "builtin": [5, 155, 231], "arg0": 5, "arg1": [5, 162], "arg2": [5, 162], "arg3": 5, "arg4": 5, "citizen": [5, 23, 189, 191], "lltmfunction": 5, "staticmethod": [5, 13, 14, 64, 111, 129, 130, 141, 161, 171, 244], "contigu": [5, 7, 8, 9, 14, 147, 181, 194, 199, 209, 218, 223, 247], "saved_tensor": [5, 13, 64, 111, 129, 130], "benchmark": [5, 15, 17, 24, 42, 109, 117, 121, 126, 137, 138, 144, 145, 154, 158, 164, 172, 176, 177, 184, 187, 193, 199, 201, 220, 221, 235, 246, 247, 251], "measur": [5, 12, 21, 82, 97, 103, 123, 137, 143, 145, 149, 159, 160, 164, 166, 172, 176, 177, 184, 195, 199, 203, 212, 219, 223, 230, 231, 246, 251], "durat": [5, 83, 155, 160, 168, 177, 262, 271], "32": [5, 14, 17, 18, 19, 20, 21, 23, 24, 47, 52, 55, 73, 87, 92, 93, 97, 102, 105, 109, 123, 126, 129, 136, 137, 144, 145, 146, 147, 150, 154, 158, 162, 163, 164, 165, 166, 168, 171, 173, 174, 176, 177, 178, 198, 203, 219, 221, 228, 231, 233, 239, 247], "128": [5, 6, 12, 22, 51, 52, 55, 73, 87, 97, 103, 109, 118, 123, 124, 126, 127, 128, 129, 134, 135, 136, 137, 138, 144, 149, 154, 158, 160, 161, 162, 163, 165, 172, 178, 185, 200, 203, 207, 212, 220, 230, 231, 232, 233, 246, 253], "100000": [5, 58, 59, 127, 128, 137, 146, 231], "3f": [5, 9, 17, 19, 44, 87, 92, 115, 118, 146, 164, 178, 181, 193, 198, 201, 230, 250], "wrote": [5, 23, 139, 172, 178, 262, 271], "post": [5, 6, 11, 20, 49, 58, 59, 97, 121, 122, 123, 126, 137, 139, 147, 149, 166, 176, 177, 183, 185, 193, 196, 198, 200, 221, 229], "my": [5, 21, 42, 50, 98, 103, 191, 198, 203, 262, 271], "machin": [5, 6, 18, 20, 21, 25, 44, 49, 50, 51, 53, 54, 55, 56, 58, 59, 60, 61, 73, 87, 105, 107, 116, 118, 121, 122, 123, 126, 131, 132, 133, 134, 135, 143, 154, 158, 162, 163, 164, 165, 176, 178, 185, 194, 198, 203, 210, 219, 226, 245, 247, 257], "506": 5, "480": [5, 238], "444": 5, "694": 5, "349": [5, 92], "335": [5, 147, 163, 258], "443": [5, 163, 238], "523": 5, "speedup": [5, 17, 21, 42, 44, 121, 138, 144, 149, 154, 177, 181, 182, 184, 193, 201, 219, 223, 247], "30": [5, 6, 7, 14, 17, 19, 45, 82, 99, 115, 121, 122, 147, 156, 161, 163, 182, 192, 197, 201, 231, 232, 238], "albeit": [5, 14, 228], "major": [5, 10, 11, 19, 103, 117, 144, 152, 164, 172, 176, 177, 192, 216, 219, 258], "particularli": [5, 13, 17, 53, 153, 165, 201], "engin": [5, 6, 14, 20, 43, 61, 87, 107, 119, 123, 158, 163, 171, 174, 178, 187, 205, 207, 220, 228, 260, 269], "wonder": [5, 99, 152], "abstract": [5, 11, 14, 51, 87, 95, 100, 103, 110, 113, 124, 126, 135, 142, 155, 159, 215, 263, 272], "correspondingli": 5, "big": [5, 42, 52, 98, 103, 128, 129, 138, 152, 159, 165, 171, 194], "win": [5, 115, 152, 185], "No": [5, 6, 49, 53, 60, 99, 144, 148, 179, 204, 211], "cuda_devic": 5, "creation": [5, 6, 10, 192, 202, 208, 237], "assert": [5, 9, 11, 12, 17, 18, 19, 22, 51, 94, 95, 98, 105, 108, 125, 129, 133, 138, 141, 142, 144, 145, 150, 153, 154, 162, 164, 169, 172, 181, 193, 194, 200, 201, 205, 208, 209, 210, 230, 231, 244], "synchron": [5, 11, 16, 55, 56, 61, 82, 133, 135, 149, 159, 161, 162, 168, 172, 176, 177, 184, 193, 212, 226, 230, 231, 258], "1e6": [5, 9, 19, 137, 164, 181, 182, 185, 197, 198, 210, 228, 231, 258], "1e5": 5, "again": [5, 6, 9, 21, 25, 44, 50, 60, 78, 97, 98, 102, 103, 108, 113, 116, 119, 125, 129, 135, 136, 152, 161, 163, 165, 168, 171, 172, 176, 184, 197, 200, 223, 231, 262, 271], "187": [5, 231], "719": 5, "410": [5, 147], "815": 5, "149": 5, "802": [5, 144], "393": [5, 177], "458": [5, 144], "That": [5, 6, 17, 23, 43, 44, 45, 49, 99, 101, 102, 103, 105, 108, 116, 124, 127, 134, 141, 143, 145, 147, 149, 150, 152, 159, 164, 168, 178, 189, 190, 192, 201, 223, 224, 234, 251, 262, 271], "great": [5, 49, 60, 105, 112, 113, 191, 197, 231, 262, 271], "pull": [5, 7, 21, 143, 173, 174, 213], "dive": [5, 6, 11, 23, 133, 144, 157], "elabor": [5, 6, 124, 144, 161], "fly": [5, 14, 23, 51, 98, 115, 159, 228], "background": [5, 6, 23, 58, 59, 73, 113, 158, 169, 171, 178, 262, 271], "tmp": [5, 23, 126, 129, 144, 171, 186, 218, 223, 228, 238], "torch_extens": 5, "emit": [5, 6, 98], "ninja": 5, "verbos": [5, 23, 132, 171, 177, 207, 208, 263, 272], "complic": [5, 14, 98, 99, 103, 126, 177, 197, 205, 209, 215, 230, 231, 252], "techniqu": [5, 9, 16, 17, 19, 21, 49, 60, 97, 98, 103, 107, 121, 124, 129, 130, 131, 143, 149, 153, 156, 157, 163, 171, 177, 184, 189, 193, 201, 203, 204, 228, 234, 247], "fine": [5, 6, 17, 19, 49, 51, 98, 113, 120, 125, 134, 135, 144, 157, 158, 168, 185, 188, 189, 201, 229, 230, 231, 247], "system": [5, 6, 8, 10, 12, 14, 15, 22, 23, 25, 55, 76, 97, 121, 126, 135, 153, 158, 159, 161, 175, 176, 177, 178, 206, 207, 208, 213, 247], "increment": [5, 11, 12, 60, 85, 101, 135, 146, 160], "thu": [5, 6, 8, 10, 19, 20, 21, 23, 49, 85, 87, 97, 108, 122, 138, 142, 152, 165, 177, 197, 202, 208, 216, 226, 231, 247, 252, 262, 271], "didn": [5, 8, 22, 76, 105, 143, 161, 181, 205, 262, 271], "prospect": 5, "pointwis": [5, 8, 142, 147, 199], "declar": [5, 6, 13, 23, 60, 73, 78, 115, 208, 223, 252], "cu": 5, "ensur": [5, 8, 9, 10, 11, 12, 14, 15, 16, 19, 22, 37, 49, 53, 56, 60, 64, 97, 109, 111, 112, 115, 116, 123, 132, 135, 141, 159, 160, 162, 164, 171, 176, 178, 186, 194, 198, 202, 231, 234, 241, 244, 254, 256], "lltm_cuda": 5, "lltm_cuda_forward": 5, "lltm_cuda_backward": 5, "check_cuda": 5, "torch_check": [5, 8], "is_cuda": [5, 147], "check_contigu": 5, "is_contigu": [5, 147, 231, 246], "check_input": 5, "lltm_cuda_kernel": 5, "cannot": [5, 6, 11, 14, 16, 18, 22, 23, 49, 60, 61, 82, 108, 112, 113, 130, 133, 135, 136, 147, 149, 157, 159, 173, 174, 184, 195, 203, 205, 254, 261, 270], "peek": [5, 211], "cuda_runtim": 5, "templat": [5, 8, 22, 23, 59, 135, 144, 208, 209, 221, 260, 269], "typenam": [5, 208], "scalar_t": [5, 144], "__device__": 5, "__forceinline__": 5, "specif": [5, 6, 8, 9, 10, 11, 12, 17, 18, 19, 22, 23, 25, 44, 55, 58, 59, 73, 82, 87, 99, 100, 101, 105, 107, 108, 110, 112, 114, 122, 123, 124, 127, 128, 129, 133, 135, 136, 137, 143, 144, 148, 149, 156, 157, 159, 161, 162, 163, 164, 165, 168, 169, 173, 174, 176, 177, 178, 179, 185, 187, 190, 193, 199, 200, 201, 204, 206, 207, 212, 214, 219, 220, 226, 229, 234, 244, 251, 252, 254, 258, 262, 271], "fmax": 5, "fmin": 5, "d_relu": 5, "wish": [5, 6, 23, 52, 60, 73, 95, 112, 113, 150, 154, 162, 171, 179, 185, 190, 198, 230, 241, 263, 272], "explicitli": [5, 6, 18, 25, 43, 48, 52, 53, 60, 87, 101, 124, 132, 136, 147, 163, 164, 166, 173, 176, 177, 182, 192, 193, 200, 226, 247], "zeros_lik": [5, 14, 95, 142, 161, 216, 254], "dim3": 5, "at_dispatch_floating_typ": 5, "lltm_forward_cuda": 5, "lltm_cuda_forward_kernel": 5, "indic": [5, 6, 10, 11, 14, 16, 23, 49, 60, 63, 64, 82, 98, 99, 102, 103, 108, 109, 110, 111, 115, 116, 118, 126, 127, 136, 137, 144, 156, 159, 160, 162, 168, 169, 171, 176, 177, 178, 185, 189, 191, 192, 195, 200, 207, 229, 231, 256, 260, 262, 269, 271], "runtim": [5, 8, 14, 18, 21, 23, 25, 40, 50, 60, 82, 85, 107, 109, 121, 124, 129, 143, 152, 168, 172, 176, 177, 181, 184, 185, 197, 206, 207, 210, 219, 230, 231, 234, 251], "back": [5, 6, 8, 10, 14, 15, 19, 20, 22, 23, 44, 47, 51, 58, 59, 60, 73, 80, 87, 97, 98, 101, 105, 109, 113, 125, 127, 139, 143, 147, 149, 152, 154, 159, 161, 162, 163, 165, 171, 176, 188, 189, 193, 194, 213, 234, 244, 247, 262, 271], "determin": [5, 6, 8, 11, 17, 19, 48, 49, 97, 98, 101, 102, 103, 105, 124, 126, 138, 142, 152, 153, 154, 156, 160, 172, 182, 193, 201, 231, 234, 239, 247], "conceptu": [5, 6, 43, 49, 60, 177], "scalartyp": 5, "messag": [5, 49, 108, 135, 137, 171, 173, 174, 185, 207, 208, 222, 225, 252], "alia": [5, 10, 64, 111, 173, 174], "retriev": [5, 6, 7, 14, 16, 21, 49, 125, 126, 146, 159, 161, 162, 177, 209, 226], "at_dispatch_all_typ": 5, "sens": [5, 8, 12, 14, 97, 103, 113, 126, 138, 169, 262, 271], "routin": [5, 6, 23], "convolut": [5, 6, 8, 12, 13, 20, 47, 52, 60, 97, 112, 117, 119, 121, 147, 150, 156, 157, 166, 176, 177, 182, 199, 200, 206, 207, 219, 220, 223, 226, 230, 238, 239, 252], "harder": [5, 97, 184, 185], "ourselv": [5, 6, 49, 76, 129, 159], "grid": [5, 47, 51, 117, 149, 157, 166, 169, 186, 254], "fill": [5, 6, 14, 80, 103, 127, 136, 141, 176, 190, 191, 208, 223], "matric": [5, 12, 17, 23, 25, 48, 101, 145, 153, 201, 207], "2048": [5, 18, 97, 129, 145], "heard": 5, "introductori": [5, 79], "fairli": [5, 97, 113, 135, 152, 160], "ever": [5, 6, 23, 125, 173, 174, 237], "__global__": 5, "__restrict__": 5, "size_t": 5, "column": [5, 7, 18, 23, 40, 80, 99, 101, 109, 119, 124, 127, 144, 145, 150, 160, 168, 171, 190, 191, 192, 193, 231, 238, 263, 272], "blockidx": 5, "blockdim": 5, "threadidx": 5, "index": [5, 6, 15, 34, 38, 41, 44, 45, 48, 49, 51, 58, 59, 60, 73, 83, 98, 99, 101, 102, 103, 109, 115, 116, 118, 119, 123, 125, 126, 127, 128, 129, 135, 139, 153, 160, 161, 165, 166, 168, 171, 172, 176, 184, 193, 205, 213, 229, 260, 266, 269, 275], "gates_row": 5, "primarili": [5, 82, 162, 172, 230], "imagin": [5, 98, 103, 130, 135, 152, 153, 165, 231, 244], "giant": [5, 165], "million": [5, 115, 117, 119, 122, 136, 176], "serial": [5, 6, 10, 23, 25, 60, 112, 121, 173, 174, 176, 182, 197, 198, 226, 231], "faster": [5, 6, 8, 9, 12, 19, 49, 56, 58, 59, 73, 97, 112, 122, 132, 136, 138, 145, 147, 154, 161, 165, 172, 177, 178, 182, 203, 218, 223, 227, 228, 230, 231, 234, 247, 251], "right": [5, 6, 8, 10, 12, 14, 20, 23, 32, 43, 48, 49, 52, 64, 82, 89, 97, 99, 101, 103, 111, 113, 135, 137, 146, 150, 152, 157, 159, 160, 161, 164, 165, 168, 171, 178, 185, 195, 197, 205, 219, 226, 234, 252, 262, 271], "inde": [5, 14, 58, 59, 97, 129, 145, 159, 164, 172, 191, 192, 231, 247], "agnost": [5, 60, 110, 232], "ineffici": [5, 82, 176, 193], "readabl": [5, 25, 51, 98, 110, 128, 139, 168, 213, 231], "especi": [5, 17, 19, 49, 52, 60, 73, 113, 122, 133, 143, 150, 152, 173, 174, 177, 184, 190, 199, 201, 221, 223, 228], "dimension": [5, 47, 48, 49, 52, 60, 97, 100, 101, 102, 103, 113, 124, 147, 156, 164, 165, 169, 171, 192, 207, 215, 223], "stride": [5, 6, 19, 52, 90, 97, 104, 113, 123, 129, 134, 144, 146, 147, 166, 171, 177, 179, 192, 218, 229, 237, 244], "row": [5, 18, 23, 34, 40, 51, 73, 80, 99, 101, 102, 103, 116, 124, 126, 127, 145, 157, 160, 161, 176, 177, 190, 192, 205, 208, 226, 231, 263, 272], "arithmet": [5, 19, 143, 185, 234], "fortun": [5, 6, 10, 15, 23, 87, 135, 136, 231], "expos": [5, 6, 8, 22, 23, 108, 113, 121, 139, 163, 181, 197, 198, 206, 208, 213, 247], "foo": [5, 21, 22, 141, 142, 153, 162, 172, 174, 182, 197, 202, 209, 246, 262, 263, 271, 272], "12": [5, 7, 23, 42, 58, 59, 92, 101, 109, 122, 123, 144, 149, 161, 169, 173, 178, 179, 184, 190, 193, 200, 201, 204, 208, 219, 221, 222, 225, 227, 231, 257, 262, 266, 271, 275], "hold": [5, 14, 16, 18, 47, 60, 63, 64, 65, 67, 68, 69, 76, 78, 87, 98, 111, 122, 123, 132, 134, 139, 152, 160, 161, 163, 237, 244, 247], "foo_a": 5, "packed_accessor64": 5, "packed_accessor32": 5, "pack": [5, 49, 60, 78, 115, 144, 159, 161, 163, 193, 208, 212, 223, 252], "integ": [5, 6, 8, 60, 97, 99, 101, 103, 113, 115, 126, 146, 156, 173, 174, 178, 184, 192, 197, 198, 199, 207, 228, 234, 265, 274], "fundament": [5, 49, 91, 101, 103, 146, 190, 198, 214], "packedtensoraccessor32": 5, "restrictptrtrait": 5, "decompos": [5, 10, 17, 123, 149, 173, 174, 197, 201], "packedaccessor32": 5, "variant": [5, 49, 60, 124, 129, 158, 164], "int32_t": 5, "packedaccessor64": 5, "slower": [5, 17, 56, 133, 145, 149, 158, 160, 172, 176, 178, 184, 186, 193, 201, 229], "host": [5, 7, 16, 18, 54, 82, 98, 122, 123, 124, 133, 134, 135, 149, 162, 163, 168, 215, 216, 247], "reshap": [5, 6, 9, 12, 19, 51, 95, 103, 104, 110, 118, 142, 159, 181, 182, 188, 189, 190, 191, 193, 197, 198, 206, 221, 231], "pattern": [5, 17, 21, 103, 124, 135, 142, 144, 153, 162, 177, 182, 183, 185, 189, 191, 197, 201, 202, 215, 220], "lltm_cuda_backward_kernel": 5, "lltm_backward_cuda": 5, "d_gate_weight": 5, "cudaextens": [5, 155], "hassl": [5, 6], "entail": 5, "simpler": [5, 78, 124, 129, 141, 153, 197, 205, 231], "fastest": [5, 149, 164], "129": [5, 109, 187], "431": 5, "304": [5, 49, 177], "641": [5, 147], "faq": [5, 22, 23], "sit": [6, 42, 105, 107, 108, 149, 153, 261, 263, 265, 270, 272, 274], "atop": 6, "substanti": [6, 126], "codebas": [6, 10, 14], "foundat": [6, 159, 171], "underli": [6, 8, 14, 23, 48, 73, 80, 95, 97, 112, 126, 138, 144, 149, 154, 162, 182, 191, 192, 193, 215, 216], "popular": [6, 68, 73, 75, 97, 111, 126, 136, 137, 177, 184, 220, 221, 261, 270], "stochast": [6, 7, 47, 52, 65, 104, 111, 115, 135, 159, 160], "descent": [6, 7, 43, 47, 63, 64, 65, 68, 72, 104, 110, 111, 115, 135, 184], "digit": [6, 47, 121, 122, 123, 171], "whirlwind": 6, "wet": 6, "appetit": 6, "watch": [6, 37, 113, 131, 135], "lightn": [6, 126], "talk": [6, 8, 49, 52, 55, 101, 115, 135, 159, 162], "cppcon": 6, "2018": [6, 118, 137], "quick": [6, 17, 48, 58, 59, 97, 99, 102, 103, 119, 122, 127, 133, 138, 145, 153, 154, 184, 201, 213, 231, 234, 256], "humor": 6, "sweep": [6, 164], "philosophi": [6, 113], "ecosystem": [6, 108], "descript": [6, 50, 61, 122, 123, 144, 148, 159, 161, 162, 163, 164, 171, 181, 231, 247, 255, 257, 263, 272], "embark": 6, "excit": [6, 22, 23, 143, 152], "team": [6, 108, 115, 126, 137, 160, 171], "job": [6, 45, 52, 53, 54, 82, 97, 126, 131, 132, 133, 135, 223], "reinforc": [6, 14, 61, 121, 146, 159, 160, 161, 162], "game": [6, 44, 52, 79, 146], "tractabl": [6, 98], "multithread": [6, 43, 56, 109, 216, 226, 231], "lock": [6, 14, 25, 56, 134, 135, 161, 162, 177, 216, 261, 270], "gil": [6, 56, 61, 133, 216], "scalabl": [6, 126, 189, 207, 219, 220, 247], "shortcom": [6, 191], "neuroevolut": 6, "owner": [6, 161, 162, 163], "anyth": [6, 13, 44, 98, 101, 102, 103, 139, 148, 158, 181, 182, 184, 226, 234, 244, 245, 262, 263, 271, 272], "serv": [6, 37, 57, 61, 85, 97, 102, 121, 127, 133, 139, 143, 146, 149, 155, 162, 163, 176, 177, 191, 212, 213, 230, 231, 247, 257], "web": [6, 105, 213, 251, 262, 271], "server": [6, 16, 25, 61, 119, 120, 121, 127, 133, 149, 155, 163, 177, 179, 185, 194, 213, 214, 216, 220, 228, 251], "3d": [6, 7, 75, 93, 101, 102, 115, 171, 197, 200, 247], "graphic": [6, 164, 206], "photo": [6, 229], "softwar": [6, 137, 149, 155, 168, 176, 206, 213, 262, 271], "integr": [6, 10, 14, 23, 78, 87, 109, 121, 126, 139, 169, 176, 177, 179, 199, 200, 206, 219, 226, 229, 244, 254], "remain": [6, 7, 87, 97, 119, 135, 142, 152, 156, 165, 179, 184, 191, 193, 195, 199, 209, 247], "forth": [6, 149, 176, 263, 272], "retain": [6, 40, 48, 76, 80, 112], "intuit": [6, 52, 73, 78, 99, 108, 112, 144, 149, 165, 171, 190, 226, 244], "tradit": [6, 42, 52, 97, 99, 107, 145, 162], "compet": [6, 113, 115, 119, 126, 176, 177], "complement": 6, "alik": 6, "love": [6, 113], "simplic": [6, 73, 122, 129, 159, 160, 215, 222, 231], "core": [6, 8, 10, 11, 42, 45, 60, 76, 98, 99, 100, 104, 108, 112, 115, 121, 124, 126, 135, 136, 144, 147, 158, 168, 173, 174, 177, 194, 196, 197, 204, 222, 226, 230, 246, 247], "principl": [6, 8, 102, 103, 121, 126], "curiou": [6, 138, 152, 154, 211], "tri": [6, 18, 52, 98, 103, 113, 160, 206, 230], "experienc": [6, 85], "ask": [6, 17, 22, 23, 60, 103, 128, 136, 159, 201, 209, 231], "rememb": [6, 44, 52, 59, 73, 76, 98, 99, 102, 109, 112, 139, 145, 146, 152, 165, 231], "dot": [6, 14, 32, 49, 52, 60, 102, 103, 121, 145, 165, 176, 177, 205, 231, 254], "colon": [6, 171, 262, 271], "minim": [6, 10, 12, 17, 23, 52, 61, 63, 64, 67, 68, 69, 73, 82, 99, 103, 121, 122, 126, 132, 137, 144, 160, 172, 182, 185, 189, 199, 201, 204, 209, 234], "verifi": [6, 20, 58, 59, 85, 108, 114, 116, 119, 130, 138, 141, 142, 145, 147, 156, 158, 176, 177, 178, 206, 219, 220, 226, 256], "too": [6, 10, 14, 19, 44, 64, 68, 82, 87, 97, 98, 103, 109, 111, 124, 127, 133, 139, 149, 152, 156, 160, 161, 163, 165, 189, 228, 260, 262, 263, 269, 271, 272], "cu90": 6, "url": [6, 19, 104, 118, 168, 172, 184, 208, 222, 236, 245, 260, 269], "wget": [6, 18, 75, 178, 181, 184, 208], "nightli": [6, 18, 75, 122, 137, 141, 172, 175, 178, 184, 187, 188, 196, 197, 199, 204, 205, 208, 221], "dep": 6, "tini": [6, 123, 149, 152], "three": [6, 10, 12, 14, 15, 51, 52, 61, 64, 73, 82, 85, 92, 95, 98, 108, 112, 113, 115, 118, 121, 124, 128, 135, 147, 153, 155, 159, 163, 164, 165, 166, 168, 169, 175, 176, 177, 184, 192, 199, 226, 228, 256, 262, 263, 271, 272], "ey": [6, 20, 23, 32, 103, 145, 150, 153, 205, 208, 262, 271], "fledg": 6, "visual": [6, 14, 25, 43, 52, 73, 75, 82, 83, 90, 116, 121, 122, 125, 126, 130, 143, 153, 159, 168, 169, 171, 176, 177, 186, 191, 245, 251], "studio": [6, 58, 204, 222, 224, 227], "qmake": 6, "makefil": 6, "comfort": 6, "box": [6, 8, 10, 11, 17, 73, 113, 126, 130, 135, 146, 158, 161, 168, 176, 177, 178, 199, 201, 205, 207, 220, 225, 226, 229, 262, 271], "cmake_prefix_path": [6, 22, 23], "invok": [6, 8, 22, 23, 25, 97, 133, 134, 141, 143, 144, 155, 162, 163, 177, 186, 188, 191, 199, 203, 207, 226, 244, 247, 253], "agre": [6, 23, 137, 258], "break": [6, 8, 10, 11, 12, 19, 38, 49, 51, 60, 75, 82, 112, 113, 116, 118, 128, 139, 146, 152, 156, 160, 161, 163, 165, 168, 172, 189, 236, 262, 271], "unexpect": [6, 51, 191, 195, 200, 247], "pwd": [6, 208, 226], "fa350df05ecf": 6, "home": [6, 48, 113, 189, 194, 204, 206, 209, 217, 222], "enter": [6, 49, 60, 122, 133, 135], "ran": [6, 103, 159, 162, 164, 173, 174, 204, 231], "me": [6, 17, 42, 49, 99, 152, 165, 201, 262, 263, 271, 272], "extens": [6, 7, 15, 22, 23, 52, 112, 121, 127, 130, 135, 171, 176, 186, 189, 191, 197, 199, 219, 221, 231, 235, 251], "besid": [6, 23, 103, 153, 161, 221, 229, 247, 262, 271], "encapsul": [6, 47, 152, 161], "buffer": [6, 14, 44, 47, 59, 69, 76, 110, 111, 112, 122, 129, 133, 138, 141, 146, 150, 152, 153, 154, 156, 160, 173, 174, 177, 188, 202, 206, 208, 223, 237], "nest": [6, 14, 43, 110, 142, 159, 161, 163, 164, 196, 262, 263, 271, 272], "similarli": [6, 9, 12, 22, 51, 60, 80, 83, 113, 116, 125, 126, 134, 143, 144, 145, 152, 179, 192, 214], "w": [6, 7, 9, 12, 32, 38, 43, 47, 49, 51, 73, 76, 98, 102, 103, 122, 125, 129, 137, 146, 147, 163, 168, 178, 184, 185, 187, 222], "struct": [6, 15, 22, 208, 252], "int64_t": [6, 8, 23], "register_paramet": [6, 202], "reflect": [6, 8, 23, 48, 95, 136, 159, 195], "magic": [6, 99, 128, 135, 145], "behind": [6, 8, 17, 23, 45, 82, 97, 99, 129, 160, 179, 190, 192, 196, 201, 202, 262, 271], "scene": [6, 23, 58, 59, 113, 202], "another_bia": 6, "recurs": [6, 16, 44, 60, 110, 202, 218, 245], "0808": 6, "8613": 6, "2017": [6, 73, 104, 118], "5206": 6, "5353": 6, "3740": 6, "0976": 6, "4786": 6, "4928": 6, "1434": 6, "4713": 6, "1735": 6, "3293": 6, "3467": 6, "3858": 6, "1980": 6, "1986": 6, "1975": 6, "4278": 6, "1831": 6, "2709": 6, "3730": 6, "4307": 6, "3236": 6, "0629": 6, "2038": 6, "4638": 6, "2023": [6, 171, 173], "1230": 6, "0516": 6, "aptli": [6, 13], "register_modul": 6, "dropout": [6, 7, 9, 12, 19, 20, 37, 39, 49, 60, 73, 93, 96, 97, 104, 110, 112, 118, 123, 124, 126, 128, 129, 136, 148, 157, 161, 163, 164, 165, 166, 181, 193, 194, 195, 198, 201, 221, 241, 242, 243, 252, 256], "conv2d": [6, 12, 19, 20, 44, 47, 52, 73, 78, 87, 92, 93, 94, 96, 97, 104, 105, 112, 123, 129, 134, 142, 146, 147, 150, 153, 154, 156, 158, 162, 166, 169, 177, 179, 182, 197, 198, 199, 200, 203, 207, 218, 220, 221, 223, 226, 228, 233, 238, 239, 240, 241, 242, 243, 247, 248, 249, 250, 252], "subtleti": [6, 192], "bodi": [6, 113, 144, 262, 263, 271, 272], "upon": [6, 14, 49, 56, 79, 117, 135, 141, 165, 169, 172, 229, 247, 260, 269], "p": [6, 7, 9, 18, 19, 49, 68, 69, 93, 97, 98, 103, 104, 110, 111, 118, 122, 123, 127, 128, 129, 134, 135, 137, 138, 141, 142, 144, 146, 147, 150, 152, 157, 161, 162, 163, 165, 178, 181, 182, 185, 197, 198, 201, 206, 207, 208, 212, 216, 234, 238], "0345": [6, 185], "4456": 6, "6313": 6, "3585": 6, "4008": [6, 23], "1647": 6, "2891": 6, "0527": 6, "0354": 6, "3084": 6, "2025": 6, "0343": [6, 208], "1824": 6, "4630": 6, "2862": 6, "2500": 6, "0420": 6, "3679": 6, "1482": 6, "0460": 6, "1967": 6, "2132": 6, "1992": 6, "4257": 6, "0739": 6, "01": [6, 7, 11, 19, 43, 47, 98, 109, 135, 157, 163, 164, 166, 173, 210, 211, 219, 221, 258, 263, 272], "6861": 6, "1166": 6, "45": [6, 7, 126, 144, 163, 176, 204, 219, 229], "0333": 6, "9983": 6, "0705": 6, "named_paramet": [6, 33, 141, 150, 153, 154, 156], "ordereddict": [6, 178], "13": [6, 23, 92, 95, 104, 109, 115, 163, 171, 176, 219, 223, 226, 262, 266, 271, 275], "48": [6, 7, 17, 126, 127, 144, 147, 169, 201, 204, 219, 238], "1863": 6, "8611": 6, "1228": 6, "3269": 6, "9858": 6, "0339": 6, "2484": 6, "2035": 6, "2103": 6, "0715": 6, "2975": 6, "4350": 6, "1878": 6, "3616": 6, "1050": 6, "4982": 6, "0335": [6, 185], "1605": 6, "4963": 6, "4099": 6, "2883": 6, "1818": 6, "3447": 6, "1501": 6, "0215": 6, "0250": 6, "0408": 6, "3756": 6, "2149": 6, "3636": 6, "8559": 6, "1572": 6, "1069": 6, "1247": 6, "8060": 6, "topic": [6, 49, 58, 59, 61, 73, 105, 107, 108, 114, 120, 176, 216], "devour": 6, "menu": [6, 50, 260, 262, 269, 271], "pipelin": [6, 16, 61, 113, 121, 139, 159, 161, 171, 176, 177, 178, 234], "briefli": [6, 61, 121, 124, 159, 172, 207], "who": [6, 42, 49, 60, 73, 79, 97, 100, 113, 135, 152, 226, 231, 262, 271], "heap": 6, "referenc": [6, 134, 163, 234], "lower": [6, 14, 17, 49, 50, 60, 73, 82, 108, 121, 122, 126, 133, 137, 141, 144, 152, 153, 157, 159, 160, 164, 165, 169, 171, 172, 179, 185, 192, 195, 198, 201, 223, 263, 272], "heavili": [6, 113, 165, 176, 184], "influenc": [6, 52], "ergonom": 6, "far": [6, 7, 14, 20, 22, 47, 49, 58, 59, 64, 95, 97, 98, 99, 111, 115, 125, 135, 139, 149, 152, 156, 160, 165, 176, 189, 198, 231, 262, 271], "stack": [6, 8, 14, 15, 21, 22, 40, 48, 78, 92, 109, 121, 124, 138, 145, 146, 150, 154, 155, 161, 165, 168, 169, 171, 205], "shared_ptr": [6, 22], "cognit": 6, "everywher": [6, 103], "make_shar": 6, "though": [6, 10, 23, 47, 73, 97, 98, 113, 117, 129, 130, 138, 139, 143, 154, 159, 169, 173, 174, 184, 189, 220, 231], "stai": [6, 82, 122, 124, 159, 160, 161, 176, 197, 198, 199, 228], "shorten": [6, 23], "wait": [6, 14, 16, 21, 82, 128, 133, 134, 135, 136, 144, 155, 160, 161, 162, 163, 168, 171, 176, 237, 238, 247], "hell": 6, "lot": [6, 8, 10, 15, 19, 21, 51, 79, 98, 113, 119, 123, 135, 150, 162, 165, 168, 172, 176, 184, 189, 230, 231, 234], "came": [6, 52, 190], "scheme": [6, 18, 97, 121, 189, 202, 237, 244], "hide": [6, 118, 129, 159, 205], "reserv": [6, 10, 15, 137, 168], "simplifi": [6, 10, 14, 24, 78, 129, 133, 134, 165, 171, 177, 178, 189, 192, 196, 197, 199, 215], "linearimpl": 6, "torch_modul": 6, "brief": [6, 24, 61, 82, 98, 159, 208], "typedef": 6, "among": [6, 8, 22, 53, 58, 59, 82, 87, 124, 156, 168, 176, 200, 228, 229], "holder": [6, 118, 264, 273], "arrow": [6, 43, 124, 195], "resembl": [6, 12, 23, 58, 59, 98, 131, 160], "extra": [6, 7, 8, 9, 56, 97, 101, 102, 107, 127, 128, 129, 134, 136, 141, 153, 159, 165, 171, 172, 177, 178, 181, 194, 220, 223, 247], "netimpl": 6, "subtl": [6, 230], "deserv": [6, 103, 113], "construct": [6, 14, 20, 21, 22, 25, 47, 52, 60, 61, 65, 67, 85, 97, 111, 117, 121, 128, 130, 134, 136, 138, 145, 149, 154, 159, 160, 162, 165, 178, 183, 193, 196, 197, 200, 202, 205, 219, 221, 230, 249, 258, 262, 263, 271, 272], "null": [6, 58, 208, 223, 226], "tricki": [6, 17, 130, 142, 173, 174, 176, 201], "had": [6, 23, 42, 47, 51, 102, 105, 113, 152, 153, 160, 169, 197, 220, 226, 244], "nullptr": [6, 186, 208], "familiar": [6, 8, 10, 22, 44, 48, 53, 54, 56, 60, 85, 98, 100, 112, 122, 125, 131, 132, 135, 139, 146, 162, 226, 231], "pythonista": 6, "disadvantag": [6, 112], "said": [6, 23, 25, 42, 146, 152, 159, 189, 190, 262, 271], "introduct": [6, 11, 17, 25, 46, 53, 54, 55, 56, 57, 79, 84, 85, 99, 100, 105, 106, 107, 108, 121, 131, 132, 144, 191, 201, 220, 247, 251, 254, 256], "sooner": [6, 122], "technic": [6, 23, 135, 136, 152, 189, 210, 211], "henceforth": 6, "recap": [6, 47, 160, 192, 237], "adversari": [6, 44, 79, 121], "architectur": [6, 9, 17, 25, 52, 56, 60, 73, 85, 95, 97, 98, 110, 121, 122, 124, 126, 131, 138, 150, 156, 164, 169, 171, 172, 175, 176, 177, 197, 199, 201, 220, 226, 228, 230, 247], "distinct": [6, 17, 21, 52, 82, 103, 122, 163, 169, 201], "transform": [6, 12, 17, 19, 20, 23, 24, 25, 32, 33, 34, 35, 36, 37, 38, 39, 40, 44, 49, 52, 58, 59, 60, 73, 75, 87, 90, 92, 93, 94, 96, 97, 109, 110, 113, 116, 117, 120, 121, 123, 129, 135, 136, 138, 139, 141, 142, 144, 146, 148, 150, 152, 153, 157, 158, 162, 165, 168, 169, 171, 178, 182, 184, 185, 193, 195, 197, 198, 199, 201, 204, 213, 216, 219, 220, 221, 229, 231, 244, 246, 247, 250, 253, 254], "probabl": [6, 8, 22, 49, 52, 58, 59, 60, 73, 75, 97, 98, 101, 103, 118, 123, 125, 126, 127, 128, 129, 148, 153, 158, 160, 166, 169, 171, 193, 219], "judg": 6, "closer": [6, 97, 160, 177], "authent": 6, "theori": [6, 49, 52, 60, 97, 125, 262, 271], "delic": 6, "tandem": 6, "indistinguish": 6, "fool": [6, 49, 73], "excel": [6, 51, 169], "realist": [6, 21, 60, 193], "2d": [6, 52, 93, 127, 129, 142, 156, 161, 171, 175, 200, 215, 252], "dcgangeneratorimpl": 6, "knoises": 6, "conv1": [6, 20, 44, 47, 73, 78, 87, 92, 93, 94, 96, 104, 105, 112, 123, 129, 142, 149, 150, 154, 156, 157, 162, 166, 169, 182, 195, 200, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "convtranspose2dopt": 6, "256": [6, 9, 17, 19, 51, 87, 90, 97, 117, 119, 124, 125, 126, 134, 144, 146, 159, 164, 165, 176, 178, 181, 182, 195, 197, 198, 200, 201, 207, 219, 229, 230, 238], "batch_norm1": 6, "conv2": [6, 20, 44, 47, 73, 78, 87, 90, 92, 93, 94, 96, 104, 105, 112, 123, 129, 142, 150, 154, 156, 162, 166, 169, 200, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "pad": [6, 17, 19, 42, 49, 52, 60, 75, 97, 104, 113, 115, 118, 129, 134, 137, 164, 191, 193, 201, 247], "batch_norm2": 6, "conv3": [6, 20, 104, 150], "batch_norm3": 6, "conv4": [6, 20], "convtranspose2d": [6, 52], "batchnorm2d": [6, 12, 19, 52, 104, 129, 134, 142, 143, 179, 198, 218, 223, 247, 252], "dcgangener": 6, "chosen": [6, 20, 22, 160, 172, 230, 231], "student": [6, 97, 113], "harm": [6, 97], "discoveri": 6, "fed": [6, 12, 49, 52, 61, 113, 118, 134, 139, 149, 171, 177, 200], "soylent": 6, "regularli": [6, 53], "channel": [6, 10, 12, 19, 21, 43, 44, 47, 52, 97, 110, 121, 122, 124, 139, 148, 152, 156, 169, 178, 185, 208, 212, 213, 220, 247, 261, 270], "moduleopt": 6, "linearopt": 6, "leaki": [6, 52], "squash": [6, 136, 146], "sequenti": [6, 7, 12, 14, 19, 37, 38, 49, 52, 68, 69, 97, 103, 110, 111, 116, 118, 125, 134, 136, 142, 146, 148, 149, 153, 157, 159, 166, 185, 193, 194, 202, 205, 210, 211, 219, 230, 247, 258], "orient": [6, 166], "layer": [6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 19, 20, 33, 37, 42, 43, 47, 49, 52, 55, 60, 68, 73, 78, 87, 93, 97, 99, 102, 110, 111, 112, 115, 117, 118, 121, 122, 123, 126, 127, 128, 134, 136, 147, 148, 149, 153, 156, 157, 158, 159, 162, 163, 165, 166, 176, 177, 178, 181, 184, 185, 200, 201, 210, 211, 212, 219, 229, 230, 233, 234, 237, 239, 241, 242, 244, 252, 256], "conv2dopt": 6, "leakyrelu": [6, 52, 110], "leakyreluopt": 6, "negative_slop": 6, "composit": [6, 11, 14, 25, 99, 100, 145, 159], "third": [6, 8, 12, 22, 23, 52, 63, 64, 65, 67, 68, 69, 102, 111, 130, 155, 165, 175, 189, 195, 205, 263, 272], "fourth": [6, 65, 130, 194, 199], "knob": [6, 176, 177], "truli": [6, 49, 146], "collat": [6, 51, 118, 263, 272], "wherev": 6, "make_data_load": 6, "unique_ptr": 6, "spawn": [6, 7, 11, 16, 18, 49, 52, 53, 55, 123, 133, 134, 135, 149, 161, 162, 163, 212, 214, 258], "concurr": [6, 109, 124, 126, 134, 149, 176, 177, 247], "kbatchsiz": 6, "dataloaderopt": 6, "consol": [6, 169, 171, 188, 257], "field": [6, 10, 11, 12, 14, 15, 49, 102, 103, 113, 135, 152, 161, 168, 174, 178, 191, 200, 203, 216, 223], "rebuild": [6, 231], "danc": [6, 12], "generator_optim": 6, "adamopt": 6, "2e": [6, 14, 89, 137], "make_tupl": 6, "discriminator_optim": 6, "5e": [6, 24, 64, 111], "adagrad": [6, 96, 110, 111, 192, 196], "lbfg": [6, 12, 110], "rmsprop": [6, 47, 69, 99, 110, 111], "sgd": [6, 7, 16, 19, 37, 38, 43, 44, 47, 65, 67, 69, 87, 89, 92, 94, 96, 98, 99, 102, 103, 104, 110, 111, 112, 115, 117, 133, 134, 135, 149, 157, 161, 162, 163, 166, 168, 169, 178, 220, 221, 230, 237, 241, 242, 243, 244, 245, 249, 250, 253], "date": [6, 10, 73, 115, 122, 162, 197, 204, 220, 244, 263, 272], "exhaust": [6, 11, 173, 174, 200], "knumberofepoch": 6, "batch_index": 6, "real_imag": 6, "real_label": [6, 52], "real_output": 6, "d_loss_real": 6, "binary_cross_entropi": [6, 230], "fake_imag": [6, 152], "fake_label": [6, 52], "fake_output": 6, "d_loss_fak": 6, "d_loss": [6, 52], "fill_": [6, 9, 52, 80, 118, 136, 165, 168, 191], "g_loss": [6, 52], "printf": 6, "r": [6, 7, 9, 11, 14, 16, 19, 42, 43, 47, 49, 51, 60, 73, 76, 85, 92, 98, 99, 121, 144, 145, 146, 147, 150, 160, 161, 163, 165, 171, 176, 178, 181, 182, 195, 197, 198, 204, 205, 208, 220, 231, 246, 247, 257, 262, 271], "2ld": 6, "3ld": 6, "4f": [6, 12, 14, 49, 52, 60, 117, 122, 123, 127, 128, 129, 136, 145, 154, 157, 159, 165, 166, 203], "batches_per_epoch": 6, "uniformli": [6, 87, 160, 247], "robust": [6, 49, 53, 54, 73, 160, 219], "propag": [6, 10, 16, 32, 43, 45, 47, 52, 78, 97, 101, 102, 127, 130, 141, 147, 154, 159, 177, 197, 199, 247], "repeat": [6, 14, 18, 19, 23, 128, 144, 146, 149, 159, 168, 176, 182, 189, 197, 198, 212, 223, 238], "spiel": 6, "progress": [6, 8, 15, 24, 49, 52, 53, 110, 136, 157, 165, 169, 214, 263, 272], "observ": [6, 14, 19, 47, 51, 61, 82, 116, 117, 122, 123, 126, 136, 137, 146, 147, 152, 159, 160, 161, 163, 164, 165, 172, 176, 179, 181, 182, 185, 192, 197, 198, 199, 200, 203, 210, 219, 230, 231, 234, 239, 244, 247, 251, 255, 258], "meaning": [6, 49, 60, 97, 147], "3c0711f20896": 6, "dcga": 6, "6876": 6, "1304": 6, "3776": 6, "3101": 6, "300": [6, 12, 98, 102, 122, 163, 178, 219, 231, 246], "3652": 6, "6626": 6, "400": [6, 47, 58, 59, 112, 137, 178, 185, 231, 246], "8057": 6, "2795": [6, 231], "3531": 6, "4452": 6, "600": [6, 119, 147, 160, 256], "3501": 6, "0811": 6, "700": 6, "3581": 6, "5623": 6, "800": 6, "6423": 6, "7385": 6, "900": 6, "3592": 6, "7333": 6, "4660": [6, 173], "5242": 6, "6364": 6, "0886": 6, "3717": 6, "8103": 6, "0201": 6, "3544": 6, "4522": 6, "6545": 6, "quickli": [6, 44, 82, 97, 98, 99, 103, 124, 152, 160, 165, 216, 221, 234, 251], "onto": [6, 8, 14, 16, 18, 44, 121, 136, 149, 152, 162, 163, 202, 247], "somewher": [6, 23, 98, 99, 112], "kcpu": [6, 186, 206], "whose": [6, 42, 60, 82, 85, 97, 103, 122, 125, 147, 171, 187, 200, 229, 231], "insert": [6, 12, 17, 19, 49, 118, 137, 157, 163, 179, 181, 182, 197, 198, 199, 200, 201, 228, 252], "op": [6, 10, 11, 15, 21, 22, 23, 48, 82, 121, 122, 123, 124, 129, 133, 135, 137, 142, 143, 144, 147, 158, 168, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 190, 191, 193, 197, 198, 199, 200, 202, 207, 208, 212, 221, 222, 223, 230, 237, 244, 247, 252], "previou": [6, 11, 13, 14, 15, 16, 17, 22, 23, 49, 52, 53, 55, 58, 59, 97, 98, 116, 117, 119, 122, 127, 128, 130, 131, 132, 134, 136, 146, 149, 152, 156, 157, 159, 160, 161, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 177, 182, 197, 198, 199, 201, 207, 208, 223, 231, 239, 247, 260, 269], "resid": [6, 7, 97, 134], "portabl": 6, "augment": [6, 24, 51, 117, 118, 119, 157, 166, 178], "period": [6, 49, 52, 126, 146, 168, 176], "crash": [6, 61], "middl": [6, 262, 271], "procedur": [6, 23, 47, 120, 157, 160, 166], "restor": [6, 73, 112, 147], "session": [6, 20, 97, 105, 234, 262, 271], "interv": [6, 14, 52, 126, 163, 165, 173, 174], "kcheckpointeveri": 6, "str": [6, 9, 18, 19, 22, 49, 83, 90, 108, 113, 118, 122, 126, 137, 139, 142, 143, 148, 159, 162, 171, 173, 174, 185, 194, 203, 208, 209, 213, 216, 231, 238, 246], "checkpoint_count": 6, "counter": [6, 11, 49, 52, 73, 135], "bump": 6, "beta1": [6, 52], "krestorefromcheckpoint": 6, "intermediari": [6, 125], "xxx": [6, 15, 45, 51], "argpars": [6, 52, 122, 123, 137, 148, 161, 162, 163, 185], "parser": [6, 98, 122, 123, 148, 161, 162, 163, 262, 271], "argumentpars": [6, 122, 123, 148, 161, 162, 163], "add_argu": [6, 122, 123, 148, 161, 162, 163], "png": [6, 51, 119, 121, 149, 178], "parse_arg": [6, 122, 123, 148, 161, 162, 163], "sample_fil": [6, 139], "mul": [6, 40, 48, 108, 144, 192, 197, 206, 231, 246], "255": [6, 12, 20, 59, 97, 139, 146, 171, 178, 179, 200, 213, 238], "uint8": [6, 20, 95, 144, 146, 178, 200], "numpi": [6, 12, 14, 17, 19, 20, 41, 44, 51, 52, 57, 60, 70, 72, 73, 75, 87, 89, 90, 92, 94, 96, 104, 105, 108, 109, 110, 117, 118, 119, 121, 127, 130, 137, 146, 149, 157, 158, 160, 163, 165, 166, 169, 171, 172, 182, 185, 189, 193, 195, 196, 197, 198, 201, 204, 229, 236, 246], "axi": [6, 13, 21, 34, 51, 52, 82, 101, 102, 109, 110, 117, 119, 127, 137, 146, 156, 157, 171, 185, 254], "subplot": [6, 14, 51, 52, 73, 117, 149, 157, 159, 165, 166, 178], "imshow": [6, 12, 34, 44, 51, 52, 73, 75, 90, 92, 94, 96, 104, 117, 157, 166, 169, 171, 178], "cmap": [6, 34, 73, 90, 94, 96, 104, 165, 169], "grai": [6, 34, 73, 104, 119, 146, 188, 229], "get_xaxi": 6, "set_vis": 6, "get_yaxi": 6, "savefig": [6, 146, 149], "out_fil": 6, "17": [6, 21, 23, 58, 59, 92, 95, 109, 113, 144, 173, 174, 187, 203, 219, 231, 266, 275], "57": [6, 7, 17, 109, 127, 144, 238], "4953": 6, "0195": [6, 185], "3610": 6, "8148": 6, "4072": 6, "36760": 6, "4444": 6, "3761": 6, "8790": 6, "3977": 6, "3315": 6, "120": [6, 44, 47, 87, 92, 93, 94, 96, 105, 112, 117, 134, 149, 156, 157, 163, 169, 238, 239, 240, 241, 242, 243, 248, 249, 250], "8084": 6, "hoorai": [6, 25], "ball": 6, "court": 6, "digest": 6, "necess": [6, 49], "broad": [6, 57], "space": [6, 14, 22, 49, 52, 60, 73, 97, 98, 102, 103, 113, 115, 126, 136, 146, 152, 159, 160, 163, 165, 168, 169, 171, 194, 262, 263, 271, 272], "consult": [6, 152, 197, 229, 261, 270], "stuck": 6, "whenev": [6, 22, 53, 67, 69, 98, 99, 111, 207], "rate": [6, 7, 43, 52, 87, 97, 99, 104, 115, 117, 122, 123, 126, 127, 146, 148, 157, 159, 160, 162, 178, 216, 236, 245, 247], "pritam": [7, 16], "damania": [7, 16], "torchtext": [7, 38, 42, 50, 92, 96, 113, 118, 121, 127, 165, 236], "positionalencod": [7, 118], "inject": 7, "posit": [7, 14, 17, 90, 99, 113, 118, 121, 137, 153, 159, 160, 164, 165, 171, 201, 229, 260, 269], "token": [7, 9, 17, 42, 49, 60, 75, 103, 113, 115, 116, 118, 122, 124, 128, 164, 165, 181, 185, 201, 247], "sine": [7, 14, 92, 95], "cosin": [7, 14, 219], "os": [7, 9, 11, 17, 18, 19, 33, 34, 49, 50, 51, 52, 53, 55, 60, 87, 90, 117, 122, 123, 125, 127, 128, 133, 134, 135, 137, 146, 148, 155, 157, 158, 161, 162, 163, 175, 178, 181, 182, 185, 194, 195, 197, 198, 208, 212, 213, 214, 215, 228, 231, 234, 237, 246, 258], "transformerencod": [7, 42, 93], "transformerencoderlay": [7, 42, 93, 164], "d_model": [7, 118], "max_len": [7, 118], "pe": 7, "arang": [7, 73, 118, 146, 149, 169, 189, 190, 191, 193, 244, 245, 254], "div_term": 7, "10000": [7, 44, 52, 92, 98, 118, 127, 136, 160, 163, 231, 246], "sin": [7, 14, 63, 64, 65, 67, 68, 69, 71, 72, 89, 95, 111, 118, 145, 172, 173, 174, 192, 247, 262, 271], "co": [7, 14, 89, 103, 118, 172, 173, 174, 238, 247, 263, 272], "replica": [7, 55, 56, 61, 79, 123, 133, 135, 149, 258], "drive": [7, 16, 25, 52, 58, 59, 60, 121, 146, 189, 212], "largest": [7, 60, 83, 160, 171, 185], "nlayer": [7, 9, 93, 163, 181, 195], "decod": [7, 9, 98, 113, 118, 122, 163, 164, 177, 181, 184, 195, 230, 252], "platform": [7, 20, 23, 105, 133, 135, 168, 194, 207, 219, 222, 226, 247, 253, 256, 257], "win32": 7, "exit": [7, 16, 141, 161, 162, 163, 210, 211, 230, 255], "device_count": [7, 11, 45, 53, 55, 87, 95, 123, 133, 150, 214, 215], "least": [7, 47, 58, 59, 73, 112, 113, 126, 128, 133, 146, 158, 165, 194, 214, 216, 223, 231, 234, 258, 262, 263, 271, 272], "ntoken": [7, 9, 163, 181, 195], "ninp": [7, 9, 163, 181, 195], "pos_encod": 7, "init_weight": [7, 9, 115, 181, 195], "initrang": [7, 9, 115, 181, 195], "src": [7, 10, 11, 108, 118, 135, 155, 206, 208, 222, 244, 246], "zero_": [7, 9, 32, 104, 115, 155, 163, 166, 181, 195], "inp": [7, 19, 32, 49, 117, 142, 157, 162, 165, 166, 172, 174, 232, 239], "permut": [7, 90, 97, 110, 146, 147, 158, 165, 171, 173, 174, 178, 183], "run_work": [7, 16, 134, 161, 162, 163, 212], "rank": [7, 11, 16, 18, 42, 45, 53, 55, 82, 121, 122, 123, 133, 134, 135, 155, 161, 162, 163, 175, 193, 212, 214, 215, 258, 260, 269], "world_siz": [7, 11, 16, 18, 24, 53, 55, 122, 123, 133, 134, 135, 155, 161, 162, 163, 175, 212, 214, 215, 258], "wikitext": [7, 9, 181, 193], "torchdata": [7, 50, 113, 115, 116, 118], "vocab": [7, 75, 99, 102, 103, 115, 116, 118, 124, 137, 185], "numeric": [7, 118], "batchifi": [7, 9, 181], "arrang": [7, 17, 201], "trim": [7, 9, 12, 60, 165, 181, 246], "alphabet": 7, "26": [7, 23, 144, 146, 147, 158, 163, 219], "bmatrix": [7, 17, 102, 201], "text": [7, 17, 34, 38, 40, 44, 52, 73, 75, 85, 98, 99, 101, 102, 103, 113, 115, 116, 118, 120, 121, 122, 127, 128, 135, 137, 159, 160, 165, 168, 171, 181, 196, 201, 226, 229, 251, 263, 265, 272, 274], "c": [7, 12, 15, 18, 19, 21, 25, 38, 43, 49, 51, 63, 64, 65, 67, 71, 72, 85, 89, 90, 94, 95, 97, 103, 104, 108, 110, 111, 112, 115, 121, 127, 128, 129, 130, 135, 137, 139, 142, 144, 146, 147, 158, 163, 164, 165, 171, 173, 174, 175, 188, 191, 199, 209, 221, 223, 225, 226, 230, 231, 244, 245, 251, 252, 263, 272], "ldot": 7, "rightarrow": [7, 98, 135, 160], "j": [7, 22, 23, 32, 43, 44, 58, 59, 73, 89, 92, 94, 96, 97, 98, 102, 103, 117, 127, 137, 150, 165, 194], "k": [7, 12, 17, 19, 49, 58, 59, 60, 82, 90, 98, 105, 108, 124, 137, 147, 150, 154, 161, 162, 164, 178, 182, 197, 198, 201, 209], "u": [7, 14, 115, 118, 194], "treat": [7, 60, 75, 103, 113, 154, 161, 172, 203, 252], "print_with_rank": 7, "msg": [7, 187, 213], "wikitext2": 7, "get_token": [7, 115, 118], "build_vocab_from_iter": [7, 115, 116, 118], "train_it": [7, 115, 118], "basic_english": [7, 115], "unk": [7, 115, 116, 118], "set_default_index": [7, 115, 116, 118], "data_process": 7, "raw_text_it": 7, "tupl": [7, 9, 20, 48, 51, 58, 59, 60, 78, 80, 82, 97, 102, 103, 110, 115, 116, 137, 141, 142, 146, 147, 160, 173, 174, 178, 181, 182, 185, 192, 200, 209, 230, 234, 256], "filter": [7, 13, 24, 49, 83, 97, 125, 137, 157, 165, 185, 208, 246], "val_it": [7, 118], "test_it": [7, 115], "train_data": [7, 55, 165], "val_data": 7, "test_data": [7, 9, 20, 34, 37, 38, 99, 181], "bsz": [7, 9, 135, 181, 195], "is_train": 7, "nbatch": [7, 9, 181], "wouldn": [7, 9, 17, 103, 123, 136, 181, 201], "cleanli": [7, 9, 181, 210, 211, 255], "narrow": [7, 9, 80, 144, 181, 193], "evenli": [7, 9, 18, 181], "data_per_rank": 7, "eval_batch_s": [7, 9, 19, 24, 137, 181, 182, 185, 197, 198], "get_batch": [7, 9, 181], "subdivid": [7, 8], "bptt": [7, 9, 181], "35": [7, 17, 73, 124, 147, 203, 219, 221], "seq_len": [7, 9, 164, 181], "min": [7, 9, 19, 52, 82, 87, 97, 104, 117, 135, 146, 155, 157, 159, 161, 163, 171, 173, 174, 176, 177, 178, 181, 197, 200], "4096": [7, 18, 175, 219, 230], "billion": [7, 122, 124], "rpc": [7, 109, 121, 133, 149, 216, 251], "rref": [7, 16, 61, 134, 161, 162, 212, 216], "expans": [7, 134], "replic": [7, 16, 18, 56, 60, 61, 79, 121, 123, 124, 131, 133, 135, 149, 162, 163, 215], "distributeddataparallel": [7, 16, 55, 56, 120, 122, 123, 135, 155, 163, 175, 230, 258], "vocabulari": [7, 49, 60, 103, 115, 118, 124, 137, 193, 247], "emsiz": [7, 115], "nhid": [7, 9, 163, 181, 195], "feedforward": [7, 124], "nhead": [7, 118, 193], "multihead": [7, 42], "tmpfile": 7, "namedtemporaryfil": 7, "init_rpc": [7, 16, 134, 161, 162, 163, 212], "rpc_backend_opt": [7, 16, 134, 212], "tensorpiperpcbackendopt": [7, 16, 134, 212], "init_method": [7, 16, 133, 135], "_transport": 7, "_channel": 7, "longer": [7, 12, 42, 52, 78, 99, 113, 125, 129, 144, 149, 152, 156, 160, 161, 172, 176, 177, 193, 197, 198, 211, 231, 247, 260, 269], "ibv": 7, "uv": 7, "cuda_ipc": 7, "cuda_bas": 7, "num_gpu": [7, 162], "partition_len": 7, "tmp_list": 7, "module_list": 7, "transformer_block": [7, 124], "checkpoint": [7, 39, 49, 60, 61, 75, 87, 117, 131, 152, 184, 220, 230, 235, 241, 243, 251], "ddp": [7, 11, 16, 53, 54, 61, 121, 122, 123, 124, 132, 168, 215, 258], "master_addr": [7, 11, 18, 53, 55, 123, 133, 134, 135, 155, 161, 162, 163, 175, 212, 214, 258], "localhost": [7, 11, 16, 18, 53, 55, 94, 123, 127, 133, 134, 139, 155, 161, 162, 163, 168, 169, 175, 212, 213, 214, 215, 245, 258], "master_port": [7, 11, 18, 53, 55, 123, 133, 134, 135, 155, 161, 162, 163, 175, 212, 214, 258], "29500": [7, 11, 16, 18, 134, 135, 155, 161, 162, 163, 175, 212, 258], "init_process_group": [7, 11, 16, 18, 53, 55, 61, 122, 123, 133, 135, 155, 175, 214, 215, 258], "nccl": [7, 11, 18, 53, 55, 82, 122, 123, 124, 133, 135, 168, 175, 214, 215], "get_total_param": 7, "total_param": 7, "crossentropyloss": [7, 9, 16, 19, 37, 38, 44, 78, 87, 92, 94, 96, 97, 99, 110, 115, 117, 118, 124, 157, 163, 168, 169, 172, 181, 182, 197, 198, 220, 250, 253], "steplr": [7, 110, 115, 117, 122, 123, 129, 157, 178], "togeth": [7, 11, 17, 21, 25, 49, 51, 59, 60, 75, 85, 97, 101, 113, 118, 123, 129, 136, 138, 158, 161, 163, 165, 171, 188, 197, 199, 200, 201, 216, 252, 254], "prevent": [7, 49, 55, 76, 109, 118, 125, 128, 133, 144, 146, 230, 231], "explod": [7, 49, 127], "criterion": [7, 9, 12, 16, 19, 44, 47, 52, 65, 67, 87, 92, 94, 97, 111, 115, 117, 127, 128, 157, 160, 163, 165, 168, 169, 181, 182, 197, 198, 220, 245, 250, 253], "schedul": [7, 11, 14, 82, 87, 115, 117, 122, 123, 129, 133, 144, 157, 159, 160, 168, 176, 178, 238, 247, 251], "lr_schedul": [7, 14, 110, 115, 117, 122, 123, 129, 157, 159, 178, 211], "95": [7, 115, 126, 136, 159, 163, 177, 179, 219], "total_loss": [7, 9, 103, 128, 165, 181], "start_tim": [7, 19, 115, 118, 198, 230, 237], "node": [7, 8, 18, 20, 23, 32, 43, 47, 53, 54, 55, 56, 63, 98, 108, 110, 120, 122, 131, 132, 133, 142, 143, 144, 162, 165, 176, 186, 198, 199, 200, 215, 247, 252], "local_valu": [7, 161, 162], "log_interv": [7, 115, 163], "cur_loss": 7, "elaps": [7, 9, 19, 115, 123, 143, 165, 181, 185], "5d": [7, 37, 38, 44, 87, 92, 115, 250], "02": [7, 52, 144, 149, 163, 219], "ms": [7, 17, 19, 119, 144, 158, 176, 177, 184, 201], "ppl": 7, "get_last_lr": 7, "eval_model": 7, "data_sourc": [7, 9, 181], "output_flat": [7, 9, 181], "best_val_loss": [7, 122], "inf": [7, 118, 122, 191, 193, 195], "best_model": 7, "epoch_start_tim": [7, 115], "val_loss": [7, 87, 104, 118, 122], "89": [7, 144, 163, 176], "test_loss": [7, 37, 38, 123, 129, 166], "mp": [7, 11, 15, 16, 33, 38, 53, 55, 121, 122, 123, 133, 134, 135, 161, 162, 163, 212, 214, 258], "__name__": [7, 11, 12, 16, 51, 52, 53, 55, 78, 87, 122, 123, 133, 134, 135, 137, 139, 147, 148, 161, 162, 163, 185, 187, 194, 212, 213, 214, 226, 258], "__main__": [7, 11, 16, 51, 53, 55, 87, 122, 123, 133, 134, 135, 139, 148, 161, 162, 163, 187, 194, 212, 213, 214, 226, 231, 258], "arg": [7, 16, 18, 19, 21, 51, 53, 55, 73, 101, 110, 112, 122, 123, 125, 133, 134, 135, 137, 142, 143, 147, 148, 149, 156, 157, 160, 161, 162, 163, 164, 171, 172, 173, 174, 184, 185, 186, 193, 194, 198, 200, 210, 212, 214, 216, 220, 244, 258, 266, 275], "nproc": [7, 11, 16, 53, 55, 123, 133, 134, 161, 163, 212, 214, 258], "join": [7, 9, 10, 16, 18, 34, 44, 48, 49, 50, 51, 53, 60, 61, 92, 96, 117, 118, 120, 123, 125, 127, 128, 133, 134, 135, 137, 157, 159, 161, 162, 163, 165, 178, 181, 185, 212, 214, 231, 246, 258], "00": [7, 92, 109, 144, 163, 171, 184, 187, 219], "778": 7, "97": [7, 144, 163, 219], "43": [7, 119, 149, 219, 231], "31": [7, 122, 144, 145, 200, 219, 231, 238, 246], "6432469059895903232": 7, "90": [7, 127, 137, 163, 165, 191, 219], "44": [7, 17, 144, 163, 201], "21245447128217366528": 7, "699": 7, "21176949187407757312": 7, "87": [7, 24, 109, 163, 219, 231], "62": [7, 115, 163, 201], "23975861229620961280": 7, "698": 7, "86": [7, 17, 144, 158, 163, 201, 219, 231], "41": [7, 17, 123, 158, 176, 231, 238], "1193312915629888256": 7, "40": [7, 113, 123, 146, 147, 149, 156, 163, 165, 176, 186, 192, 195, 201, 219, 231], "69": [7, 90, 173, 185, 231], "471605759847546240": 7, "34": [7, 109, 158, 219, 223, 231, 238, 246], "42812308420836458496": 7, "33": [7, 145, 158, 163, 176, 177, 187, 219, 231], "68": [7, 17, 51, 127, 137, 144, 177, 231], "68839569686012223488": 7, "08": [7, 122, 144, 163, 219, 221, 231], "80": [7, 87, 115, 126, 147, 163, 165, 191, 234], "22": [7, 17, 144, 147, 163, 204, 219, 231], "09": [7, 17, 49, 144, 163, 176, 201, 219], "75": [7, 22, 23, 97, 115, 117, 123, 149, 157, 234], "768": [7, 137, 147, 185, 201], "51": [7, 119, 127, 147, 149, 163, 176, 219], "36": [7, 17, 115, 158, 219], "6063529544668166": 7, "769": 7, "23": [7, 17, 95, 144, 163, 176, 184, 219, 231, 238, 246, 263, 272], "17651211266236086": 7, "3798441739584": 7, "56": [7, 19, 147, 158, 176, 201, 231, 238], "29": [7, 137, 158, 163, 208, 231], "5203636967575": 7, "47": [7, 17, 87, 127, 147, 219, 231, 238], "2212498693571": 7, "05": [7, 14, 16, 20, 21, 73, 115, 122, 134, 160, 163, 179, 218, 219], "2015144761281": 7, "13121380184": 7, "92": [7, 17, 201, 219, 231], "14653799192": 7, "39": [7, 123, 127, 163, 219, 231], "24": [7, 17, 19, 113, 144, 158, 173, 184, 191, 201, 219, 231], "98": [7, 51, 118, 144, 163, 187, 219], "361681": 7, "287876": 7, "61": [7, 19, 109, 147, 201, 219], "164364": 7, "60": [7, 34, 105, 110, 117, 122, 127, 128, 147, 149, 157, 158, 163, 165, 169, 191, 219, 238], "159095": 7, "697": [7, 219], "54261": 7, "91": [7, 17, 163, 201, 219, 231], "72": [7, 17, 158, 231], "53372": 7, "49": [7, 17, 147, 149, 163, 185, 201, 231], "78": [7, 17, 201, 231], "47948": 7, "79": [7, 17, 144, 197, 201, 231, 238], "48664": 7, "42": [7, 23, 73, 97, 127, 137, 163, 176, 185, 208, 231], "96": [7, 19, 144, 147, 163, 219], "38": [7, 109, 163, 177, 219, 246], "46": [7, 17, 137, 144, 147, 158, 176], "ddp_pipelin": 7, "respons": [8, 11, 16, 18, 49, 60, 108, 121, 124, 129, 133, 135, 139, 161, 162, 165, 172, 177, 208, 210, 212, 213, 229, 257, 262, 271], "nontrivi": [8, 209], "cut": [8, 113, 119, 262, 271], "concern": [8, 21, 61, 99, 189, 197, 216, 221], "rule": [8, 22, 43, 47, 60, 102, 103, 125, 129, 138, 145, 153, 154, 159, 160, 182, 230], "vmap": [8, 121, 141, 145, 150, 154, 196], "statement": [8, 21, 25, 43, 45, 60, 65, 98, 111, 165, 173, 174, 183, 230, 232, 262, 271], "convers": [8, 49, 95, 112, 147, 165, 177, 189, 194, 216, 223, 228, 234, 244], "basic": [8, 11, 15, 16, 23, 24, 49, 54, 56, 57, 61, 75, 86, 97, 100, 103, 105, 107, 108, 113, 115, 121, 124, 127, 129, 144, 159, 164, 190, 193, 214, 231, 245, 251, 252, 263, 272], "registr": [8, 10, 15, 22, 23, 208, 220, 221, 226], "highest": [8, 19, 44, 49, 58, 59, 60, 128, 160, 171], "transfer": [8, 22, 44, 58, 59, 79, 80, 97, 98, 112, 117, 121, 135, 158, 162, 168, 178, 206, 228, 232, 252, 261, 270], "redispatch": 8, "happen": [8, 21, 23, 25, 32, 43, 52, 97, 99, 105, 122, 124, 130, 135, 141, 156, 161, 168, 169, 184, 185, 197, 199, 208, 209, 231, 237, 247], "unlik": [8, 12, 17, 60, 97, 125, 141, 142, 147, 157, 165, 201], "style": [8, 60, 113, 115, 124, 178, 208, 214, 234, 260, 262, 263, 269, 271, 272], "abid": [8, 52], "myop": 8, "myadd": [8, 10], "myadd_cpu": 8, "self_": 8, "other_": 8, "torch_internal_assert": 8, "devicetyp": [8, 15], "self_ptr": 8, "data_ptr": [8, 23, 59, 186, 208], "other_ptr": 8, "result_ptr": 8, "torch_library_impl": [8, 10, 15], "impl": [8, 10, 15, 108, 173, 174, 246], "myadd_cuda": 8, "boundari": [8, 61, 134, 159, 168], "myops_cpu": 8, "myops_cuda": 8, "xla": [8, 10, 15, 244], "torch_xla": [8, 10], "useabl": 8, "behav": [8, 12, 20, 60, 80, 147, 153, 161, 198, 226, 264, 273], "autogradnotimplementedfallback": 8, "notimpl": 8, "preserv": [8, 17, 22, 25, 49, 107, 121, 134, 147, 156, 177, 183, 190, 201, 203, 223, 234, 244, 249, 262, 271], "require_grad": 8, "ness": 8, "pin": [8, 125, 247, 261, 270], "lost": [8, 17, 99, 147, 201], "mutat": [8, 10, 138, 154, 173, 174, 205, 211], "alias": [8, 10], "adinplaceorview": 8, "bookkeep": [8, 231], "autogradnotimplementedinplaceorviewfallback": 8, "logi": 8, "properli": [8, 9, 10, 14, 23, 50, 55, 97, 118, 130, 133, 135, 147, 149, 152, 153, 159, 161, 162, 163, 165, 176, 188, 189, 191, 194, 202, 209, 224, 225, 234, 244], "annot": [8, 10, 18, 21, 22, 23, 51, 60, 99, 108, 118, 137, 171, 172, 177, 216, 231], "guess": [8, 43, 49, 52, 113, 127, 165], "twist": [8, 113], "constitut": [8, 14], "hood": [8, 14, 19, 49, 52, 54, 56, 124, 125, 145, 146, 163, 192, 212, 216], "singleton": [8, 162], "findschemaorthrow": 8, "decltyp": [8, 144], "qualifi": [8, 22, 108, 214], "overload": [8, 22, 108], "typic": [8, 11, 14, 19, 21, 43, 47, 48, 54, 55, 58, 59, 82, 98, 99, 103, 115, 119, 124, 126, 129, 131, 144, 152, 159, 162, 171, 172, 173, 174, 176, 177, 200, 213, 219, 220, 221, 228, 230, 232, 234, 247], "cast": [8, 13, 17, 18, 108, 109, 122, 201, 230], "lookup": [8, 16, 103, 115, 163, 175], "typo": 8, "myaddfunct": [8, 10], "autononvariabletypemod": [8, 10, 59, 208], "myadd_autograd": [8, 10], "except": [8, 11, 17, 23, 43, 44, 48, 49, 52, 58, 59, 60, 61, 76, 79, 80, 87, 95, 99, 102, 104, 117, 125, 127, 134, 137, 138, 139, 141, 142, 145, 147, 149, 154, 155, 157, 164, 165, 172, 173, 174, 184, 190, 193, 196, 200, 201, 202, 203, 205, 206, 220, 222, 239, 246], "raii": 8, "guard": [8, 59, 133, 173, 199, 208, 211], "infinit": 8, "overflow": [8, 49, 184, 230, 234], "send": [8, 10, 11, 12, 44, 45, 61, 73, 78, 87, 115, 135, 139, 146, 155, 157, 161, 162, 163, 173, 174, 212], "consider": [8, 10, 20, 123, 173, 174], "handler": [8, 171, 177, 244], "autogradcpu": 8, "autogradcuda": 8, "pythondispatch": 8, "_python_dispatch": 8, "isn": [8, 98, 141, 142, 158, 169, 191, 231, 260, 262, 269, 271], "glorifi": 8, "add_cpu": 8, "add_cuda": 8, "unsupport": [8, 172, 173, 174, 177, 244], "decentr": 8, "importantli": [8, 19, 23, 42, 130, 152, 189, 231], "parti": [8, 22, 23, 155], "aspect": [8, 15, 51, 73, 135, 178, 231], "patch": [8, 10, 160], "dispatchkei": [8, 10], "varieti": [8, 24, 49, 112, 128, 192], "fallback": [8, 10, 15, 185], "behavior": [8, 10, 11, 12, 14, 22, 25, 49, 51, 102, 108, 136, 143, 144, 147, 149, 152, 173, 174, 190, 191, 197, 198, 202, 223, 237, 247], "opt": [8, 16, 22, 104, 110, 126, 134, 147, 152, 155, 162, 163, 168, 172, 184, 202, 210, 211, 230, 237], "amp": [8, 15, 61, 147, 207, 220, 251, 253], "incom": [8, 168, 213], "float16": [8, 15, 122, 137, 147, 164, 207, 230], "float32": [8, 14, 23, 85, 122, 144, 147, 158, 160, 163, 172, 186, 189, 199, 200, 230, 244, 247], "matmul": [8, 17, 23, 32, 40, 48, 95, 124, 144, 184, 193, 201, 205, 207, 208, 219, 230, 247], "impair": 8, "converg": [8, 49, 52, 64, 97, 111, 112, 124, 135, 153, 160, 165, 211, 230, 234], "hypothet": 8, "autocast_mod": 8, "mymatmul_autocast": 8, "excludedispatchkeyguard": 8, "no_autocast": 8, "mymatmul": 8, "cached_cast": 8, "khalf": 8, "elig": 8, "polici": [8, 15, 121, 123, 146, 160, 161, 163], "mixtur": 8, "meanwhil": [8, 125, 144, 190, 220], "float64": [8, 95], "unaffect": [8, 97], "forc": [8, 14, 17, 23, 49, 60, 127, 165, 172, 189, 191, 201, 230, 247, 260, 269], "fallthrough": 8, "occur": [8, 11, 19, 23, 25, 53, 75, 78, 82, 97, 116, 144, 147, 161, 162, 168, 171, 173, 174, 177, 184, 185], "fall": [8, 15, 153, 160], "aren": [8, 130, 136, 191, 247], "dri": [8, 168], "reduct": [8, 9, 58, 59, 65, 67, 68, 69, 111, 119, 122, 123, 125, 129, 137, 152, 155, 168, 171, 181, 189, 191, 196, 223, 230, 234], "gemm": [8, 144, 176, 177, 199, 219], "unless": [8, 20, 48, 99, 129, 137, 159, 182, 184, 185, 205, 237], "categori": [8, 10, 19, 49, 73, 82, 117, 127, 128, 165, 168, 173, 174, 182, 189, 190, 191, 192, 197, 198, 208], "promote_typ": 8, "widest": 8, "safest": 8, "my_multiple_input_op_autocast": 8, "t0": [8, 122, 164, 184, 190, 210, 231], "t1": [8, 40, 48, 190, 231, 244], "optimist": 8, "exec_typ": 8, "my_multiple_input_op": 8, "myadd_autocast": 8, "gymnast": 8, "invoc": [8, 25, 143, 161, 177, 226], "stabil": [8, 97, 160, 257], "41478": 8, "jame": [9, 25, 113, 143], "reed": [9, 25, 143], "seth": [9, 19, 36], "weidman": [9, 19], "io": [9, 34, 49, 51, 58, 60, 94, 119, 121, 127, 128, 139, 148, 161, 164, 165, 171, 178, 181, 196, 208, 213, 227, 228, 229, 251, 252], "lstmmodel": [9, 181, 195], "drop": [9, 23, 50, 105, 131, 152, 163, 176, 181, 184, 219, 224, 225, 260, 269], "emb": [9, 23, 93, 98, 102, 103, 136, 163, 181, 195, 263, 272], "init_hidden": [9, 98, 181, 195], "new_zero": [9, 195], "corpu": [9, 49, 50, 60, 137, 181, 193], "preprocess": [9, 20, 42, 51, 58, 59, 60, 97, 104, 113, 116, 127, 158, 165, 171, 187, 204, 234], "dictionari": [9, 14, 49, 58, 59, 60, 82, 103, 105, 112, 127, 128, 139, 152, 154, 159, 161, 162, 165, 171, 181, 185, 195, 237], "word2idx": [9, 181], "idx2word": [9, 181], "add_word": [9, 181], "__len__": [9, 45, 51, 104, 135, 160, 178, 181], "train": [9, 10, 12, 16, 17, 18, 20, 23, 32, 34, 37, 38, 41, 42, 43, 46, 47, 51, 54, 56, 57, 58, 59, 60, 63, 64, 65, 67, 68, 69, 73, 75, 79, 82, 85, 91, 92, 94, 96, 97, 98, 100, 102, 103, 104, 105, 111, 113, 116, 118, 119, 121, 123, 126, 129, 133, 137, 142, 146, 147, 148, 149, 150, 153, 154, 155, 158, 161, 162, 163, 164, 168, 171, 172, 175, 176, 178, 183, 185, 187, 191, 194, 196, 200, 201, 207, 210, 211, 213, 214, 215, 216, 224, 225, 227, 230, 234, 241, 243, 245, 250, 251, 252, 256, 257, 258], "utf8": [9, 181], "eo": [9, 49, 60, 113, 116, 118, 128, 165, 181], "idss": [9, 181], "int64": [9, 14, 60, 85, 95, 115, 144, 175, 178, 181, 192], "model_data_filepath": [9, 181], "512": [9, 12, 18, 33, 37, 38, 43, 75, 97, 113, 118, 122, 134, 144, 145, 146, 164, 178, 181, 193, 195, 201, 207, 220, 230, 231, 238], "word_language_model_quant": [9, 181], "map_loc": [9, 20, 49, 60, 73, 112, 133, 171, 181, 230, 237, 240], "input_": [9, 195], "randint": [9, 16, 34, 51, 52, 65, 111, 127, 128, 137, 138, 144, 146, 147, 154, 164, 172, 185, 190, 195, 220], "temperatur": [9, 97, 115], "num_word": [9, 49, 60], "outf": 9, "word_weight": 9, "div": [9, 12, 144, 189, 191, 192, 197], "word_idx": 9, "multinomi": 9, "utf": [9, 49, 111, 127, 128, 137, 165, 208, 262, 263, 271, 272], "19": [9, 12, 17, 23, 60, 95, 127, 144, 160, 174, 184, 186, 201, 219, 238, 263, 266, 272, 275], "all_output": 9, "gpt": [9, 54, 123, 131, 132], "almost": [9, 12, 19, 80, 102, 103, 123, 124, 136, 158, 176, 184], "repackage_hidden": [9, 181], "isinst": [9, 12, 14, 17, 19, 49, 51, 73, 125, 134, 142, 146, 147, 156, 181, 182, 185, 186, 197, 198, 200, 201, 244], "model_": [9, 96, 181], "quantize_dynam": [9, 119, 137, 195, 228, 234], "int8": [9, 19, 95, 137, 158, 177, 184, 185, 197, 199, 200, 207, 221, 223, 228, 234], "quantized_model": [9, 19, 119, 137, 181, 182, 185, 197, 198], "qint8": [9, 119, 137, 179, 195, 228, 234], "print_size_of_model": [9, 19, 137, 181, 182, 185, 197, 198, 234], "mb": [9, 19, 109, 123, 137, 175, 181, 182, 185, 197, 198, 228, 238, 258], "getsiz": [9, 19, 137, 181, 182, 185, 197, 198, 228, 234], "set_num_thread": [9, 137, 158, 181, 185], "time_model_evalu": [9, 137, 181, 185], "nelaps": [9, 181], "1f": [9, 37, 38, 44, 49, 137, 169, 181, 185, 231], "macbook": [9, 19, 137, 165], "pro": [9, 19, 137], "welcom": [9, 19, 137, 185, 187, 188, 195, 204, 222], "dynamic_quantization_tutori": [9, 234], "outsid": [10, 14, 15, 23, 45, 60, 121, 124, 129, 168, 171, 173, 189, 244, 262, 271], "repo": [10, 15, 18, 19, 54, 58, 59, 82, 119, 121, 127, 131, 135, 137, 161, 162, 184, 194, 221], "solut": [10, 17, 52, 60, 112, 121, 134, 144, 149, 154, 171, 172, 176, 191, 193, 201, 215, 231, 247], "pr": [10, 169, 220], "propos": [10, 24, 124, 136, 153, 189, 191], "request": [10, 25, 43, 87, 104, 119, 122, 139, 153, 158, 161, 162, 166, 173, 174, 176, 177, 186, 191, 192, 212, 213, 216, 229, 257], "hardwar": [10, 15, 17, 20, 48, 50, 60, 97, 105, 135, 138, 145, 147, 149, 154, 155, 156, 177, 184, 201, 207, 219, 220, 221, 223, 232, 234, 247, 253, 254], "googl": [10, 17, 21, 24, 25, 42, 49, 52, 75, 104, 119, 121, 136, 137, 159, 160, 168, 204, 208, 260, 269], "tpu": [10, 148, 155], "chip": [10, 177, 188], "layout": [10, 17, 124, 141, 177, 189, 192, 193, 196, 201, 215, 244, 247], "spars": [10, 16, 99, 103, 115, 121, 136, 156, 191, 196, 244], "quantiz": [10, 58, 59, 97, 117, 121, 152, 158, 177, 194, 196, 207, 218, 227, 235, 244, 251, 252], "enforc": [10, 14, 22, 60, 98, 126, 149, 153, 173, 174, 189, 190], "mainli": [10, 14, 15, 18, 137, 144, 168, 172, 199, 200, 221], "haven": [10, 23, 87, 98, 102, 103, 138, 143, 154, 216], "addtion": 10, "identifi": [10, 17, 53, 55, 73, 82, 83, 109, 113, 132, 146, 147, 156, 162, 177, 178, 182, 185, 192, 200, 201, 247], "carri": [10, 14, 49, 52, 97, 101, 131, 136, 147, 165, 237], "privateuse1": [10, 121], "autogradprivateuse1": [10, 15], "privateuse2": [10, 15], "autogradprivateuse2": [10, 15], "privateuse3": [10, 15], "autogradprivateuse3": [10, 15], "tensorimpl": [10, 15, 231, 246], "storag": [10, 15, 20, 101, 112, 125, 136, 138, 146, 147, 159, 168, 189, 191, 192, 202, 209, 214, 223, 230, 237, 244], "dispatchkeyset": [10, 15], "ks": 10, "caffe2": [10, 85, 187], "typemeta": 10, "data_typ": [10, 101], "opaquetensorimpl": 10, "tweak": [10, 49], "overrid": [10, 15, 40, 48, 51, 59, 68, 99, 108, 111, 143, 147, 149, 155, 171, 185, 188, 208], "vulkan": [10, 196, 252], "submit": [10, 220], "dispath": 10, "registrationdeclar": 10, "ab": [10, 13, 85, 92, 95, 172, 182, 193, 207, 234, 238], "schema": [10, 20, 23, 208], "abs_": 10, "abs_out": 10, "absolute_": 10, "absolute_out": 10, "angl": [10, 14, 95, 103], "angle_out": 10, "sgn": 10, "uniqu": [10, 17, 49, 53, 55, 95, 98, 99, 100, 102, 103, 116, 122, 132, 162, 165, 178, 189, 201, 234, 257], "boolean": [10, 73, 136, 173, 174, 252], "impli": [10, 97, 102, 137, 237, 254], "schema_my_op1": 10, "my_op1": 10, "schema_my_op2": 10, "my_op2": 10, "schema_my_op2_backward": 10, "my_op2_backward": 10, "zoom": [10, 82, 126, 168, 171], "1600": [10, 231, 246], "grow": [10, 49, 61, 99, 125, 131, 175], "unrealist": 10, "classifi": [10, 12, 19, 24, 43, 46, 47, 52, 57, 73, 82, 87, 97, 112, 117, 127, 128, 137, 146, 178, 194, 229, 251, 263, 272], "metadata": [10, 17, 22, 94, 141, 159, 169, 173, 174, 201, 237, 260, 269], "accompani": 10, "comment": [10, 135, 152, 165, 188, 189, 205, 220, 221, 222, 232, 262, 271], "sacrif": [10, 156], "max_pool2d": [10, 47, 73, 92, 93, 105, 123, 129, 154, 156, 162, 166, 203, 206, 221, 233, 238], "formula": [10, 97, 141, 159], "mathemat": [10, 13, 43, 48, 64, 101, 135, 159], "worri": [10, 52, 99, 129, 130, 133, 143, 152, 163, 215], "my_op": [10, 23, 208], "op_backward": 10, "proper": [10, 32, 122, 124, 133, 147, 149, 159, 163, 171, 176, 189, 247], "rare": [10, 15, 49, 117, 165, 247], "assumpt": [10, 14, 60, 73, 97, 103, 150], "myadd_schema": 10, "my_add": 10, "setuptool": [10, 155, 168], "_xlac": 10, "torch_xla_sourc": 10, "extra_compile_arg": 10, "library_dir": 10, "extra_link_arg": 10, "make_relative_rpath": 10, "seamlessli": [10, 14, 53, 78, 124, 199, 231], "nm": [10, 150, 220], "torchvsion": 10, "adhoc": 10, "unbox": 10, "potenti": [10, 14, 25, 73, 98, 122, 162, 178, 196, 197, 199, 216, 254, 265, 274], "wiki": [10, 33, 141, 147, 153, 181], "suit": [10, 109, 159, 182, 196, 197, 199, 219, 234], "ship": [10, 44, 61, 92, 113, 250], "guarante": [10, 97, 132, 135, 147, 156, 162, 163, 174, 176, 190], "delet": [10, 17, 83, 125, 129, 133, 152, 163, 171, 184, 188, 203, 252], "old": [10, 19, 103, 112, 113, 119, 156, 168, 181, 182, 193, 223, 228], "until": [10, 16, 49, 60, 82, 113, 122, 128, 134, 135, 136, 144, 152, 159, 161, 162, 163, 168, 189, 212, 231], "interrupt": [10, 53, 87, 165], "quarterli": 10, "cadenc": 10, "announc": [10, 115], "slack": [10, 44, 79], "Not": [10, 16, 58, 59, 113, 133, 158, 173, 234, 258], "search": [10, 18, 49, 75, 113, 121, 126, 144, 156, 173, 174, 184, 204, 260, 269], "instantiate_device_type_test": 10, "testtorchdevicetyp": 10, "testviewop": 10, "testtensordeviceop": 10, "testtypepromot": 10, "etc": [10, 44, 45, 47, 49, 51, 61, 69, 79, 98, 99, 100, 101, 102, 110, 112, 124, 156, 159, 160, 165, 173, 174, 176, 177, 181, 182, 191, 200, 212, 216, 219, 220, 231, 247, 260, 262, 269, 271], "__reduce_ex__": 10, "monkei": 10, "direct": [10, 23, 25, 43, 47, 52, 73, 103, 113, 126, 135, 137, 141, 146, 150, 153, 165, 184, 192, 213, 216, 251, 266, 275], "suppos": [10, 12, 22, 97, 98, 99, 103, 123, 139, 178, 179, 216, 220], "vice": [10, 23, 48, 80, 228], "versa": [10, 23, 48, 80, 228], "Such": [10, 11, 234], "seamless": [10, 78, 199], "coverag": [10, 141, 145, 147, 193, 197, 199, 230], "comprehens": [10, 21, 24, 48, 79, 108, 144, 199], "bahavior": 10, "refactor": [10, 112, 131], "codegen": [10, 144], "dev": [10, 99, 104, 137, 158, 168, 171, 185, 196, 208, 226, 230, 257], "andrew": [11, 179, 198], "gu": 11, "shard": [11, 61, 120, 121, 131, 154, 175, 212, 214, 215, 251], "saw": [11, 14, 21, 23, 49, 59, 60, 99, 101, 141, 142, 145, 146], "skeleton": [11, 14, 244], "implicitli": [11, 43, 49, 123, 130, 164, 200, 226], "particip": [11, 61, 113, 132, 134, 162, 230, 247], "hang": [11, 55, 61, 113, 128], "persist": [11, 22, 230, 262, 271], "earli": [11, 23, 52, 87, 113, 126, 133, 135, 179, 191], "shadow": [11, 195], "hook": [11, 107, 124, 133, 156, 239], "num_input": 11, "device_id": [11, 16, 55, 79, 112, 122, 133, 240, 258], "arbitrarili": [11, 49, 97, 239], "prior": [11, 15, 19, 42, 50, 52, 97, 115, 133, 146, 156, 169, 176, 177, 197, 212, 214], "notabl": [11, 19, 87, 194, 244], "addition": [11, 12, 82, 115, 125, 126, 133, 176, 177, 178, 199, 214], "divide_by_initial_world_s": 11, "world": [11, 14, 18, 23, 42, 54, 58, 59, 99, 103, 115, 124, 126, 135, 139, 143, 146, 149, 155, 160, 161, 162, 193, 214, 215, 219, 262, 271], "nonetheless": [11, 97, 262, 271], "mind": [11, 49, 52, 85, 97, 108, 132, 150, 176, 218, 257, 262, 271], "preliminari": [11, 137], "delv": [11, 144, 254], "insight": [11, 73, 82, 90, 135, 164, 231], "join_hook": 11, "kwarg": [11, 16, 21, 112, 125, 134, 143, 147, 149, 159, 162, 164, 173, 174, 184, 193, 202, 210, 216, 244], "join_devic": 11, "join_process_group": 11, "processgroup": [11, 16, 18, 61, 120, 121, 124, 163, 215, 247], "throw_on_early_termin": 11, "explain": [11, 12, 17, 20, 23, 43, 47, 52, 61, 73, 99, 124, 144, 149, 172, 176, 186, 199, 201, 234, 257], "joinconfig": 11, "_join_config": 11, "main_hook": 11, "repeatedli": [11, 159, 163], "post_hook": 11, "is_last_join": 11, "broadcast": [11, 61, 68, 95, 98, 111, 133, 135, 155, 258], "vacuou": 11, "contextlib": [11, 171], "nullcontext": 11, "conform": [11, 171], "interleav": 11, "syncbatchnorm": [11, 55], "__exit__": 11, "heartbeat": 11, "notify_join_context": 11, "serializ": 11, "fulli": [11, 12, 14, 15, 17, 20, 21, 22, 47, 78, 82, 87, 108, 110, 117, 120, 121, 126, 131, 147, 150, 157, 160, 162, 164, 168, 176, 182, 191, 194, 197, 201, 207, 214, 220, 257], "proceed": [11, 47, 97, 108], "overlap": [11, 21, 56, 61, 122, 123, 127, 131, 133, 149, 168, 171, 176, 247], "moreov": [11, 61, 189, 220, 231], "permit": [11, 230, 262, 271], "customiz": [11, 136, 195], "idea": [11, 23, 24, 60, 73, 85, 97, 99, 100, 101, 103, 124, 129, 136, 144, 149, 153, 160, 161, 163, 165, 176, 189, 205, 212, 216, 226, 231, 234, 247, 258, 262, 271], "counterjoinhook": 11, "sync_max_count": 11, "all_reduc": [11, 61, 122, 123, 135, 155], "get_rank": [11, 133, 135], "process_group": [11, 215], "common_rank": 11, "find_common_rank": 11, "max_count": 11, "__call__": [11, 51, 68, 111, 147, 156], "meth": [11, 14, 262, 271], "to_consid": 11, "reduceop": [11, 122, 123, 135], "highlight": [11, 49, 60, 85, 90, 94, 114, 120, 122, 164, 168, 172, 212, 220, 221, 254, 262, 271], "alexi": 12, "jacq": 12, "winston": 12, "her": [12, 42, 113, 155], "leon": [12, 113], "gati": 12, "alexand": 12, "ecker": 12, "matthia": 12, "bethg": 12, "artist": 12, "distanc": [12, 63, 64, 67, 68, 69, 97, 111], "d_c": 12, "d_": [12, 96], "indispens": [12, 159], "pil": [12, 20, 41, 51, 58, 59, 90, 117, 119, 139, 146, 158, 171, 178, 204, 213, 229], "pretrain": [12, 20, 24, 42, 43, 58, 59, 73, 75, 103, 113, 117, 119, 121, 137, 139, 157, 158, 165, 171, 176, 177, 181, 182, 185, 187, 188, 194, 195, 197, 198, 199, 204, 206, 213, 220, 221, 222, 223, 256], "vgg19": [12, 147], "vgg19_weight": 12, "throughout": [12, 25, 52, 102, 135, 149, 152, 159, 169, 176, 177, 191, 244], "set_default_devic": [12, 63, 111, 230, 232], "resiz": [12, 19, 20, 47, 51, 52, 75, 90, 117, 119, 136, 139, 146, 157, 168, 182, 197, 198, 213, 220, 229, 253], "unabl": [12, 23, 138, 154, 184, 191], "caff": 12, "picasso": 12, "imsiz": 12, "image_load": 12, "image_nam": [12, 51], "style_img": 12, "content_img": 12, "reconvert": 12, "correctli": [12, 49, 52, 58, 59, 60, 73, 78, 114, 127, 141, 147, 152, 156, 158, 171, 172, 174, 191, 198, 213, 215, 224, 225, 252], "unload": [12, 237], "topilimag": 12, "ion": [12, 14, 51, 117, 157, 160, 166], "titl": [12, 14, 17, 34, 51, 52, 73, 90, 117, 127, 136, 157, 159, 160, 165, 171, 178, 195, 225], "paus": [12, 51, 117, 160, 161, 198], "f_": [12, 159], "xl": [12, 219], "w_": [12, 103], "cl": [12, 75, 126, 137, 183, 244], "squar": [12, 47, 51, 63, 64, 67, 68, 69, 71, 97, 111, 129, 130, 146, 153, 156, 160, 164, 179], "contentloss": 12, "throw": [12, 23, 61, 118, 139, 161, 173, 174], "mse_loss": [12, 97, 230], "recomput": [12, 97, 129, 131, 153, 247], "act": [12, 22, 43, 49, 113, 126, 136, 156, 160, 162], "gram": 12, "g_": [12, 262, 271], "hat": [12, 102, 113], "counteract": 12, "caus": [12, 15, 21, 22, 61, 73, 82, 119, 125, 144, 158, 161, 165, 168, 171, 174, 176, 177, 189, 195, 226, 228, 232, 247, 252, 260, 269], "pool": [12, 18, 44, 52, 61, 87, 92, 94, 96, 97, 110, 112, 116, 169, 175, 177, 194, 239, 240, 241, 242, 243, 248, 249, 250], "tend": [12, 17, 97, 184, 201], "gram_matrix": 12, "f_xl": 12, "sl": 12, "styleloss": 12, "target_featur": 12, "vgg": 12, "child": [12, 60, 103, 109, 168, 185, 263, 272], "connect": [12, 47, 59, 87, 103, 110, 117, 124, 135, 141, 143, 150, 156, 157, 158, 160, 176, 200, 208, 215, 218, 223, 262, 271], "cnn": [12, 45, 97, 119, 121, 146, 150, 153, 154, 166, 171, 177, 178, 199, 220, 228, 247], "485": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "456": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "406": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "229": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "225": [12, 19, 51, 58, 59, 90, 97, 109, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "cnn_normalization_mean": 12, "cnn_normalization_std": 12, "height": [12, 43, 47, 58, 59, 78, 95, 146, 148, 152, 171, 177, 178, 226, 262, 271], "width": [12, 19, 43, 44, 47, 58, 59, 78, 95, 126, 146, 148, 149, 150, 152, 171, 177, 178, 262, 271], "img": [12, 20, 34, 44, 51, 90, 92, 94, 96, 117, 119, 121, 139, 157, 169, 171, 178, 229, 257], "maxpool2d": [12, 44, 47, 78, 87, 92, 93, 94, 96, 97, 112, 134, 143, 166, 169, 239, 240, 241, 242, 243, 248, 249, 250], "align": [12, 149, 164, 165, 178, 190, 195, 226, 262, 271], "depth": [12, 43, 52, 56, 61, 101, 125, 144, 199, 210, 234, 247, 260, 269], "immedi": [12, 18, 21, 48, 52, 102, 134, 135, 152, 161, 162, 165, 168, 184], "content_layers_default": 12, "conv_4": 12, "style_layers_default": 12, "conv_1": 12, "conv_2": 12, "conv_3": 12, "conv_5": 12, "get_style_model_and_loss": 12, "normalization_mean": 12, "normalization_std": 12, "content_lay": 12, "style_lay": 12, "content_loss": 12, "style_loss": 12, "conv": [12, 19, 52, 90, 110, 129, 142, 143, 147, 156, 157, 162, 177, 181, 182, 200, 218, 223, 226, 238, 239, 247, 252], "children": [12, 168], "conv_": 12, "relu_": [12, 129, 200, 206], "plai": [12, 44, 49, 52, 79, 97, 99, 115, 121, 159, 177, 199], "pool_": 12, "bn_": 12, "runtimeerror": [12, 22, 118, 128, 155, 158, 164, 173, 174, 203], "unrecogn": 12, "__class__": [12, 52, 78, 147, 244], "add_modul": 12, "content_loss_": 12, "style_loss_": 12, "input_img": [12, 90, 229], "bfg": 12, "get_input_optim": 12, "closur": [12, 173, 174, 216], "reevalu": 12, "exce": [12, 73, 129, 175, 228], "run_style_transf": 12, "num_step": [12, 161], "style_weight": 12, "1000000": 12, "content_weight": 12, "clamp_": 12, "style_scor": 12, "content_scor": 12, "sphinx_gallery_thumbnail_numb": [12, 127], "ioff": [12, 51, 117, 157, 160, 166], "neural_style_tutori": 12, "paszk": [13, 135, 160], "dziedzic": 13, "shall": [13, 47, 52, 103], "learnabl": [13, 47, 67, 68, 69, 111, 112, 121, 202], "badfftfunct": 13, "fft": [13, 172], "rfft2": 13, "irfft2": 13, "numpy_input": 13, "numpy_go": 13, "incorrect_fft": 13, "literatur": [13, 160], "confusingli": 13, "correl": [13, 82, 144], "flip": [13, 21, 145], "wrt": [13, 129, 130], "np": [13, 14, 17, 19, 20, 40, 44, 48, 51, 52, 60, 71, 73, 75, 80, 90, 92, 94, 95, 96, 98, 104, 109, 111, 117, 119, 137, 146, 149, 157, 158, 163, 165, 166, 169, 171, 172, 182, 185, 190, 193, 195, 197, 198, 201, 204, 229, 246], "convolve2d": 13, "correlate2d": 13, "scipyconv2dfunct": 13, "as_tensor": [13, 75, 191], "grad_filt": 13, "from_numpi": [13, 40, 48, 51, 80, 95, 109, 161, 163, 172], "scipyconv2d": 13, "filter_width": 13, "filter_height": 13, "gradcheck": [13, 129, 130, 141, 247], "moduleconv": 13, "atol": [13, 17, 20, 138, 150, 154, 201], "numpy_extensions_tutori": 13, "freeli": 14, "inspir": [14, 60, 116, 135, 145, 150, 164, 205, 234], "v1": [14, 17, 61, 95, 134, 136, 160, 161, 163, 181, 192, 201, 212, 231, 257], "openai": [14, 121, 146, 159, 160, 161, 163], "farama": [14, 159], "gymnasium": [14, 159, 160], "encount": [14, 49, 60, 110, 122, 144, 172, 247, 252], "undertaken": 14, "broader": [14, 25], "challeng": [14, 101, 102, 123, 124, 135, 142, 153, 160, 171, 214, 215, 231, 257], "wider": [14, 145], "acquaint": 14, "set_se": [14, 137, 185], "avenu": [14, 85], "backpropag": [14, 37, 38, 43, 47, 49, 73, 98, 99, 100, 102, 103, 125, 146], "defaultdict": [14, 17, 75, 159, 201], "boundedtensorspec": 14, "unboundedcontinuoustensorspec": 14, "unsqueezetransform": 14, "_apply_to_composit": 14, "check_env_spec": [14, 159], "step_mdp": [14, 136], "default_x": 14, "pi": [14, 63, 64, 65, 67, 68, 69, 71, 72, 89, 95, 111, 121, 160, 262, 271], "default_i": 14, "_set_se": 14, "torqu": 14, "upward": 14, "angular": 14, "stand": [14, 85, 113, 146, 192, 262, 271], "equat": [14, 52, 137, 159, 160, 239, 262, 271], "motion": [14, 262, 271], "veloc": [14, 160], "theta": [14, 73, 99, 159, 166, 262, 271], "_t": [14, 146], "theta_t": 14, "dt": [14, 146, 262, 271], "rad": 14, "sec": [14, 123, 137, 230], "gravit": 14, "mass": 14, "accord": [14, 15, 24, 112, 115, 119, 144, 146, 156, 160, 164, 171, 192, 202, 207], "theta_": [14, 146], "deleg": [14, 21, 121, 143, 187, 197], "privat": [14, 15, 23, 58, 59, 115, 155, 156, 189, 208], "merg": [14, 20, 22, 45, 158, 160, 171, 220], "is_shar": 14, "modif": [14, 15, 19, 20, 21, 87, 98, 129, 135, 156, 159, 162, 166, 169, 173, 174, 182, 194], "new_th": 14, "plu": [14, 98, 99, 115, 128], "new_thdot": 14, "neg": [14, 21, 49, 90, 98, 99, 104, 113, 137, 144, 156, 159, 229, 252], "discourag": [14, 48, 159], "thdot": 14, "g_forc": 14, "clamp": [14, 73, 95, 197, 206], "max_torqu": 14, "angle_norm": 14, "max_spe": 14, "omit": [14, 23, 109, 144, 159, 177, 181, 194, 197, 198, 199, 238, 244], "agent": [14, 61, 121, 160, 161, 163, 166], "mandatori": [14, 141, 159], "is_empti": 14, "gen_param": 14, "high_th": 14, "high_thdot": 14, "low_th": 14, "low_thdot": 14, "simultan": [14, 15, 22, 25, 43, 56, 121, 126, 135, 158, 247], "rng": [14, 135], "domain": [14, 24, 49, 50, 73, 108, 121, 159, 193, 247, 263, 272], "accur": [14, 19, 73, 87, 109, 126, 143, 163, 172, 191], "lazili": [14, 152], "costli": [14, 125, 247], "reward_spec": [14, 159], "done_spec": 14, "input_spec": [14, 159, 173], "state_spec": 14, "output_spec": [14, 173], "trivial": [14, 51, 56, 125, 139, 202, 209, 252], "neither": [14, 149, 179], "shortcut": 14, "tensorspec": [14, 187], "irrelev": [14, 155], "_make_spec": 14, "td_param": 14, "make_composite_from_td": 14, "unbound": 14, "incorpor": [14, 97, 136, 164, 263, 272], "pseudo": [14, 24], "manual_se": [14, 17, 19, 25, 52, 73, 92, 95, 97, 98, 99, 101, 102, 103, 118, 122, 123, 129, 135, 137, 138, 145, 154, 161, 182, 185, 193, 197, 198, 201, 234, 258], "pendulumenv": 14, "expand": [14, 15, 49, 60, 98, 101, 105, 113, 144, 169, 177, 187, 193, 194, 209], "batch_lock": 14, "homonym": 14, "render_mod": [14, 146], "human": [14, 20, 49, 73, 110, 115, 128, 137, 139, 146, 165, 171, 213, 262, 271], "rgb_arrai": 14, "render_fp": 14, "random_": [14, 16, 60, 134, 149, 161], "_make_step": 14, "rand_step": 14, "randomli": [14, 44, 51, 52, 65, 71, 72, 87, 111, 128, 137, 146, 160, 165, 185, 234], "invers": [14, 95, 190, 212], "showcas": [14, 23, 65, 122, 150, 152, 176, 177, 186, 196], "unsqueeze_dim": 14, "summar": [14, 49, 51, 114, 119, 120, 122, 126, 137, 143, 168, 177], "_apply_transform": 14, "_call": 14, "inv": 14, "_inv_apply_transform": 14, "eventu": [14, 129, 136], "out_keys_inv": 14, "subset": [14, 21, 23, 58, 59, 60, 85, 87, 97, 107, 117, 135, 155, 157, 171, 173, 174, 178, 191, 192, 219, 231, 252, 256], "unitari": 14, "raw": [14, 23, 44, 49, 61, 68, 82, 104, 113, 118, 119, 173, 174, 178, 260, 269], "sintransform": 14, "ob": [14, 146, 163, 200], "tensordict_reset": 14, "transform_observation_spec": 14, "costransform": 14, "t_sin": 14, "t_co": 14, "del_kei": 14, "cat_transform": 14, "met": [14, 123], "mdp": 14, "gather": [14, 49, 55, 79, 123, 124, 133, 135, 136, 143, 159, 160, 196, 205, 230], "simple_rollout": 14, "_data": [14, 73], "keep_oth": 14, "unexplor": 14, "abil": [14, 23, 60, 61, 112, 124, 125, 135, 166, 169, 172, 191, 206], "recreat": [14, 43, 175, 208], "auto_reset": 14, "lazylinear": [14, 159], "clip": [14, 20, 49, 73, 117, 157, 159, 160, 166], "20_000": [14, 136], "cosineannealinglr": [14, 110, 159], "init_td": 14, "traj_return": 14, "last_reward": [14, 161, 163], "is_ipython": [14, 160], "inlin": [14, 25, 52, 60, 89, 92, 142, 144, 160, 189, 196, 203, 263, 266, 272, 275], "get_backend": [14, 160], "ipython": [14, 18, 52, 104, 109, 148, 160], "figsiz": [14, 34, 52, 73, 157, 159, 169, 178], "gcf": [14, 160], "clear_output": [14, 160], "scratch": [14, 43, 49, 53, 97, 98, 112, 114, 117, 118, 127, 128, 165, 251, 252], "advanc": [15, 17, 19, 23, 43, 58, 59, 87, 100, 105, 107, 108, 120, 121, 133, 171, 176, 189, 192, 196, 199, 201, 205, 216, 220, 221, 234, 247, 251, 263, 272], "verif": [15, 162], "rapid": [15, 192], "manufactur": [15, 60], "imposs": [15, 98, 152, 205], "began": 15, "enhanc": [15, 115, 139, 166, 199, 207, 216, 228, 262, 271], "rapidli": 15, "wrapper_custom_tensor_add": 15, "torch_fn": 15, "custom_cpu_fallback": 15, "operatorhandl": 15, "hint": [15, 18, 97, 98, 102, 108, 125, 135, 161, 168], "cpu_fallback": 15, "cppfunction": 15, "makefromboxedfunct": 15, "cumtomselufunct": 15, "selu": [15, 110], "wrapper_autogradcumstom__selu": 15, "wrapper_autogradcustom__selu": 15, "autocastprivateuse1": 15, "autocast": [15, 17, 199, 201, 207, 220, 247, 253], "kernel_privateuseon": 15, "makefallthrough": 15, "backendmodul": 15, "_register_device_modul": 15, "backend_nam": 15, "get_amp_supported_dtyp": 15, "is_autocast_en": 15, "get_autocast_dtyp": 15, "set_autocast_dtyp": 15, "set_autocast_en": 15, "generatorimpl": 15, "builder": 15, "register_generator_privateuse1": 15, "customgeneratorimpl": 15, "make_custom_gener": 15, "deviceindex": 15, "device_index": 15, "make_gener": 15, "make_cumstom_gener": 15, "event": [15, 22, 82, 109, 113, 122, 123, 161, 172, 177, 245], "deviceguard": 15, "deviceguardimplinterfac": 15, "c10_register_guard_impl": 15, "customguardimpl": 15, "backend_meta_": 15, "extrameta": 15, "backendmeta": 15, "custombackendmetadata": 15, "unordered_map": 15, "tensorbackendmetaregistri": 15, "for_seri": 15, "for_deseri": 15, "timer": [15, 17, 52, 118, 138, 145, 154, 164, 165, 184, 187, 201, 210, 251], "ascend": [15, 52, 83], "npu": [15, 187, 223], "meet": [15, 50, 52, 202, 221, 231], "usabl": [15, 112, 136, 142], "compli": [15, 60], "habit": [15, 265, 274], "torch_npu": 15, "exclus": [15, 23, 156], "strongli": [15, 136, 153, 262, 271], "rename_privateuse1_backend": 15, "register_privateuse1_backend": 15, "unsupported_dtyp": 15, "quint8": [15, 179], "generate_methods_for_privateuse1_backend": 15, "for_tensor": 15, "for_modul": 15, "for_storag": 15, "is_npu": 15, "yi": [16, 173, 174], "wang": [16, 24, 108, 144, 146], "paradigm": [16, 17, 61, 97, 120, 133, 134, 162, 163, 201], "dens": [16, 17, 146, 189, 193, 201], "fc": [16, 43, 45, 115, 117, 134, 146, 149, 150, 157, 202], "hybrid": [16, 84, 110, 215], "pipedream": 16, "embeddingbag": [16, 18, 115], "respond": [16, 146, 162], "amongst": [16, 190], "themselv": [16, 191, 197], "remotemodul": 16, "kick": [16, 43, 113, 152, 161, 162, 163], "remot": [16, 61, 120, 126, 134, 161, 162, 163, 168, 212, 216], "hybridmodel": 16, "allreduc": [16, 61, 82, 123, 124, 133, 155, 247], "firstli": [16, 108, 144, 160], "tcp": [16, 55, 131, 132, 135, 212], "_run_train": [16, 163], "rpc_async": [16, 134, 161, 163], "shut": [16, 162], "29501": 16, "ps": [16, 61, 161, 162, 163, 195], "remote_emb_modul": 16, "num_embed": [16, 18, 110, 175], "embedding_dim": [16, 18, 93, 98, 102, 103, 110, 175], "fut": [16, 21, 161, 163], "trainer_rank": 16, "trainer_nam": 16, "gloo": [16, 133, 135, 155, 168, 175, 258], "offset": [16, 17, 115, 201, 254], "emb_lookup": 16, "distributedoptim": [16, 134, 162, 163, 212, 216], "remote_paramet": 16, "cannnot": 16, "aggreg": [16, 43, 109, 146, 171, 190, 238], "model_parameter_rref": 16, "get_next_batch": [16, 161, 163], "num_indic": 16, "longtensor": [16, 49, 60, 80, 99, 103, 128, 134, 149, 161, 163, 165], "offsets_tensor": 16, "dist_autograd": [16, 134, 162, 163], "context_id": [16, 134, 162, 163], "tun": 16, "jess": [17, 201], "cai": [17, 201], "seek": [17, 85, 201], "grain": [17, 34, 61, 122, 135, 168, 201, 229, 230, 231], "2n": [17, 201], "degrad": [17, 73, 201, 228], "sparsifi": [17, 121, 156, 201], "answer": [17, 49, 75, 99, 103, 135, 137, 143, 152, 165, 201, 252], "tune": [17, 19, 82, 97, 113, 120, 121, 123, 126, 157, 158, 176, 184, 185, 201, 221, 234, 235, 251], "recov": [17, 61, 122, 123, 133, 147, 198, 201], "nearli": [17, 169, 201, 231], "f1": [17, 137, 172, 185, 201], "vs": [17, 18, 52, 78, 94, 122, 154, 168, 169, 176, 177, 184, 191, 194, 196, 197, 200, 201, 219], "3x": [17, 64, 111, 177, 201, 207, 223, 230, 247], "beginn": [17, 35, 45, 46, 77, 84, 91, 100, 106, 120, 201, 203, 204, 234], "to_sparse_semi_structur": [17, 201], "sparsesemistructuredtensor": [17, 201], "_force_cutlass": [17, 201], "tile": [17, 171, 201, 207], "3072": [17, 97, 147, 201], "2560": [17, 201], "10240": [17, 201], "inference_mod": [17, 129, 171, 201], "dense_output": [17, 201], "dense_t": [17, 201], "stmt": [17, 138, 145, 149, 154, 164, 184, 201, 210, 231, 246], "blocked_autorang": [17, 164, 201, 210, 231], "median": [17, 172, 184, 201, 231, 246], "1e3": [17, 184, 201, 234], "sparse_output": [17, 201], "sparse_t": [17, 201], "a100": [17, 122, 125, 154, 172, 175, 184, 201], "80gb": [17, 201], "870m": [17, 201], "630m": [17, 201], "382x": [17, 201], "allclos": [17, 125, 138, 141, 144, 145, 150, 153, 154, 164, 172, 201, 205, 231], "motiv": [17, 73, 144, 162, 179, 186, 190, 191, 193, 201], "affect": [17, 97, 113, 130, 149, 176, 201, 247], "swap": [17, 51, 99, 110, 124, 137, 159, 182, 184, 185, 193, 195, 198, 201, 244], "compress": [17, 90, 156, 189, 192, 201, 209, 221], "drawback": [17, 103, 201], "2020": [17, 201], "amper": [17, 122, 150, 154, 201, 230], "cutlass": [17, 201], "cusparselt": [17, 201], "milder": [17, 201], "account": [17, 50, 136, 152, 165, 169, 185, 201], "retrain": [17, 201, 227], "sweet": [17, 201], "spot": [17, 127, 201], "2x": [17, 85, 121, 130, 152, 176, 177, 181, 201, 219], "theoret": [17, 52, 189, 201], "granular": [17, 122, 144, 177, 185, 201, 238, 247], "fp16": [17, 122, 147, 184, 188, 201], "resnet": [17, 43, 44, 79, 125, 134, 149, 157, 168, 182, 195, 197, 198, 199, 201, 223, 228, 247], "imagenet": [17, 44, 51, 79, 117, 119, 139, 157, 158, 182, 197, 198, 201, 213, 229], "76": [17, 147, 163, 201, 231], "resnext": [17, 201], "101_32x8d": [17, 201], "xception": [17, 201], "ssd": [17, 201, 247], "rn50": [17, 201], "coco2017": [17, 201], "bbap": [17, 201], "maskrcnn": [17, 201], "fairseq": [17, 201], "en": [17, 21, 33, 49, 60, 99, 113, 118, 141, 153, 165, 171, 201, 260, 269], "de": [17, 18, 22, 49, 60, 113, 116, 118, 165, 201], "wmt14": [17, 201], "bleu": [17, 201], "squad": [17, 144, 201], "workflow": [17, 19, 58, 59, 82, 86, 87, 123, 173, 192, 196, 200, 201, 234, 251], "perspect": [17, 23, 101, 159, 177, 201], "subproblem": [17, 201], "handoff": [17, 201], "anticip": [17, 201], "area": [17, 113, 169, 178, 184, 192, 201, 229, 264, 273], "colab": [17, 18, 24, 25, 42, 48, 75, 94, 104, 115, 119, 121, 136, 137, 145, 157, 159, 160, 171, 175], "panda": [17, 34, 51, 73, 119, 171], "wandb_dis": 17, "ao": [17, 19, 179, 181, 182, 184, 197, 198, 199, 201], "weightnormsparsifi": [17, 201], "hug": [17, 75, 144], "face": [17, 44, 51, 52, 60, 73, 75, 79, 113, 144, 197], "preprocess_validation_funct": [17, 201], "strip": [17, 49, 75, 127, 128, 165, 201], "max_length": [17, 49, 60, 75, 128, 137, 165, 185, 201, 252], "384": [17, 187, 201], "only_second": [17, 201], "return_overflowing_token": [17, 201], "return_offsets_map": [17, 201], "sample_map": [17, 201], "pop": [17, 22, 98, 137, 185, 201], "overflow_to_sample_map": [17, 201], "example_id": [17, 201], "input_id": [17, 75, 122, 124, 137, 144, 165, 185, 201], "sample_idx": [17, 34, 201], "sequence_id": [17, 201], "offset_map": [17, 201], "preprocess_train_funct": [17, 201], "start_posit": [17, 201], "end_posit": [17, 201], "start_char": [17, 201], "answer_start": [17, 201], "end_char": [17, 201], "idx": [17, 19, 34, 51, 75, 98, 102, 103, 109, 115, 157, 158, 165, 169, 178, 201, 238], "context_start": [17, 201], "context_end": [17, 201], "compute_metr": [17, 137, 185, 201], "start_logit": [17, 201], "end_logit": [17, 201], "n_best": [17, 201], "max_answer_length": [17, 201], "example_to_featur": [17, 201], "predicted_answ": [17, 201], "feature_index": [17, 201], "start_index": [17, 201], "argsort": [17, 201], "tolist": [17, 51, 113, 178, 201], "end_index": [17, 201], "logit_scor": [17, 201], "score": [17, 49, 60, 98, 102, 103, 109, 137, 148, 164, 165, 178, 185, 201, 229], "best_answ": [17, 201], "prediction_text": [17, 201], "theoretical_answ": [17, 201], "ex": [17, 73, 201, 263, 265, 272, 274], "measure_execution_tim": [17, 201], "dataset_for_model": [17, 201], "remove_column": [17, 201], "set_format": [17, 201], "batch_size_to_time_sec": [17, 201], "column_nam": [17, 201], "baseline_predict": 17, "p50": [17, 201], "model_c": [17, 184], "fullgraph": [17, 164, 172, 210, 211, 254], "_compil": 17, "new_predict": 17, "model_nam": [17, 49, 60, 122, 184, 199, 201, 220], "autotoken": [17, 122, 201], "from_pretrain": [17, 75, 122, 137, 144, 185, 201, 220], "automodelforquestionansw": [17, 201], "val": [17, 19, 22, 117, 118, 122, 148, 157, 158, 182, 197, 198, 201], "squad_dataset": [17, 201], "load_dataset": [17, 75, 122, 201], "tokenized_squad_dataset": [17, 201], "data_col": [17, 201], "datacollatorwithpad": [17, 201], "segment": [17, 121, 184, 201, 204, 222], "wikipedia": [17, 33, 141, 153, 201], "articl": [17, 113, 116, 201], "training_arg": [17, 201], "trainingargu": [17, 201], "num_train_epoch": [17, 137, 201], "lr_scheduler_typ": [17, 201], "per_device_train_batch_s": [17, 201], "per_device_eval_batch_s": [17, 201], "logging_step": 17, "runner": 17, "max_step": [17, 75], "report_to": 17, "train_dataset": [17, 55, 97, 115, 122, 201, 220, 253], "eval_dataset": [17, 137, 185, 201], "fair": [17, 97, 103, 113, 193, 194, 201], "fp16_baselin": [17, 201], "fp16_time": [17, 201], "cuda_fp16": [17, 201], "pd": [17, 34, 51, 119, 171], "df": [17, 83, 119, 126], "datafram": [17, 82, 119, 126, 171], "log_histori": 17, "lowest": [17, 61, 123, 156, 201], "satisfi": [17, 126, 173, 174, 195, 201, 202, 247], "sparsity_level": [17, 201], "sparse_block_shap": [17, 201], "zeros_per_block": [17, 201], "sparse_config": [17, 201], "tensor_fqn": [17, 201], "fqn": [17, 201, 214], "named_modul": [17, 142, 156, 201, 239], "anytim": [17, 201], "pruner": [17, 201], "update_mask": [17, 201], "shot": [17, 113, 161, 201], "squash_mask": [17, 201], "set_printopt": [17, 201, 231], "edgeitem": [17, 201], "sparse_loss": 17, "quickstart": [17, 35, 201, 224], "metrics_spars": [17, 201], "sparse_perf": [17, 201], "perf": [17, 177, 188, 201], "28x": [17, 201], "bs": [17, 104, 144, 201], "amen": [17, 201], "spent": [17, 82, 113, 164, 168, 176, 177, 201, 231, 234], "delta": [17, 125, 144, 145, 146, 154, 160, 201, 231, 246], "exact": [17, 97, 112, 129, 139, 164, 173, 174, 185, 197, 198, 201, 210], "53": [17, 147, 201, 219, 238, 263, 272], "93": [17, 109, 163, 201, 219, 231], "15": [17, 23, 24, 45, 52, 58, 59, 73, 90, 92, 93, 116, 117, 146, 157, 169, 171, 178, 187, 201, 203, 219, 231, 246, 262, 266, 271, 275], "54": [17, 147, 149, 177, 231], "71x": [17, 177], "74": [17, 119, 163, 185, 219, 231], "23x": 17, "71": [17, 19, 21, 51, 144, 163], "59": [17, 115, 158, 171, 231, 238], "22x": 17, "286": [17, 147, 171, 201], "65": [17, 51, 163, 178, 218, 231], "247": [17, 163], "63": [17, 228, 238], "14x": 17, "02x": 17, "ye": [17, 50, 78, 99, 137, 152, 187], "18x": [17, 201], "13x": 17, "159": 17, "142": [17, 219], "12x": 17, "semi_structured_spars": 17, "embeddingplann": [18, 121], "conda": [18, 23, 82, 90, 94, 135, 144, 175, 184, 187, 188, 196, 221, 223, 229, 245, 246], "cudatoolkit": [18, 175], "sudo": [18, 168, 206], "rm": [18, 212, 223], "miniconda3": [18, 22, 246], "py37_4": 18, "sh": [18, 133, 188, 194, 204, 206, 218, 222, 223, 226], "anaconda": [18, 82, 135, 245], "chmod": 18, "fbgemm": [18, 19, 119, 175, 179, 181, 182, 228], "cp": [18, 206, 208, 213, 257], "restart": [18, 23, 58, 59, 132, 160], "newli": [18, 49, 117, 135, 216], "python37": 18, "dynload": 18, "enviro": 18, "spmd": [18, 124, 214], "mimic": [18, 19, 97, 149, 157, 184, 185, 189], "launcher": [18, 208], "embeddingbagcollect": 18, "bag": [18, 34, 38, 94, 96, 115, 169, 175], "ebc": [18, 175], "parameterconstraint": 18, "placement": [18, 176], "intra": [18, 21, 122, 124, 137, 215], "interconnect": [18, 76, 176], "nvlink": [18, 124, 212], "data_parallel": [18, 79], "meta": [18, 49, 124, 126, 138, 154, 159, 173, 174, 175, 176, 177, 200, 202, 239, 244, 251, 254, 266, 275], "planner": 18, "embedding_typ": 18, "embeddingcomputekernel": 18, "shardingtyp": 18, "large_table_cnt": 18, "small_table_cnt": 18, "large_t": 18, "embeddingbagconfig": [18, 175], "large_table_": 18, "feature_nam": [18, 175], "large_table_feature_": 18, "poolingtyp": [18, 175], "small_tabl": 18, "small_table_": 18, "small_table_feature_": 18, "gen_constraint": 18, "sharding_typ": 18, "table_wis": 18, "large_table_constraint": 18, "small_table_constraint": 18, "mimick": 18, "single_rank_execut": 18, "embeddingbagcollectionshard": 18, "model_parallel": 18, "embeddingshardingplann": 18, "topolog": [18, 137, 185, 214, 215, 220, 226], "moduleshard": 18, "shardingenv": 18, "init_distributed_single_host": 18, "pyre": 18, "fixm": 18, "set_devic": [18, 53, 55, 122, 123, 186, 214, 215], "compute_devic": 18, "pg": 18, "sharder": [18, 175], "shardingplan": 18, "collective_plan": 18, "sharded_model": 18, "from_process_group": 18, "spmd_sharing_simul": 18, "get_context": 18, "exitcod": 18, "medium": [18, 122, 178, 262, 271], "large_table_0": 18, "parametershard": 18, "compute_kernel": 18, "batched_fus": 18, "sharding_spec": 18, "enumerableshardingspec": 18, "shardmetadata": 18, "shard_offset": 18, "shard_siz": 18, "large_table_1": 18, "small_table_0": 18, "small_table_1": 18, "finer": [18, 34, 61, 177, 238], "halv": [18, 109], "row_wis": 18, "imbal": [18, 176, 247], "vertic": [18, 21, 260, 262, 269, 271], "column_wis": 18, "unfortu": 18, "batched_dens": 18, "raghuraman": [19, 137, 157], "krishnamoorthi": [19, 137, 157], "jerri": [19, 181, 182, 183, 197, 199, 200], "zhang": [19, 181, 182, 183, 197, 199, 200, 214, 215], "decreas": [19, 49, 73, 83, 97, 103, 124, 146, 176, 177, 192, 223, 252], "mobilenetv2": [19, 188, 196, 198, 223], "dataload": [19, 33, 35, 37, 38, 44, 45, 52, 55, 73, 75, 87, 92, 94, 96, 97, 113, 115, 117, 118, 122, 123, 129, 135, 137, 148, 157, 162, 165, 166, 168, 169, 171, 178, 182, 185, 197, 198, 220, 221, 235, 236, 247, 250, 253], "filterwarn": [19, 51, 148, 159, 171, 182, 189, 190, 191, 192, 197, 198], "deprecationwarn": [19, 182, 197, 198], "seed": [19, 25, 52, 73, 97, 122, 123, 135, 137, 161, 163, 182, 185, 193, 197, 198, 231, 234], "191009": [19, 25, 182, 197, 198], "floatfunct": 19, "quantstub": [19, 182, 218, 223, 228], "dequantstub": [19, 182, 218, 223, 228], "relu6": [19, 110], "_make_divis": 19, "divisor": 19, "min_valu": 19, "tf": [19, 94], "divis": [19, 165, 193], "tensorflow": [19, 94, 98, 100, 111], "blob": [19, 23, 33, 108, 123, 142, 168, 179, 182, 206, 260, 269], "slim": [19, 111], "mobilenet": [19, 58, 59, 121, 158, 194], "new_v": 19, "round": [19, 108, 115, 122, 146, 161, 231, 234], "convbnrelu": 19, "in_plan": [19, 134], "out_plan": [19, 134], "kernel_s": [19, 97, 104, 123, 129, 134, 146, 153, 166, 179, 218, 221], "momentum": [19, 43, 44, 65, 69, 87, 92, 94, 96, 104, 111, 112, 117, 129, 135, 157, 161, 168, 169, 178, 179, 198, 216, 218, 220, 221, 241, 242, 243, 249, 250, 253], "invertedresidu": 19, "oup": 19, "expand_ratio": 19, "hidden_dim": [19, 93, 98, 102], "use_res_connect": 19, "pw": 19, "dw": 19, "skip_add": 19, "num_class": [19, 24, 42, 75, 97, 115, 134, 148, 149, 161, 169, 171, 178], "width_mult": 19, "inverted_residual_set": 19, "round_nearest": 19, "v2": [19, 58, 59, 95, 97, 114, 136, 144, 158, 178, 192, 207], "input_channel": 19, "last_channel": 19, "1280": [19, 178, 184], "160": [19, 137, 163, 171, 218, 231, 238], "320": [19, 78, 166, 221], "valueerror": [19, 49, 60, 146, 190, 216], "invert": [19, 121, 159, 190], "residu": [19, 124], "output_channel": 19, "quant": [19, 157, 179, 185, 194, 197, 200, 218, 223, 228], "dequant": [19, 157, 179, 182, 184, 185, 194, 195, 197, 199, 200, 218, 221, 223, 228], "init": [19, 20, 22, 23, 52, 59, 99, 118, 129, 134, 153, 159, 194, 202, 218, 222, 225, 257], "kaiming_normal_": [19, 134], "fan_out": [19, 134], "zeros_": 19, "ones_": 19, "normal_": [19, 52], "bn": [19, 129, 142, 143, 157, 179, 181, 198, 218, 223], "fuse_model": [19, 157, 194, 195], "is_qat": [19, 179, 198, 199], "fuse_modul": [19, 157], "fuse_modules_qat": 19, "averagemet": [19, 182, 197, 198], "fmt": [19, 149, 182, 197, 198, 209], "avg": [19, 37, 38, 127, 182, 197, 198, 219, 238], "__str__": [19, 182, 197, 198], "fmtstr": [19, 182, 197, 198], "__dict__": [19, 49, 60, 182, 197, 198, 199, 244], "topk": [19, 49, 90, 127, 128, 165, 182, 197, 198, 221, 256], "maxk": [19, 58, 59, 182, 197, 198], "pred": [19, 37, 38, 104, 117, 123, 124, 129, 137, 148, 157, 162, 166, 169, 172, 173, 174, 178, 182, 185, 197, 198, 221], "correct_k": [19, 182, 197, 198], "mul_": [19, 95, 182, 197, 198, 216], "neval_batch": [19, 198], "top1": [19, 182, 197, 198, 221], "acc": [19, 73, 117, 148, 157, 171, 182, 197, 198], "top5": [19, 182, 197, 198, 256], "cnt": [19, 73, 182, 197, 198], "acc1": [19, 182, 197, 198], "acc5": [19, 182, 197, 198], "load_model": [19, 182, 197, 198], "data_path": [19, 87, 104, 182, 197, 198], "prepare_data_load": [19, 182, 197, 198], "randomresizedcrop": [19, 117, 182, 197, 198], "randomhorizontalflip": [19, 51, 117, 157, 178, 182, 197, 198], "dataset_test": [19, 178, 182, 197, 198], "centercrop": [19, 52, 90, 117, 119, 139, 157, 182, 197, 198, 213, 229], "train_sampl": [19, 165, 182, 197, 198], "test_sampl": [19, 182, 197, 198], "sequentialsampl": [19, 137, 182, 185, 197, 198], "train_batch_s": [19, 182, 197, 198], "data_loader_test": [19, 178, 182, 197, 198, 199], "saved_model_dir": [19, 182, 197, 198], "float_model_fil": [19, 182, 197, 198], "mobilenet_pretrained_float": 19, "scripted_float_model_fil": [19, 182, 197], "mobilenet_quantization_script": 19, "scripted_quantized_model_fil": 19, "mobilenet_quantization_scripted_quant": 19, "float_model": [19, 181, 182, 185, 195, 197, 198, 199], "fusion": [19, 82, 143, 144, 177, 182, 184, 198, 216, 218, 220, 247, 252, 255], "baselin": [19, 21, 24, 90, 97, 171, 184, 197, 201, 229, 231, 246], "un": [19, 165], "num_eval_batch": [19, 198], "sophist": [19, 159], "num_calibration_batch": 19, "mymodel": [19, 105, 179], "estim": [19, 47, 51, 52, 126, 159, 160, 165, 184, 213, 231], "qconfig": [19, 119, 157, 179, 181, 182, 183, 185, 195, 197, 200, 218, 223, 228], "default_qconfig": [19, 182, 195], "calibr": [19, 179, 181, 183, 198, 199, 221, 223], "safe": [19, 23, 65, 97, 111, 142, 187, 209], "4x": [19, 122, 177, 181, 182, 234], "exercis": [19, 44, 135, 157, 176, 230], "x86": [19, 119, 179, 181, 182, 194, 196, 204, 207, 222, 228], "basi": [19, 122, 137, 150, 262, 271], "histogram": [19, 195, 197, 245], "per_channel_quantized_model": 19, "get_default_qconfig": [19, 119, 181, 182, 218, 223, 228], "67": [19, 109, 144, 177, 179, 185, 219], "wors": [19, 119, 209], "qat": [19, 157, 179, 199], "train_one_epoch": [19, 96, 178, 198], "ntrain_batch": [19, 198], "avgloss": [19, 198], "5f": [19, 198, 234], "global_avg": [19, 198], "qat_model": 19, "get_default_qat_qconfig": [19, 228], "prepare_qat": [19, 157, 228], "toward": [19, 49, 60, 97, 128, 160, 182, 234], "freez": [19, 43, 117, 157, 177, 196, 198, 199, 220, 247], "num_train_batch": [19, 198], "nepoch": [19, 198], "disable_observ": [19, 198], "intrins": [19, 179], "freeze_bn_stat": 19, "confirm": [19, 20, 58, 59, 87, 122, 145, 161, 256], "allud": [19, 73], "run_benchmark": 19, "img_load": 19, "num_batch": [19, 37, 38, 134, 135, 149, 230], "num_imag": [19, 117], "0f": [19, 117, 129, 157, 166, 221], "dynamo_export": [20, 105, 107, 108], "newest": [20, 105], "torchdynamo": [20, 105, 107, 121, 173, 174, 199, 200], "technolog": [20, 61, 97, 105, 121, 135, 216, 251], "torchscript": [20, 58, 59, 105, 119, 121, 139, 142, 147, 177, 185, 187, 188, 194, 196, 209, 223, 224, 225, 228, 238, 251], "prove": [20, 103, 176], "onnxruntim": [20, 105, 107, 108], "model_zoo": 20, "wide": [20, 61, 124, 127, 128, 135, 137, 149, 155, 165, 184, 208, 216, 229, 247, 266, 275], "superresolut": 20, "shi": 20, "et": [20, 24, 49, 52, 60, 73, 135, 156, 165, 265, 274], "al": [20, 24, 49, 52, 60, 73, 156, 165], "upscal": 20, "ycbcr": 20, "superresolutionnet": 20, "upscale_factor": 20, "pixel_shuffl": 20, "pixelshuffl": 20, "_initialize_weight": 20, "orthogonal_": [20, 153, 202], "calculate_gain": 20, "torch_model": [20, 105], "ordinarili": [20, 230], "batchnorm": [20, 52, 55, 112, 142, 147, 182, 194, 197, 198, 199, 247, 249, 252], "model_url": 20, "s3": [20, 173, 181], "amazonaw": [20, 181], "superres_epoch100": 20, "44c6958e": 20, "load_url": 20, "ax": [20, 51, 99, 102, 117, 121, 127, 149, 157, 165, 169], "dynamic_ax": 20, "torch_out": 20, "super_resolut": 20, "export_param": 20, "opset_vers": 20, "do_constant_fold": 20, "fold": [20, 142, 177, 182, 197, 199, 247, 252, 263, 272], "input_nam": [20, 173], "output_nam": [20, 128], "bundl": [20, 59, 194, 204, 208, 222], "ml": [20, 73, 95, 97, 120, 121, 126, 196, 219, 223, 257], "proto": [20, 110], "checker": [20, 105, 110], "check_model": [20, 105, 110], "onnx_model": [20, 105], "ort_sess": [20, 105, 108], "inferencesess": [20, 105, 108], "cpuexecutionprovid": [20, 105, 108], "to_numpi": [20, 105, 108], "ort_input": 20, "get_input": [20, 105, 108], "ort_out": 20, "assert_allclos": [20, 142], "rtol": [20, 138, 154], "03": [20, 92, 118, 119, 162, 163, 171, 184, 219, 246, 263, 272], "contact": [20, 122, 205, 263, 272], "famou": [20, 24, 73], "224x224": [20, 158, 213], "cb": 20, "cr": 20, "grayscal": [20, 136, 146], "blue": [20, 43, 58, 59, 90, 122, 124, 178, 226, 262, 271], "red": [20, 58, 59, 60, 124, 149, 169, 178, 195, 226], "chroma": 20, "sensit": [20, 97, 131, 141, 182], "_static": [20, 104, 121, 139], "img_ycbcr": 20, "img_i": 20, "img_cb": 20, "img_cr": 20, "to_tensor": [20, 42, 190, 191], "unsqueeze_": [20, 95, 128, 213], "img_out_i": 20, "fromarrai": [20, 171], "final_img": 20, "bicub": 20, "rgb": [20, 52, 58, 59, 75, 92, 97, 139, 146, 158, 171, 178, 213, 229], "mobil": [20, 58, 59, 97, 119, 179, 187, 188, 194, 196, 206, 208, 209, 218, 228, 235, 251], "cat_superres_with_ort": 20, "deploi": [20, 54, 58, 59, 105, 121, 126, 132, 139, 156, 158, 209, 251, 252], "cloud": [20, 54, 105], "inferenc": 20, "azur": [20, 168], "servic": [20, 49, 126, 139, 158, 208, 220, 262, 271], "super_resolution_with_onnxruntim": 20, "inter": [21, 121, 124, 132, 150, 215], "workload": [21, 23, 61, 97, 109, 120, 121, 132, 133, 168, 176, 177, 182, 197, 215, 216, 219, 220, 251], "fragment": [21, 177, 247], "fn": [21, 85, 135, 141, 144, 147, 172, 186, 210, 211, 244, 246, 255], "callabl": [21, 51, 168, 172, 173, 174, 182, 209, 229], "x_normal": 21, "x_parallel": 21, "async": [21, 161, 163], "sort": [21, 25, 49, 98, 102, 109, 116, 137, 143, 158, 178, 185, 209, 247], "parlanc": 21, "revers": [21, 43, 49, 60, 98, 141, 143, 150, 153, 158, 165], "bidirectionalrecurrentlstm": 21, "cell_f": 21, "input_s": [21, 45, 49, 60, 78, 127, 128, 136, 165], "hidden_s": [21, 49, 60, 78, 89, 127, 128, 136, 148, 165, 181, 252], "cell_b": 21, "output_f": 21, "x_rev": 21, "output_b": 21, "output_b_rev": 21, "lstmensembl": 21, "n_model": 21, "modulelist": [21, 153, 237], "demo": [21, 25, 45, 58, 59, 113, 119, 121, 139, 155, 168, 204, 208, 219, 222, 228, 262, 271], "took": [21, 119, 135, 143, 152, 164, 172, 176, 177, 187], "future_f": 21, "stuff": [21, 262, 271], "worth": [21, 23, 52, 103, 113, 152, 162, 234], "profil": [21, 42, 82, 89, 119, 121, 123, 164, 176, 195, 219, 231, 235, 247, 251], "chrome": [21, 89, 164, 168, 238], "prof": [21, 42, 109, 164, 168, 219, 238], "export_chrome_trac": [21, 144, 164, 238], "json": [21, 49, 90, 109, 127, 139, 144, 164, 168, 213, 238], "navig": [21, 61, 168, 169, 204, 226, 260, 269], "button": [21, 50, 52, 58, 59, 105, 168, 188, 225, 226, 260, 262, 269, 271], "timelin": [21, 152, 168, 177, 226], "horizont": 21, "opportun": [21, 85, 105, 136, 149, 216, 247], "breviti": [21, 23, 189, 234, 244], "intro": [21, 35, 36, 55, 99, 100, 120, 136, 139, 159, 169, 211], "tracer": [21, 204], "member": [22, 65, 67, 79, 111, 157, 196, 223], "portion": [22, 82, 152, 156, 219, 226, 262, 271], "custom_class": 22, "mystackclass": 22, "customclasshold": 22, "stack_": 22, "push": [22, 52, 73, 97, 145, 160, 184, 205, 218, 223], "pop_back": 22, "intrusive_ptr": [22, 155, 231, 246], "make_intrus": [22, 155], "elem": [22, 244], "smart": 22, "oppos": [22, 49, 52, 117, 135, 145, 150, 162, 231], "class_": 22, "my_class": 22, "contructor": 22, "yourclass": 22, "ref": [22, 40, 197, 262, 271], "unari": 22, "add_librari": [22, 23, 208], "cmake_cxx_standard": [22, 208], "custom_class_project": 22, "rh": 22, "devtoolset": 22, "torchbind_tutori": 22, "libcustom_class": 22, "load_librari": [22, 23], "loaded_librari": 22, "bar": [22, 49, 82, 142, 149, 153, 162, 171, 172, 182, 197, 202, 226, 260, 262, 269, 271], "manipulate_inst": 22, "s2": [22, 47, 92, 173, 192], "do_stack": 22, "hi": [22, 103, 113, 115, 146, 193, 262, 263, 271, 272], "mom": 22, "wow": 22, "scripted_foo": 22, "filesystem": [22, 135], "treatment": [22, 113, 171, 191, 192, 234], "cpp_inference_exampl": 22, "foobarbaz": 22, "tostr": 22, "add_subdirectori": [22, 23], "drill": 22, "momfoobarbaz": 22, "incred": 22, "make_custom_class": 22, "tocustomclass": 22, "iscustomclass": 22, "export_attr": 22, "__torch__": [22, 203], "def_pickl": 22, "pushivalueimpl": 22, "pickler": 22, "__getstate__": 22, "__setstate__": 22, "pickl": [22, 87, 104, 112, 152, 223, 231, 242, 246], "salient": 22, "wherea": [22, 149, 169, 171, 184, 190, 191], "confus": [22, 23, 98, 99, 127, 141, 171, 184, 190, 191, 192, 197, 223], "trycustomop": 22, "relax": [22, 153, 173, 174], "standalon": [22, 53, 124, 230, 254, 262, 271], "blend": [22, 23], "smoothli": [22, 23], "subsequ": [23, 73, 97, 112, 118, 123, 136, 141, 161, 163, 165, 172, 177, 184, 199, 247], "resort": 23, "opencv": [23, 44, 208], "vision": [23, 24, 34, 38, 44, 58, 59, 117, 119, 121, 152, 178, 187, 194, 196, 204, 222, 223, 229, 233, 256], "mat": [23, 208], "warpperspect": [23, 208], "warp_perspect": [23, 208], "warp": [23, 208], "image_mat": [23, 208], "cv": [23, 24, 126, 193, 208], "col": [23, 34, 157, 208], "cv_32fc1": [23, 208], "warp_mat": [23, 208], "output_mat": [23, 208], "dsize": [23, 208], "output_tensor": 23, "from_blob": [23, 59, 188, 208], "ptr": [23, 208], "short": [23, 25, 49, 60, 82, 98, 100, 115, 120, 128, 135, 153, 159, 165, 166, 197, 198, 199, 234, 247, 262, 263, 271, 272], "opencv2": [23, 208], "hpp": [23, 155, 208], "alongsid": [23, 141, 169, 171, 230], "goodi": 23, "hardcod": [23, 129, 148, 200], "strikingli": 23, "opaqu": 23, "flat": 23, "scope": [23, 60, 101, 109, 125, 173, 174, 177, 226], "dealloc": [23, 168, 177, 247], "invalid": [23, 134, 190, 191, 192, 216, 247], "quot": [23, 117, 263, 272], "metaprogram": 23, "experiment": [23, 60, 123, 126, 142, 163, 173, 174, 179, 186, 221, 245, 247], "target_compile_featur": 23, "cxx_std_14": 23, "opencv_cor": 23, "opencv_imgproc": 23, "libwarp_perspect": 23, "sensat": 23, "0x7f618fc6fa50": 23, "3218": 23, "4611": 23, "4636": 23, "3746": 23, "0978": 23, "5005": 23, "3245": 23, "0169": 23, "4458": 23, "1862": 23, "1692": 23, "noteworthi": [23, 219], "frozen": [23, 43, 146, 157, 185, 203], "prim": [23, 185], "revel": 23, "restrict": [23, 25, 49, 85, 135, 168, 172, 174, 179, 204, 205], "script_method": [23, 85], "tensortobool": 23, "block0": 23, "block1": [23, 79], "21": [23, 58, 59, 109, 115, 158, 208, 219, 231, 238, 246], "sent": [23, 99, 102, 135, 161, 212], "wire": 23, "dlopen": 23, "example_app": 23, "cxx_range_for": 23, "errorreport": 23, "mayb": [23, 101, 103, 138, 196, 262, 271], "subdirectori": [23, 52, 178], "prefix": [23, 113, 122, 125, 136, 137, 168, 184, 185, 231, 246, 258, 262, 271], "inconveni": [23, 189], "altogeth": [23, 150, 191, 260, 269], "nb": [23, 89, 95, 205, 213], "impress": [23, 115, 144], "opencv_photo": 23, "happi": [23, 142, 143], "4125": 23, "8262": 23, "5345": 23, "6111": [23, 231], "3997": [23, 75], "4683": 23, "5969": 23, "0850": 23, "0698": 23, "4597": 23, "0926": 23, "5727": 23, "9319": 23, "4834": 23, "1747": 23, "0162": 23, "9521": 23, "6269": 23, "lastli": [23, 87, 121, 152, 222], "driver": [23, 168], "infrastructur": [23, 257], "vener": 23, "beforehand": [23, 150, 200, 228], "is_python_modul": [23, 208], "extra_ldflag": [23, 208], "lopencv_cor": [23, 208], "lopencv_imgproc": [23, 208], "approxim": [23, 49, 108, 122, 129, 143, 146, 150, 156, 160, 176, 185, 219, 247], "0x7f3e0f840b10": 23, "load_inlin": [23, 208, 231], "op_sourc": [23, 208], "cpp_sourc": [23, 208, 231], "rout": [23, 60, 139, 144, 213], "quirki": 23, "with_opt": 23, "no_python_abi_suffix": 23, "bottom": [23, 98, 168, 171, 226, 260, 269], "suffix": [23, 48, 82, 144], "tag": [23, 51, 100, 103, 116, 173, 174, 208, 237, 245, 262, 271], "0x7ff51c5b7bd0": 23, "hao": 24, "chen": [24, 173, 174, 204, 222], "unifi": [24, 95, 121, 129, 195, 229], "ssl": 24, "modular": [24, 110, 112], "fixmatch": 24, "defixmatch": 24, "speech": [24, 73, 98, 100, 103, 128, 247], "light": [24, 25, 52, 129, 208, 229, 262, 271], "vit": 24, "strong": [24, 98, 176, 192, 262, 271], "unlabel": 24, "confid": [24, 52, 99, 126, 159, 160, 169, 230], "threshold": [24, 49, 60, 82, 109, 110, 126, 159, 163, 171, 219, 247], "statu": [24, 126, 163, 173, 174, 263, 272], "absorb": 24, "gaussian": [24, 47, 52, 126, 159], "overcom": [24, 113], "quantiti": [24, 97, 121, 124, 145, 150, 154], "trade": [24, 126, 152, 234], "afford": 24, "nlp": [24, 42, 92, 93, 99, 102, 103, 113, 114, 115, 116, 118, 127, 128, 137, 165, 177, 185, 193, 199, 230, 234, 247, 252], "audio": [24, 26, 27, 28, 29, 30, 34, 38, 44, 121, 140, 167, 170], "semilearn": 24, "get_dataset": 24, "get_data_load": 24, "weak": [24, 262, 271], "get_net_build": 24, "get_algorithm": 24, "get_config": 24, "hyper": [24, 164], "vit_tiny_patch2_32": 24, "use_pretrain": 24, "pretrain_path": 24, "microsoft": [24, 107, 108, 137, 168], "vit_tiny_patch2_32_mlp_im_1k_32": 24, "num_train_it": 24, "num_eval_it": 24, "num_log_it": 24, "adamw": [24, 75, 110, 122, 160], "layer_decai": 24, "cifar10": [24, 57, 87, 92, 97, 168, 220, 250, 253], "num_label": [24, 99], "img_siz": 24, "crop_ratio": 24, "875": 24, "data_dir": [24, 87, 117, 122, 137, 148, 157, 185], "ulb_samples_per_class": 24, "hard_label": 24, "ema_p": 24, "999": [24, 52, 94, 96, 169], "ent_loss_ratio": 24, "uratio": 24, "ulb_loss_ratio": 24, "dataset_dict": 24, "include_lb_to_ulb": 24, "train_lb_load": 24, "train_lb": 24, "train_ulb_load": 24, "train_ulb": 24, "eval_load": 24, "from_nam": 24, "tb_log": 24, "logger": [24, 137, 146, 148, 171, 185, 195], "lb_imb_ratio": 24, "ulb_imb_ratio": 24, "1500": [24, 122, 231], "ulb_num_label": 24, "3000": [24, 169], "kihyuk": 24, "sohn": 24, "yidong": 24, "usb_semisup_learn": 24, "jamesre": 25, "fb": 25, "michael": [25, 42, 98, 210, 211, 230, 255], "suo": 25, "rev2": 25, "hierarchi": [25, 60, 177], "__version__": [25, 42, 107, 119, 137, 146, 158, 185, 188, 206, 208, 222], "mycel": 25, "my_cel": 25, "3x4": 25, "redefin": 25, "succinctli": [25, 153], "mydecisiong": [25, 252], "dg": 25, "tape": [25, 42, 76], "traced_cel": [25, 252], "rewind": 25, "tracedmodul": [25, 60, 85, 252], "ir": [25, 110, 142, 144, 183, 216], "commonli": [25, 49, 69, 87, 97, 158, 165, 168, 179, 216, 220, 239, 247, 263, 272], "acquir": [25, 112, 134, 156, 159, 163], "laden": 25, "submodul": [25, 49, 60, 85, 153, 164, 202, 218, 222, 228, 234], "branch": [25, 173, 174, 177, 178, 199, 206, 220, 224, 225], "nowher": 25, "faithfulli": [25, 189], "analysi": [25, 87, 107, 115, 121, 123, 143, 144, 164, 168, 171, 174, 176, 184, 226, 234], "scripted_g": 25, "scripted_cel": [25, 252], "decis": [25, 100, 136, 189, 190, 192, 207, 224, 225, 247, 255], "myrnnloop": 25, "xs": [25, 134, 166], "rnn_loop": 25, "wraprnn": 25, "freestand": 25, "wrapped_rnn": 25, "neurip": 25, "1hiicg6jrkbnr5hvk2": 25, "vnmi88vi9puzej": 25, "intro_to_torchscript_tutori": [25, 203], "audio_data_augmentation_tutori": [26, 28], "redirect": [26, 27, 28, 29, 30, 31, 74, 140, 151, 167, 170, 180, 217], "audio_datasets_tutori": 27, "audio_feature_extractions_tutori": 29, "audio_io_tutori": 30, "\u57fa\u7840\u77e5\u8bc6": [32, 33, 34, 35, 37, 38, 39, 40, 41, 121], "\u5feb\u901f\u5165\u95e8": [32, 33, 34, 36, 37, 39, 40, 41, 251], "\u6570\u636e\u96c6\u4e0e\u6570\u636e\u52a0\u8f7d\u5668": [32, 33, 36, 37, 38, 39, 40, 41], "\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": [32, 34, 36, 37, 38, 39, 40, 41], "\u4f18\u5316\u6a21\u578b\u53c2\u6570": [32, 33, 34, 36, 39, 40, 41], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": [32, 33, 34, 36, 37, 38, 40, 41, 235, 251], "\u5728\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u65f6": [32, 250], "\u6700\u5e38\u7528\u7684\u7b97\u6cd5\u662f": 32, "\u53cd\u5411\u4f20\u64ad": [32, 37], "\u5728\u8fd9\u4e2a\u7b97\u6cd5\u4e2d": 32, "\u53c2\u6570": [32, 95, 238, 240], "\u6a21\u578b\u6743\u91cd": 32, "\u6839\u636e\u635f\u5931\u51fd\u6570\u76f8\u5bf9\u4e8e\u7ed9\u5b9a\u53c2\u6570\u7684": 32, "\u68af\u5ea6": [32, 89], "\u8fdb\u884c\u8c03\u6574": 32, "\u4e3a\u4e86\u8ba1\u7b97\u8fd9\u4e9b\u68af\u5ea6": 32, "\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5185\u7f6e\u7684\u5fae\u5206\u5f15\u64ce": 32, "\u79f0\u4e3a": [32, 39, 89], "\u5b83\u652f\u6301\u5bf9\u4efb\u4f55\u8ba1\u7b97\u56fe\u81ea\u52a8\u8ba1\u7b97\u68af\u5ea6": 32, "\u8003\u8651\u6700\u7b80\u5355\u7684\u5355\u5c42\u795e\u7ecf\u7f51\u7edc": 32, "\u5177\u6709\u8f93\u5165": 32, "\u548c": [32, 34, 36, 37, 38, 39, 41, 89, 90, 92, 95, 96, 111, 118, 121, 233, 236, 238, 240, 241, 242, 243, 246, 249, 250], "\u4ee5\u53ca\u4e00\u4e9b\u635f\u5931\u51fd\u6570": 32, "\u53ef\u4ee5\u5728": [32, 104], "\u4e2d\u6309\u4ee5\u4e0b\u65b9\u5f0f\u5b9a\u4e49\u5b83": 32, "binary_cross_entropy_with_logit": [32, 230], "\u8fd9\u6bb5\u4ee3\u7801\u5b9a\u4e49\u4e86\u4ee5\u4e0b": 32, "\u8ba1\u7b97\u56fe": [32, 111], "\u5728\u8fd9\u4e2a\u7f51\u7edc\u4e2d": 32, "\u662f": [32, 34, 92, 93, 104, 236], "\u6211\u4eec\u9700\u8981\u5bf9\u5b83\u4eec\u8fdb\u884c\u4f18\u5316": 32, "\u56e0\u6b64": [32, 89, 111, 238, 240, 242], "\u6211\u4eec\u9700\u8981\u80fd\u591f\u8ba1\u7b97\u635f\u5931\u51fd\u6570\u76f8\u5bf9\u4e8e\u8fd9\u4e9b\u53d8\u91cf\u7684\u68af\u5ea6": 32, "\u4e3a\u4e86\u505a\u5230\u8fd9\u4e00\u70b9": 32, "\u6211\u4eec\u8bbe\u7f6e\u4e86\u8fd9\u4e9b\u5f20\u91cf\u7684": 32, "\u5c5e\u6027": [32, 89, 95], "\u6216\u5728\u521b\u5efa\u540e\u4f7f\u7528": 32, "\u65b9\u6cd5\u6765\u8bbe\u7f6e": 32, "\u6211\u4eec\u5e94\u7528\u4e8e\u5f20\u91cf\u4ee5\u6784\u5efa\u8ba1\u7b97\u56fe\u7684\u51fd\u6570\u5b9e\u9645\u4e0a\u662f": 32, "\u7c7b\u7684\u5bf9\u8c61": 32, "\u8fd9\u4e2a\u5bf9\u8c61\u77e5\u9053\u5982\u4f55\u5728": 32, "\u524d\u5411": [32, 92, 111, 250], "\u65b9\u5411\u8ba1\u7b97\u51fd\u6570": 32, "\u4e5f\u77e5\u9053\u5982\u4f55\u5728": 32, "\u6b65\u9aa4\u4e2d\u8ba1\u7b97\u5176\u5bfc\u6570": 32, "\u5bf9\u4e8e\u53cd\u5411\u4f20\u64ad\u51fd\u6570\u7684\u5f15\u7528\u5b58\u50a8\u5728\u5f20\u91cf\u7684": 32, "\u5c5e\u6027\u4e2d": [32, 250], "\u60a8\u53ef\u4ee5\u5728": 32, "\u6587\u6863": [32, 89, 93, 95], "__": [32, 37, 40, 90, 94, 171, 234], "\u4e2d\u627e\u5230\u6709\u5173": 32, "\u7684\u66f4\u591a\u4fe1\u606f": 32, "\u4e3a\u4e86\u4f18\u5316\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u53c2\u6570\u6743\u91cd": 32, "\u6211\u4eec\u9700\u8981\u8ba1\u7b97\u635f\u5931\u51fd\u6570\u76f8\u5bf9\u4e8e\u53c2\u6570\u7684\u5bfc\u6570": 32, "\u5373\u5728\u67d0\u4e9b\u56fa\u5b9a\u7684": 32, "\u503c\u4e0b": 32, "\u6211\u4eec\u9700\u8981": 32, "frac": [32, 43, 64, 85, 89, 98, 99, 101, 103, 111, 125, 130, 135, 159, 160, 262, 271], "partial": [32, 43, 75, 87, 89, 101, 112, 113, 122, 123, 124, 125, 136, 141, 145, 216, 220, 262, 271], "\u8981\u8ba1\u7b97\u8fd9\u4e9b\u5bfc\u6570": 32, "\u6211\u4eec\u8c03\u7528": [32, 95], "\u7136\u540e\u4ece": 32, "\u4e2d\u68c0\u7d22\u503c": 32, "\u9ed8\u8ba4\u60c5\u51b5\u4e0b": [32, 37, 95, 238], "\u6240\u6709\u5177\u6709": 32, "\u7684\u5f20\u91cf\u90fd\u5728\u8ddf\u8e2a\u5b83\u4eec\u7684\u8ba1\u7b97\u5386\u53f2\u5e76\u652f\u6301\u68af\u5ea6\u8ba1\u7b97": 32, "\u7136\u800c": [32, 111, 246], "\u6709\u4e9b\u60c5\u51b5\u4e0b\u6211\u4eec\u4e0d\u9700\u8981\u8fd9\u6837\u505a": 32, "\u4f8b\u5982": [32, 33, 34, 38, 40, 89, 92, 93, 95, 104, 238, 246, 250], "\u5f53\u6211\u4eec\u5df2\u7ecf\u8bad\u7ec3\u597d\u6a21\u578b\u5e76\u53ea\u60f3\u5c06\u5176\u5e94\u7528\u4e8e\u4e00\u4e9b\u8f93\u5165\u6570\u636e\u65f6": 32, "\u5373\u6211\u4eec\u53ea\u60f3\u901a\u8fc7\u7f51\u7edc\u8fdb\u884c": 32, "\u8ba1\u7b97": [32, 95], "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5c06\u6211\u4eec\u7684\u8ba1\u7b97\u4ee3\u7801\u5305\u88f9\u5728": 32, "\u5757\u4e2d\u6765\u505c\u6b62\u8ddf\u8e2a\u8ba1\u7b97": 32, "\u53e6\u4e00\u79cd\u5b9e\u73b0\u76f8\u540c\u7ed3\u679c\u7684\u65b9\u6cd5\u662f\u5bf9\u5f20\u91cf\u4f7f\u7528": 32, "\u65b9\u6cd5": [32, 33, 39, 89, 94, 95, 104, 233], "z_det": 32, "\u5e0c\u671b\u7981\u7528\u68af\u5ea6\u8ddf\u8e2a\u7684\u539f\u56e0\u53ef\u80fd\u5982\u4e0b": 32, "\u5c06\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u67d0\u4e9b\u53c2\u6570\u6807\u8bb0\u4e3a": 32, "\u51bb\u7ed3\u53c2\u6570": 32, "\u5728\u4ec5\u8fdb\u884c\u524d\u5411\u4f20\u9012\u65f6": 32, "\u52a0\u901f\u8ba1\u7b97": 32, "\u56e0\u4e3a\u4e0d\u8ddf\u8e2a\u68af\u5ea6\u7684\u5f20\u91cf\u4e0a\u7684\u8ba1\u7b97\u4f1a\u66f4\u9ad8\u6548": 32, "\u6982\u5ff5\u4e0a": 32, "\u5728\u4e00\u4e2a\u7531": 32, "\u5bf9\u8c61": [32, 92, 104, 246], "\u7ec4\u6210\u7684\u6709\u5411\u65e0\u73af\u56fe": 32, "dag": 32, "\u4e2d\u8bb0\u5f55\u6570\u636e": 32, "\u548c\u6240\u6709\u6267\u884c\u7684\u64cd\u4f5c": 32, "\u4ee5\u53ca\u4ea7\u751f\u7684\u65b0\u5f20\u91cf": 32, "\u5728\u8fd9\u4e2a": 32, "\u4e2d": [32, 34, 92, 104, 121, 233, 235, 236, 238, 246, 248, 251], "\u53f6\u5b50\u8282\u70b9\u662f\u8f93\u5165\u5f20\u91cf": 32, "\u6839\u8282\u70b9\u662f\u8f93\u51fa\u5f20\u91cf": 32, "\u901a\u8fc7\u4ece\u6839\u5230\u53f6\u8ddf\u8e2a\u8fd9\u4e2a\u56fe": 32, "\u53ef\u4ee5\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219\u81ea\u52a8\u8ba1\u7b97\u68af\u5ea6": 32, "\u5728\u524d\u5411\u4f20\u9012\u4e2d": 32, "\u540c\u65f6\u505a\u4e24\u4ef6\u4e8b": 32, "\u6267\u884c\u8bf7\u6c42\u7684\u64cd\u4f5c\u4ee5\u8ba1\u7b97\u7ed3\u679c\u5f20\u91cf": 32, "\u5728": [32, 33, 89, 92, 93, 94, 96, 104, 121, 139, 246, 249], "\u4e2d\u7ef4\u62a4\u64cd\u4f5c\u7684": 32, "\u68af\u5ea6\u51fd\u6570": 32, "\u5f53\u5728": 32, "\u6839\u8282\u70b9\u4e0a\u8c03\u7528": 32, "\u65f6": [32, 89, 90, 95], "\u53cd\u5411\u4f20\u9012\u5f00\u59cb": 32, "\u7136\u540e": [32, 93, 104, 111], "\u4ece\u6bcf\u4e2a": 32, "\u5c06\u5b83\u4eec\u7d2f\u79ef\u5230\u5404\u81ea\u5f20\u91cf\u7684": 32, "\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219": 32, "\u4e00\u76f4\u4f20\u64ad\u5230\u53f6\u5b50\u5f20\u91cf": 32, "\u5728\u5f88\u591a\u60c5\u51b5\u4e0b": 32, "\u6211\u4eec\u6709\u4e00\u4e2a\u6807\u91cf\u635f\u5931\u51fd\u6570": 32, "\u9700\u8981\u8ba1\u7b97\u76f8\u5bf9\u4e8e\u67d0\u4e9b\u53c2\u6570\u7684\u68af\u5ea6": 32, "\u4e5f\u6709\u4e00\u4e9b\u60c5\u51b5\u4e0b": 32, "\u8f93\u51fa\u51fd\u6570\u662f\u4e00\u4e2a\u4efb\u610f\u7684\u5f20\u91cf": 32, "\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b": [32, 39, 95, 104, 240], "\u5141\u8bb8\u60a8\u8ba1\u7b97\u6240\u8c13\u7684": 32, "\u96c5\u53ef\u6bd4\u4e58\u79ef": 32, "\u800c\u4e0d\u662f\u5b9e\u9645\u7684\u68af\u5ea6": 32, "vec": [32, 43, 89, 98, 99, 144, 145, 150], "langl": 32, "x_1": [32, 101, 116, 150, 262, 271], "x_n": [32, 52], "rangl": 32, "y_1": [32, 101, 116], "y_m": 32, "ccc": [32, 43, 89], "y_": [32, 43, 89, 98], "x_": [32, 43, 89, 262, 271], "cdot": [32, 43, 52, 89, 103, 125], "vdot": [32, 43, 89], "ddot": [32, 43, 89], "v_1": 32, "v_m": 32, "retain_graph": [32, 76, 191, 205], "nsecond": 32, "ncall": 32, "accumul": [32, 43, 47, 49, 52, 69, 76, 98, 99, 101, 102, 103, 111, 115, 129, 130, 146, 152, 160, 161, 162, 163, 230, 234], "leaf": [32, 43, 183], "life": [32, 97, 113, 127, 128], "autogradqs_tutori": [32, 35, 40], "\u5f20\u91cf": [33, 34, 36, 37, 38, 39, 41, 70, 88, 89, 90, 93, 94, 95, 96, 104], "\u81ea\u52a8\u5fae\u5206": [33, 34, 36, 37, 38, 39, 40, 41, 88, 89, 90, 92, 93, 94, 95, 96, 111], "\u795e\u7ecf\u7f51\u7edc\u7531\u6267\u884c\u6570\u636e\u64cd\u4f5c\u7684": 33, "\u5c42": [33, 92, 93, 104, 111], "\u6a21\u5757": [33, 90, 238], "\u7ec4\u6210": 33, "\u547d\u540d\u7a7a\u95f4\u63d0\u4f9b\u4e86\u6784\u5efa\u4f60\u81ea\u5df1\u7684\u795e\u7ecf\u7f51\u7edc\u6240\u9700\u7684\u6240\u6709\u6784\u5efa\u5757": 33, "\u4e2d\u7684\u6bcf\u4e2a\u6a21\u5757\u90fd\u662f": 33, "\u7684\u5b50\u7c7b": [33, 34, 92, 93], "\u795e\u7ecf\u7f51\u7edc\u672c\u8eab\u5c31\u662f\u4e00\u4e2a\u7531\u5176\u4ed6\u6a21\u5757": 33, "\u7ec4\u6210\u7684\u6a21\u5757": 33, "\u8fd9\u79cd\u5d4c\u5957\u7ed3\u6784\u5141\u8bb8\u8f7b\u677e\u6784\u5efa\u548c\u7ba1\u7406\u590d\u6742\u7684\u67b6\u6784": 33, "\u5728\u63a5\u4e0b\u6765\u7684\u90e8\u5206\u4e2d": 33, "\u6211\u4eec\u5c06\u6784\u5efa\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 33, "\u7528\u4e8e\u5bf9": 33, "fashionmnist": [33, 34, 37, 38, 41, 94, 96, 169], "\u6570\u636e\u96c6\u4e2d\u7684\u56fe\u50cf\u8fdb\u884c\u5206\u7c7b": 33, "\u6211\u4eec\u5e0c\u671b\u80fd\u591f\u5728\u786c\u4ef6\u52a0\u901f\u5668": 33, "\u5982": [33, 93, 104], "\u6216": [33, 38, 72, 93, 95, 96, 104, 236, 242], "\u4e0a\u8bad\u7ec3\u6211\u4eec\u7684\u6a21\u578b": 33, "\u5982\u679c\u53ef\u7528": [33, 38], "\u8ba9\u6211\u4eec\u68c0\u67e5\u4e00\u4e0b": 33, "\u662f\u5426\u53ef\u7528": 33, "\u5426\u5219\u6211\u4eec\u4f7f\u7528": 33, "\u6211\u4eec\u901a\u8fc7\u7ee7\u627f": 33, "\u6765\u5b9a\u4e49\u6211\u4eec\u7684\u795e\u7ecf\u7f51\u7edc": 33, "\u5e76\u5728": [33, 38], "\u65b9\u6cd5\u4e2d\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc\u5c42": 33, "\u6bcf\u4e2a": 33, "\u5b50\u7c7b\u90fd\u5728": 33, "\u65b9\u6cd5\u4e2d\u5b9e\u73b0\u5bf9\u8f93\u5165\u6570\u636e\u7684\u64cd\u4f5c": 33, "neuralnetwork": [33, 37, 38, 187], "linear_relu_stack": [33, 37, 38, 219], "logit": [33, 37, 38, 97, 118, 137, 148, 185, 219], "\u6211\u4eec\u521b\u5efa\u4e00\u4e2a": 33, "\u7684\u5b9e\u4f8b": [33, 93], "\u5e76\u5c06\u5176\u79fb\u52a8\u5230": 33, "\u4e0a": [33, 38, 89, 95, 104, 238], "\u7136\u540e\u6253\u5370\u5176\u7ed3\u6784": 33, "\u8981\u4f7f\u7528\u6a21\u578b": 33, "\u6211\u4eec\u5c06\u8f93\u5165\u6570\u636e\u4f20\u9012\u7ed9\u5b83": 33, "\u8fd9\u5c06\u6267\u884c\u6a21\u578b\u7684": 33, "\u4ee5\u53ca\u4e00\u4e9b": 33, "\u540e\u53f0\u64cd\u4f5c": 33, "270111b7b611d174967ed204776985cefca9c144": 33, "l866": 33, "\u4e0d\u8981\u76f4\u63a5\u8c03\u7528": 33, "\u5c06\u8f93\u5165\u4f20\u9012\u7ed9\u6a21\u578b\u4f1a\u8fd4\u56de\u4e00\u4e2a\u4e8c\u7ef4\u5f20\u91cf": 33, "\u5176\u4e2d": [33, 93, 95, 111], "\u5bf9\u5e94\u6bcf\u4e2a\u7c7b\u522b\u7684": 33, "\u4e2a\u539f\u59cb\u9884\u6d4b\u503c\u7684\u8f93\u51fa": 33, "\u5bf9\u5e94\u6bcf\u4e2a\u8f93\u51fa\u7684\u5404\u4e2a\u503c": 33, "\u6211\u4eec\u901a\u8fc7\u5c06\u5176\u4f20\u9012\u7ed9": 33, "\u6a21\u5757\u7684\u5b9e\u4f8b\u6765\u83b7\u5f97\u9884\u6d4b\u6982\u7387": 33, "pred_probab": [33, 219], "y_pred": [33, 63, 64, 65, 67, 68, 69, 71, 72, 111, 219], "argmax": [33, 37, 38, 98, 102, 104, 115, 119, 123, 129, 137, 146, 148, 162, 185, 219, 221], "\u8ba9\u6211\u4eec\u5206\u89e3\u4e00\u4e0b": 33, "\u6a21\u578b\u4e2d\u7684\u5404\u5c42": 33, "\u4e3a\u4e86\u89e3\u91ca\u5b83": 33, "\u6211\u4eec\u5c06\u53d6\u4e00\u4e2a\u5305\u542b": 33, "\u5f20": 33, "28x28": [33, 104, 169], "\u5c3a\u5bf8\u56fe\u50cf\u7684\u5c0f\u6279\u91cf\u6837\u672c": 33, "\u5e76\u89c2\u5bdf\u5b83\u5728\u901a\u8fc7\u7f51\u7edc\u65f6\u53d1\u751f\u4e86\u4ec0\u4e48": 33, "input_imag": [33, 58, 59], "\u6211\u4eec\u521d\u59cb\u5316": 33, "\u5c06\u6bcf\u4e2a\u4e8c\u7ef4": 33, "\u56fe\u50cf\u8f6c\u6362\u4e3a\u5305\u542b": 33, "784": [33, 94, 104, 138, 169], "\u4e2a\u50cf\u7d20\u503c\u7684\u8fde\u7eed\u6570\u7ec4": 33, "\u4fdd\u7559\u5c0f\u6279\u91cf\u7ef4\u5ea6": 33, "flat_imag": 33, "\u7ebf\u6027\u5c42": 33, "\u662f\u4e00\u4e2a\u6a21\u5757": 33, "\u5b83\u4f7f\u7528\u5b58\u50a8\u7684\u6743\u91cd": 33, "\u548c\u504f\u7f6e": [33, 104], "\u5bf9\u8f93\u5165\u5e94\u7528\u7ebf\u6027\u53d8\u6362": 33, "layer1": [33, 89, 149, 157, 160, 195], "in_featur": [33, 109, 117, 123, 157, 178, 179, 201, 202, 239], "hidden1": [33, 234], "\u975e\u7ebf\u6027\u6fc0\u6d3b\u51fd\u6570\u521b\u5efa\u4e86\u6a21\u578b\u8f93\u5165\u548c\u8f93\u51fa\u4e4b\u95f4\u7684\u590d\u6742\u6620\u5c04": 33, "\u5b83\u4eec\u5728\u7ebf\u6027\u53d8\u6362\u4e4b\u540e\u5e94\u7528": 33, "\u4ee5\u5f15\u5165": 33, "\u975e\u7ebf\u6027": [33, 93], "\u5e2e\u52a9\u795e\u7ecf\u7f51\u7edc\u5b66\u4e60\u5404\u79cd\u73b0\u8c61": 33, "\u5728\u8fd9\u4e2a\u6a21\u578b\u4e2d": 33, "\u6211\u4eec\u5728\u7ebf\u6027\u5c42\u4e4b\u95f4\u4f7f\u7528": 33, "\u4f46\u8fd8\u6709\u5176\u4ed6\u6fc0\u6d3b\u51fd\u6570\u53ef\u4ee5\u5728\u4f60\u7684\u6a21\u578b\u4e2d\u5f15\u5165\u975e\u7ebf\u6027": 33, "\u662f\u4e00\u4e2a\u6709\u5e8f\u7684\u6a21\u5757\u5bb9\u5668": 33, "\u6570\u636e\u6309\u7167\u5b9a\u4e49\u7684\u987a\u5e8f\u4f9d\u6b21\u901a\u8fc7\u6240\u6709\u6a21\u5757": 33, "\u60a8\u53ef\u4ee5\u4f7f\u7528\u5e8f\u5217\u5bb9\u5668\u6765\u5feb\u901f\u7ec4\u5408\u4e00\u4e2a\u7f51\u7edc": 33, "seq_modul": 33, "\u795e\u7ecf\u7f51\u7edc\u7684\u6700\u540e\u4e00\u4e2a\u7ebf\u6027\u5c42\u8fd4\u56de\u7684\u662f": 33, "\u5bf9\u6570\u51e0\u7387": 33, "infti": [33, 160], "\u8303\u56f4\u5185\u7684\u539f\u59cb\u503c": 33, "\u8fd9\u4e9b\u503c\u4f1a\u88ab\u4f20\u9012\u5230": 33, "\u5bf9\u6570\u51e0\u7387\u88ab\u7f29\u653e\u5230\u503c\u4e3a": 33, "\u7684\u8303\u56f4": 33, "\u8868\u793a\u6a21\u578b\u5bf9\u6bcf\u4e2a\u7c7b\u522b\u7684\u9884\u6d4b\u6982\u7387": 33, "\u53c2\u6570\u6307\u793a\u503c\u5fc5\u987b\u5728\u5176\u6cbf\u7740\u7684\u7ef4\u5ea6\u4e0a\u6c42\u548c\u4e3a": 33, "\u795e\u7ecf\u7f51\u7edc\u5185\u90e8\u7684\u8bb8\u591a\u5c42\u90fd\u662f": 33, "\u53c2\u6570\u5316": 33, "\u7684": [33, 34, 71, 72, 89, 90, 95, 104, 121, 233, 238], "\u5373\u5728\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u4f1a\u4f18\u5316\u7684\u76f8\u5173\u6743\u91cd\u548c\u504f\u7f6e": 33, "\u901a\u8fc7\u5b50\u7c7b\u5316": 33, "\u53ef\u4ee5\u81ea\u52a8\u8ddf\u8e2a\u6a21\u578b\u5bf9\u8c61\u5185\u5b9a\u4e49\u7684\u6240\u6709\u5b57\u6bb5": 33, "\u5e76\u4f7f\u7528\u6a21\u578b\u7684": 33, "\u65b9\u6cd5\u8bbf\u95ee\u6240\u6709\u53c2\u6570": 33, "\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d": [33, 111, 241, 251], "\u6211\u4eec\u904d\u5386\u6bcf\u4e2a\u53c2\u6570": 33, "\u5e76\u6253\u5370\u5176\u5927\u5c0f\u4ee5\u53ca\u503c\u7684\u9884\u89c8": 33, "buildmodel_tutori": [33, 35, 37, 38], "\u5904\u7406\u6570\u636e\u6837\u672c\u7684\u4ee3\u7801\u53ef\u80fd\u4f1a\u53d8\u5f97\u6df7\u4e71\u4e14\u96be\u4ee5\u7ef4\u62a4": 34, "\u7406\u60f3\u60c5\u51b5\u4e0b": 34, "\u6211\u4eec\u5e0c\u671b\u6570\u636e\u96c6\u4ee3\u7801\u4e0e\u6a21\u578b\u8bad\u7ec3\u4ee3\u7801\u89e3\u8026": 34, "\u4ee5\u63d0\u9ad8\u53ef\u8bfb\u6027\u548c\u6a21\u5757\u5316": 34, "\u63d0\u4f9b\u4e86\u4e24\u4e2a\u6570\u636e\u5904\u7406\u7684\u57fa\u672c\u5de5\u5177": 34, "\u5b83\u4eec\u5141\u8bb8\u60a8\u4f7f\u7528\u9884\u52a0\u8f7d\u7684\u6570\u636e\u96c6\u4ee5\u53ca\u60a8\u81ea\u5df1\u7684\u6570\u636e": 34, "\u5b58\u50a8\u6837\u672c\u53ca\u5176\u5bf9\u5e94\u7684\u6807\u7b7e": [34, 38], "\u800c": [34, 38, 89], "\u5219\u4e3a": 34, "\u5305\u88c5\u4e86\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 34, "\u4ee5\u4fbf\u4e8e\u8bbf\u95ee\u6837\u672c": 34, "\u57df\u5e93\u63d0\u4f9b\u4e86\u8bb8\u591a\u9884\u52a0\u8f7d\u7684\u6570\u636e\u96c6": 34, "\u8fd9\u4e9b\u6570\u636e\u96c6\u662f": 34, "\u5e76\u5b9e\u73b0\u4e86\u7279\u5b9a\u4e8e\u8be5\u6570\u636e\u7684\u51fd\u6570": 34, "\u5b83\u4eec\u53ef\u4ee5\u7528\u4e8e\u6a21\u578b\u7684\u539f\u578b\u8bbe\u8ba1\u548c\u57fa\u51c6\u6d4b\u8bd5": 34, "\u60a8\u53ef\u4ee5\u5728\u4ee5\u4e0b\u94fe\u63a5\u627e\u5230\u8fd9\u4e9b\u6570\u636e\u96c6": 34, "\u56fe\u50cf\u6570\u636e\u96c6": 34, "\u6587\u672c\u6570\u636e\u96c6": 34, "\u97f3\u9891\u6570\u636e\u96c6": 34, "\u4e0b\u9762\u662f\u4e00\u4e2a\u4ece": 34, "\u52a0\u8f7d": [34, 39, 240, 242], "fashion": [34, 49, 60, 94, 96, 107, 122, 124, 126, 134, 162, 166, 169, 171, 220], "\u6570\u636e\u96c6\u7684\u793a\u4f8b": 34, "zalando": 34, "\u7684\u5546\u54c1\u56fe\u7247\u6570\u636e\u96c6": 34, "\u5305\u62ec": [34, 89, 90, 93, 96, 233], "\u4e2a\u8bad\u7ec3\u6837\u672c\u548c": 34, "\u4e2a\u6d4b\u8bd5\u6837\u672c": 34, "\u6bcf\u4e2a\u6837\u672c\u5305\u542b\u4e00\u4e2a": 34, "\u7684\u7070\u5ea6\u56fe\u50cf\u548c\u4e00\u4e2a\u6765\u81ea": 34, "\u4e2a\u7c7b\u522b\u4e4b\u4e00\u7684\u6807\u7b7e": 34, "\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u53c2\u6570\u52a0\u8f7d": 34, "\u6570\u636e\u96c6": [34, 38, 92, 96, 104, 121, 233, 236], "\u662f\u5b58\u50a8\u8bad\u7ec3": 34, "\u6d4b\u8bd5\u6570\u636e\u7684\u8def\u5f84": 34, "\u6307\u5b9a\u662f\u8bad\u7ec3\u96c6\u8fd8\u662f\u6d4b\u8bd5\u96c6": 34, "\u8868\u793a\u5982\u679c\u6570\u636e\u5728": 34, "\u8def\u5f84\u4e2d\u4e0d\u53ef\u7528": 34, "\u5219\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u6570\u636e": 34, "target_transform": [34, 38, 41], "\u6307\u5b9a\u7279\u5f81\u548c\u6807\u7b7e\u7684\u8f6c\u6362": 34, "read_imag": [34, 178], "training_data": [34, 37, 38, 98, 102], "\u6211\u4eec\u53ef\u4ee5\u50cf\u5217\u8868\u4e00\u6837\u624b\u52a8\u7d22\u5f15": 34, "\u4f7f\u7528": [34, 88, 94, 95, 121, 139, 236, 242, 250], "\u6765\u53ef\u89c6\u5316\u8bad\u7ec3\u6570\u636e\u4e2d\u7684\u4e00\u4e9b\u6837\u672c": 34, "labels_map": 34, "shirt": [34, 38, 94, 96, 169], "trouser": [34, 38, 94, 96, 169], "pullov": [34, 38, 94, 96, 169], "dress": [34, 38, 94, 96, 169], "coat": [34, 38, 94, 96, 169], "sandal": [34, 38, 94, 96, 169], "sneaker": [34, 38, 94, 96, 169], "ankl": [34, 38, 94, 96, 169], "boot": [34, 38, 94, 96, 158, 169], "add_subplot": [34, 127, 165, 169], "\u81ea\u5b9a\u4e49\u6570\u636e\u96c6\u7c7b\u5fc5\u987b\u5b9e\u73b0\u4e09\u4e2a\u51fd\u6570": 34, "\u8bf7\u770b\u8fd9\u4e2a\u5b9e\u73b0\u793a\u4f8b": 34, "\u56fe\u50cf\u5b58\u50a8\u5728\u76ee\u5f55": 34, "img_dir": 34, "\u5b83\u4eec\u7684\u6807\u7b7e\u5355\u72ec\u5b58\u50a8\u5728": 34, "csv": [34, 49, 51, 122], "\u6587\u4ef6": [34, 90, 104], "annotations_fil": 34, "\u5177\u4f53\u4ee3\u7801\u5b9e\u73b0\u5982\u4e0b": 34, "customimagedataset": 34, "img_label": 34, "read_csv": [34, 51], "img_path": [34, 117, 178], "iloc": [34, 51], "\u51fd\u6570\u5728\u5b9e\u4f8b\u5316\u6570\u636e\u96c6\u5bf9\u8c61\u65f6\u8fd0\u884c\u4e00\u6b21": 34, "\u6211\u4eec\u521d\u59cb\u5316\u5305\u542b\u56fe\u50cf\u7684\u76ee\u5f55": 34, "\u6ce8\u91ca\u6587\u4ef6\u548c\u4e24\u79cd\u8f6c\u6362": 34, "\u5728\u4e0b\u4e00\u90e8\u5206\u4e2d\u5c06\u66f4\u8be6\u7ec6\u5730\u4ecb\u7ecd": 34, "\u6587\u4ef6\u7684\u5185\u5bb9\u5982\u4e0b": 34, "tshirt1": 34, "tshirt2": 34, "ankleboot999": 34, "\u51fd\u6570\u8fd4\u56de\u6570\u636e\u96c6\u4e2d\u7684\u6837\u672c\u6570\u91cf": 34, "\u51fd\u6570\u52a0\u8f7d\u5e76\u8fd4\u56de\u6570\u636e\u96c6\u4e2d\u7ed9\u5b9a\u7d22\u5f15": 34, "\u7684\u6837\u672c": 34, "\u6839\u636e\u7d22\u5f15": 34, "\u5b83\u786e\u5b9a\u56fe\u50cf\u5728\u78c1\u76d8\u4e0a\u7684\u4f4d\u7f6e": 34, "\u5c06\u5176\u8f6c\u6362\u4e3a\u5f20\u91cf": 34, "\u4ece": [34, 39, 71, 90, 92, 93, 96], "\u4e2d\u7684": [34, 92, 104, 236], "\u6570\u636e\u4e2d\u68c0\u7d22\u76f8\u5e94\u7684\u6807\u7b7e": 34, "\u5bf9\u5b83\u4eec\u8c03\u7528\u8f6c\u6362\u51fd\u6570": 34, "\u5982\u679c\u9002\u7528": 34, "\u5e76\u4ee5\u5143\u7ec4\u5f62\u5f0f\u8fd4\u56de\u5f20\u91cf\u56fe\u50cf\u548c\u76f8\u5e94\u7684\u6807\u7b7e": 34, "\u4e00\u6b21\u68c0\u7d22\u6211\u4eec\u6570\u636e\u96c6\u7684\u4e00\u4e2a\u6837\u672c\u7684\u7279\u5f81\u548c\u6807\u7b7e": 34, "\u5728\u8bad\u7ec3\u6a21\u578b\u65f6": [34, 89], "\u6211\u4eec\u901a\u5e38\u5e0c\u671b\u4ee5": 34, "\u5c0f\u6279\u91cf": 34, "\u7684\u65b9\u5f0f\u4f20\u9012\u6837\u672c": 34, "\u5728\u6bcf\u4e2a\u5468\u671f\u91cd\u65b0\u968f\u673a\u6392\u5217\u6570\u636e\u4ee5\u51cf\u5c11\u6a21\u578b\u8fc7\u62df\u5408": 34, "\u5e76\u4f7f\u7528": [34, 104, 121, 241, 246], "\u52a0\u901f\u6570\u636e\u68c0\u7d22": 34, "\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 34, "\u5b83\u901a\u8fc7\u7b80\u5355\u7684": 34, "\u4e3a\u6211\u4eec\u62bd\u8c61\u4e86\u8fd9\u4e9b\u590d\u6742\u6027": 34, "train_dataload": [34, 37, 38, 75, 115, 118, 148, 165], "shuffl": [34, 44, 45, 51, 52, 55, 73, 87, 92, 94, 96, 97, 104, 113, 115, 116, 117, 122, 123, 129, 135, 157, 158, 162, 166, 168, 169, 178, 221, 236, 250], "test_dataload": [34, 37, 38, 115], "train_featur": 34, "train_label": 34, "\u6211\u4eec\u5df2\u7ecf\u5c06\u6570\u636e\u96c6\u52a0\u8f7d\u5230": 34, "\u5e76\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5bf9\u6570\u636e\u96c6\u8fdb\u884c\u8fed\u4ee3": 34, "\u4e0b\u9762\u7684\u6bcf\u6b21\u8fed\u4ee3\u90fd\u4f1a\u8fd4\u56de\u4e00\u4e2a\u6279\u6b21\u7684": 34, "\u5206\u522b\u5305\u542b": 34, "\u4e2a\u7279\u5f81\u548c\u6807\u7b7e": 34, "\u56e0\u4e3a\u6211\u4eec\u6307\u5b9a\u4e86": 34, "\u6240\u4ee5\u5728\u8fed\u4ee3\u5b8c\u6240\u6709\u6279\u6b21\u540e\u6570\u636e\u4f1a\u88ab\u91cd\u65b0\u6d17\u724c": 34, "\u5982\u679c\u60f3\u5bf9\u6570\u636e\u52a0\u8f7d\u987a\u5e8f\u8fdb\u884c\u66f4\u7cbe\u7ec6\u7684\u63a7\u5236": 34, "\u8bf7\u67e5\u770b": [34, 37, 94, 95], "data_tutori": [34, 35, 37, 38], "quickstart_tutori": [35, 36, 38], "tensorqs_tutori": [35, 40], "tensor_tutori": [35, 46, 48, 57], "dataquickstart_tutori": 35, "transforms_tutori": [35, 41], "autograd_tutori": [35, 37, 43, 46, 57], "optimization_tutori": [35, 37, 38], "saveloadrun_tutori": [35, 38, 39], "sphx_glr_beginner_basics_intro": 35, "sphx_glr_beginner_basics_saveloadrun_tutori": 35, "sphx_glr_beginner_basics_transforms_tutori": 35, "sphx_glr_beginner_basics_autogradqs_tutori": 35, "sphx_glr_beginner_basics_buildmodel_tutori": 35, "sphx_glr_beginner_basics_tensorqs_tutori": 35, "sphx_glr_beginner_basics_optimization_tutori": 35, "sphx_glr_beginner_basics_data_tutori": 35, "sphx_glr_beginner_basics_quickstart_tutori": 35, "suraj": [36, 53, 54, 55, 56, 109, 131, 132, 146, 176], "subramanian": [36, 53, 54, 55, 56, 109, 131, 132, 146, 176], "juarez": 36, "cassi": 36, "breviu": 36, "dmitri": 36, "soshnikov": 36, "ari": 36, "bornstein": 36, "\u5927\u591a\u6570\u673a\u5668\u5b66\u4e60\u5de5\u4f5c\u6d41\u6d89\u53ca\u5904\u7406\u6570\u636e": 36, "\u521b\u5efa\u6a21\u578b": 36, "\u4f18\u5316\u6a21\u578b\u53c2\u6570\u548c\u4fdd\u5b58\u8bad\u7ec3\u597d\u7684\u6a21\u578b": 36, "\u672c\u6559\u7a0b\u5c06\u5411\u60a8\u4ecb\u7ecd\u5728pytorch\u4e2d\u5b9e\u73b0\u7684\u5b8c\u6574ml\u5de5\u4f5c\u6d41": 36, "\u5e76\u63d0\u4f9b\u94fe\u63a5\u4ee5\u4e86\u89e3\u6709\u5173\u8fd9\u4e9b\u6982\u5ff5\u7684\u66f4\u591a\u4fe1\u606f": 36, "\u6211\u4eec\u5c06\u4f7f\u7528fashionmnist\u6570\u636e\u96c6\u6765\u8bad\u7ec3\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 36, "\u8be5\u7f51\u7edc\u53ef\u4ee5\u9884\u6d4b\u8f93\u5165\u56fe\u50cf\u662f\u5426\u5c5e\u4e8e\u4ee5\u4e0b\u7c7b\u522b\u4e4b\u4e00": 36, "t\u6064": 36, "\u4e0a\u8863": 36, "\u957f\u88e4": 36, "\u5957\u5934\u886b": 36, "\u8fde\u8863\u88d9": 36, "\u5916\u5957": 36, "\u51c9\u978b": 36, "\u886c\u886b": 36, "\u8fd0\u52a8\u978b": 36, "\u5305\u6216\u8e1d\u9774": 36, "\u672c\u6559\u7a0b\u5047\u8bbe\u60a8\u5bf9python\u548c\u6df1\u5ea6\u5b66\u4e60\u6982\u5ff5\u6709\u57fa\u672c\u7684\u4e86\u89e3": [36, 88], "\u60a8\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\u8fd0\u884c\u672c\u6559\u7a0b": [36, 88], "\u5728\u4e91\u7aef": [36, 88], "\u8fd9\u662f\u5f00\u59cb\u7684\u6700\u7b80\u5355\u65b9\u5f0f": [36, 88], "\u6bcf\u4e2a\u90e8\u5206\u7684\u9876\u90e8\u90fd\u6709\u4e00\u4e2a": 36, "\u5728microsoft": 36, "learn\u4e2d\u8fd0\u884c": 36, "\u5728googl": 36, "colab\u4e2d\u8fd0\u884c": [36, 236], "\u7684\u94fe\u63a5": 36, "\u5206\u522b\u4f1a\u5728microsoft": 36, "learn\u6216googl": 36, "colab\u4e2d\u6253\u5f00\u4e00\u4e2a\u96c6\u6210\u7684\u7b14\u8bb0\u672c": 36, "\u63d0\u4f9b\u5e26\u6709\u4ee3\u7801\u7684\u5b8c\u5168\u6258\u7ba1\u73af\u5883": 36, "\u672c\u5730\u8fd0\u884c": 36, "\u6b64\u9009\u9879\u9700\u8981\u60a8\u9996\u5148\u5728\u672c\u5730\u673a\u5668\u4e0a\u8bbe\u7f6epytorch\u548ctorchvis": [36, 88], "\u5b89\u88c5\u8bf4\u660e": [36, 88], "\u4e0b\u8f7d\u7b14\u8bb0\u672c\u6216\u5c06\u4ee3\u7801\u590d\u5236\u5230\u60a8\u559c\u6b22\u7684ide\u4e2d": 36, "\u5982\u679c\u60a8\u719f\u6089\u5176\u4ed6\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6": 36, "\u8bf7\u5148\u67e5\u770b": 36, "\u4ee5\u5feb\u901f\u719f\u6089pytorch\u7684api": 36, "\u5982\u679c\u60a8\u662f\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u65b0\u624b": 36, "\u8bf7\u76f4\u63a5\u8fdb\u5165\u6211\u4eec\u9010\u6b65\u6307\u5357\u7684\u7b2c\u4e00\u90e8\u5206": 36, "\u4f18\u5316\u6a21\u578b": 36, "\u4fdd\u5b58": [36, 240, 242], "\u52a0\u8f7d\u548c\u4f7f\u7528\u6a21\u578b": 36, "\u73b0\u5728\u6211\u4eec\u6709\u4e86\u6a21\u578b\u548c\u6570\u636e": 37, "\u662f\u65f6\u5019\u901a\u8fc7\u5728\u6570\u636e\u4e0a\u4f18\u5316\u6a21\u578b\u53c2\u6570\u6765\u8bad\u7ec3": 37, "\u9a8c\u8bc1\u548c\u6d4b\u8bd5\u6211\u4eec\u7684\u6a21\u578b\u4e86": 37, "\u8bad\u7ec3\u6a21\u578b\u662f\u4e00\u4e2a\u8fed\u4ee3\u8fc7\u7a0b": 37, "\u5728\u6bcf\u6b21\u8fed\u4ee3\u4e2d": 37, "\u6a21\u578b\u4f1a\u5bf9\u8f93\u51fa\u8fdb\u884c\u731c\u6d4b": 37, "\u8ba1\u7b97\u5176\u731c\u6d4b\u7684\u8bef\u5dee": 37, "\u635f\u5931": [37, 89, 96], "\u6536\u96c6\u8bef\u5dee\u76f8\u5bf9\u4e8e\u5176\u53c2\u6570\u7684\u5bfc\u6570": 37, "\u5982\u6211\u4eec\u5728": 37, "\u524d\u4e00\u8282": 37, "_\u4e2d\u6240\u89c1": 37, "\u5e76\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u6cd5": 37, "\u4f18\u5316": [37, 92, 250], "\u8fd9\u4e9b\u53c2\u6570": 37, "\u6709\u5173\u6b64\u8fc7\u7a0b\u7684\u66f4\u8be6\u7ec6\u8bb2\u89e3": 37, "3blue1brown": [37, 43], "\u7684\u8fd9\u4e2a\u89c6\u9891": 37, "www": [37, 49, 94, 104, 137, 165, 178, 236, 260, 262, 269, 271], "youtub": [37, 53, 54, 55, 56, 89, 90, 92, 93, 94, 95, 96, 121, 131, 132, 175], "tiehlnjs5u8": 37, "\u6211\u4eec\u52a0\u8f7d\u524d\u51e0\u8282\u4e2d\u7684": 37, "\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668": 37, "_\u548c": 37, "\u6784\u5efa\u6a21\u578b": [37, 88, 89, 90, 92, 94, 95, 96], "_\u7684\u4ee3\u7801": 37, "flatten": [37, 38, 44, 47, 68, 69, 73, 87, 97, 105, 111, 118, 123, 124, 129, 134, 136, 138, 146, 148, 150, 154, 157, 162, 193, 195, 203, 209, 219, 231, 233, 239], "\u8d85\u53c2\u6570\u662f\u53ef\u8c03\u53c2\u6570": 37, "\u5b83\u4eec\u53ef\u4ee5\u8ba9\u60a8\u63a7\u5236\u6a21\u578b\u7684\u4f18\u5316\u8fc7\u7a0b": 37, "\u4e0d\u540c\u7684\u8d85\u53c2\u6570\u503c\u4f1a\u5f71\u54cd\u6a21\u578b\u7684\u8bad\u7ec3\u548c\u6536\u655b\u901f\u5ea6": 37, "\u9605\u8bfb\u66f4\u591a": 37, "\u5173\u4e8e\u8d85\u53c2\u6570\u8c03\u6574\u7684\u5185\u5bb9": 37, "\u6211\u4eec\u4e3a\u8bad\u7ec3\u5b9a\u4e49\u4ee5\u4e0b\u8d85\u53c2\u6570": 37, "epoch\u6570\u91cf": 37, "\u8fed\u4ee3\u6574\u4e2a\u6570\u636e\u96c6\u7684\u6b21\u6570": 37, "\u6279\u91cf\u5927\u5c0f": 37, "\u5728\u66f4\u65b0\u53c2\u6570\u4e4b\u524d": 37, "\u901a\u8fc7\u7f51\u7edc\u4f20\u64ad\u7684\u6570\u636e\u6837\u672c\u6570\u91cf": 37, "\u5b66\u4e60\u7387": 37, "\u5728\u6bcf\u4e2a\u6279\u6b21": 37, "epoch\u4e2d\u66f4\u65b0\u6a21\u578b\u53c2\u6570\u7684\u5e45\u5ea6": 37, "\u8f83\u5c0f\u7684\u503c\u4f1a\u5bfc\u81f4\u5b66\u4e60\u901f\u5ea6\u7f13\u6162": 37, "\u800c\u8f83\u5927\u7684\u503c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u4e0d\u53ef\u9884\u6d4b\u7684\u884c\u4e3a": 37, "learning_r": [37, 47, 49, 63, 64, 68, 69, 71, 72, 97, 111, 126, 127, 128, 137, 148, 165], "\u4e00\u65e6\u8bbe\u7f6e\u597d\u8d85\u53c2\u6570": 37, "\u6211\u4eec\u5c31\u53ef\u4ee5\u7528\u4f18\u5316\u5faa\u73af\u6765\u8bad\u7ec3\u548c\u4f18\u5316\u6211\u4eec\u7684\u6a21\u578b": 37, "\u4f18\u5316\u5faa\u73af\u7684\u6bcf\u6b21\u8fed\u4ee3\u79f0\u4e3a\u4e00\u4e2a": 37, "\u6bcf\u4e2aepoch\u7531\u4e24\u4e2a\u4e3b\u8981\u90e8\u5206\u7ec4\u6210": 37, "\u8bad\u7ec3\u5faa\u73af": 37, "\u8fed\u4ee3\u8bad\u7ec3\u6570\u636e\u96c6\u5e76\u5c1d\u8bd5\u6536\u655b\u5230\u6700\u4f73\u53c2\u6570": 37, "\u9a8c\u8bc1": [37, 96], "\u6d4b\u8bd5\u5faa\u73af": 37, "\u8fed\u4ee3\u6d4b\u8bd5\u6570\u636e\u96c6\u4ee5\u68c0\u67e5\u6a21\u578b\u6027\u80fd\u662f\u5426\u6709\u63d0\u9ad8": 37, "\u8ba9\u6211\u4eec\u7b80\u8981\u4e86\u89e3\u8bad\u7ec3\u5faa\u73af\u4e2d\u4f7f\u7528\u7684\u4e00\u4e9b\u6982\u5ff5": 37, "\u8df3\u5230\u524d\u9762\u67e5\u770b\u4f18\u5316\u5faa\u73af\u7684": 37, "\u5f53\u9762\u5bf9\u4e00\u4e9b\u8bad\u7ec3\u6570\u636e\u65f6": 37, "\u6211\u4eec\u672a\u8bad\u7ec3\u7684\u7f51\u7edc\u53ef\u80fd\u4e0d\u4f1a\u7ed9\u51fa\u6b63\u786e\u7684\u7b54\u6848": 37, "\u8861\u91cf\u83b7\u5f97\u7684\u7ed3\u679c\u4e0e\u76ee\u6807\u503c\u7684\u5dee\u5f02\u7a0b\u5ea6": 37, "\u8fd9\u662f\u6211\u4eec\u5728\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u5e0c\u671b\u6700\u5c0f\u5316\u7684": 37, "\u8981\u8ba1\u7b97\u635f\u5931": 37, "\u6211\u4eec\u4f7f\u7528\u7ed9\u5b9a\u6570\u636e\u6837\u672c\u7684\u8f93\u5165\u8fdb\u884c\u9884\u6d4b": 37, "\u5e76\u5c06\u5176\u4e0e\u771f\u5b9e\u7684\u6570\u636e\u6807\u7b7e\u503c\u8fdb\u884c\u6bd4\u8f83": 37, "\u5e38\u89c1\u7684\u635f\u5931\u51fd\u6570\u5305\u62ec\u7528\u4e8e\u56de\u5f52\u4efb\u52a1\u7684": 37, "\u5747\u65b9\u8bef\u5dee": [37, 93], "\u4ee5\u53ca\u7528\u4e8e\u5206\u7c7b\u7684": 37, "nllloss": [37, 99, 102, 103, 110, 115, 127, 128, 165], "\u8d1f\u5bf9\u6570\u4f3c\u7136": 37, "_\u7ed3\u5408\u4e86": 37, "logsoftmax": [37, 78, 110, 115, 127, 128], "\u6211\u4eec\u5c06\u6a21\u578b\u7684\u8f93\u51falogits\u4f20\u9012\u7ed9": 37, "\u5b83\u5c06\u6807\u51c6\u5316logits\u5e76\u8ba1\u7b97\u9884\u6d4b\u8bef\u5dee": 37, "loss_fn": [37, 38, 68, 69, 78, 96, 111, 118, 133, 134, 136, 146, 149, 154, 161, 214, 230, 258], "\u4f18\u5316\u662f\u8c03\u6574\u6a21\u578b\u53c2\u6570\u4ee5\u51cf\u5c11\u6bcf\u6b21\u8bad\u7ec3\u6b65\u9aa4\u4e2d\u7684\u6a21\u578b\u8bef\u5dee\u7684\u8fc7\u7a0b": 37, "\u4f18\u5316\u7b97\u6cd5": 37, "\u5b9a\u4e49\u4e86\u8fd9\u4e2a\u8fc7\u7a0b\u5982\u4f55\u8fdb\u884c": 37, "\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u6211\u4eec\u4f7f\u7528\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u6cd5": 37, "\u6240\u6709\u4f18\u5316\u903b\u8f91\u90fd\u5c01\u88c5\u5728": 37, "\u5bf9\u8c61\u4e2d": 37, "\u5728\u8fd9\u91cc": [37, 90, 92, 96, 111, 242], "\u6211\u4eec\u4f7f\u7528sgd\u4f18\u5316\u5668": 37, "\u6b64\u5916": [37, 93], "pytorch\u4e2d\u8fd8\u6709\u8bb8\u591a": 37, "\u4e0d\u540c\u7684\u4f18\u5316\u5668": 37, "\u5982adam\u548crmsprop": 37, "\u5b83\u4eec\u5bf9\u4e0d\u540c\u7c7b\u578b\u7684\u6a21\u578b\u548c\u6570\u636e\u6548\u679c\u66f4\u597d": 37, "\u6211\u4eec\u901a\u8fc7\u6ce8\u518c\u9700\u8981\u8bad\u7ec3\u7684\u6a21\u578b\u53c2\u6570\u5e76\u4f20\u5165\u5b66\u4e60\u7387\u8d85\u53c2\u6570\u6765\u521d\u59cb\u5316\u4f18\u5316\u5668": 37, "\u5728\u8bad\u7ec3\u5faa\u73af\u4e2d": 37, "\u4f18\u5316\u5206\u4e3a\u4e09\u4e2a\u6b65\u9aa4": 37, "\u8c03\u7528": [37, 95, 104, 240, 241, 246], "\u6765\u91cd\u7f6e\u6a21\u578b\u53c2\u6570\u7684\u68af\u5ea6": 37, "\u68af\u5ea6\u4f1a\u7d2f\u52a0": 37, "\u4e3a\u9632\u6b62\u91cd\u590d\u8ba1\u7b97": 37, "\u6211\u4eec\u5728\u6bcf\u6b21\u8fed\u4ee3\u65f6\u663e\u5f0f\u5c06\u5176\u5f52\u96f6": 37, "\u53cd\u5411\u4f20\u64ad\u9884\u6d4b\u635f\u5931": 37, "pytorch\u4f1a\u5c06\u635f\u5931\u76f8\u5bf9\u4e8e\u6bcf\u4e2a\u53c2\u6570\u7684\u68af\u5ea6\u5b58\u50a8\u4e0b\u6765": 37, "\u4e00\u65e6\u6211\u4eec\u6709\u4e86\u68af\u5ea6": 37, "\u5c31\u8c03\u7528": 37, "\u901a\u8fc7\u53cd\u5411\u4f20\u64ad\u4e2d\u6536\u96c6\u7684\u68af\u5ea6\u6765\u8c03\u6574\u53c2\u6570": 37, "\u6211\u4eec\u5b9a\u4e49\u4e86": 37, "train_loop": 37, "\u6765\u5faa\u73af\u6267\u884c\u4f18\u5316\u4ee3\u7801": 37, "\u5e76\u5b9a\u4e49\u4e86": 37, "test_loop": 37, "\u6765\u8bc4\u4f30\u6a21\u578b\u5728\u6d4b\u8bd5\u6570\u636e\u4e0a\u7684\u6027\u80fd": 37, "unnecessari": [37, 171, 177, 212], "7f": [37, 38], "8f": [37, 38], "\u6211\u4eec\u521d\u59cb\u5316\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668": 37, "\u5e76\u5c06\u5b83\u4eec\u4f20\u9012\u7ed9": 37, "\u60a8\u53ef\u4ee5\u5c1d\u8bd5\u589e\u52a0epoch\u7684\u6570\u91cf\u4ee5\u89c2\u5bdf\u6a21\u578b\u6027\u80fd\u7684\u63d0\u5347": 37, "warmstart": [37, 235], "\u672c\u8282\u5c06\u4ecb\u7ecd\u673a\u5668\u5b66\u4e60\u4efb\u52a1\u4e2d\u5e38\u7528\u7684api": 38, "\u60f3\u66f4\u6df1\u5165\u4e86\u89e3\u5404\u6a21\u5757\u5185\u5bb9": 38, "\u53ef\u53c2\u8003\u6bcf\u8282\u6587\u672b\u5904\u7684\u94fe\u63a5": 38, "\u63d0\u4f9b\u4e86\u4e24\u4e2a\u7528\u4e8e": 38, "\u5904\u7406\u6570\u636e\u7684\u539f\u8bed": 38, "\u5219\u5728": 38, "\u5916\u90e8\u5c01\u88c5\u4e00\u5c42": 38, "\u53d8\u4e3a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 38, "\u63d0\u4f9b\u4e86\u7279\u5b9a\u9886\u57df\u7684\u5e93": 38, "torchaudio": [38, 50, 92, 96, 121, 122, 158, 168, 184, 187, 236], "\u6240\u6709\u8fd9\u4e9b\u5e93\u90fd\u5305\u542b\u4e86\u5bf9\u5e94\u6570\u636e\u96c6": 38, "\u5728\u672c\u6559\u7a0b\u4e2d": [38, 233, 238, 240, 242, 243, 246, 248, 249, 250], "\u6211\u4eec\u5c06\u4f7f\u7528": [38, 89, 90, 96, 104, 233, 236, 238, 240, 241, 242, 243, 248, 249], "\u6a21\u5757\u5305\u542b\u8bb8\u591a\u73b0\u5b9e\u4e16\u754c\u89c6\u89c9\u6570\u636e": 38, "cifar": [38, 44, 92, 169], "coco": [38, 178], "\u6570\u636e\u96c6\u5217\u8868": 38, "\u6211\u4eec\u4f7f\u7528": [38, 41, 96, 104, 111, 249], "\u6bcf\u4e2atorchvis": 38, "\u5305\u62ec\u4e24\u4e2a\u53c2\u6570": 38, "\u5206\u522b\u7528\u4e8e\u4fee\u6539\u6837\u672c\u6570\u636e\u548c\u6807\u7b7e": 38, "\u6211\u4eec\u5c06": [38, 90, 95], "\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9": 38, "\u5728\u6570\u636e\u96c6\u4e0a\u5c01\u88c5\u4e86\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 38, "\u652f\u6301\u81ea\u52a8\u6279\u5904\u7406": 38, "\u91c7\u6837": 38, "\u6253\u4e71\u548c\u591a\u8fdb\u7a0b\u6570\u636e\u52a0\u8f7d": 38, "\u8fd9\u91cc\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u6279\u5904\u7406\u5927\u5c0f\u4e3a": 38, "\u5373": [38, 89, 104], "\u6bcf\u6279\u5c06\u8fd4\u56de\u5927\u5c0f\u4e3a": 38, "\u7684\u7279\u5f81\u6570\u636e\u548c\u6807\u7b7e": 38, "\u83b7\u53d6\u66f4\u591a\u5173\u4e8e": 38, "pytorch\u6570\u636e\u52a0\u8f7d": 38, "\u7684\u4fe1\u606f": 38, "\u8981\u5728": [38, 72], "\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 38, "\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u7ee7\u627f\u81ea": 38, "\u7684\u7c7b": [38, 93], "\u6211\u4eec\u5728": [38, 94, 104], "\u51fd\u6570\u4e2d\u5b9a\u4e49\u7f51\u7edc\u7684\u5c42": 38, "\u51fd\u6570\u4e2d\u6307\u5b9a\u6570\u636e\u5982\u4f55\u7ecf\u8fc7\u7f51\u7edc": 38, "\u4e3a\u4e86\u52a0\u901f\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u8fd0\u7b97": 38, "\u6211\u4eec\u5c06\u5176\u79fb\u5230": 38, "pytorch\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": 38, "\u7684\u5185\u5bb9": 38, "\u7ec3\u4e00\u4e2a\u6a21\u578b": 38, "\u6211\u4eec\u9700\u8981\u4e00\u4e2a": 38, "\u635f\u5931\u51fd\u6570": [38, 89, 92, 104], "\u548c\u4e00\u4e2a": 38, "\u4f18\u5316\u5668": [38, 92, 241, 242, 249], "\u5728\u5355\u4e2a\u8bad\u7ec3\u5faa\u73af\u4e2d": 38, "\u6a21\u578b\u5bf9\u8bad\u7ec3\u6570\u636e\u96c6": 38, "\u5206\u6279\u8f93\u5165": 38, "\u8fdb\u884c\u9884\u6d4b": 38, "\u5e76\u901a\u8fc7\u53cd\u5411\u4f20\u64ad\u9884\u6d4b\u8bef\u5dee\u6765\u8c03\u6574\u6a21\u578b\u7684\u53c2\u6570": 38, "\u6211\u4eec\u8fd8\u9700\u68c0\u67e5\u6a21\u578b\u5728\u6d4b\u8bd5\u6570\u636e\u96c6\u4e0a\u7684\u6548\u679c": 38, "\u4ee5\u786e\u4fdd\u5b83\u5728\u6301\u7eed\u5b66\u4e60": 38, "\u901a\u8fc7\u591a\u6b21\u8fed\u4ee3": 38, "\u8fdb\u884c\u8bad\u7ec3": 38, "\u5728\u6bcf\u4e2a\u8fed\u4ee3\u8fc7\u7a0b\u4e2d": 38, "\u6a21\u578b\u901a\u8fc7\u5bf9\u53c2\u6570\u7684\u5b66\u4e60\u4ee5\u63d0\u9ad8\u9884\u6d4b\u51c6\u786e\u6027": 38, "\u6211\u4eec\u5728\u6bcf\u4e2a": [38, 104], "\u6253\u5370\u6a21\u578b\u7684\u51c6\u786e\u7387\u548c\u635f\u5931": 38, "\u6211\u4eec\u5e0c\u671b\u770b\u5230\u968f\u7740\u6bcf\u4e2a": 38, "\u8bad\u7ec3": [38, 96, 236], "\u6a21\u578b\u9884\u6d4b\u51c6\u786e\u7387\u4e0d\u65ad\u63d0\u9ad8": 38, "\u635f\u5931\u9010\u6e10\u51cf\u5c11": 38, "\u8bad\u7ec3\u6a21\u578b": [38, 88, 89, 90, 92, 93, 94, 95], "\u4fdd\u5b58\u6a21\u578b\u7684\u5e38\u89c1\u65b9\u6cd5\u662f\u5c06\u5185\u90e8\u72b6\u6001\u5b57\u5178": 38, "\u5305\u542b\u6a21\u578b\u53c2\u6570": 38, "\u5e8f\u5217\u5316": 38, "\u52a0\u8f7d\u6a21\u578b\u7684\u8fc7\u7a0b\u5305\u62ec\u91cd\u65b0\u521b\u5efa\u6a21\u578b\u7ed3\u6784\u5e76\u52a0\u8f7d\u5176\u5185\u90e8\u72b6\u6001\u5b57\u5178": 38, "\u8fd9\u4e2a\u6a21\u578b\u73b0\u5728\u53ef\u4ee5\u7528\u6765\u8fdb\u884c\u9884\u6d4b\u4e86": 38, "\u83b7\u53d6\u66f4\u591a\u6709\u5173": 38, "\u5728\u672c\u8282\u4e2d": 39, "\u6211\u4eec\u5c06\u5b66\u4e60\u5982\u4f55\u901a\u8fc7\u4fdd\u5b58": 39, "\u52a0\u8f7d\u4ee5\u53ca\u8fd0\u884c\u6a21\u578b\u9884\u6d4b": 39, "\u6765\u6301\u4e45\u5316\u6a21\u578b": 39, "pytorch\u6a21\u578b\u5c06\u5b66\u4e60\u5230\u7684\u53c2\u6570\u5b58\u50a8\u5728\u4e00\u4e2a\u5185\u90e8\u72b6\u6001\u5b57\u5178\u4e2d": 39, "\u8fd9\u4e9b\u53c2\u6570\u53ef\u4ee5\u901a\u8fc7": 39, "\u8fdb\u884c\u6301\u4e45\u5316": 39, "vgg16": [39, 147], "imagenet1k_v1": [39, 90, 117, 139, 168, 195, 229], "model_weight": 39, "\u8981\u52a0\u8f7d\u6a21\u578b\u6743\u91cd": 39, "\u60a8\u9700\u8981\u5148\u521b\u5efa\u4e00\u4e2a\u76f8\u540c\u6a21\u578b\u7684\u5b9e\u4f8b": 39, "\u7136\u540e\u4f7f\u7528": [39, 241, 243], "\u65b9\u6cd5\u52a0\u8f7d\u53c2\u6570": 39, "untrain": 39, "\u6ce8\u610f": [39, 89, 90, 95, 96, 104, 238, 240, 242, 250], "\u5728\u8fdb\u884c\u63a8\u7406\u4e4b\u524d": 39, "\u8bf7\u786e\u4fdd\u8c03\u7528": [39, 240], "\u65b9\u6cd5\u4ee5\u5c06": 39, "layers\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": [39, 242], "\u5982\u679c\u4e0d\u8fd9\u6837\u505a": [39, 241], "\u5c06\u5bfc\u81f4\u4e0d\u4e00\u81f4\u7684\u63a8\u7406\u7ed3\u679c": 39, "\u5728\u52a0\u8f7d\u6a21\u578b\u6743\u91cd\u65f6": 39, "\u6211\u4eec\u9700\u8981\u5148\u5b9e\u4f8b\u5316\u6a21\u578b\u7c7b": 39, "\u56e0\u4e3a\u7c7b\u5b9a\u4e49\u4e86\u7f51\u7edc\u7684\u7ed3\u6784": 39, "\u6211\u4eec\u53ef\u80fd\u5e0c\u671b\u5c06\u8fd9\u4e2a\u7c7b\u7684\u7ed3\u6784\u4e0e\u6a21\u578b\u4e00\u8d77\u4fdd\u5b58": 39, "\u6211\u4eec\u53ef\u4ee5\u5c06": 39, "\u800c\u4e0d\u662f": [39, 89, 95, 96, 104, 111], "\u4f20\u9012\u7ed9": [39, 238, 240], "\u51fd\u6570": [39, 41, 89, 92, 104, 111, 233, 238, 240, 242], "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u65b9\u5f0f\u52a0\u8f7d\u6a21\u578b": 39, "\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528checkpoint": 39, "\u7684\u5b9e\u7528\u6280\u5de7": 39, "\u7c7b\u4f3c\u4e8e\u6570\u7ec4\u548c\u77e9\u9635": 40, "\u5f20\u91cf\u4e5f\u662f\u4e00\u79cd\u7279\u5b9a\u7684\u6570\u636e\u7ed3\u6784": 40, "\u5728pytorch\u4e2d": [40, 111, 233, 242], "\u6211\u4eec\u4f7f\u7528\u5f20\u91cf\u5bf9\u4e00\u4e2a\u6a21\u578b\u7684\u53c2\u6570": 40, "\u8f93\u5165\u548c\u8f93\u51fa\u8fdb\u884c\u7f16\u7801": 40, "\u5f20\u91cf\u7684\u7ed3\u6784\u7c7b\u4f3c\u4e8e": 40, "\u4e2d\u7684ndarrai": 40, "\u800c\u5f20\u91cf\u53ef\u4ee5\u8fd0\u884c\u5728gpu\u53ca\u5176\u4ed6\u76f8\u4f3c\u7684\u786c\u4ef6\u52a0\u901f\u5668\u4e0a": 40, "\u4e8b\u5b9e\u4e0a": [40, 92, 93], "\u4e3a\u4e86\u51cf\u5c11\u6570\u636e\u7684\u62f7\u8d1d": 40, "\u5f20\u91cf\u548cnumpi": 40, "arrays\u5728\u5e95\u5c42\u5e38\u5e38\u5171\u4eab\u540c\u4e00\u5757\u5185\u5b58": 40, "bridg": [40, 85, 225], "role": [40, 103, 156, 163, 177, 262, 271], "\u5728\u81ea\u52a8\u5fae\u5206": 40, "\u7684\u8fc7\u7a0b\u4e2d\u4e5f\u4f7f\u7528\u5f20\u91cf\u8fdb\u884c\u4f18\u5316": 40, "\u5728\u540e\u7eed": 40, "\u7ae0\u8282\u53ef\u4ee5\u770b\u5230\u66f4\u591a\u6709\u5173\u5185\u5bb9": 40, "\u5982\u679c\u5df2\u7ecf\u5bf9ndarrays\u5341\u5206\u719f\u6089\u4e86": 40, "\u90a3\u5bf9\u5f20\u91cf\u7684api\u4e5f\u53ef\u4ee5\u8fd0\u7528\u81ea\u5982": 40, "\u5982\u679c\u8fd8\u4e0d\u719f\u6089": 40, "\u4e0b\u9762\u7684\u6559\u7a0b\u4f1a\u5e2e\u52a9\u4f60\u4e0a\u624b": 40, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u65b9\u5f0f\u521b\u5efa\u4e00\u4e2a\u5f20\u91cf": 40, "\u4f7f\u7528\u6570\u636e\u521b\u5efa": 40, "\u901a\u8fc7\u5df2\u5b9a\u4e49\u7684\u6570\u636e\u53ef\u4ee5\u76f4\u63a5\u521b\u5efa\u51fa\u6765\u5f20\u91cf": 40, "\u521b\u5efa\u65f6\u4f1a\u81ea\u52a8\u63a8\u65ad\u6570\u636e\u7c7b\u578b": 40, "x_data": [40, 48], "\u4f7f\u7528numpi": 40, "array\u521b\u5efa": 40, "\u53ef\u4ee5\u4f7f\u7528numpi": 40, "array\u521b\u5efa\u5f20\u91cf": 40, "\u53cd\u4e4b\u4ea6\u53ef": 40, "np_arrai": [40, 48], "x_np": [40, 48], "\u4f7f\u7528\u5df2\u6709\u5f20\u91cf\u521b\u5efa": 40, "\u65b0\u7684\u5f20\u91cf\u4f1a\u4fdd\u7559\u539f\u5f20\u91cf\u7684\u5c5e\u6027": 40, "\u5f62\u72b6": [40, 95], "\u6570\u636e\u7c7b\u578b": [40, 72], "\u9664\u975e\u521b\u5efa\u65f6\u663e\u793a\u58f0\u660e": 40, "x_one": [40, 48], "Ones": [40, 48], "x_rand": [40, 48], "rand_lik": [40, 48, 95, 141, 153], "\u901a\u8fc7\u968f\u673a\u6216\u5e38\u91cf\u521b\u5efa": 40, "\u63cf\u8ff0\u4e86\u5f20\u91cf\u7684\u7ef4\u5ea6": 40, "\u5728\u4e0b\u9762\u7684\u65b9\u6cd5\u8c03\u7528\u65f6": 40, "\u901a\u8fc7\u5b83\u6765\u58f0\u660e\u521b\u5efa\u5f20\u91cf\u7684\u7ef4\u5ea6": 40, "rand_tensor": [40, 48], "ones_tensor": [40, 48], "zeros_tensor": [40, 48], "\u5f20\u91cf\u7684\u5c5e\u6027\u4fdd\u5b58\u4e86\u5176\u5f62\u72b6": 40, "\u4ee5\u53ca\u5176\u5b58\u50a8\u8bbe\u5907\u7c7b\u578b": 40, "\u5f20\u91cf\u6709\u8d85\u8fc7100\u4e2a\u64cd\u4f5c\u65b9\u6cd5": 40, "\u5305\u62ec\u7b97\u6570": 40, "\u7ebf\u6027\u4ee3\u6570": 40, "\u77e9\u9635\u64cd\u4f5c": 40, "\u8f6c\u7f6e": 40, "\u7d22\u5f15": 40, "\u5207\u7247": 40, "\u91c7\u6837\u7b49": 40, "\u90fd\u5728": 40, "\u8fd9\u91cc": [40, 41, 90, 93, 95, 96, 104], "\u6709\u8be6\u7ec6\u7684\u63cf\u8ff0": 40, "\u6bcf\u4e2a\u64cd\u4f5c\u90fd\u53ef\u4ee5\u5728gpu\u4e0a\u8fd0\u884c": 40, "\u901a\u5e38\u6bd4\u5728cpu\u4e0a\u901f\u5ea6\u66f4\u5feb": 40, "\u5982\u679c\u4f60\u5728\u4f7f\u7528colab": 40, "\u53ef\u4ee5\u901a\u8fc7\u4fee\u6539runtim": 40, "gpu\u6765\u5206\u914d\u4e00\u4e2agpu": 40, "\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5f20\u91cf\u662f\u5728cpu\u4e0a\u521b\u5efa\u7684": 40, "\u53ef\u4ee5\u901a\u8fc7": [40, 93], "\u65b9\u6cd5\u5c06\u5f20\u91cf\u663e\u793a\u7684\u8f6c\u79fb\u5230gpu\u4e0a": 40, "\u5982\u679cgpu\u5728\u4f60\u7684\u73af\u5883\u91cc\u53ef\u7528\u7684\u8bdd": 40, "\u9700\u8981\u6ce8\u610f\u7684\u662f": 40, "\u5728\u4e0d\u540c\u8bbe\u5907\u95f4\u590d\u5236\u5927\u578b\u5f20\u91cf\u9700\u8981\u6d88\u8017\u5927\u91cf\u5185\u5b58": 40, "\u5e76\u4e14\u8017\u65f6\u8f83\u957f": 40, "\u5c1d\u8bd5\u4e0b\u5217\u64cd\u4f5c": 40, "\u5982\u679c\u4f60\u5df2\u7ecf\u5bf9numpi": 40, "api\u5341\u5206\u719f\u6089": 40, "\u4e0a\u624b\u5f20\u91cfapi\u5c06\u4f1a\u5f88\u7b80\u5355": 40, "\u7c7b\u4f3cnumpy\u7684\u7d22\u5f15\u548c\u5207\u7247\u64cd\u4f5c": 40, "\u8fde\u63a5\u5f20\u91cf": 40, "\u4f60\u53ef\u4ee5\u4f7f\u7528": [40, 95], "\u6cbf\u7740\u7ed9\u5b9a\u7684\u7ef4\u5ea6\u8fde\u63a5\u4e00\u7cfb\u5217\u5f20\u91cf": 40, "\u53e6\u4e00\u4e2a\u5f20\u91cf\u8fde\u63a5\u64cd\u4f5c\u7b26": 40, "\u4e0e": [40, 92, 93, 95, 111], "\u7a0d\u6709\u4e0d\u540c": 40, "\u8bf7\u53c2\u9605": [40, 89, 94, 95, 246], "\u8fd0\u7b97\u64cd\u4f5c": 40, "y1": [40, 178, 245], "y2": 40, "y3": 40, "wise": [40, 48, 73, 95, 99, 110, 124, 135, 144, 147, 150], "z1": [40, 144], "z2": 40, "z3": 40, "\u5355\u4e2a\u5143\u7d20\u7684\u5f20\u91cf": 40, "\u5728\u805a\u5408\u8fd0\u7b97\u573a\u666f\u4e2d": 40, "\u4f60\u53ef\u80fd\u4f1a\u5f97\u5230\u4e00\u4e2a\u5355\u5143\u7d20\u7684\u5f20\u91cf": 40, "\u53ef\u4f7f\u7528": 40, "\u5c06\u5176\u4f20\u5524\u4e3apython\u6570\u503c": 40, "agg": [40, 149, 165], "agg_item": 40, "\u539f\u5730\u64cd\u4f5c": 40, "\u4fee\u6539\u5f20\u91cf\u4e2d\u7684\u539f\u503c\u64cd\u4f5c\u79f0\u4e3a\u539f\u5730\u64cd\u4f5c": 40, "\u5b83\u4eec\u4ee5": 40, "\u540e\u7f00\u8868\u793a": 40, "t_": [40, 48, 262, 271], "\u4f1a\u6539\u53d8": 40, "add_": [40, 48, 80, 95, 127, 128, 173, 174, 189, 206, 216], "\u5f20\u91cf\u5728\u4f7f\u7528cpu\u65f6": 40, "\u53ef\u4e0enumpi": 40, "arrays\u5171\u4eab\u5185\u5b58\u7a7a\u95f4": 40, "\u4fee\u6539\u5176\u4e2d\u4e00\u4e2a\u4f1a\u540c\u6b65\u6620\u5c04\u5230\u53e6\u4e00\u4e2a\u4e0a": 40, "\u5bf9\u4e8e\u5f20\u91cf\u7684\u4fee\u6539\u4f53\u73b0\u5230\u4e86numpi": 40, "array\u4e0a": 40, "\u6570\u636e\u5e76\u4e0d\u603b\u662f\u4ee5\u8bad\u7ec3\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u6240\u9700\u7684\u6700\u7ec8\u5904\u7406\u5f62\u5f0f\u5448\u73b0": 41, "\u6765\u5bf9\u6570\u636e\u8fdb\u884c\u4e00\u4e9b\u5904\u7406": 41, "\u4f7f\u5176\u9002\u7528\u4e8e\u8bad\u7ec3": 41, "\u6240\u6709": [41, 95], "\u6570\u636e\u96c6\u90fd\u6709\u4e24\u4e2a\u53c2\u6570": 41, "\u7528\u4e8e\u4fee\u6539\u7279\u5f81": 41, "\u7528\u4e8e\u4fee\u6539\u6807\u7b7e": 41, "\u5b83\u4eec\u63a5\u53d7\u5305\u542b\u8f6c\u6362\u903b\u8f91\u7684\u53ef\u8c03\u7528\u5bf9\u8c61": 41, "\u6a21\u5757\u63d0\u4f9b\u4e86\u51e0\u79cd\u5e38\u7528\u7684\u8f6c\u6362": 41, "\u7684\u7279\u5f81\u662f\u4ee5": 41, "\u56fe\u50cf\u683c\u5f0f\u5448\u73b0\u7684": 41, "\u6807\u7b7e\u662f\u6574\u6570": 41, "\u5bf9\u4e8e\u8bad\u7ec3": 41, "\u6211\u4eec\u9700\u8981\u5c06\u7279\u5f81\u8f6c\u6362\u4e3a\u5f52\u4e00\u5316\u7684\u5f20\u91cf": 41, "\u5c06\u6807\u7b7e\u8f6c\u6362\u4e3a\u7f16\u7801\u7684\u5f20\u91cf": 41, "\u4e3a\u4e86\u8fdb\u884c\u8fd9\u4e9b\u8f6c\u6362": 41, "\u6211\u4eec\u4f7f\u7528\u4e86": 41, "ds": [41, 127, 128, 165], "scatter_": [41, 134, 149, 161], "\u5c06": [41, 92, 121, 242, 243], "\u56fe\u50cf\u6216": 41, "ndarrai": [41, 48, 51, 95, 110, 171], "\u8f6c\u6362\u4e3a": 41, "floattensor": [41, 49, 60, 95], "\u5e76\u5c06\u56fe\u50cf\u7684\u50cf\u7d20\u5f3a\u5ea6\u503c\u7f29\u653e\u5230\u8303\u56f4": 41, "\u5e94\u7528\u4efb\u4f55\u7528\u6237\u5b9a\u4e49\u7684": 41, "\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u5c06\u6574\u6570\u8f6c\u6362\u4e3a\u72ec\u70ed\u7f16\u7801\u7684\u5f20\u91cf": 41, "\u5b83\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u5927\u5c0f\u4e3a": 41, "\u6211\u4eec\u6570\u636e\u96c6\u4e2d\u6807\u7b7e\u7684\u6570\u91cf": 41, "\u7684\u96f6\u5f20\u91cf": 41, "\u7136\u540e\u8c03\u7528": 41, "\u5728\u7531\u6807\u7b7e": 41, "\u6307\u5b9a\u7684\u7d22\u5f15\u4e0a\u8d4b\u503c\u4e3a": 41, "gschwind": 42, "bt": 42, "fastpath": 42, "acceler": [42, 48, 50, 57, 75, 95, 121, 149, 177, 188, 194, 196, 207, 211, 219, 220, 234, 247, 257], "multiheadattent": [42, 164, 193], "mha": [42, 190, 193], "exploit": [42, 97, 146, 165], "sparsiti": [42, 103, 121, 156, 189, 191, 196], "criteria": [42, 52], "blog": [42, 122, 123, 127, 131, 176, 219, 229], "xlm": [42, 137, 185], "predefin": [42, 49, 97, 136, 200, 221, 247], "robertaclassificationhead": 42, "xlmr_larg": 42, "xlmr_large_encod": 42, "classifier_head": 42, "input_dim": [42, 146, 218, 223], "get_model": [42, 104, 113, 161], "small_input_batch": 42, "hello": [42, 49, 58, 59, 60, 99, 103, 139, 152], "big_input_batch": 42, "princ": 42, "genoa": 42, "lucca": 42, "famili": [42, 219], "estat": 42, "buonapart": 42, "war": 42, "defend": [42, 73], "infami": 42, "horror": 42, "perpetr": 42, "antichrist": 42, "believ": [42, 190], "he": [42, 113, 115, 142, 146, 165], "friend": [42, 49, 152], "faith": 42, "slave": 42, "frighten": 42, "juli": 42, "1805": 42, "speaker": [42, 49], "anna": 42, "pavlovna": 42, "scherer": 42, "maid": 42, "honor": 42, "empress": 42, "marya": 42, "fedorovna": 42, "she": [42, 113, 165], "greet": 42, "vasili": 42, "kuragin": 42, "man": [42, 113, 115, 262, 263, 271, 272], "recept": 42, "cough": 42, "suffer": [42, 61, 113, 168, 216], "la": [42, 99], "gripp": 42, "st": [42, 103, 115], "petersburg": 42, "elit": [42, 261, 263, 265, 270, 272, 274], "input_batch": [42, 49, 58, 59, 60, 158], "model_input": [42, 113], "padding_valu": [42, 118], "_transformer_encoder_layer_fwd": 42, "use_cuda": [42, 49, 73, 89, 119, 129, 146, 232, 238], "enable_nested_tensor": 42, "prop": 43, "proportion": [43, 152], "travers": [43, 163, 221], "walkthrough": [43, 48, 82, 109, 225], "resnet18_weight": [43, 195, 229], "3a": [43, 158], "9a": 43, "2b": 43, "dq": [43, 197], "external_grad": 43, "deposit": 43, "bf": 43, "chain": [43, 99, 100, 115, 129, 144, 161, 191, 200], "acycl": [43, 76], "finetun": [43, 75, 125, 152], "unfrozen": 43, "exclusionari": 43, "autodiff": [43, 121, 145], "pillow": [44, 92, 213], "scipi": [44, 121, 130, 172], "librosa": 44, "cython": 44, "nltk": 44, "spaci": [44, 116, 118], "viz": [44, 90, 229], "huge": [44, 99, 103, 124, 133, 136, 149], "airplan": [44, 97], "automobil": [44, 97], "bird": [44, 92, 250], "deer": [44, 92, 250], "dog": [44, 58, 59, 92, 97, 102, 113, 178, 188, 204, 229, 250, 257], "frog": [44, 92, 250], "hors": [44, 92, 250], "truck": [44, 92, 97, 250], "3x32x32": 44, "color": [44, 51, 52, 58, 59, 90, 94, 126, 146, 147, 158, 169, 171, 178, 213, 231, 262, 271], "32x32": [44, 47, 92, 97, 105, 169], "extrem": [44, 103, 147, 262, 271], "pilimag": 44, "brokenpipeerror": 44, "trainset": [44, 87, 92, 169, 250], "trainload": [44, 87, 92, 169, 250], "testset": [44, 87, 92, 169, 250], "testload": [44, 87, 92, 169, 250], "plane": [44, 92, 134, 250], "car": [44, 58, 59, 92, 113, 250], "fun": [44, 49, 105, 107, 108, 159, 234], "unnorm": [44, 92, 118, 169], "npimg": [44, 92, 94, 96, 169], "datait": [44, 92, 94, 96, 169], "make_grid": [44, 51, 52, 92, 94, 96, 117, 157, 166, 169], "5s": [44, 92], "fc1": [44, 47, 73, 78, 87, 92, 93, 94, 96, 105, 112, 123, 129, 138, 154, 156, 162, 166, 169, 185, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "fc2": [44, 47, 73, 78, 87, 92, 93, 94, 96, 105, 112, 123, 129, 138, 154, 156, 162, 166, 169, 185, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "84": [44, 47, 51, 87, 92, 93, 94, 96, 105, 109, 112, 136, 146, 156, 169, 176, 187, 239, 240, 241, 242, 243, 248, 249, 250], "fc3": [44, 47, 87, 92, 93, 94, 96, 105, 112, 138, 156, 169, 239, 240, 241, 242, 243, 248, 249, 250], "classif": [44, 52, 58, 59, 73, 75, 87, 97, 99, 115, 117, 119, 123, 128, 137, 148, 158, 166, 171, 178, 185, 206, 224, 225], "entropi": [44, 52, 118, 124], "running_loss": [44, 87, 92, 94, 96, 97, 117, 157, 169, 250], "2000": [44, 63, 64, 65, 67, 68, 69, 71, 72, 87, 92, 97, 111, 169, 171, 173, 174, 231, 250, 258], "1999": [44, 65, 87, 92, 111, 250], "mini": [44, 47, 49, 52, 78, 79, 87, 102, 104, 139, 146, 154, 158, 169, 204, 221], "cifar_net": 44, "learnt": 44, "truth": [44, 73, 105, 178, 196], "okai": 44, "groundtruth": 44, "wasn": [44, 98, 101], "energi": [44, 49, 60, 262, 271], "chanc": [44, 49, 97, 146, 252], "hmmm": 44, "correct_pr": 44, "classnam": [44, 52], "total_pr": 44, "correct_count": 44, "chat": [44, 49, 60, 79, 165], "cifar10_tutori": [44, 46, 57], "sung": 45, "kim": 45, "jenni": 45, "kang": 45, "mytensor": 45, "my_tensor": [45, 93, 112, 240], "parallelli": 45, "output_s": [45, 49, 51, 60, 78, 127, 128, 136, 165, 178], "data_s": [45, 78], "getitem": [45, 115], "randomdataset": 45, "__getitem__": [45, 51, 104, 135, 178], "rand_load": 45, "capsul": 45, "monitor": [45, 113, 135, 177], "tin": 45, "former_torchi": [45, 77], "parallelism_tutori": [45, 77, 79], "data_parallel_tutori": [45, 46], "neural_networks_tutori": [46, 47, 57], "gentl": [46, 56, 57, 120], "glimps": 47, "convnet": [47, 81, 136, 146, 157, 162], "5x5": [47, 92, 93, 156], "affin": [47, 92, 102, 129, 166, 176, 179, 218, 247], "wx": [47, 92, 93], "c1": [47, 89, 92, 144, 191], "subsampl": 47, "2x2": [47, 93], "c3": [47, 89, 92], "s4": [47, 92], "f5": [47, 92], "f6": [47, 92], "lenet": [47, 73, 92, 93, 96, 156, 221], "nsampl": [47, 49, 78, 236], "nchannel": [47, 78], "next_funct": [47, 89], "clear": [47, 51, 73, 98, 99, 102, 103, 125, 144, 163, 171, 186, 191, 213, 231], "sub_": 47, "nesterov": [47, 112], "overridden": [48, 136, 237], "breez": [48, 80], "subtli": 48, "problemat": [48, 144, 153, 247, 262, 271], "matthew": [49, 60, 86, 112], "inkawhich": [49, 52, 60, 73, 85, 86, 112], "movi": [49, 50, 60, 113], "cornel": [49, 50, 60], "dialog": [49, 50, 60], "hot": [49, 73, 103, 127, 128, 136, 165], "artifici": [49, 60, 97], "intellig": 49, "onlin": [49, 136, 137, 146, 159, 162, 257], "helpdesk": 49, "bot": [49, 60], "compani": [49, 115], "IT": 49, "teach": [49, 52, 97, 165], "boom": 49, "am": [49, 60, 101, 113, 128, 165, 208], "hospit": [49, 113], "lawyer": 49, "arrest": 49, "kid": 49, "sorri": [49, 95], "san": [49, 113], "francisco": [49, 104, 113], "goodby": [49, 193], "luong": [49, 60, 165], "jointli": [49, 165], "acknowledg": [49, 135], "borrow": [49, 61, 123, 134, 163], "yuan": [49, 60, 222], "kuei": [49, 60], "wu": [49, 60, 186], "ywk991112": [49, 60], "sean": [49, 60, 127, 128, 165], "robertson": [49, 60, 127, 128, 165], "spro": [49, 60], "floydhub": [49, 60], "textutil": [49, 60], "unicodedata": [49, 60, 127, 128, 165], "codec": 49, "itertool": [49, 160, 163, 200, 231], "reformat": 49, "rich": [49, 226], "charact": [49, 60, 103, 113, 127, 128, 131, 159, 165, 262, 271], "220": [49, 163], "579": [49, 147], "292": [49, 87], "035": 49, "617": 49, "713": [49, 92], "utter": [49, 50], "divers": 49, "variat": [49, 130, 189, 203, 231], "formal": [49, 189], "sentiment": 49, "datafil": 49, "corpus_nam": [49, 50, 60], "printlin": 49, "readlin": [49, 75, 127, 128], "jsonl": [49, 50], "tab": [49, 116, 165, 169, 188, 226], "sentenc": [49, 60, 93, 98, 99, 102, 103, 113, 118, 128, 135, 137, 165, 193, 262, 271], "loadlinesandconvers": 49, "lineid": 49, "characterid": 49, "conversationid": 49, "movieid": 49, "extractsentencepair": 49, "iso": 49, "8859": 49, "linejson": 49, "lineobj": 49, "conversation_id": 49, "convobj": 49, "movie_id": 49, "qa_pair": 49, "inputlin": 49, "targetlin": 49, "wrong": [49, 52, 73, 99, 127, 144, 172, 195], "formatted_movie_lin": 49, "delimit": [49, 115, 116], "unescap": 49, "unicode_escap": 49, "nprocess": 49, "nwrite": 49, "outputfil": 49, "writer": [49, 94, 96, 127, 137, 142, 158, 159, 169, 185, 245], "linetermin": 49, "writerow": 49, "busi": [49, 115, 128, 176], "implicit": [49, 226, 247, 262, 271], "discret": [49, 220, 262, 271], "voc": [49, 60], "addword": [49, 60, 165], "addsent": [49, 60, 165], "infrequ": 49, "pad_token": [49, 60, 137], "sos_token": [49, 60, 165, 252], "eos_token": [49, 60, 165], "word2index": [49, 60, 165], "word2count": [49, 60, 165], "index2word": [49, 60, 165], "min_count": [49, 60], "keep_word": [49, 60], "reiniti": [49, 52, 60], "unicod": [49, 127, 128, 165], "ascii": [49, 103, 127, 128, 165], "unicodetoascii": [49, 127, 128, 165], "letter": [49, 60, 127, 128, 165, 263, 272], "lowercas": [49, 60, 165], "punctuat": [49, 165], "normalizestr": [49, 60, 165], "aid": [49, 112, 113, 237], "filterpair": [49, 165], "stackoverflow": [49, 127, 128, 160, 165, 231], "518232": [49, 127, 128, 165], "2809427": [49, 127, 128, 165], "nfd": [49, 127, 128, 165], "mn": [49, 127, 128, 165], "za": [49, 60, 165], "readvoc": 49, "loadpreparedata": 49, "save_dir": [49, 60, 146, 171], "npair": 49, "tactic": 49, "benefici": [49, 60, 120], "soften": [49, 97], "difficulti": [49, 159], "trimrareword": 49, "keep_pair": 49, "input_sent": [49, 60, 165], "output_sent": [49, 165], "keep_input": 49, "keep_output": 49, "massag": 49, "accommod": 49, "shorter": [49, 51, 116, 165, 168, 189], "english": [49, 99, 102, 113, 116, 118, 127, 165], "indexesfromsent": [49, 60, 165], "zeropad": 49, "inputvar": 49, "outputvar": 49, "batch2traindata": 49, "bunch": [49, 127, 128, 226], "aforement": [49, 82, 97, 221], "fillvalu": 49, "zip_longest": 49, "binarymatrix": 49, "seq": [49, 98, 102, 124, 134, 136], "indexes_batch": [49, 60], "padlist": 49, "padvar": 49, "max_target_len": 49, "booltensor": 49, "pair_batch": 49, "output_batch": 49, "small_batch_s": 49, "input_vari": 49, "target_vari": 49, "brain": 49, "sutskev": 49, "discov": [49, 108, 113, 135, 162], "accomplish": [49, 52, 150, 202, 215, 231], "jeddy92": [49, 60], "ts_seq2seq_intro": [49, 60], "invent": [49, 52, 159], "cho": [49, 176, 177], "2014": [49, 52], "bidirect": [49, 60, 98, 121, 136, 137], "gru": [49, 60, 93, 110, 127, 128, 165], "past": [49, 50, 101, 194, 213, 262, 271], "colah": 49, "2015": [49, 97], "unpack": [49, 60, 137, 141, 183, 185, 206, 208], "pack_padded_sequ": [49, 60], "pad_packed_sequ": [49, 60], "input_seq": [49, 60, 252], "input_length": [49, 60, 122, 252], "n_layer": [49, 60, 252], "num_direct": 49, "encoderrnn": [49, 60, 165, 252], "sole": [49, 168], "combat": [49, 103], "bahdanau": [49, 165], "groundwork": 49, "h_t": [49, 102], "_s": 49, "attn": [49, 60, 165], "softmax": [49, 60, 90, 93, 97, 102, 103, 104, 110, 127, 128, 158, 161, 163, 165, 169, 193, 219, 256], "concat": [49, 60, 101, 110, 119, 182, 200], "dot_scor": [49, 60], "encoder_output": [49, 60, 165], "general_scor": [49, 60], "concat_scor": [49, 60], "attn_energi": [49, 60], "unidirect": [49, 60], "input_step": [49, 60], "last_hidden": [49, 60, 78], "luongattndecoderrnn": [49, 60, 252], "attn_model": [49, 60], "embedding_dropout": [49, 60], "rnn_output": [49, 60], "attn_weight": [49, 60, 165], "bmm": [49, 60, 144, 165, 193, 207, 231], "concat_input": [49, 60], "concat_output": [49, 60], "masknllloss": 49, "ntotal": 49, "crossentropi": 49, "masked_select": [49, 238], "clever": [49, 99, 113], "teacher": [49, 97, 121, 165], "teacher_forcing_ratio": [49, 165], "wheel": [49, 97, 159, 168, 196], "instabl": [49, 165], "craft": [49, 73, 103, 128], "essenc": [49, 101, 262, 271], "nan": [49, 190], "overshoot": 49, "steep": 49, "cliff": 49, "goodfellow": [49, 52, 73], "2016": 49, "deeplearningbook": 49, "realiti": [49, 52, 60, 73, 101, 157, 164], "encoder_optim": [49, 165], "decoder_optim": [49, 165], "print_loss": 49, "n_total": 49, "encoder_hidden": [49, 60, 165, 252], "decoder_input": [49, 60, 165], "decoder_hidden": [49, 60, 165], "use_teacher_forc": 49, "decoder_output": [49, 60, 165], "mask_loss": 49, "topi": [49, 127, 128, 165], "tie": 49, "trainit": [49, 165], "n_iter": [49, 127, 128, 172], "explanatori": 49, "lift": [49, 58, 59, 113, 205, 223], "tarbal": 49, "encoder_n_lay": [49, 60], "decoder_n_lay": [49, 60, 252], "print_everi": [49, 127, 128, 165], "save_everi": [49, 53, 55, 146], "loadfilenam": [49, 60], "training_batch": 49, "start_iter": 49, "print_loss_avg": [49, 165], "percent": [49, 103, 143, 145, 154, 165, 234], "makedir": [49, 137, 185], "en_opt": [49, 60], "de_opt": [49, 60], "voc_dict": [49, 60], "tar": [49, 60, 75, 112, 118, 236, 241, 262, 271], "NOT": [49, 60, 80, 85, 98, 102, 112, 130, 131, 133, 152, 208], "greedysearchdecod": [49, 252], "all_token": [49, 60], "all_scor": [49, 60], "decoder_scor": [49, 60], "searcher": [49, 60], "evaluateinput": [49, 60], "press": [49, 52, 262, 271], "gracefulli": [49, 53, 162, 214], "prompt": [49, 50, 60, 184, 213, 257], "decoded_word": [49, 60, 165], "output_word": [49, 60, 165], "keyerror": [49, 60], "regardless": [49, 98, 145, 162, 263, 272], "cb_model": [49, 60], "checkpoint_it": [49, 60], "_checkpoint": [49, 60, 122], "encoder_sd": [49, 60], "decoder_sd": [49, 60], "encoder_optimizer_sd": [49, 60], "decoder_optimizer_sd": [49, 60], "embedding_sd": [49, 60], "decoder_learning_ratio": 49, "uncom": [49, 51, 60, 64, 72, 101, 111], "folk": 49, "congratul": [49, 108, 125, 241], "tailor": [49, 135], "cool": [49, 52, 152, 154, 188, 205], "chatbot_tutori": 49, "uninstal": [50, 137], "reinstal": 50, "chatbot": [50, 60, 252], "browser": [50, 105, 168, 262, 271], "subfold": 50, "visit": [50, 112, 113, 127, 184, 221], "in_": 50, "_colab": 50, "_name": 50, "mount": 50, "gdrive": 50, "upload": 50, "rerun": [50, 152], "evolv": [50, 103, 144, 150], "t4": 50, "sasank": [51, 117, 157], "chilamkurthi": [51, 117, 157], "scikit": [51, 137], "skimag": 51, "facial": 51, "pose": [51, 215], "landmark": 51, "dlib": 51, "part_0_x": 51, "part_0_i": 51, "part_1_x": 51, "part_1_i": 51, "part_2_x": 51, "part_67_x": 51, "part_67_i": 51, "0805personali01": 51, "83": [51, 176, 219, 246], "134": [51, 204], "1084239450_e76e00b7e7": 51, "70": [51, 147, 163, 177, 191, 201, 231], "236": 51, "257": [51, 231], "312": [51, 147], "person": [51, 58, 59, 113, 178], "img_nam": 51, "landmarks_fram": 51, "face_landmark": 51, "asarrai": [51, 75, 90], "show_landmark": 51, "scatter": [51, 79, 123, 133, 135, 171], "imread": 51, "facelandmarksdataset": 51, "csv_file": 51, "root_dir": 51, "is_tensor": 51, "face_dataset": 51, "fig": [51, 52, 117, 127, 149, 157, 165, 169], "set_titl": [51, 117, 157, 166, 169], "randomcrop": [51, 157], "crop": [51, 126, 166, 178, 213], "tsfm": 51, "transformed_sampl": 51, "edg": [51, 98, 105, 119, 121, 143, 168, 179, 197, 200, 262, 271], "new_w": 51, "extern": [51, 97, 112, 126, 143, 144, 186, 199, 209, 247, 260, 262, 269, 271], "safer": [51, 231], "stick": [51, 113, 135, 147, 260, 269], "tsfrm": 51, "transformed_dataset": 51, "lose": [51, 53, 97, 146, 227, 234, 251, 260, 269], "collate_fn": [51, 115, 118, 178], "show_landmarks_batch": 51, "sample_batch": 51, "images_batch": 51, "landmarks_batch": 51, "im_siz": 51, "grid_border_s": 51, "indent": [51, 147, 231, 262, 271], "i_batch": 51, "4th": [51, 80, 207], "imagefold": [51, 52, 92, 117, 157], "ant": [51, 117, 157, 265, 274], "xxy": 51, "jpeg": [51, 139, 213], "xxz": 51, "bee": [51, 117, 157, 262, 271], "123": [51, 163, 219, 263, 272], "nsdf3": 51, "asd932_": 51, "data_transform": [51, 117, 157], "randomsizedcrop": 51, "hymenoptera_dataset": 51, "hymenoptera_data": [51, 117, 157], "dataset_load": 51, "\u8ba1\u7b97\u673a\u89c6\u89c9\u8fc1\u79fb\u5b66\u4e60\u6559\u7a0b": [51, 121], "data_loading_tutori": 51, "nathan": [52, 73, 85, 86], "celebr": [52, 121], "pictur": [52, 73, 124, 165], "thorough": [52, 176, 177], "shed": [52, 229], "spend": [52, 82, 152, 231], "sake": [52, 127, 136, 156, 160], "ian": 52, "constantli": [52, 73, 160], "outsmart": 52, "equilibrium": 52, "perfect": [52, 191], "notat": [52, 73, 110], "chw": [52, 158], "3x64x64": 52, "thought": [52, 83, 113, 116, 190, 262, 271], "latent": [52, 103], "p_": 52, "p_g": 52, "minimax": 52, "logd": 52, "underset": 52, "mathbb": [52, 85, 150, 160], "sim": 52, "radford": 52, "unsupervis": 52, "compris": [52, 60, 112], "drawn": [52, 159], "volum": [52, 123], "tip": [52, 58, 59, 103, 169, 235, 251], "dset": 52, "vutil": 52, "anim": 52, "manualse": 52, "use_deterministic_algorithm": 52, "dataroot": 52, "image_s": [52, 152], "spatial": [52, 121, 178], "64x64": 52, "nc": [52, 89], "nz": 52, "ngf": 52, "ndf": 52, "num_epoch": [52, 117, 118, 157, 159, 178, 198], "0002": 52, "ngpu": 52, "celeba": 52, "celeb": 52, "img_align_celeba": 52, "188242": 52, "173822": 52, "284702": 52, "537394": 52, "real_batch": 52, "stdev": 52, "weights_init": 52, "netg": 52, "netd": 52, "constant_": [52, 134], "dataparallel": [52, 120, 121, 125, 137, 149, 185, 230, 247], "downsampl": [52, 134, 146], "promot": 52, "healthi": 52, "bceloss": [52, 110], "ell": [52, 165], "l_1": 52, "l_n": 52, "quad": [52, 160], "y_n": 52, "bce": 52, "gt": [52, 78, 109, 252], "fixed_nois": 52, "establish": [52, 60, 234], "optimizerd": 52, "optimizerg": 52, "Be": 52, "somewhat": 52, "incorrect": [52, 125, 130, 172, 252], "collaps": 52, "went": [52, 144, 197], "ganhack": 52, "secondli": [52, 187], "loss_d": 52, "loss_g": 52, "img_list": 52, "real_cpu": 52, "b_size": 52, "errd_real": 52, "errd_fak": 52, "d_g_z1": 52, "errd": 52, "errg": 52, "d_g_z2": 52, "stat": [52, 55, 122, 159, 168, 195, 198, 238, 246], "tloss_d": 52, "tloss_g": 52, "versu": [52, 73, 121, 207], "im": [52, 75, 113], "artistanim": 52, "repeat_delai": 52, "blit": 52, "to_jshtml": 52, "music": 52, "dcgan_faces_tutori": 52, "mingpt": [53, 54, 55, 56, 131, 132], "aw": [53, 55, 123, 131, 132, 176, 177, 251], "p3": [53, 54, 55, 64, 111, 131, 132], "8xlarg": [53, 55], "failur": [53, 61, 132, 133, 144, 173, 174, 211], "disrupt": 53, "suscept": [53, 215], "elast": [53, 122, 133, 215], "attempt": [53, 99, 122, 173, 174, 207, 237], "minutia": 53, "multinod": [53, 131, 175], "load_snapshot": 53, "snapshot_path": 53, "train_step": 53, "should_checkpoint": 53, "save_snapshot": 53, "membership": [53, 132], "intervent": [53, 97, 185], "diff": [53, 55, 60, 82, 121, 197, 231], "multigpu": [53, 55, 132], "multigpu_torchrun": 53, "envvari": 53, "ddp_setup": [53, 55], "12355": [53, 55, 123, 133, 214], "local_rank": [53, 122, 132, 137, 185], "gpu_id": [53, 55, 132], "_save_snapshot": 53, "model_st": 53, "epochs_run": 53, "_load_snapshot": 53, "max_epoch": [53, 148], "_run_epoch": [53, 55], "total_epoch": [53, 55], "nproc_per_nod": [53, 122, 124, 133, 215], "migrat": [53, 55, 176], "fault": [54, 55, 56, 60, 61, 87, 131, 132], "toler": [54, 55, 56, 61, 87, 131, 132], "cluster": [54, 122, 126, 131, 132, 133, 135, 214, 215], "torchrun": [54, 122, 124, 131, 132, 215], "amazon": 54, "ec2": [54, 123], "gentli": 54, "convert_sync_batchnorm": 55, "single_gpu": 55, "mytraindataset": 55, "distributedsampl": [55, 56, 122, 123, 137, 185], "destroy_process_group": [55, 122, 123, 133, 214], "excess": [55, 82, 124, 220, 230], "set_epoch": [55, 122, 123], "b_sz": 55, "_run_batch": 55, "ckp": 55, "_save_checkpoint": 55, "load_train_obj": 55, "prepare_dataload": 55, "shorthand": [55, 262, 271], "ring": [56, 124], "destroi": [56, 141, 263, 272], "soumith": [57, 81, 135], "chintala": [57, 81, 135], "scientif": [57, 95], "blitz": [57, 105, 110, 169], "jeff": [58, 59, 119], "tang": [58, 59, 119], "review": [58, 59, 78, 113, 131, 137, 157, 173, 174, 176, 177, 189, 190, 192, 220], "jeremiah": [58, 59], "chung": [58, 59, 126], "region": [58, 59, 126, 143, 166, 171, 176, 177, 178, 226, 230, 247], "bicycl": [58, 59], "bu": [58, 59], "autonom": [58, 59], "favor": [58, 126, 150, 159], "pitfal": [58, 59], "beyond": [58, 59, 61, 101, 155, 156, 209], "ndk": [58, 208, 224, 227], "recip": [58, 59, 61, 109, 119, 120, 177, 188, 194, 204, 206, 208, 210, 212, 213, 216, 222, 226, 229, 230, 231, 232, 234, 237, 244, 251, 254, 256, 257, 258], "deeplabv3_script": [58, 59, 204, 222], "deeplabv3_resnet50": [58, 59, 204, 222, 223], "resnet101": [58, 147], "hub": [58, 59, 119, 168, 204, 222, 223], "v0": [58, 59, 121, 146, 160, 178, 204, 222, 223, 259, 268], "scriptedm": [58, 59], "168mb": [58, 59], "deeplab": [58, 59, 121, 204], "input_tensor": [58, 59, 158, 165, 166, 194, 213], "400x400": [58, 59], "oncreat": [58, 208], "mainact": [58, 206, 208, 222], "assetfilepath": [58, 208, 222], "ioexcept": [58, 208], "imagesegment": [58, 204, 222], "breakpoint": [58, 59], "73": [58, 144, 163, 176, 201, 231], "inputtensor": [58, 128, 155, 206], "tensorimageutil": [58, 223], "bitmaptofloat32tensor": 58, "bitmap": 58, "torchvision_norm_mean_rgb": [58, 223], "torchvision_norm_std_rgb": [58, 223], "getdataasfloatarrai": 58, "outtensor": 58, "todictstringkei": 58, "pytorch_vision_deeplabv3_resnet101": [58, 59], "outputtensor": [58, 59, 155, 187, 188, 206, 223], "getwidth": 58, "getheight": 58, "emul": [58, 146, 185, 204], "consum": [58, 59, 75, 107, 109, 125, 144, 149, 159, 161, 163, 164, 182, 188, 195, 200, 213, 247, 256, 257], "bulk": [58, 59, 129], "heaviest": [58, 59], "intvalu": 58, "classnum": [58, 59], "maxi": [58, 59], "maxj": [58, 59], "maxnum": [58, 59], "green": [58, 59, 60, 98, 113, 122, 124, 169], "sheep": [58, 59], "black": [58, 59, 73, 82, 124, 126, 161, 165], "0xffff0000": 58, "0xff00ff00": 58, "0xff0000ff": 58, "0xff000000": 58, "outputbitmap": 58, "imageview": 58, "bmpsegment": 58, "createscaledbitmap": 58, "getconfig": 58, "setpixel": 58, "setimagebitmap": 58, "textview": 58, "helloworld": [59, 119, 187, 188, 224, 225], "deeplabv3_resnet101": 59, "viewcontrol": [59, 222], "swift": [59, 222, 225], "uiviewcontrol": 59, "var": [59, 80, 129, 187, 208], "uiimag": 59, "func": [59, 104, 118, 121, 138, 141, 144, 145, 150, 154, 193, 205, 244], "viewdidload": 59, "torchmodul": [59, 188, 222, 225], "filepath": [59, 222], "forresourc": [59, 222], "oftyp": [59, 222], "fileatpath": [59, 222], "fatalerror": [59, 222], "predictimag": [59, 188], "unsign": [59, 144, 231], "imagebuff": [59, 188], "autogradmod": [59, 208], "non_var_type_mod": 59, "nsmutablearrai": 59, "floatinput": 59, "nil": [59, 222], "addobject": 59, "outputdict": 59, "_impl": [59, 187, 188, 222], "togenericdict": 59, "floatbuff": [59, 206, 223], "temporarili": 59, "nsmutabledata": 59, "datawithlength": 59, "sizeof": [59, 208], "mutablebyt": 59, "floatvalu": 59, "uiimageview": 59, "convertrgbbuffertouiimag": 59, "uiimagehelp": 59, "uitextview": 59, "segmentimag": 59, "phase": [60, 76, 78, 117, 135, 157, 163, 187, 194, 200, 204, 255], "imper": 60, "idiomat": 60, "defer": 60, "optimiz": 60, "decor": [60, 61, 85, 110, 120, 146, 161, 172, 247], "caveat": [60, 113, 133, 161, 200, 231, 237], "remind": [60, 113, 176], "necessarili": [60, 105, 107, 108, 130], "cooper": [60, 220], "chronolog": 60, "attend": 60, "greedili": 60, "_length": 60, "adher": [60, 202], "stem": 60, "surround": 60, "freedom": [60, 165], "__constants__": [60, 252], "liter": [60, 263, 272], "_devic": [60, 252], "_sos_token": [60, 252], "pep": [60, 262, 271], "3107": 60, "mypi": 60, "_decoder_n_lay": [60, 252], "evaluateexampl": 60, "stdin": 60, "4000_checkpoint": 60, "test_seq": 60, "num": [60, 104, 129, 137, 161, 185], "_word": 60, "test_seq_length": 60, "traced_encod": [60, 252], "presenc": [60, 172, 199, 229], "unscript": [60, 256], "test_encoder_output": 60, "test_encoder_hidden": 60, "test_decoder_hidden": 60, "test_decoder_input": 60, "traced_decod": [60, 252], "scripted_search": 60, "script_modul": [60, 85], "scripted_chatbot": 60, "deploy_seq2seq_hybrid_frontend_tutori": 60, "shen": [61, 123, 133, 134, 149, 155, 161, 163], "li": [61, 103, 123, 127, 128, 133, 134, 135, 149, 155, 161, 163, 172, 176, 177], "categor": [61, 82, 136, 161, 163, 177], "lifetim": [61, 163], "c10d": [61, 133, 155, 247], "all_gath": [61, 122, 123, 135, 155], "p2p": 61, "isend": [61, 135], "gradual": [61, 85, 152], "willing": [61, 113], "hurdl": 61, "vldb": 61, "starter": 61, "unbalanc": 61, "zeroredundancyoptim": [61, 155, 251], "footprint": [61, 109, 122, 123, 131, 152, 218, 219, 228, 230, 258], "uneven": [61, 120], "fsdp": [61, 121, 124, 131, 214, 215], "growth": [61, 171, 192], "recoveri": [61, 133], "sometim": [61, 125, 130, 132, 133, 136, 145, 160, 163, 165, 184, 191, 192, 247], "inevit": [61, 133], "oom": [61, 122, 152, 230], "desynchron": 61, "pillar": 61, "protocol": [61, 115], "spirit": [61, 103, 137, 262, 271], "hogwild": 61, "async_execut": [61, 120, 121, 161], "polynomi": [63, 64, 65, 67, 68, 69, 111], "euclidean": [63, 64, 67, 68, 69, 97, 111], "linspac": [63, 64, 65, 67, 68, 69, 71, 72, 89, 111], "held": [63, 78, 97, 103, 111, 127, 162], "polynomial_autograd": 63, "bx": [64, 111], "cx": [64, 99, 111], "p_3": [64, 111], "5x": [64, 111], "legendr": 64, "legendrepolynomial3": [64, 111], "polynomial_custom_funct": 64, "strang": [65, 85, 111, 262, 271], "fifth": [65, 263, 272], "dynamicnet": [65, 111], "tough": [65, 111, 113], "30000": [65, 111, 135], "dynamic_net": 65, "polynomial3": [67, 111], "polynomial_modul": 67, "xx": [68, 69, 111, 144], "flaten": [68, 111], "mse": [68, 93, 97, 111], "linear_lay": [68, 69, 111], "polynomial_nn": 68, "overwritten": [69, 111, 185, 237], "checkout": [69, 111, 117, 188, 206], "polynomial_optim": 69, "\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f": [71, 72], "\u5230": [71, 72, 89, 95], "\u901a\u8fc7\u6700\u5c0f\u5316\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb\u7684\u5e73\u65b9\u6765\u8bad\u7ec3\u9884\u6d4b": 71, "\u8be5\u5b9e\u73b0\u4f7f\u7528": [71, 72], "\u624b\u52a8\u8ba1\u7b97\u524d\u5411\u4f20\u9012": 71, "\u635f\u5931\u548c\u53cd\u5411\u4f20\u9012": [71, 72], "numpy\u6570\u7ec4\u662f\u4e00\u4e2a\u901a\u7528\u7684n\u7ef4\u6570\u7ec4": 71, "\u5b83\u4e0d\u4e86\u89e3\u6df1\u5ea6\u5b66\u4e60": [71, 72], "\u68af\u5ea6\u6216\u8ba1\u7b97\u56fe": 71, "\u53ea\u662f\u7528\u4e8e\u6267\u884c\u901a\u7528\u6570\u503c\u8ba1\u7b97\u7684\u4e00\u4e2a\u5e93": 71, "grad_y_pr": [71, 72, 111], "grad_a": [71, 72, 111], "grad_b": [71, 72, 111], "grad_c": [71, 72, 111], "grad_d": [71, 72, 111], "polynomial_numpi": 71, "\u901a\u8fc7\u6700\u5c0f\u5316\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb\u7684\u5e73\u65b9\u6765\u8bad\u7ec3\u9884\u6d4b\u4ece": 72, "\u5f20\u91cf\u624b\u52a8\u8ba1\u7b97\u524d\u5411\u4f20\u9012": 72, "\u5f20\u91cf\u57fa\u672c\u4e0a\u4e0e": 72, "\u6570\u7ec4\u76f8\u540c": 72, "\u8ba1\u7b97\u56fe\u6216\u68af\u5ea6": 72, "\u53ea\u662f\u7528\u4e8e\u4efb\u610f\u6570\u503c\u8ba1\u7b97\u7684\u901a\u7528n\u7ef4\u6570\u7ec4": 72, "\u6570\u7ec4\u548c": 72, "\u5f20\u91cf\u4e4b\u95f4\u6700\u5927\u7684\u533a\u522b\u662f": 72, "\u5f20\u91cf\u53ef\u4ee5\u5728": 72, "\u4e0a\u8fd0\u884c": 72, "\u4e0a\u8fd0\u884c\u64cd\u4f5c": 72, "\u53ea\u9700\u5c06\u5f20\u91cf\u8f6c\u6362\u4e3a": 72, "polynomial_tensor": 72, "appreci": [73, 98, 113], "overlook": [73, 231], "secur": [73, 168], "awar": [73, 124, 126, 135, 136, 137, 147, 164, 173, 174, 176, 183, 187, 188, 189, 196, 254], "vulner": 73, "surpris": [73, 153], "impercept": 73, "perturb": 73, "drastic": 73, "overarch": 73, "misclassif": 73, "alter": [73, 112, 184, 234, 239], "har": 73, "remark": [73, 172], "jump": [73, 102, 105, 107, 108, 139, 146], "mathbf": 73, "nabla_": [73, 99], "007": 73, "misclassifi": 73, "gibbon": 73, "clearli": [73, 126, 189, 190], "pretrained_model": [73, 171], "lenet_mnist_model": [73, 221], "dropout1": [73, 123, 162, 203, 233], "dropout2": [73, 123, 162, 203, 233], "9216": [73, 123, 129, 154, 162, 203, 233], "log_softmax": [73, 93, 97, 99, 102, 103, 104, 123, 129, 148, 154, 162, 165, 166, 203, 221, 233], "test_load": [73, 97, 123, 129, 162, 166, 221], "1307": [73, 123, 129, 135, 148, 162, 166, 221], "3081": [73, 123, 129, 135, 148, 162, 166, 221], "fgsm_attack": 73, "clean": [73, 102, 122, 123, 133, 152, 187, 189, 195, 262, 271], "data_grad": 73, "_imag": 73, "_grad": 73, "sign_data_grad": 73, "perturbed_imag": 73, "denorm": 73, "strength": [73, 169, 195], "adv_exampl": 73, "init_pr": 73, "bother": 73, "datagrad": 73, "data_denorm": 73, "perturbed_data": 73, "reappli": 73, "perturbed_data_norm": 73, "final_pr": 73, "adv_ex": 73, "adv": 73, "final_acc": 73, "ttest": 73, "trend": [73, 83, 168], "curv": [73, 149, 168, 169], "linearli": 73, "ytick": [73, 169], "xtick": [73, 169], "lunch": [73, 194], "BUT": [73, 101], "percept": 73, "tradeoff": [73, 121, 125, 126, 135, 159], "evid": 73, "fontsiz": 73, "orig": [73, 142], "nip": [73, 118], "defens": 73, "competit": [73, 138, 154], "defenc": 73, "perhap": [73, 127, 156, 214, 252], "dirti": 73, "fgsm_tutori": 73, "torchvision_tutori": [74, 178], "multimod": [75, 121], "ow": 75, "ubiquit": 75, "caption": [75, 262, 265, 271, 274], "vqa": 75, "unimod": 75, "contrast": [75, 128, 149, 154, 177, 189], "textvqa": 75, "bert": [75, 93, 121, 123, 177, 196, 199, 228, 234], "dl": [75, 104, 177, 184, 207, 208, 221, 262, 271], "fbaipublicfil": [75, 184], "pythia": 75, "gz": [75, 104, 118, 236, 262, 263, 271, 272], "xf": 75, "prepend": [75, 154], "exclam": 75, "34602": 75, "answers_textvqa_more_than_1": 75, "answer_to_idx": 75, "uniform": [75, 113, 176, 202], "berttoken": [75, 137, 185], "functool": [75, 87, 113, 122, 123, 141, 145], "image_transform": 75, "return_tensor": 75, "ans_to_count": 75, "max_valu": 75, "ans_idx": 75, "uncas": [75, 137, 144, 177, 185], "set_transform": 75, "flava_model_for_classif": 75, "mlp": [75, 124, 138, 176], "toi": [75, 98, 102, 123, 133, 142, 149, 163, 175, 199, 214, 244], "mdetr": 75, "omnivor": 75, "multitask": 75, "flava_finetuning_tutori": 75, "flush": [76, 94, 96, 188, 203, 208, 230, 245, 262, 271], "twice": [76, 130, 184, 219, 231, 258], "retain_vari": 76, "freed": [76, 122, 152, 197], "fail": [76, 112, 125, 144, 147, 158, 160, 164, 172, 190, 196, 198, 200, 208, 220, 222, 230, 241], "autograd_tutorial_old": [76, 77], "tensor_tutorial_old": [77, 80], "nnft_tutori": [77, 78], "redesign": 78, "concatt": 78, "caddtabl": 78, "nngraph": 78, "input1": 78, "input2": 78, "pdb": 78, "debugg": [78, 104], "mnistconvnet": 78, "pool1": 78, "pool2": 78, "crazi": 78, "legal": [78, 193], "ephemer": [78, 152], "classnll": 78, "err": 78, "printnorm": 78, "register_forward_hook": [78, 239], "printgradnorm": 78, "register_backward_hook": 78, "i2h": [78, 127, 128], "h2o": [78, 127], "penn": [78, 178], "bank": 78, "timestep": [78, 98, 102, 127, 128, 160], "dataparallelmodel": 79, "block2": 79, "block3": 79, "becam": [79, 208], "inaccess": 79, "clash": 79, "mydataparallel": 79, "__getattr__": [79, 85], "attributeerror": 79, "getattr": [79, 146, 147, 185, 209, 247], "primit": [79, 121, 124, 145, 177, 197, 207], "mpi": [79, 135], "parallel_appli": 79, "clariti": [79, 142, 234], "output_devic": [79, 133], "distributedmodel": 79, "\u6df1\u5ea6\u5b66\u4e60": [79, 127, 128, 165], "60\u5206\u949f\u5165\u95e8": [79, 127, 128, 165], "uniniti": [80, 136, 202], "postfix": 80, "narrow_": 80, "lua": [80, 81, 127, 128, 165], "1st": [80, 97, 102, 123], "5th": 80, "camelcas": 80, "anymor": [80, 245], "indexadd": 80, "index_add_": 80, "chartensor": 80, "anupam": [82, 83, 116], "bhatnagar": [82, 83], "holistictraceanalysi": 82, "deactiv": 82, "trace_dir": 82, "trace_analysi": 82, "traceanalysi": 82, "engag": [82, 196], "time_spent_df": 82, "get_temporal_breakdown": 82, "enqueu": 82, "slowdown": [82, 122, 125], "consecut": [82, 128, 136, 146, 149, 158, 171, 177], "insuffici": [82, 160, 176], "delai": [82, 133, 161, 176], "stall": [82, 176, 177], "gap": [82, 85], "nanosecond": 82, "consecutive_kernel_delai": 82, "get_idle_time_breakdown": 82, "idle_time_df": 82, "show_idle_interval_stat": 82, "percentag": [82, 119, 143, 156, 176, 193], "visualize_pctg": 82, "comm": 82, "comp": 82, "mem": [82, 109, 238], "proport": [82, 152], "pie": [82, 152], "chart": 82, "kernel_type_metrics_df": 82, "kernel_metrics_df": 82, "get_gpu_kernel_breakdown": 82, "bottleneck": [82, 109, 122, 124, 132, 134, 149, 152, 161, 168, 172, 176, 177, 210, 226], "plotli": [82, 126], "hover": [82, 126, 158], "pan": 82, "num_kernel": 82, "duration_ratio": 82, "preced": [82, 129, 136, 142, 177, 182, 197, 199, 262, 271], "lab": [82, 169, 184], "image_render": 82, "jupyterlab": 82, "gpu_kernel_breakdown": 82, "tflop": 82, "oversubscrib": 82, "unresolv": [82, 191], "extent": 82, "overlap_df": 82, "get_comm_comp_overlap": 82, "h2d": [82, 212], "d2h": [82, 212], "d2d": 82, "memcpi": 82, "memset": 82, "outstand": [82, 199], "generate_trace_with_count": 82, "_with_count": 82, "screenshot": [82, 226], "get_memory_bw_summari": 82, "get_queue_length_summari": 82, "get_memory_bw_time_seri": 82, "get_queue_length_time_seri": 82, "mem_bw_summari": 82, "queue_len_summari": 82, "mem_bw_seri": 82, "queue_len_seri": 82, "get_queue_length_seri": 82, "25th": 82, "50th": 82, "75th": 82, "percentil": 82, "cudalaunchkernel": 82, "cudamemcpyasync": 82, "cudamemsetasync": 82, "kernel_info_df": 82, "get_cuda_kernel_launch_stat": 82, "outlier": [82, 160], "microsecond": [82, 145, 164, 218, 223, 231], "cutoff": 82, "runtime_cutoff": 82, "launch_delay_cutoff": 82, "occasion": [83, 162, 165], "hta": [83, 168], "tracediff": 83, "cumul": [83, 159, 160, 175], "compare_trac": 83, "ops_diff": 83, "absent": 83, "visualize_counts_diff": 83, "visualize_duration_diff": 83, "ten": [83, 97], "compare_traces_output": 83, "sort_valu": [83, 126], "diff_count": 83, "diff_dur": 83, "differer": 83, "overshadow": 83, "profilerstep": [83, 144], "trace_diff_demo": 83, "learning_hybrid_frontend_through_example_tutori": [84, 85], "hybrid_frontend": 84, "introduction_to_hybrid_frontend_tutori": 84, "intens": [85, 144, 177, 207, 247], "shini": 85, "enjoi": [85, 146], "aquaint": 85, "refin": 85, "proven": [85, 192, 199], "resouc": 85, "consumpt": [85, 109, 122, 124, 126, 144, 156, 168, 213, 251, 258], "discrep": 85, "interwork": 85, "intrus": [85, 152], "broken": [85, 101, 118, 177], "epsilon": [85, 129, 136, 146, 159, 160], "biggl": 85, "lfloor": 85, "prod_": 85, "biggr": 85, "rfloor": 85, "hline": 85, "190": [85, 163, 171, 231], "4377": 85, "59051": 85, "traced_fn": 85, "script_fn": 85, "floor": [85, 95, 127, 128, 165], "accomod": [85, 131], "fmod": [85, 191], "traced_modul": 85, "n_trace": 85, "onnx": [85, 121], "dramat": 87, "industri": 87, "tensorboard": [87, 88, 91, 96, 121, 126, 148, 235, 238, 251], "slight": [87, 130, 219, 232], "pathlib": [87, 104, 122, 126, 146, 171, 194], "random_split": [87, 115], "get_checkpoint": 87, "ashaschedul": 87, "cloudpickl": 87, "trial": [87, 126, 148, 230], "load_data": 87, "train_cifar": 87, "as_directori": 87, "checkpoint_dir": [87, 214], "pkl": [87, 104, 222], "checkpoint_st": 87, "start_epoch": 87, "net_state_dict": 87, "optimizer_state_dict": [87, 112, 214, 220, 241], "luckili": [87, 144, 191, 231], "fraction": [87, 231], "checkpoint_data": 87, "wb": [87, 104, 152, 257], "dump": [87, 144, 152, 188, 207, 222, 231, 246], "from_directori": 87, "val_step": 87, "bad": [87, 113, 125, 139, 173, 174, 177, 184], "wast": [87, 168, 193, 196, 202, 231, 237, 239], "test_ab": 87, "train_subset": 87, "val_subset": 87, "valload": 87, "epoch_step": 87, "test_accuraci": 87, "loguniform": [87, 231], "gpus_per_tri": 87, "resources_per_tri": 87, "num_sampl": [87, 122], "checkpoint_at_end": 87, "max_num_epoch": 87, "abspath": [87, 155], "max_t": 87, "grace_period": 87, "reduction_factor": 87, "best_trial": 87, "get_best_tri": 87, "last_result": 87, "best_trained_model": 87, "best_checkpoint": 87, "get_best_checkpoint": 87, "best_checkpoint_data": 87, "test_acc": 87, "000668163": 87, "31479": 87, "0977": 87, "0331514": 87, "31605": 87, "0983": 87, "000150295": 87, "30755": 87, "1023": 87, "0128248": 87, "66912": 87, "4391": 87, "00464561": 87, "7316": 87, "3463": 87, "00031556": 87, "19409": 87, "1736": 87, "00574329": 87, "85679": 87, "3368": 87, "00325652": 87, "30272": 87, "0984": 87, "000342987": 87, "76044": 87, "003734": 87, "53101": 87, "4761": 87, "0037339984519545164": 87, "5310075663924216": 87, "4737": 87, "hyperparameter_tuning_tutori": 87, "\u7b80\u4ecb": [88, 89, 90, 91, 93, 94], "tensorboard\u652f\u6301": [88, 89, 90, 92, 93, 94, 95, 96], "\u6a21\u578b\u7406\u89e3": [88, 89, 90, 92, 93, 94, 95, 96], "\u4f5c\u8005": 88, "brad": 88, "heintz": 88, "\u672c\u6559\u7a0b\u4e0eyoutube\u4e0a\u7684": 88, "\u521d\u5b66\u8005\u7cfb\u5217": 88, "\u540c\u6b65": 88, "\u6bcf\u4e2a\u90e8\u5206\u7684\u9876\u90e8\u90fd\u6709\u4e00\u4e2acolab\u94fe\u63a5": 88, "\u5b83\u4f1a\u5728\u5b8c\u5168\u6258\u7ba1\u7684\u73af\u5883\u4e2d\u6253\u5f00\u4e00\u4e2a\u5305\u542b\u4ee3\u7801\u7684\u7b14\u8bb0\u672c": 88, "\u4e13\u4e1a\u63d0\u793a": 88, "\u4f7f\u7528gpu\u8fd0\u884c\u65f6\u7684colab\u53ef\u4ee5\u52a0\u901f\u64cd\u4f5c": 88, "\u8fd0\u884c\u65f6": 88, "\u66f4\u6539\u8fd0\u884c\u65f6\u7c7b\u578b": 88, "\u672c\u5730": 88, "\u4e0b\u8f7dnotebook\u6216\u5c06\u4ee3\u7801\u590d\u5236\u5230\u60a8\u559c\u6b22\u7684ide\u4e2d": 88, "\u81ea\u52a8\u5fae\u5206\u57fa\u7840": 88, "\u652f\u6301": [88, 96], "captum": [88, 91, 235, 251], "\u8fdb\u884c\u6a21\u578b\u7406\u89e3": 88, "\u8ddf\u968f\u4e0b\u9762\u7684\u89c6\u9891\u6216\u5728": [89, 90, 92, 93, 94, 95, 96], "\u4e0a\u89c2\u770b": [89, 90, 92, 93, 94, 95, 96], "\u529f\u80fd\u662f\u4f7f": 89, "\u5728\u6784\u5efa\u673a\u5668\u5b66\u4e60\u9879\u76ee\u65f6\u7075\u6d3b\u4e14\u5feb\u901f\u7684\u90e8\u5206\u539f\u56e0": 89, "\u5b83\u5141\u8bb8\u5bf9\u590d\u6742\u8ba1\u7b97\u5feb\u901f\u8f7b\u677e\u5730\u8ba1\u7b97\u591a\u4e2a\u504f\u5bfc\u6570": 89, "\u4e5f\u79f0\u4e3a": 89, "\u8fd9\u4e2a\u64cd\u4f5c\u662f\u57fa\u4e8e\u53cd\u5411\u4f20\u64ad\u7684\u795e\u7ecf\u7f51\u7edc\u5b66\u4e60\u7684\u6838\u5fc3": 89, "\u7684\u5f3a\u5927\u4e4b\u5904\u5728\u4e8e\u5b83\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u5730": 89, "\u8ddf\u8e2a\u4f60\u7684\u8ba1\u7b97": 89, "\u8fd9\u610f\u5473\u7740\u5982\u679c\u4f60\u7684\u6a21\u578b\u6709\u51b3\u7b56\u5206\u652f\u6216\u957f\u5ea6\u5728\u8fd0\u884c\u65f6\u624d\u77e5\u9053\u7684\u5faa\u73af": 89, "\u8ba1\u7b97\u4ecd\u7136\u4f1a\u88ab\u6b63\u786e\u8ddf\u8e2a": 89, "\u4f60\u4f1a\u5f97\u5230\u6b63\u786e\u7684\u68af\u5ea6\u6765\u9a71\u52a8\u5b66\u4e60": 89, "\u7ed3\u5408\u4f60\u7684\u6a21\u578b\u662f\u7528": 89, "\u6784\u5efa\u7684\u4e8b\u5b9e": 89, "\u8fd9\u6bd4\u4f9d\u8d56\u4e8e\u5bf9\u66f4\u52a0\u4e25\u683c\u7ed3\u6784\u5316\u7684\u6a21\u578b\u8fdb\u884c\u9759\u6001\u5206\u6790\u6765\u8ba1\u7b97\u68af\u5ea6\u7684\u6846\u67b6\u63d0\u4f9b\u4e86\u66f4\u5927\u7684\u7075\u6d3b\u6027": 89, "\u673a\u5668\u5b66\u4e60\u6a21\u578b\u662f\u4e00\u4e2a": 89, "\u6709\u8f93\u5165\u548c\u8f93\u51fa": 89, "\u5728\u672c\u8ba8\u8bba\u4e2d": 89, "\u6211\u4eec\u5c06\u628a\u8f93\u5165\u89c6\u4e3a\u4e00\u4e2a": 89, "\u7ef4\u5411\u91cf": 89, "\u5176\u5143\u7d20\u4e3a": 89, "\u7136\u540e\u6211\u4eec\u53ef\u4ee5\u5c06\u6a21\u578b": 89, "\u8868\u793a\u4e3a\u8f93\u5165\u7684\u5411\u91cf\u503c\u51fd\u6570": 89, "\u6211\u4eec\u5c06\u6a21\u578b": 89, "\u7684\u8f93\u51fa\u503c\u89c6\u4e3a\u5411\u91cf": 89, "\u56e0\u4e3a\u4e00\u822c\u6765\u8bf4": 89, "\u4e00\u4e2a\u6a21\u578b\u53ef\u80fd\u6709\u4efb\u610f\u6570\u91cf\u7684\u8f93\u51fa": 89, "\u7531\u4e8e\u6211\u4eec\u4e3b\u8981\u5728\u8bad\u7ec3\u7684\u80cc\u666f\u4e0b\u8ba8\u8bba\u81ea\u52a8\u5fae\u5206": 89, "\u6211\u4eec\u611f\u5174\u8da3\u7684\u8f93\u51fa\u5c06\u662f\u6a21\u578b\u7684\u635f\u5931": 89, "\u662f\u6a21\u578b\u8f93\u51fa\u7684\u5355\u503c\u6807\u91cf\u51fd\u6570": 89, "\u8be5\u51fd\u6570\u8868\u793a\u6211\u4eec\u6a21\u578b\u5bf9\u7279\u5b9a\u8f93\u5165\u7684": 89, "\u7406\u60f3": 89, "\u8f93\u51fa\u7684\u9884\u6d4b\u504f\u5dee\u6709\u591a\u5927": 89, "\u4ece\u8fd9\u4e00\u70b9\u5f00\u59cb": 89, "\u6211\u4eec\u901a\u5e38\u4f1a\u7701\u7565\u5411\u91cf\u7b26\u53f7": 89, "\u4f8b\u5982\u4f7f\u7528": 89, "\u6211\u4eec\u5e0c\u671b\u6700\u5c0f\u5316\u635f\u5931": 89, "\u5728\u7406\u60f3\u60c5\u51b5\u4e0b": [89, 95], "\u5373\u5b8c\u7f8e\u6a21\u578b\u7684\u60c5\u51b5\u4e0b": 89, "\u8fd9\u610f\u5473\u7740\u8c03\u6574\u5176\u5b66\u4e60\u6743\u91cd": 89, "\u4e5f\u5c31\u662f\u8be5\u51fd\u6570\u7684\u53ef\u8c03\u53c2\u6570": 89, "\u4f7f\u5f97\u5bf9\u4e8e\u6240\u6709\u8f93\u5165": 89, "\u635f\u5931\u4e3a\u96f6": 89, "\u5728\u73b0\u5b9e\u4e16\u754c\u4e2d": 89, "\u8fd9\u610f\u5473\u7740\u4e00\u4e2a\u8fed\u4ee3\u8fc7\u7a0b": 89, "\u4e0d\u65ad\u5fae\u8c03\u5b66\u4e60\u6743\u91cd": 89, "\u76f4\u5230\u6211\u4eec\u770b\u5230\u5bf9\u4e8e\u5e7f\u6cdb\u7684\u8f93\u5165": 89, "\u5f97\u5230\u53ef\u63a5\u53d7\u7684\u635f\u5931": 89, "\u6211\u4eec\u5982\u4f55\u51b3\u5b9a\u6743\u91cd\u5e94\u8be5\u671d\u54ea\u4e2a\u65b9\u5411\u5fae\u8c03\u591a\u8fdc\u5462": 89, "\u6211\u4eec\u5e0c\u671b": 89, "\u6700\u5c0f\u5316": 89, "\u8fd9\u610f\u5473\u7740\u4f7f\u5176\u5173\u4e8e\u8f93\u5165\u7684\u4e00\u9636\u5bfc\u6570\u7b49\u4e8e0": 89, "\u4f46\u662f\u8bf7\u8bb0\u4f4f": 89, "\u635f\u5931\u4e0d\u662f": 89, "\u76f4\u63a5": 89, "\u7531\u8f93\u5165\u5bfc\u51fa\u7684": 89, "\u800c\u662f\u7531\u6a21\u578b\u8f93\u51fa\u7684\u51fd\u6570\u5bfc\u51fa\u7684": 89, "\u800c\u6a21\u578b\u8f93\u51fa\u53c8\u662f\u8f93\u5165\u7684\u76f4\u63a5\u51fd\u6570": 89, "\u6839\u636e\u5fae\u79ef\u5206\u7684\u94fe\u5f0f\u6cd5\u5219": 89, "\u6211\u4eec\u6709": [89, 95], "\u662f\u590d\u6742\u7684\u5730\u65b9": 89, "\u5982\u679c\u6211\u4eec\u518d\u6b21\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219\u5c55\u5f00\u6a21\u578b\u8f93\u51fa\u5173\u4e8e\u8f93\u5165\u7684\u504f\u5bfc\u6570\u7684\u8868\u8fbe\u5f0f": 89, "\u5b83\u5c06\u6d89\u53ca\u6bcf\u4e2a\u4e58\u4ee5\u7684\u5b66\u4e60\u6743\u91cd": 89, "\u6bcf\u4e2a\u6fc0\u6d3b\u51fd\u6570\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u6bcf\u4e2a\u5176\u4ed6\u6570\u5b66\u53d8\u6362\u7684\u8bb8\u591a\u5c40\u90e8\u504f\u5bfc\u6570": 89, "\u6211\u4eec\u8bd5\u56fe\u6d4b\u91cf\u5176\u68af\u5ea6\u7684\u6bcf\u4e2a\u53d8\u91cf\u7684\u5b8c\u6574\u8868\u8fbe\u5f0f": 89, "\u90fd\u662f\u901a\u8fc7\u8ba1\u7b97\u56fe\u4e2d\u6240\u6709\u53ef\u80fd\u8def\u5f84\u7684\u5c40\u90e8\u68af\u5ea6\u4e4b\u548c\u7684\u4e58\u79ef": 89, "\u7279\u522b\u611f\u5174\u8da3\u7684\u662f\u5b66\u4e60\u6743\u91cd\u4e0a\u7684\u68af\u5ea6": 89, "\u5b83\u4eec\u544a\u8bc9\u6211\u4eec": 89, "\u5e94\u8be5\u671d\u54ea\u4e2a\u65b9\u5411\u6539\u53d8\u6bcf\u4e2a\u6743\u91cd": 89, "\u4ee5\u4f7f\u635f\u5931\u51fd\u6570\u66f4\u63a5\u8fd1\u4e8e\u96f6": 89, "\u7531\u4e8e\u8fd9\u4e9b\u5c40\u90e8\u5bfc\u6570\u7684\u6570\u91cf": 89, "\u6bcf\u4e2a\u5bf9\u5e94\u4e8e\u8ba1\u7b97\u56fe\u4e2d\u7684\u5355\u72ec\u8def\u5f84": 89, "\u5f80\u5f80\u4f1a\u968f\u7740\u795e\u7ecf\u7f51\u7edc\u7684\u6df1\u5ea6\u5448\u6307\u6570\u589e\u957f": 89, "\u56e0\u6b64\u8ba1\u7b97\u5b83\u4eec\u7684\u590d\u6742\u5ea6\u4e5f\u4f1a\u589e\u52a0": 89, "\u8fd9\u5c31\u662f\u81ea\u52a8\u5fae\u5206\u53d1\u6325\u4f5c\u7528\u7684\u5730\u65b9": 89, "\u5b83\u8ddf\u8e2a\u6bcf\u4e00\u6b65\u8ba1\u7b97\u7684\u5386\u53f2": 89, "\u4f60\u5728pytorch\u6a21\u578b\u4e2d\u8ba1\u7b97\u7684\u6bcf\u4e2a\u5f20\u91cf\u90fd\u4fdd\u7559\u4e86\u5176\u8f93\u5165\u5f20\u91cf\u548c\u521b\u5efa\u5b83\u7684\u51fd\u6570\u7684\u5386\u53f2\u8bb0\u5f55": 89, "\u7ed3\u5408pytorch\u4e2d\u7528\u4e8e\u5bf9\u5f20\u91cf\u8fdb\u884c\u64cd\u4f5c\u7684\u6bcf\u4e2a\u51fd\u6570\u90fd\u5185\u7f6e\u4e86\u8ba1\u7b97\u81ea\u8eab\u5bfc\u6570\u7684\u5b9e\u73b0\u8fd9\u4e00\u4e8b\u5b9e": 89, "\u8fd9\u6781\u5927\u5730\u52a0\u5feb\u4e86\u5b66\u4e60\u6240\u9700\u7684\u5c40\u90e8\u5bfc\u6570\u7684\u8ba1\u7b97\u901f\u5ea6": 89, "\u8fd9\u662f\u5f88\u591a\u7406\u8bba": 89, "\u4f46\u5728\u5b9e\u8df5\u4e2d\u4f7f\u7528\u81ea\u52a8\u5fae\u5206\u662f\u4ec0\u4e48\u6837\u7684\u5462": 89, "\u8ba9\u6211\u4eec\u4ece\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u5f00\u59cb": 89, "\u9996\u5148": [89, 90, 92, 95, 104], "\u6211\u4eec\u5c06\u5bfc\u5165\u4e00\u4e9b\u5185\u5bb9": 89, "\u4ee5\u4fbf\u53ef\u4ee5\u7ed8\u5236\u7ed3\u679c": 89, "ticker": [89, 127, 165], "\u63a5\u4e0b\u6765": [89, 92, 95, 104], "\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u8f93\u5165\u5f20\u91cf": 89, "\u5176\u503c\u5747\u5300\u5206\u5e03\u5728\u533a\u95f4": 89, "2\u03c0": 89, "\u5e76\u6307\u5b9a": 89, "\u4e0e\u5927\u591a\u6570\u521b\u5efa\u5f20\u91cf\u7684\u51fd\u6570\u4e00\u6837": 89, "\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u7684": 89, "\u9009\u9879": 89, "\u8bbe\u7f6e\u6b64\u6807\u5fd7\u610f\u5473\u7740\u5728\u968f\u540e\u7684\u6bcf\u4e2a\u8ba1\u7b97\u4e2d": 89, "\u90fd\u4f1a\u5728\u8be5\u8ba1\u7b97\u7684\u8f93\u51fa\u5f20\u91cf\u4e2d\u7d2f\u79ef\u8ba1\u7b97\u5386\u53f2": 89, "\u6211\u4eec\u5c06\u6267\u884c\u4e00\u4e2a\u8ba1\u7b97": 89, "\u5e76\u7ed8\u5236\u5176\u8f93\u51fa\u4e0e\u8f93\u5165\u7684\u5173\u7cfb\u56fe": 89, "\u8ba9\u6211\u4eec\u4ed4\u7ec6\u770b\u770b\u5f20\u91cf": 89, "\u5f53\u6211\u4eec\u6253\u5370\u5b83\u65f6": 89, "\u6211\u4eec\u770b\u5230\u4e00\u4e2a\u6307\u793a\u5b83\u6b63\u5728\u8ddf\u8e2a\u5176\u8ba1\u7b97\u5386\u53f2\u7684\u6307\u793a\u7b26": 89, "\u8fd9\u4e2a": [89, 92], "\u7ed9\u4e86\u6211\u4eec\u4e00\u4e2a\u63d0\u793a": 89, "\u5f53\u6211\u4eec\u6267\u884c\u53cd\u5411\u4f20\u64ad\u6b65\u9aa4\u5e76\u8ba1\u7b97\u68af\u5ea6\u65f6": 89, "\u6211\u4eec\u9700\u8981\u8ba1\u7b97\u6240\u6709\u8fd9\u4e2a\u5f20\u91cf\u8f93\u5165\u7684": 89, "\u7684\u5bfc\u6570": 89, "\u8ba9\u6211\u4eec\u6267\u884c\u66f4\u591a\u8ba1\u7b97": 89, "\u6700\u540e": [89, 92, 96, 104, 240], "\u8ba9\u6211\u4eec\u8ba1\u7b97\u4e00\u4e2a\u5355\u5143\u7d20\u8f93\u51fa": 89, "\u5f53\u4f60\u5728\u4e0d\u5e26\u53c2\u6570\u7684\u60c5\u51b5\u4e0b\u5bf9\u4e00\u4e2a\u5f20\u91cf\u8c03\u7528": 89, "\u5b83\u671f\u671b\u8c03\u7528\u5f20\u91cf\u53ea\u5305\u542b\u4e00\u4e2a\u5143\u7d20": 89, "\u5c31\u50cf\u5728\u8ba1\u7b97\u635f\u5931\u51fd\u6570\u65f6\u4e00\u6837": 89, "\u6bcf\u4e2a\u5b58\u50a8\u5728\u6211\u4eec\u5f20\u91cf\u4e2d\u7684": 89, "\u5141\u8bb8\u4f60\u4f7f\u7528\u5176": 89, "\u6cbf\u7740\u8ba1\u7b97\u8def\u5f84\u4e00\u76f4\u56de\u6eaf\u5230\u5176\u8f93\u5165": 89, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230": 89, "\u4e0a\u6df1\u5165\u94bb\u7814\u8fd9\u4e2a\u5c5e\u6027\u4f1a\u663e\u793a\u6211\u4eec\u4e4b\u524d\u6240\u6709\u5f20\u91cf\u7684\u68af\u5ea6\u51fd\u6570": 89, "\u88ab\u62a5\u544a\u4e3a": 89, "\u8868\u793a\u8fd9\u662f\u4e00\u4e2a\u6ca1\u6709\u81ea\u8eab\u5386\u53f2\u7684\u51fd\u6570\u8f93\u5165": 89, "na": [89, 92], "\u6709\u4e86\u8fd9\u4e9b\u673a\u5236": 89, "\u6211\u4eec\u5982\u4f55\u83b7\u53d6\u5bfc\u6570\u5462": 89, "\u60a8\u5728\u8f93\u51fa\u4e0a\u8c03\u7528": 89, "\u5e76\u68c0\u67e5\u8f93\u5165\u7684": 89, "\u5c5e\u6027\u6765\u68c0\u67e5\u68af\u5ea6": 89, "\u56de\u987e\u4e00\u4e0b\u6211\u4eec\u4e3a\u4e86\u8fbe\u5230\u8fd9\u4e00\u6b65\u6240\u91c7\u53d6\u7684\u8ba1\u7b97\u6b65\u9aa4": 89, "\u6dfb\u52a0\u4e00\u4e2a\u5e38\u6570": 89, "\u5c31\u50cf\u6211\u4eec\u8ba1\u7b97": 89, "\u65f6\u6240\u505a\u7684\u90a3\u6837": 89, "\u4e0d\u4f1a\u6539\u53d8\u5bfc\u6570": 89, "\u5269\u4e0b\u7684\u5c31\u662f": 89, "\u5b83\u7684\u5bfc\u6570\u5e94\u8be5\u662f": 89, "\u4ece\u4e0a\u9762\u7684\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa": 89, "\u8fd9\u6b63\u662f\u6211\u4eec\u6240\u770b\u5230\u7684": 89, "\u8bf7\u6ce8\u610f": [89, 96, 104, 249], "\u53ea\u6709\u8ba1\u7b97\u56fe\u7684": 89, "\u53f6\u5b50\u8282\u70b9": 89, "\u624d\u4f1a\u8ba1\u7b97\u5b83\u4eec\u7684\u68af\u5ea6": 89, "\u5982\u679c\u4f60\u5c1d\u8bd5": 89, "\u4f60\u4f1a\u5f97\u5230": 89, "\u5728\u8fd9\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u4e2d": 89, "\u53ea\u6709\u8f93\u5165\u662f\u53f6\u5b50\u8282\u70b9": 89, "\u6240\u4ee5\u53ea\u6709\u5b83\u6709\u8ba1\u7b97\u68af\u5ea6": 89, "\u6211\u4eec\u5df2\u7ecf\u7b80\u5355\u5730\u770b\u4e86\u4e00\u4e0b\u81ea\u52a8\u6c42\u5bfc\u662f\u5982\u4f55\u5de5\u4f5c\u7684": 89, "\u4f46\u662f\u5f53\u5b83\u5728\u5b9e\u9645\u5e94\u7528\u4e2d": 89, "\u770b\u8d77\u6765\u4f1a\u662f\u4ec0\u4e48\u6837\u5b50\u5462": 89, "\u8ba9\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u5c0f\u6a21\u578b\u5e76\u68c0\u67e5\u5b83\u5728\u5355\u4e2a\u8bad\u7ec3\u6279\u6b21\u540e\u662f\u5982\u4f55\u53d8\u5316\u7684": 89, "\u5b9a\u4e49\u4e00\u4e9b\u5e38\u91cf": 89, "\u6211\u4eec\u7684\u6a21\u578b": 89, "\u4ee5\u53ca\u4e00\u4e9b\u8f93\u5165\u548c\u8f93\u51fa": 89, "dim_in": 89, "dim_out": 89, "tinymodel": [89, 93], "layer2": [89, 149, 157, 160], "some_input": 89, "ideal_output": 89, "\u4f60\u53ef\u80fd\u4f1a\u6ce8\u610f\u5230": 89, "\u6211\u4eec\u4ece\u672a\u4e3a\u6a21\u578b\u7684\u5c42\u8bbe\u7f6e": 89, "\u7684\u5b50\u7c7b\u4e2d": 89, "\u5047\u5b9a\u6211\u4eec\u5e0c\u671b\u8ddf\u8e2a\u5c42\u6743\u91cd\u7684\u68af\u5ea6\u4ee5\u8fdb\u884c\u5b66\u4e60": 89, "\u5982\u679c\u6211\u4eec\u67e5\u770b\u6a21\u578b\u7684\u5c42": 89, "\u6211\u4eec\u53ef\u4ee5\u68c0\u67e5\u6743\u91cd\u7684\u503c": 89, "\u5e76\u9a8c\u8bc1\u5c1a\u672a\u8ba1\u7b97\u4efb\u4f55\u68af\u5ea6": 89, "\u53ea\u6253\u5370\u4e00\u5c0f\u90e8\u5206": 89, "\u8ba9\u6211\u4eec\u770b\u770b\u5f53\u6211\u4eec\u8fd0\u884c\u4e00\u4e2a\u8bad\u7ec3\u6279\u6b21\u65f6\u4f1a\u53d1\u751f\u4ec0\u4e48\u53d8\u5316": 89, "\u4f5c\u4e3a\u635f\u5931\u51fd\u6570": [89, 104], "\u4e4b\u95f4\u7684\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb\u7684\u5e73\u65b9": 89, "\u5e76\u4f7f\u7528\u57fa\u672c\u7684\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u4f18\u5316\u5668": 89, "\u73b0\u5728": [89, 90, 94, 104, 236], "\u8ba9\u6211\u4eec\u8c03\u7528": 89, "\u5e76\u770b\u770b\u4f1a\u53d1\u751f\u4ec0\u4e48": 89, "\u6bcf\u4e2a\u5b66\u4e60\u6743\u91cd\u7684\u68af\u5ea6\u90fd\u5df2\u7ecf\u8ba1\u7b97\u51fa\u6765\u4e86": 89, "\u4f46\u6743\u91cd\u4fdd\u6301\u4e0d\u53d8": 89, "\u56e0\u4e3a\u6211\u4eec\u8fd8\u6ca1\u6709\u8fd0\u884c\u4f18\u5316\u5668": 89, "\u4f18\u5316\u5668\u8d1f\u8d23\u6839\u636e\u8ba1\u7b97\u51fa\u7684\u68af\u5ea6\u66f4\u65b0\u6a21\u578b\u6743\u91cd": 89, "\u4f60\u5e94\u8be5\u770b\u5230": 89, "\u7684\u6743\u91cd\u5df2\u7ecf\u6539\u53d8": 89, "\u5173\u4e8e\u8fd9\u4e2a\u8fc7\u7a0b\u7684\u4e00\u4e2a\u91cd\u8981\u4e8b\u9879": 89, "\u5728\u8c03\u7528": 89, "\u4e4b\u540e": [89, 104], "\u4f60\u9700\u8981\u8c03\u7528": 89, "\u5426\u5219\u6bcf\u6b21\u4f60\u8fd0\u884c": 89, "\u5b66\u4e60\u6743\u91cd\u4e0a\u7684\u68af\u5ea6\u5c06\u4f1a\u7d2f\u79ef": 89, "set_to_non": [89, 230, 247], "\u5728\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u540e": 89, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u5728\u591a\u6b21\u8fd0\u884c": 89, "\u5927\u591a\u6570\u68af\u5ea6\u7684\u5e45\u5ea6\u4f1a\u53d8\u5f97\u66f4\u5927": 89, "\u5982\u679c\u5728\u8fd0\u884c\u4e0b\u4e00\u4e2a\u8bad\u7ec3\u6279\u6b21\u4e4b\u524d": 89, "\u6ca1\u6709\u5c06\u68af\u5ea6\u6e05\u96f6": 89, "\u68af\u5ea6\u5c31\u4f1a\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u81a8\u80c0": 89, "\u4ece\u800c\u5bfc\u81f4\u4e0d\u6b63\u786e\u548c": 89, "\u4e0d\u53ef\u9884\u6d4b\u7684\u5b66\u4e60\u7ed3\u679c": 89, "\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b": [89, 240, 250], "\u4f60\u9700\u8981\u5bf9\u662f\u5426\u542f\u7528\u81ea\u52a8\u6c42\u5bfc\u8fdb\u884c\u7ec6\u7c92\u5ea6\u63a7\u5236": 89, "\u6709\u591a\u79cd\u65b9\u6cd5\u53ef\u4ee5\u505a\u5230\u8fd9\u4e00\u70b9": 89, "\u5177\u4f53\u53d6\u51b3\u4e8e\u60c5\u51b5": 89, "\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u76f4\u63a5\u66f4\u6539\u5f20\u91cf\u4e0a\u7684": 89, "\u6807\u5fd7": 89, "b1": 89, "b2": 89, "\u5728\u4e0a\u9762\u7684\u5355\u5143\u683c\u4e2d": [89, 95], "\u6709\u4e00\u4e2a": [89, 93], "\u4e00\u4e2a": [89, 92, 233, 249], "\u8ba1\u7b97\u5386\u53f2\u7684\u8ddf\u8e2a\u8bb0\u5f55": 89, "\u8fd9\u662f\u6211\u4eec\u6240\u671f\u671b\u7684": 89, "\u56e0\u4e3a\u5b83\u662f\u4ece\u4e00\u4e2a\u542f\u7528\u4e86": 89, "\u7684\u5f20\u91cf": [89, 92, 95, 111], "\u6d3e\u751f\u51fa\u6765\u7684": 89, "\u5f53\u6211\u4eec\u4f7f\u7528": 89, "\u663e\u5f0f\u5730\u5173\u95ed": 89, "\u8ba1\u7b97\u5386\u53f2\u5c31\u4e0d\u518d\u88ab\u8ddf\u8e2a\u4e86": 89, "\u6b63\u5982\u6211\u4eec\u5728\u8ba1\u7b97": 89, "\u6240\u770b\u5230\u7684\u90a3\u6837": 89, "\u5982\u679c\u4f60\u53ea\u9700\u8981\u4e34\u65f6\u5173\u95ed": 89, "\u4e00\u4e2a\u66f4\u597d\u7684\u65b9\u6cd5\u662f\u4f7f\u7528": 89, "c2": 89, "\u4e5f\u53ef\u4ee5\u7528\u4f5c\u51fd\u6570\u6216\u65b9\u6cd5\u88c5\u9970\u5668": 89, "add_tensors1": 89, "add_tensors2": 89, "\u6709\u4e00\u4e2a\u5bf9\u5e94\u7684\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668": 89, "enable_grad": 89, "\u7528\u4e8e\u5728\u5c1a\u672a\u542f\u7528\u65f6": 89, "\u6253\u5f00": [89, 95, 121], "\u5b83\u4e5f\u53ef\u4ee5\u7528\u4f5c\u88c5\u9970\u5668": 89, "\u4f60\u53ef\u80fd\u6709\u4e00\u4e2a\u9700\u8981\u68af\u5ea6\u8ddf\u8e2a\u7684\u5f20\u91cf": 89, "\u4f46\u4f60\u60f3\u8981\u4e00\u4e2a\u4e0d\u9700\u8981\u7684\u526f\u672c": 89, "\u4e3a\u6b64": [89, 90, 94, 95, 104], "\u6211\u4eec\u6709\u5f20\u91cf\u5bf9\u8c61\u7684": 89, "\u5b83\u521b\u5efa\u4e00\u4e2a\u4e0e\u8ba1\u7b97\u5386\u53f2": 89, "\u5206\u79bb": 89, "\u7684\u5f20\u91cf\u526f\u672c": 89, "\u6211\u4eec\u4e4b\u524d\u8fd9\u6837\u505a\u662f\u56e0\u4e3a\u6211\u4eec\u60f3\u8981\u7ed8\u5236\u4e00\u4e9b\u5f20\u91cf\u7684\u56fe\u50cf": 89, "\u8fd9\u662f\u56e0\u4e3a": [89, 90], "\u671f\u671b\u8f93\u5165\u662f\u4e00\u4e2a": 89, "\u6570\u7ec4": [89, 104], "\u800c\u4ece\u5177\u6709": 89, "\u6570\u7ec4\u7684\u9690\u5f0f\u8f6c\u6362\u662f\u4e0d\u5141\u8bb8\u7684": 89, "\u5236\u4f5c\u4e00\u4e2a\u5206\u79bb\u7684\u526f\u672c\u8ba9\u6211\u4eec\u53ef\u4ee5\u7ee7\u7eed\u524d\u8fdb": 89, "\u5728\u672c\u7ec3\u4e60\u4e2d\u5230\u76ee\u524d\u4e3a\u6b62\u7684\u6bcf\u4e2a\u793a\u4f8b\u4e2d": 89, "\u6211\u4eec\u90fd\u4f7f\u7528\u4e86\u53d8\u91cf\u6765\u6355\u83b7\u8ba1\u7b97\u7684\u4e2d\u95f4\u503c": 89, "\u9700\u8981\u8fd9\u4e9b\u4e2d\u95f4\u503c\u6765\u6267\u884c\u68af\u5ea6\u8ba1\u7b97": 89, "\u5728\u4f7f\u7528": 89, "\u4f60\u5fc5\u987b": 89, "\u5c0f\u5fc3\u4f7f\u7528\u539f\u4f4d\u64cd\u4f5c": 89, "\u8fd9\u6837\u505a\u53ef\u80fd\u4f1a\u7834\u574f\u8ba1\u7b97\u5bfc\u6570\u6240\u9700\u7684\u4fe1\u606f": 89, "\u8c03\u7528\u65f6\u9700\u8981\u8fd9\u4e9b\u4fe1\u606f": 89, "\u5982\u679c\u4f60\u5c1d\u8bd5\u5bf9\u9700\u8981": 89, "\u7684\u53f6\u53d8\u91cf\u8fdb\u884c\u539f\u4f4d\u64cd\u4f5c": 89, "\u751a\u81f3\u4f1a\u963b\u6b62\u4f60": 89, "\u5982\u4e0b\u6240\u793a": [89, 104], "\u4f1a\u8be6\u7ec6\u8ddf\u8e2a\u4f60\u7684\u6bcf\u4e00\u6b65\u8ba1\u7b97": 89, "\u8fd9\u79cd\u8ba1\u7b97\u5386\u53f2": 89, "\u7ed3\u5408\u65f6\u95f4\u4fe1\u606f": 89, "\u5c06\u6784\u6210\u4e00\u4e2a\u65b9\u4fbf\u7684\u5206\u6790\u5668": 89, "\u5c31\u5185\u7f6e\u4e86\u8fd9\u4e2a\u529f\u80fd": 89, "\u8fd9\u91cc\u6709\u4e00\u4e2a\u5feb\u901f\u4f7f\u7528\u793a\u4f8b": 89, "run_on_gpu": 89, "prf": 89, "key_averag": [89, 109, 144, 164, 219, 238], "sort_bi": [89, 109, 144, 164, 219, 238], "self_cpu_time_tot": [89, 109, 119, 144, 219, 238], "\u5206\u6790\u5668\u53ef\u4ee5\u6807\u8bb0\u4ee3\u7801\u7684\u5355\u4e2a\u5b50\u5757": 89, "\u6309\u8f93\u5165\u5f20\u91cf\u5f62\u72b6\u5206\u89e3\u6570\u636e": 89, "\u5e76\u5c06\u6570\u636e\u5bfc\u51fa\u4e3a": 89, "\u8ddf\u8e2a\u5de5\u5177\u6587\u4ef6": 89, "\u6709\u5173": 89, "\u7684\u5b8c\u6574\u8be6\u7ec6\u4fe1\u606f": 89, "\u5982\u679c\u4f60\u6709\u4e00\u4e2a\u5177\u6709": 89, "\u7ef4\u8f93\u5165\u548c": 89, "\u7ef4\u8f93\u51fa\u7684\u51fd\u6570": 89, "\u5b8c\u6574\u7684\u68af\u5ea6\u662f\u6bcf\u4e2a\u8f93\u51fa\u76f8\u5bf9\u4e8e\u6bcf\u4e2a\u8f93\u5165\u7684": 89, "\u5bfc\u6570\u7684\u77e9\u9635": 89, "\u5982\u679c\u4f60\u6709\u7b2c\u4e8c\u4e2a\u51fd\u6570": 89, "\u5b83": [89, 95, 96], "\u63a5\u53d7": 89, "\u7ef4\u8f93\u5165": 89, "\u4e5f\u5c31\u662f\u4e0e\u4e0a\u9762\u7684\u8f93\u51fa\u5177\u6709\u76f8\u540c\u7684\u7ef4\u5ea6": 89, "\u5e76\u8fd4\u56de\u4e00\u4e2a": 89, "\u6807\u91cf\u8f93\u51fa": 89, "\u4f60\u53ef\u4ee5\u7528\u4e00\u4e2a\u5217\u5411\u91cf\u6765\u8868\u793a\u5b83\u76f8\u5bf9\u4e8e": 89, "\u7684\u68af\u5ea6": 89, "\u8fd9\u5b9e\u9645\u4e0a\u53ea\u662f\u4e00\u4e2a\u4e00\u5217\u7684": 89, "\u66f4\u5177\u4f53\u5730\u8bf4": 89, "\u60f3\u8c61\u7b2c\u4e00\u4e2a\u51fd\u6570\u662f\u4f60\u7684": 89, "\u6a21\u578b": [89, 93, 121, 139, 233, 240], "\u53ef\u80fd\u6709\u8bb8\u591a\u8f93\u5165\u548c\u8bb8\u591a\u8f93\u51fa": 89, "\u7b2c\u4e8c\u4e2a\u51fd\u6570\u662f\u4e00\u4e2a\u635f\u5931\u51fd\u6570": 89, "\u4ee5\u6a21\u578b\u7684\u8f93\u51fa\u4f5c\u4e3a\u8f93\u5165": 89, "\u635f\u5931\u503c\u4f5c\u4e3a\u6807\u91cf\u8f93\u51fa": 89, "\u5982\u679c\u6211\u4eec\u5c06\u7b2c\u4e00\u4e2a\u51fd\u6570\u7684": 89, "\u4e0e\u7b2c\u4e8c\u4e2a\u51fd\u6570\u7684\u68af\u5ea6\u76f8\u4e58": 89, "\u5e76\u5e94\u7528\u94fe\u5f0f\u6cd5\u5219": 89, "\u6211\u4eec\u5f97\u5230": 89, "\u4f60\u4e5f\u53ef\u4ee5\u4f7f\u7528\u7b49\u4ef7\u7684\u64cd\u4f5c": 89, "\u5e76\u5f97\u5230\u4e00\u4e2a\u884c\u5411\u91cf": 89, "\u6240\u5f97\u5230\u7684\u5217\u5411\u91cf\u5c31\u662f": 89, "\u7b2c\u4e8c\u4e2a\u51fd\u6570\u76f8\u5bf9\u4e8e\u7b2c\u4e00\u4e2a\u51fd\u6570\u7684\u8f93\u5165\u7684\u68af\u5ea6": 89, "\u6216\u8005\u5728\u6211\u4eec\u7684": 89, "\u6a21\u578b\u548c\u635f\u5931\u51fd\u6570\u7684\u60c5\u51b5\u4e0b": 89, "\u5c31\u662f\u635f\u5931\u76f8\u5bf9\u4e8e\u6a21\u578b\u8f93\u5165\u7684\u68af\u5ea6": 89, "\u662f\u4e00\u4e2a\u7528\u4e8e\u8ba1\u7b97\u8fd9\u4e9b\u4e58\u79ef\u7684\u5f15\u64ce": 89, "\u8fd9\u5c31\u662f\u6211\u4eec\u5728": 89, "\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u5982\u4f55\u7d2f\u79ef\u5b66\u4e60\u6743\u91cd\u7684\u68af\u5ea6": 89, "\u8c03\u7528\u4e5f\u53ef\u4ee5": 89, "\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u7684\u5411\u91cf\u8f93\u5165": 89, "\u8be5\u5411\u91cf\u8868\u793a": 89, "\u5f20\u91cf\u4e0a\u7684\u4e00\u7ec4\u68af\u5ea6": 89, "\u8fd9\u4e9b\u68af\u5ea6\u5c06\u4e58\u4ee5\u524d\u9762\u7684": 89, "\u8ddf\u8e2a\u5f20\u91cf\u7684": 89, "\u8ba9\u6211\u4eec\u7528\u4e00\u4e2a\u5c0f\u5411\u91cf\u5c1d\u8bd5\u4e00\u4e2a\u5177\u4f53\u7684\u4f8b\u5b50": 89, "\u5982\u679c\u6211\u4eec\u5c1d\u8bd5\u73b0\u5728\u8c03\u7528": 89, "\u6211\u4eec\u4f1a\u5f97\u5230\u4e00\u4e2a\u8fd0\u884c\u65f6\u9519\u8bef\u548c\u4e00\u6761": 89, "\u6d88\u606f": 89, "\u8bf4\u660e\u53ea\u80fd": 89, "\u9690\u5f0f\u5730": 89, "\u4e3a\u6807\u91cf\u8f93\u51fa\u8ba1\u7b97\u68af\u5ea6": 89, "\u5bf9\u4e8e\u591a\u7ef4\u8f93\u51fa": 89, "\u671f\u671b\u6211\u4eec": 89, "\u63d0\u4f9b\u8fd9\u4e09\u4e2a\u8f93\u51fa\u7684\u68af\u5ea6": 89, "\u5b83\u53ef\u4ee5\u5c06\u8fd9\u4e9b\u68af\u5ea6\u4e58\u4ee5jacobian\u77e9\u9635": 89, "\u4ee3\u66ff\u68af\u5ea6": 89, "\u8f93\u51fa\u68af\u5ea6\u90fd\u4e0e2\u7684\u5e42\u6709\u5173": 89, "\u8fd9\u6b63\u662f\u6211\u4eec\u4ece\u91cd\u590d\u7684\u53cc\u500d\u64cd\u4f5c\u4e2d\u6240\u671f\u671b\u7684": 89, "\u53ef\u4ee5\u76f4\u63a5\u8bbf\u95ee\u91cd\u8981\u7684\u5dee\u5206\u77e9\u9635\u548c\u5411\u91cf\u8fd0\u7b97": 89, "\u7279\u522b\u662f": 89, "\u5b83\u5141\u8bb8\u4f60\u8ba1\u7b97\u7279\u5b9a\u51fd\u6570\u5728\u7279\u5b9a\u8f93\u5165\u4e0b\u7684jacobian\u77e9\u9635\u548c": 89, "hessian\u77e9\u9635": 89, "\u7c7b\u4f3c\u4e8ejacobian\u77e9\u9635": 89, "\u4f46\u8868\u793a\u6240\u6709\u504f\u5bfc\u6570\u7684": 89, "\u7b2c\u4e8c\u9636": 89, "\u5bfc\u6570": 89, "\u5b83\u8fd8\u63d0\u4f9b\u4e86\u4e0e\u8fd9\u4e9b\u77e9\u9635": 89, "\u8fdb\u884c\u5411\u91cf\u4e58\u79ef\u7684\u65b9\u6cd5": 89, "\u8ba9\u6211\u4eec\u8ba1\u7b97\u4e00\u4e2a\u7b80\u5355\u51fd\u6570\u7684jacobian\u77e9\u9635": 89, "\u5bf9\u4e8e\u4e24\u4e2a\u5355\u5143\u7d20\u8f93\u5165\u8fdb\u884c\u8bc4\u4f30": 89, "exp_add": 89, "\u5982\u679c\u4f60\u4ed4\u7ec6\u89c2\u5bdf": 89, "\u7b2c\u4e00\u4e2a\u8f93\u51fa\u5e94\u8be5\u7b49\u4e8e": 89, "\u56e0\u4e3a": [89, 104, 246], "\u5bfc\u6570\u662f": 89, "\u7b2c\u4e8c\u4e2a\u503c\u5e94\u8be5\u662f3": 89, "\u4f60\u5f53\u7136\u4e5f\u53ef\u4ee5\u5bf9\u66f4\u9ad8\u9636\u7684\u5f20\u91cf\u8fd9\u6837\u505a": 89, "hessian": [89, 121, 205], "\u65b9\u6cd5\u7684\u5de5\u4f5c\u65b9\u5f0f\u5b8c\u5168\u76f8\u540c": 89, "\u5047\u8bbe\u4f60\u7684": 89, "\u51fd\u6570\u662f\u4e24\u6b21\u53ef\u5fae\u7684": 89, "\u4f46\u8fd4\u56de\u6240\u6709\u4e8c\u9636\u5bfc\u6570\u7684\u77e9\u9635": 89, "\u5982\u679c\u4f60\u63d0\u4f9b\u4e86\u5411\u91cf": 89, "\u8fd8\u6709\u4e00\u4e2a\u76f4\u63a5\u8ba1\u7b97\u5411\u91cf": 89, "\u96c5\u53ef\u6bd4\u4e58\u79ef\u7684\u51fd\u6570": 89, "do_some_doubl": 89, "my_gradi": 89, "vjp": [89, 145, 150, 205], "jvp": [89, 141, 145, 150], "\u65b9\u6cd5\u6267\u884c\u4e0e": 89, "\u76f8\u540c\u7684\u77e9\u9635\u4e58\u6cd5": 89, "\u4f46\u64cd\u4f5c\u6570\u987a\u5e8f\u76f8\u53cd": 89, "vhp": [89, 121], "hvp": [89, 121], "\u65b9\u6cd5\u5bf9\u4e8e\u5411\u91cf": 89, "\u6d77\u68ee\u77e9\u9635\u4e58\u79ef\u4e5f\u662f\u5982\u6b64": 89, "\u6709\u5173\u66f4\u591a\u4fe1\u606f": [89, 94, 95, 250], "\u529f\u80fd": 89, "\u4e2d\u7684\u6027\u80fd\u8bf4\u660e": 89, "autogradyt_tutori": [89, 91], "\u4e0b\u8f7d\u7b14\u8bb0\u672c\u548c\u76f8\u5e94\u6587\u4ef6": 90, "\u62c9\u4e01\u8bed\u4e2d\u7684": 90, "\u7406\u89e3": 90, "\u662f\u4e00\u4e2a\u5f00\u6e90\u7684": 90, "\u53ef\u6269\u5c55\u7684\u6a21\u578b\u53ef\u89e3\u91ca\u6027\u5e93": 90, "\u5efa\u7acb\u5728pytorch\u4e4b\u4e0a": 90, "\u968f\u7740\u6a21\u578b\u590d\u6742\u6027\u7684\u589e\u52a0\u548c\u7531\u6b64\u5e26\u6765\u7684\u900f\u660e\u5ea6\u7684\u7f3a\u4e4f": 90, "\u6a21\u578b\u53ef\u89e3\u91ca\u6027\u65b9\u6cd5\u53d8\u5f97\u8d8a\u6765\u8d8a\u91cd\u8981": 90, "\u6a21\u578b\u7406\u89e3\u662f\u4e00\u4e2a\u6d3b\u8dc3\u7684\u7814\u7a76\u9886\u57df": 90, "\u4e5f\u662f\u8de8\u884c\u4e1a\u4f7f\u7528\u673a\u5668\u5b66\u4e60\u7684\u5b9e\u9645\u5e94\u7528\u7684\u4e00\u4e2a\u5173\u6ce8\u9886\u57df": 90, "captum\u63d0\u4f9b\u4e86\u6700\u5148\u8fdb\u7684\u7b97\u6cd5": 90, "\u5305\u62ec\u96c6\u6210\u68af\u5ea6": 90, "\u4e3a\u7814\u7a76\u4eba\u5458\u548c\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u4e86\u4e00\u79cd\u7b80\u5355\u7684\u65b9\u5f0f\u6765\u7406\u89e3\u54ea\u4e9b\u7279\u5f81\u5bf9\u6a21\u578b\u7684\u8f93\u51fa\u505a\u51fa\u4e86\u8d21\u732e": 90, "\u5b8c\u6574\u7684\u6587\u6863": 90, "api\u53c2\u8003\u548c\u4e00\u5957\u5173\u4e8e\u7279\u5b9a\u4e3b\u9898\u7684\u6559\u7a0b\u53ef\u5728": 90, "\u7f51\u7ad9\u4e0a\u627e\u5230": 90, "captum\u5bf9\u6a21\u578b\u53ef\u89e3\u91ca\u6027\u7684\u65b9\u6cd5\u662f\u57fa\u4e8e": 90, "\u5f52\u56e0": 90, "captum\u4e2d\u6709\u4e09\u79cd\u7c7b\u578b\u7684\u5f52\u56e0": 90, "\u7279\u5f81\u5f52\u56e0": 90, "\u8bd5\u56fe\u89e3\u91ca\u7279\u5b9a\u8f93\u51fa\u662f\u7531\u751f\u6210\u5b83\u7684\u8f93\u5165\u7684\u54ea\u4e9b\u7279\u5f81\u4ea7\u751f\u7684": 90, "\u7528\u67d0\u4e9b\u8bcd\u6765\u89e3\u91ca\u4e00\u7bc7\u7535\u5f71\u8bc4\u8bba\u662f\u6b63\u9762\u8fd8\u662f\u8d1f\u9762\u7684": 90, "\u5c31\u662f\u7279\u5f81\u5f52\u56e0\u7684\u4e00\u4e2a\u4f8b\u5b50": 90, "\u5c42\u5f52\u56e0": 90, "\u68c0\u67e5\u6a21\u578b\u7684\u9690\u85cf\u5c42\u5728\u7279\u5b9a\u8f93\u5165\u4e0b\u7684\u6d3b\u52a8": 90, "\u68c0\u67e5\u5377\u79ef\u5c42\u5bf9\u8f93\u5165\u56fe\u50cf\u7684\u7a7a\u95f4\u6620\u5c04\u8f93\u51fa\u5c31\u662f\u5c42\u5f52\u56e0\u7684\u4e00\u4e2a\u4f8b\u5b50": 90, "\u795e\u7ecf\u5143\u5f52\u56e0": 90, "\u7c7b\u4f3c\u4e8e\u5c42\u5f52\u56e0": 90, "\u4f46\u5173\u6ce8\u5355\u4e2a\u795e\u7ecf\u5143\u7684\u6d3b\u52a8": 90, "\u5728\u8fd9\u4e2a\u4ea4\u4e92\u5f0f\u7b14\u8bb0\u672c\u4e2d": 90, "\u6211\u4eec\u5c06\u770b\u770b\u7279\u5f81\u5f52\u56e0\u548c\u5c42\u5f52\u56e0": 90, "\u6bcf\u79cd\u5f52\u56e0\u7c7b\u578b\u90fd\u6709\u591a\u79cd": 90, "\u5f52\u56e0\u7b97\u6cd5": 90, "\u4e0e\u4e4b\u76f8\u5173\u8054": 90, "\u8bb8\u591a\u5f52\u56e0\u7b97\u6cd5\u53ef\u5206\u4e3a\u4e24\u5927\u7c7b": 90, "\u57fa\u4e8e\u68af\u5ea6\u7684\u7b97\u6cd5": 90, "\u8ba1\u7b97\u6a21\u578b\u8f93\u51fa": 90, "\u5c42\u8f93\u51fa\u6216\u795e\u7ecf\u5143\u6fc0\u6d3b\u76f8\u5bf9\u4e8e\u8f93\u5165\u7684\u53cd\u5411\u68af\u5ea6": 90, "\u96c6\u6210\u68af\u5ea6": 90, "\u7528\u4e8e\u7279\u5f81": 90, "\u5c42\u68af\u5ea6": 90, "\u6fc0\u6d3b": 90, "\u795e\u7ecf\u5143\u4f20\u5bfc": 90, "\u90fd\u662f\u57fa\u4e8e\u68af\u5ea6\u7684\u7b97\u6cd5": 90, "\u57fa\u4e8e\u6270\u52a8\u7684\u7b97\u6cd5": 90, "\u68c0\u67e5\u6a21\u578b": 90, "\u5c42\u6216\u795e\u7ecf\u5143\u7684\u8f93\u51fa\u5728\u8f93\u5165\u53d1\u751f\u53d8\u5316\u65f6\u7684\u53d8\u5316\u60c5\u51b5": 90, "\u8f93\u5165\u6270\u52a8\u53ef\u80fd\u662f\u6709\u9488\u5bf9\u6027\u7684\u6216\u968f\u673a\u7684": 90, "\u906e\u6321": 90, "\u7279\u5f81\u6d88\u878d": 90, "\u7279\u5f81\u7f6e\u6362": 90, "\u90fd\u662f\u57fa\u4e8e\u6270\u52a8\u7684\u7b97\u6cd5": 90, "\u6211\u4eec\u5c06\u5728\u4e0b\u9762\u68c0\u67e5\u8fd9\u4e24\u79cd\u7c7b\u578b\u7684\u7b97\u6cd5": 90, "\u7279\u522b\u662f\u5bf9\u4e8e\u5927\u578b\u6a21\u578b": 90, "\u4ee5\u4e0e\u88ab\u68c0\u67e5\u7684\u8f93\u5165\u7279\u5f81\u76f4\u63a5\u76f8\u5173\u7684\u65b9\u5f0f\u53ef\u89c6\u5316\u5f52\u56e0\u6570\u636e\u662f\u5f88\u6709\u4ef7\u503c\u7684": 90, "\u867d\u7136\u5f53\u7136\u53ef\u4ee5\u4f7f\u7528matplotlib": 90, "plotly\u6216\u7c7b\u4f3c\u5de5\u5177\u521b\u5efa\u81ea\u5df1\u7684\u53ef\u89c6\u5316": 90, "\u4f46captum\u63d0\u4f9b\u4e86\u4e13\u95e8\u7528\u4e8e\u5176\u5f52\u56e0\u7684\u589e\u5f3a\u5de5\u5177": 90, "attr": [90, 147, 155, 207, 229], "\u4e0b\u9762\u5bfc\u5165\u4e3a": 90, "\u63d0\u4f9b\u4e86\u6709\u52a9\u4e8e\u53ef\u89c6\u5316\u4e0e\u56fe\u50cf\u76f8\u5173\u7684\u5f52\u56e0\u7684\u51fd\u6570": 90, "\u662f\u5efa\u7acb\u5728captum\u4e4b\u4e0a\u7684\u4e00\u4e2a\u6613\u4e8e\u4f7f\u7528\u7684\u53ef\u89e3\u91ca\u6027\u53ef\u89c6\u5316\u5c0f\u90e8\u4ef6": 90, "\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5e26\u6709\u73b0\u6210\u53ef\u89c6\u5316\u5de5\u5177\u7684\u5c0f\u90e8\u4ef6": 90, "\u7528\u4e8e\u56fe\u50cf": 90, "\u6587\u672c\u548c\u4efb\u610f\u6a21\u578b\u7c7b\u578b": 90, "\u8fd9\u4e24\u79cd\u53ef\u89c6\u5316\u5de5\u5177\u96c6\u90fd\u5c06\u5728\u672c\u7b14\u8bb0\u672c\u4e2d\u8fdb\u884c\u6f14\u793a": 90, "\u524d\u51e0\u4e2a\u793a\u4f8b\u5c06\u96c6\u4e2d\u5728\u8ba1\u7b97\u673a\u89c6\u89c9\u7528\u4f8b\u4e0a": 90, "\u4f46\u6700\u540e\u7684captum": 90, "insights\u90e8\u5206\u5c06\u6f14\u793a\u89c6\u89c9\u95ee\u7b54\u6a21\u578b\u4e2d\u7684\u5f52\u56e0\u53ef\u89c6\u5316": 90, "\u5728\u5f00\u59cb\u4e4b\u524d": [90, 233, 236, 241, 242, 243, 248, 249, 250], "\u4f60\u9700\u8981\u6709\u4e00\u4e2apython\u73af\u5883": 90, "6\u6216\u66f4\u9ad8\u7248\u672c": 90, "\u5bf9\u4e8ecaptum": 90, "insights\u793a\u4f8b": 90, "\u9700\u8981flask": 90, "1\u6216\u66f4\u9ad8\u7248\u672c\u548cflask": 90, "\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\u672c": 90, "2\u6216\u66f4\u9ad8\u7248\u672c": 90, "4\u7248\u672c": 90, "\u56e0\u4e3acaptum\u76ee\u524d\u4f7f\u7528\u4e86\u4e00\u4e2a\u5728\u66f4\u9ad8\u7248\u672c\u4e2d\u53c2\u6570\u5df2\u88ab\u91cd\u547d\u540d\u7684matplotlib\u51fd\u6570": 90, "\u8981\u5728anaconda\u6216pip\u865a\u62df\u73af\u5883\u4e2d\u5b89\u88c5captum": 90, "\u8bf7\u4f7f\u7528\u4e0b\u9762\u9002\u7528\u4e8e\u60a8\u73af\u5883\u7684\u547d\u4ee4": 90, "flask": [90, 113, 121, 139, 251], "\u5728\u60a8\u8bbe\u7f6e\u7684\u73af\u5883\u4e2d\u91cd\u65b0\u542f\u52a8\u6b64\u7b14\u8bb0\u672c": 90, "\u60a8\u5c31\u53ef\u4ee5\u5f00\u59cb\u4e86": 90, "\u8ba9\u6211\u4eec\u770b\u4e00\u4e2a\u7b80\u5355\u7684\u89c6\u89c9\u793a\u4f8b": 90, "\u6211\u4eec\u5c06\u4ece\u4e00\u4e2a\u5728imagenet\u6570\u636e\u96c6\u4e0a\u9884\u8bad\u7ec3\u7684resnet\u6a21\u578b\u5f00\u59cb": 90, "\u6211\u4eec\u5c06\u83b7\u53d6\u4e00\u4e2a\u6d4b\u8bd5\u8f93\u5165": 90, "\u5e76\u4f7f\u7528\u4e0d\u540c\u7684": 90, "\u7b97\u6cd5\u6765\u68c0\u67e5\u8f93\u5165\u56fe\u50cf\u5982\u4f55\u5f71\u54cd\u8f93\u51fa": 90, "\u5e76\u67e5\u770b\u4e00\u4e9b\u6d4b\u8bd5\u56fe\u50cf\u7684\u8f93\u5165\u5f52\u56e0\u6620\u5c04\u7684\u6709\u7528\u53ef\u89c6\u5316": 90, "\u5bfc\u5165\u4e00\u4e9b\u5305": 90, "integratedgradi": 90, "occlus": [90, 229], "layergradcam": 90, "layerattribut": 90, "linearsegmentedcolormap": 90, "\u73b0\u5728\u6211\u4eec\u5c06\u4f7f\u7528torchvision\u6a21\u578b\u5e93\u4e0b\u8f7d\u4e00\u4e2a\u9884\u8bad\u7ec3\u7684resnet": 90, "\u7531\u4e8e\u6211\u4eec\u4e0d\u8fdb\u884c\u8bad\u7ec3": 90, "\u6211\u4eec\u5c06\u6682\u65f6\u5c06\u5176\u7f6e\u4e8e\u8bc4\u4f30\u6a21\u5f0f": 90, "\u4f60\u4ece\u4e2d\u83b7\u53d6\u8fd9\u4e2a\u4ea4\u4e92\u5f0f\u7b14\u8bb0\u672c\u7684\u5730\u65b9\u5e94\u8be5\u4e5f\u6709\u4e00\u4e2a": 90, "\u6587\u4ef6\u5939": 90, "\u5176\u4e2d\u5305\u542b\u4e00\u4e2a": 90, "test_img": 90, "test_img_data": 90, "\u6211\u4eec\u7684resnet\u6a21\u578b\u662f\u5728imagenet\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3\u7684": 90, "\u5b83\u671f\u671b\u56fe\u50cf\u5177\u6709\u4e00\u5b9a\u7684\u5927\u5c0f": 90, "\u5e76\u4e14\u901a\u9053\u6570\u636e\u88ab\u5f52\u4e00\u5316\u5230\u7279\u5b9a\u7684\u503c\u8303\u56f4": 90, "\u6211\u4eec\u8fd8\u5c06\u83b7\u53d6\u6a21\u578b\u8bc6\u522b\u7684\u7c7b\u522b\u7684\u4eba\u7c7b\u53ef\u8bfb\u6807\u7b7e\u5217\u8868": 90, "\u5b83\u5e94\u8be5\u4e5f\u5728": 90, "\u6587\u4ef6\u5939\u4e2d": 90, "\u6a21\u578b\u671f\u671b224x224": 90, "3\u8272\u5f69\u56fe\u50cf": 90, "\u6807\u51c6imagenet\u5f52\u4e00\u5316": 90, "transform_norm": 90, "transformed_img": 90, "\u6a21\u578b\u9700\u8981\u4e00\u4e2a\u865a\u62df\u7684\u6279\u6b21\u7ef4\u5ea6": 90, "labels_path": 90, "imagenet_class_index": [90, 139], "json_data": 90, "idx_to_label": 90, "\u6211\u4eec\u53ef\u4ee5\u95ee": 90, "\u8fd9\u4e2a\u6a21\u578b\u8ba4\u4e3a\u8fd9\u5f20\u56fe\u50cf\u4ee3\u8868\u4ec0\u4e48": 90, "prediction_scor": 90, "pred_label_idx": 90, "squeeze_": [90, 95], "predicted_label": [90, 115], "\u9884\u6d4b": 90, "\u6211\u4eec\u5df2\u7ecf\u786e\u8ba4resnet\u8ba4\u4e3a\u6211\u4eec\u7684\u732b\u7684\u56fe\u50cf\u786e\u5b9e\u662f\u4e00\u53ea\u732b": 90, "\u4f46\u662f": [90, 93, 95], "\u4e3a\u4ec0\u4e48": 90, "\u6a21\u578b\u8ba4\u4e3a\u8fd9\u662f\u4e00\u5f20\u732b\u7684\u56fe\u50cf\u5462": 90, "\u8981\u56de\u7b54\u8fd9\u4e2a\u95ee\u9898": 90, "\u6211\u4eec\u5c31\u8981\u6c42\u52a9\u4e8ecaptum": 90, "\u8bd5\u56fe\u7528\u751f\u6210\u7279\u5b9a\u8f93\u51fa\u7684\u8f93\u5165\u7684\u7279\u5f81\u6765\u89e3\u91ca\u8be5\u8f93\u51fa": 90, "\u5b83\u4f7f\u7528\u7279\u5b9a\u7684\u8f93\u5165": 90, "\u5728\u8fd9\u91cc\u662f\u6211\u4eec\u7684\u6d4b\u8bd5\u56fe\u50cf": 90, "\u6765\u751f\u6210\u4e00\u4e2a\u8f93\u5165\u7279\u5f81\u5bf9\u7279\u5b9a\u8f93\u51fa\u7279\u5f81\u7684\u76f8\u5bf9\u91cd\u8981\u6027\u7684\u6620\u5c04": 90, "\u662fcaptum\u4e2d\u53ef\u7528\u7684\u7279\u5f81\u5f52\u56e0\u7b97\u6cd5\u4e4b\u4e00": 90, "\u96c6\u6210\u68af\u5ea6\u901a\u8fc7\u8fd1\u4f3c\u6a21\u578b\u8f93\u51fa\u76f8\u5bf9\u4e8e\u8f93\u5165\u7684\u68af\u5ea6\u7684\u79ef\u5206": 90, "\u4e3a\u6bcf\u4e2a\u8f93\u5165\u7279\u5f81\u5206\u914d\u4e00\u4e2a\u91cd\u8981\u6027\u5206\u6570": 90, "\u5728\u6211\u4eec\u7684\u4f8b\u5b50\u4e2d": [90, 95], "\u6211\u4eec\u5c06\u4f7f\u7528\u8f93\u51fa\u5411\u91cf\u7684\u4e00\u4e2a\u7279\u5b9a\u5143\u7d20": 90, "\u4e5f\u5c31\u662f\u8868\u793a\u6a21\u578b\u5bf9\u6240\u9009\u7c7b\u522b\u7684\u7f6e\u4fe1\u5ea6\u7684\u90a3\u4e2a\u5143\u7d20": 90, "\u5e76\u4f7f\u7528\u96c6\u6210\u68af\u5ea6\u6765\u7406\u89e3\u54ea\u4e9b\u8f93\u5165\u56fe\u50cf\u90e8\u5206\u5bf9\u8fd9\u4e2a\u8f93\u51fa\u505a\u51fa\u4e86\u8d21\u732e": 90, "\u4e00\u65e6\u6211\u4eec\u4ece\u96c6\u6210\u68af\u5ea6\u83b7\u5f97\u4e86\u91cd\u8981\u6027\u6620\u5c04": 90, "\u6211\u4eec\u5c06\u4f7f\u7528captum\u4e2d\u7684\u53ef\u89c6\u5316\u5de5\u5177\u6765\u63d0\u4f9b\u4e0e\u88ab\u68c0\u67e5\u7684\u8f93\u5165\u7279\u5f81\u76f4\u63a5\u76f8\u5173\u7684\u91cd\u8981\u6027\u6620\u5c04\u7684\u6709\u7528\u8868\u793a": 90, "captum\u7684": 90, "visualize_image_attr": 90, "\u51fd\u6570\u63d0\u4f9b\u4e86\u5404\u79cd\u81ea\u5b9a\u4e49\u663e\u793a\u5f52\u56e0\u6570\u636e\u7684\u9009\u9879": 90, "\u6211\u4eec\u4f20\u5165\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684matplotlib\u989c\u8272\u6620\u5c04": 90, "\u8fd0\u884c\u5e26\u6709": 90, "integrated_gradi": 90, "\u8c03\u7528\u7684\u5355\u5143\u683c\u901a\u5e38\u9700\u8981\u4e00\u4e24\u5206\u949f": 90, "\u7528\u6a21\u578b\u521d\u59cb\u5316\u5f52\u56e0\u7b97\u6cd5": 90, "\u8981\u6c42\u7b97\u6cd5\u5c06\u6211\u4eec\u7684\u8f93\u51fa\u76ee\u6807\u5f52\u56e0\u4e8e": 90, "attributions_ig": 90, "n_step": [90, 159, 161, 163], "\u663e\u793a\u539f\u59cb\u56fe\u50cf\u4ee5\u4f9b\u6bd4\u8f83": 90, "original_imag": [90, 229], "default_cmap": 90, "from_list": 90, "ffffff": 90, "0000ff": 90, "heat_map": [90, 229], "show_colorbar": [90, 229], "sign": [90, 153, 204], "\u5728\u4e0a\u9762\u7684\u56fe\u50cf\u4e2d": 90, "\u4f60\u5e94\u8be5\u53ef\u4ee5\u770b\u5230\u96c6\u6210\u68af\u5ea6\u5728\u56fe\u50cf\u4e2d\u732b\u7684\u4f4d\u7f6e\u7ed9\u51fa\u4e86\u6700\u5f3a\u7684\u4fe1\u53f7": 90, "\u57fa\u4e8e\u68af\u5ea6\u7684\u5f52\u56e0\u65b9\u6cd5\u6709\u52a9\u4e8e\u901a\u8fc7\u76f4\u63a5\u8ba1\u7b97\u8f93\u51fa\u76f8\u5bf9\u4e8e\u8f93\u5165\u7684\u53d8\u5316\u6765\u7406\u89e3\u6a21\u578b": 90, "\u57fa\u4e8e\u6270\u52a8\u7684\u5f52\u56e0": 90, "\u65b9\u6cd5\u5219\u66f4\u76f4\u63a5\u5730\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898": 90, "\u901a\u8fc7\u5bf9\u8f93\u5165\u8fdb\u884c\u53d8\u5316\u6765\u6d4b\u91cf\u5bf9\u8f93\u51fa\u7684\u5f71\u54cd": 90, "\u5c31\u662f\u8fd9\u6837\u4e00\u79cd\u65b9\u6cd5": 90, "\u5b83\u6d89\u53ca\u66ff\u6362\u8f93\u5165\u56fe\u50cf\u7684\u90e8\u5206\u533a\u57df": 90, "\u5e76\u68c0\u67e5\u5bf9\u8f93\u51fa\u4fe1\u53f7\u7684\u5f71\u54cd": 90, "\u4e0b\u9762": [90, 92, 94, 95, 96], "\u6211\u4eec\u8bbe\u7f6e\u906e\u6321\u5f52\u56e0": 90, "\u4e0e\u914d\u7f6e\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u7c7b\u4f3c": 90, "\u4f60\u53ef\u4ee5\u6307\u5b9a\u76ee\u6807\u533a\u57df\u7684\u5927\u5c0f": 90, "\u4ee5\u53ca\u786e\u5b9a\u5355\u4e2a\u6d4b\u91cf\u95f4\u8ddd\u7684\u6b65\u957f\u957f\u5ea6": 90, "visualize_image_attr_multipl": [90, 229], "\u6765\u53ef\u89c6\u5316\u6211\u4eec\u7684\u906e\u6321\u5f52\u56e0\u8f93\u51fa": 90, "\u663e\u793a\u6bcf\u4e2a\u533a\u57df\u7684\u6b63\u9762\u548c\u8d1f\u9762\u5f52\u56e0\u7684\u70ed\u56fe": 90, "\u5e76\u7528\u6b63\u9762\u5f52\u56e0\u533a\u57df\u63a9\u7801\u539f\u59cb\u56fe\u50cf": 90, "\u63a9\u7801\u53ef\u4ee5\u7ed9\u51fa\u4e00\u4e2a\u975e\u5e38\u6709\u542f\u53d1\u6027\u7684\u89c6\u56fe": 90, "\u663e\u793a\u6a21\u578b\u53d1\u73b0\u54ea\u4e9b\u533a\u57df\u6700": 90, "\u50cf\u732b": 90, "attributions_occ": 90, "sliding_window_shap": [90, 229], "masked_imag": 90, "fig_siz": 90, "18": [90, 107, 108, 109, 118, 127, 144, 157, 158, 163, 173, 174, 184, 193, 219, 228, 231, 266, 275], "\u540c\u6837": [90, 95, 104], "\u6211\u4eec\u770b\u5230\u56fe\u50cf\u4e2d\u5305\u542b\u732b\u7684\u533a\u57df\u88ab\u8d4b\u4e88\u4e86\u66f4\u5927\u7684\u91cd\u8981\u6027": 90, "\u5141\u8bb8\u4f60\u5c06\u6a21\u578b\u4e2d\u9690\u85cf\u5c42\u7684\u6d3b\u52a8\u5f52\u56e0\u4e8e\u8f93\u5165\u7684\u7279\u5f81": 90, "\u5c42\u5f52\u56e0\u7b97\u6cd5\u6765\u68c0\u67e5\u6a21\u578b\u4e2d\u4e00\u4e2a\u5377\u79ef\u5c42\u7684\u6d3b\u52a8": 90, "gradcam\u8ba1\u7b97\u76ee\u6807\u8f93\u51fa\u76f8\u5bf9\u4e8e\u7ed9\u5b9a\u5c42\u7684\u68af\u5ea6": 90, "\u5bf9\u6bcf\u4e2a\u8f93\u51fa\u901a\u9053": 90, "\u8f93\u51fa\u7684\u7b2c2\u7ef4": 90, "\u8fdb\u884c\u5e73\u5747": 90, "\u5e76\u5c06\u6bcf\u4e2a\u901a\u9053\u7684\u5e73\u5747\u68af\u5ea6\u4e58\u4ee5\u5c42\u6fc0\u6d3b": 90, "\u7ed3\u679c\u5728\u6240\u6709\u901a\u9053\u4e0a\u6c42\u548c": 90, "gradcam\u4e13\u4e3a\u5377\u79ef\u7f51\u7edc": 90, "\u8bbe\u8ba1": 90, "\u7531\u4e8e\u5377\u79ef\u5c42\u7684\u6d3b\u52a8\u901a\u5e38\u5728\u7a7a\u95f4\u4e0a\u6620\u5c04\u5230\u8f93\u5165": 90, "\u56e0\u6b64gradcam\u5f52\u56e0\u901a\u5e38\u4f1a\u88ab\u4e0a\u91c7\u6837": 90, "\u5e76\u7528\u4e8e\u63a9\u76d6\u8f93\u5165": 90, "\u5c42\u5f52\u56e0\u7684\u8bbe\u7f6e\u7c7b\u4f3c\u4e8e\u8f93\u5165\u5f52\u56e0": 90, "\u9664\u4e86\u9664\u4e86\u6a21\u578b\u4e4b\u5916": 90, "\u4f60\u8fd8\u5fc5\u987b\u6307\u5b9a\u6a21\u578b\u4e2d\u4f60\u5e0c\u671b\u68c0\u67e5\u7684": 90, "\u9690\u85cf\u5c42": 90, "\u4e0e\u4e0a\u9762\u4e00\u6837": 90, "\u5f53\u6211\u4eec\u8c03\u7528": 90, "\u6211\u4eec\u6307\u5b9a\u611f\u5174\u8da3\u7684\u76ee\u6807\u7c7b": 90, "layer_gradcam": 90, "layer3": [90, 149, 157, 160], "attributions_lgc": 90, "base_class": 90, "\u57fa\u7c7b\u4e2d\u7684\u4fbf\u5229\u65b9\u6cd5": 90, "interpol": [90, 119, 262, 271], "\u6765\u4e0a\u91c7\u6837\u8fd9\u4e9b\u5f52\u56e0\u6570\u636e": 90, "\u4ee5\u4fbf\u4e0e\u8f93\u5165\u56fe\u50cf\u8fdb\u884c\u6bd4\u8f83": 90, "upsamp_attr_lgc": 90, "blended_heat_map": 90, "\u8fd9\u6837\u7684\u53ef\u89c6\u5316\u53ef\u4ee5\u8ba9\u4f60\u6df1\u5165\u4e86\u89e3\u9690\u85cf\u5c42\u5982\u4f55\u54cd\u5e94\u4f60\u7684\u8f93\u5165": 90, "insights\u662f\u4e00\u4e2a\u5efa\u7acb\u5728captum\u4e4b\u4e0a\u7684\u53ef\u89e3\u91ca\u6027\u53ef\u89c6\u5316\u5c0f\u90e8\u4ef6": 90, "\u65e8\u5728\u4fc3\u8fdb\u6a21\u578b\u7406\u89e3": 90, "insights\u53ef\u7528\u4e8e\u56fe\u50cf": 90, "\u6587\u672c\u548c\u5176\u4ed6\u7279\u5f81": 90, "\u5e2e\u52a9\u7528\u6237\u7406\u89e3\u7279\u5f81\u5f52\u56e0": 90, "\u5b83\u5141\u8bb8\u4f60\u53ef\u89c6\u5316": 90, "\u591a\u4e2a\u8f93\u5165": 90, "\u8f93\u51fa\u5bf9\u7684\u5f52\u56e0": 90, "\u5e76\u63d0\u4f9b\u7528\u4e8e\u56fe\u50cf": 90, "\u6587\u672c\u548c\u4efb\u610f\u6570\u636e\u7684\u53ef\u89c6\u5316\u5de5\u5177": 90, "\u5728\u672c\u7b14\u8bb0\u672c\u7684\u8fd9\u4e00\u90e8\u5206": 90, "\u6211\u4eec\u5c06\u4f7f\u7528captum": 90, "insights\u53ef\u89c6\u5316\u591a\u4e2a\u56fe\u50cf\u5206\u7c7b\u63a8\u7406": 90, "\u8ba9\u6211\u4eec\u6536\u96c6\u4e00\u4e9b\u56fe\u50cf": 90, "\u770b\u770b\u6a21\u578b\u5bf9\u5b83\u4eec\u7684\u770b\u6cd5": 90, "\u4e3a\u4e86\u589e\u52a0\u591a\u6837\u6027": 90, "\u6211\u4eec\u5c06\u4f7f\u7528\u732b": 90, "\u8336\u58f6\u548c\u4e09\u53f6\u866b\u5316\u77f3": 90, "teapot": 90, "trilobit": 90, "\u770b\u8d77\u6765\u6211\u4eec\u7684\u6a21\u578b\u90fd\u6b63\u786e\u8bc6\u522b\u4e86\u5b83\u4eec": 90, "\u6211\u4eec\u5f53\u7136\u5e0c\u671b\u6df1\u5165\u6316\u6398": 90, "insights\u5c0f\u90e8\u4ef6": 90, "\u6211\u4eec\u7528\u4e0b\u9762\u5bfc\u5165\u7684": 90, "attributionvisu": 90, "\u5bf9\u8c61\u5bf9\u5176\u8fdb\u884c\u914d\u7f6e": 90, "\u671f\u671b\u6279\u91cf\u6570\u636e": 90, "\u6240\u4ee5\u6211\u4eec\u5c06\u5f15\u5165captum\u7684": 90, "\u8f85\u52a9\u7c7b": 90, "\u6211\u4eec\u5c06\u67e5\u770b\u56fe\u50cf": 90, "\u56e0\u6b64\u6211\u4eec\u8fd8\u5c06\u5bfc\u5165": 90, "imagefeatur": 90, "\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u53c2\u6570\u914d\u7f6e": 90, "\u8981\u68c0\u67e5\u7684\u6a21\u578b\u6570\u7ec4": 90, "\u53ea\u6709\u4e00\u4e2a": 90, "\u4e00\u4e2a\u8bc4\u5206\u51fd\u6570": 90, "\u5141\u8bb8captum": 90, "insights\u4ece\u6a21\u578b\u4e2d\u63d0\u53d6\u524dk\u4e2a\u9884\u6d4b": 90, "\u6211\u4eec\u6a21\u578b\u8bad\u7ec3\u7684\u7c7b\u522b\u7684\u6709\u5e8f": 90, "\u4eba\u7c7b\u53ef\u8bfb\u5217\u8868": 90, "\u8981\u67e5\u627e\u7684\u7279\u5f81\u5217\u8868": 90, "\u662f\u4e00\u4e2a": 90, "\u4e00\u4e2a\u6570\u636e\u96c6": 90, "\u5b83\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 90, "\u8fd4\u56de\u8f93\u5165\u548c\u6807\u7b7e\u7684\u6279\u6b21": 90, "\u5c31\u50cf\u4f60\u7528\u4e8e\u8bad\u7ec3\u4e00\u6837": 90, "attr_vi": 90, "\u57fa\u7ebf\u662f\u5168\u96f6\u8f93\u5165": 90, "\u8fd9\u53ef\u80fd\u4f1a\u56e0\u4f60\u7684\u6570\u636e\u800c\u6709\u6240\u4e0d\u540c": 90, "baseline_func": 90, "\u5408\u5e76\u4e0a\u9762\u7684\u56fe\u50cf\u53d8\u6362": 90, "full_img_transform": 90, "score_func": 90, "\u7167\u7247": 90, "baseline_transform": 90, "input_transform": [90, 213], "282": 90, "849": [90, 219, 231], "\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u5e76\u6ca1\u6709\u82b1\u8d39\u592a\u591a\u65f6\u95f4": 90, "\u4e0d\u50cf\u6211\u4eec\u4e4b\u524d\u7684\u5f52\u56e0\u90a3\u6837": 90, "insights\u5141\u8bb8\u4f60\u5728\u53ef\u89c6\u5316\u5c0f\u90e8\u4ef6\u4e2d\u914d\u7f6e\u4e0d\u540c\u7684\u5f52\u56e0\u7b97\u6cd5": 90, "\u4e4b\u540e\u5b83\u5c06\u8ba1\u7b97\u5e76\u663e\u793a": 90, "\u90a3\u4e2a": 90, "\u8fc7\u7a0b\u5c06\u9700\u8981\u51e0\u5206\u949f\u65f6\u95f4": 90, "\u8fd0\u884c\u4e0b\u9762\u7684\u5355\u5143\u683c\u5c06\u6e32\u67d3captum": 90, "\u7136\u540e\u4f60\u53ef\u4ee5\u9009\u62e9\u5f52\u56e0\u65b9\u6cd5\u53ca\u5176\u53c2\u6570": 90, "\u6839\u636e\u9884\u6d4b\u7684\u7c7b\u6216\u9884\u6d4b\u7684\u6b63\u786e\u6027\u8fc7\u6ee4\u6a21\u578b\u54cd\u5e94": 90, "\u67e5\u770b\u6a21\u578b\u7684\u9884\u6d4b\u53ca\u76f8\u5173\u6982\u7387": 90, "\u67e5\u770b\u5f52\u56e0\u4e0e": 90, "\u539f\u59cb\u56fe\u50cf\u7684\u70ed\u529b\u56fe": 90, "captumyt": 90, "introyt": 91, "rst": [91, 260, 262, 269, 271], "introyt1_tutori": [91, 92], "tensors_deeper_tutori": [91, 95], "modelsyt_tutori": [91, 93], "tensorboardyt_tutori": [91, 94], "trainingyt_tutori": 91, "captumyt_tutori": 91, "sphx_glr_beginner_introyt_modelsyt_tutori": 91, "sphx_glr_beginner_introyt_autogradyt_tutori": 91, "sphx_glr_beginner_introyt_trainingyt": 91, "sphx_glr_beginner_introyt_tensorboardyt_tutori": 91, "sphx_glr_beginner_introyt_captumyt": 91, "sphx_glr_beginner_introyt_tensors_deeper_tutori": 91, "sphx_glr_beginner_introyt_introyt1_tutori": 91, "\u4ece\u89c6\u9891\u7684": 92, "\u5f00\u59cb": [92, 93], "\u6211\u4eec\u5c06\u5bfc\u5165": 92, "\u8ba9\u6211\u4eec\u770b\u4e00\u4e9b\u57fa\u672c\u7684\u5f20\u91cf\u64cd\u4f5c": 92, "\u521b\u5efa\u5f20\u91cf\u7684\u51e0\u79cd\u65b9\u5f0f": 92, "\u4e0a\u9762": [92, 93, 94], "\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a": 92, "5x3": 92, "\u7684\u96f6\u77e9\u9635": 92, "\u5e76\u67e5\u8be2\u5176\u6570\u636e\u7c7b\u578b": 92, "\u53d1\u73b0\u96f6\u662f": 92, "\u4f4d\u6d6e\u70b9\u6570": 92, "\u8fd9\u662f": [92, 93, 95], "\u7684\u9ed8\u8ba4\u8bbe\u7f6e": 92, "\u5982\u679c\u4f60\u60f3\u8981\u6574\u6570\u5462": 92, "\u53ef\u4ee5\u8986\u76d6\u9ed8\u8ba4\u8bbe\u7f6e": 92, "int16": [92, 95, 197, 234], "\u4f60\u53ef\u4ee5\u770b\u5230": [92, 93, 95], "\u5f53\u6211\u4eec\u6539\u53d8\u9ed8\u8ba4\u8bbe\u7f6e\u65f6": 92, "\u5728\u6253\u5370\u5f20\u91cf\u65f6\u4f1a\u6709\u6240\u63d0\u793a": 92, "\u901a\u5e38\u60c5\u51b5\u4e0b": 92, "\u4f1a\u4f7f\u7528\u7279\u5b9a\u7684\u79cd\u5b50\u521d\u59cb\u5316\u5b66\u4e60\u6743\u91cd": 92, "\u4ee5\u786e\u4fdd\u7ed3\u679c\u7684\u53ef\u91cd\u590d\u6027": 92, "1729": [92, 95], "r1": 92, "r2": 92, "\u65b0\u7684\u503c": 92, "r3": 92, "nshould": 92, "\u7531\u4e8e\u91cd\u65b0\u8bbe\u7f6e\u79cd\u5b50": 92, "\u6240\u4ee5\u4e0e": 92, "\u7684\u503c\u76f8\u540c": 92, "\u5f20\u91cf\u6267\u884c\u7b97\u672f\u8fd0\u7b97\u5f88\u76f4\u89c2": 92, "\u5f62\u72b6\u76f8\u4f3c\u7684\u5f20\u91cf\u53ef\u4ee5\u76f8\u52a0": 92, "\u76f8\u4e58\u7b49": 92, "\u4e0e\u6807\u91cf\u7684\u8fd0\u7b97\u4f1a\u5728\u6574\u4e2a\u5f20\u91cf\u4e0a\u5206\u5e03\u5f0f\u8fdb\u884c": 92, "\u6bcf\u4e2a\u5143\u7d20\u90fd\u4e58\u4ee5": 92, "\u5f62\u72b6\u76f8\u4f3c": 92, "\u56e0\u6b64\u5141\u8bb8\u76f8\u52a0": 92, "\u5f20\u91cf\u6309\u5143\u7d20\u76f8\u52a0": 92, "\u8fd9\u4e0e\u8f93\u5165\u5f20\u91cf\u5177\u6709\u76f8\u540c\u7684\u7ef4\u5ea6": 92, "\u53d6\u6d88\u6ce8\u91ca\u8fd9\u4e00\u884c\u4f1a\u5bfc\u81f4\u8fd0\u884c\u65f6\u9519\u8bef": 92, "\u8fd9\u91cc\u662f\u4e00\u4e9b\u53ef\u7528\u7684\u6570\u5b66\u8fd0\u7b97\u793a\u4f8b": 92, "\u503c\u5728": 92, "\u4e4b\u95f4": 92, "\u652f\u6301\u5e38\u89c1\u7684\u6570\u5b66\u8fd0\u7b97": 92, "nabsolut": 92, "\u4ee5\u53ca\u4e09\u89d2\u51fd\u6570": 92, "ninvers": 92, "asin": [92, 95], "\u548c\u7ebf\u6027\u4ee3\u6570\u8fd0\u7b97": 92, "\u5982\u884c\u5217\u5f0f\u548c\u5947\u5f02\u503c\u5206\u89e3": 92, "ndetermin": 92, "det": [92, 102, 153], "nsingular": 92, "decomposit": [92, 144], "svd": [92, 95], "\u4ee5\u53ca\u7edf\u8ba1\u548c\u805a\u5408\u8fd0\u7b97": 92, "naverag": 92, "std_mean": 92, "nmaximum": 92, "\u5173\u4e8e": 92, "\u5f20\u91cf\u7684\u5f3a\u5927\u529f\u80fd\u8fd8\u6709\u5f88\u591a\u9700\u8981\u4e86\u89e3": 92, "\u5305\u62ec\u5982\u4f55\u4e3a": 92, "\u4e0a\u7684\u5e76\u884c\u8ba1\u7b97\u8bbe\u7f6e\u5b83\u4eec": 92, "\u6211\u4eec\u5c06\u5728\u53e6\u4e00\u4e2a\u89c6\u9891\u4e2d\u6df1\u5165\u63a2\u8ba8": 92, "\u8ba9\u6211\u4eec\u8ba8\u8bba\u4e00\u4e0b\u5982\u4f55\u5728": 92, "\u4e2d\u8868\u793a\u6a21\u578b": 92, "\u6a21\u578b\u7684\u7236\u5bf9\u8c61": 92, "\u7528\u4e8e\u6fc0\u6d3b\u51fd\u6570": 92, "\u56fe": 92, "\u4e0a\u56fe\u662f": 92, "\u7684\u793a\u610f\u56fe": 92, "\u5b83\u662f\u6700\u65e9\u7684\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u4e4b\u4e00": 92, "\u4e5f\u662f\u6df1\u5ea6\u5b66\u4e60\u7206\u53d1\u5f0f\u53d1\u5c55\u7684\u9a71\u52a8\u529b\u4e4b\u4e00": 92, "\u5b83\u88ab\u6784\u5efa\u7528\u4e8e\u8bfb\u53d6\u624b\u5199\u6570\u5b57\u7684\u5c0f\u56fe\u50cf": 92, "\u5e76\u6b63\u786e\u5206\u7c7b\u56fe\u50cf\u4e2d\u8868\u793a\u7684\u6570\u5b57": 92, "\u5b83\u5de5\u4f5c\u539f\u7406\u7684\u7b80\u8ff0\u4e3a": 92, "\u662f\u4e00\u4e2a\u5377\u79ef\u5c42": 92, "\u5b83\u5728\u8f93\u5165\u56fe\u50cf\u4e2d\u626b\u63cf\u5b83\u5728\u8bad\u7ec3\u671f\u95f4\u5b66\u4e60\u5230\u7684\u7279\u5f81": 92, "\u5b83\u8f93\u51fa\u4e00\u4e2a\u7279\u5f81\u6fc0\u6d3b\u56fe": 92, "\u63cf\u8ff0\u5b83\u5728\u56fe\u50cf\u4e2d\u770b\u5230\u6bcf\u4e2a\u5b66\u4e60\u5230\u7684\u7279\u5f81\u7684\u4f4d\u7f6e": 92, "\u6fc0\u6d3b\u56fe": 92, "\u5728\u5c42": 92, "\u4e2d\u88ab\u4e0b\u91c7\u6837": 92, "\u662f\u53e6\u4e00\u4e2a\u5377\u79ef\u5c42": 92, "\u8fd9\u6b21\u626b\u63cf": 92, "\u7684\u6fc0\u6d3b\u56fe\u4ee5\u67e5\u627e\u7279\u5f81\u7ec4\u5408": 92, "\u5b83\u4e5f\u8f93\u51fa\u4e00\u4e2a\u6fc0\u6d3b\u56fe": 92, "\u63cf\u8ff0\u8fd9\u4e9b\u7279\u5f81\u7ec4\u5408\u7684\u7a7a\u95f4\u4f4d\u7f6e": 92, "\u8be5\u6fc0\u6d3b\u56fe\u5728\u5c42": 92, "\u6700\u540e\u7684\u5168\u8fde\u63a5\u5c42": 92, "\u662f\u4e00\u4e2a\u5206\u7c7b\u5668": 92, "\u5b83\u5c06\u6700\u7ec8\u7684\u6fc0\u6d3b\u56fe\u5206\u7c7b\u4e3a": 92, "\u4e2a": 92, "\u4e2d\u7684\u4e00\u4e2a": 92, "\u8868\u793a": 92, "\u4e2a\u6570\u5b57": 92, "\u6211\u4eec\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u8868\u793a\u8fd9\u4e2a\u7b80\u5355\u7684\u795e\u7ecf\u7f51\u7edc\u5462": 92, "\u4e2a\u8f93\u5165\u56fe\u50cf\u901a\u9053": 92, "\u9ed1\u767d": [92, 93], "\u4e2a\u8f93\u51fa\u901a\u9053": [92, 93], "\u7684\u6b63\u65b9\u5f62\u5377\u79ef\u6838": 92, "\u4e00\u4e2a\u4eff\u5c04\u64cd\u4f5c": [92, 93], "\u7a97\u53e3\u4e0a\u8fdb\u884c\u6700\u5927\u6c60\u5316": [92, 93], "\u5982\u679c\u5c3a\u5bf8\u662f\u6b63\u65b9\u5f62": [92, 93], "\u4f60\u53ea\u9700\u6307\u5b9a\u4e00\u4e2a\u6570\u5b57": [92, 93], "num_flat_featur": [92, 93], "\u9664\u6279\u6b21\u7ef4\u5ea6\u5916\u7684\u6240\u6709\u7ef4\u5ea6": [92, 93], "num_featur": [92, 93, 129], "\u67e5\u770b\u8fd9\u6bb5\u4ee3\u7801": 92, "\u4f60\u5e94\u8be5\u80fd\u591f\u53d1\u73b0\u4e00\u4e9b\u4e0e\u4e0a\u56fe\u7ed3\u6784\u76f8\u4f3c\u7684\u5730\u65b9": 92, "\u8fd9\u6f14\u793a\u4e86\u5178\u578b": 92, "\u6a21\u578b\u7684\u7ed3\u6784": 92, "\u5b83\u7ee7\u627f\u81ea": 92, "\u6a21\u5757\u53ef\u4ee5\u5d4c\u5957": 92, "\u5373\u4f7f": 92, "\u5c42\u7c7b\u4e5f\u7ee7\u627f\u81ea": 92, "\u4e00\u4e2a\u6a21\u578b\u5c06\u6709\u4e00\u4e2a": 92, "\u5728\u8fd9\u91cc\u5b83\u5b9e\u4f8b\u5316\u5176\u5c42": 92, "\u5e76\u52a0\u8f7d\u4efb\u4f55\u5b83\u53ef\u80fd\u9700\u8981\u7684\u6570\u636e\u7ec4\u4ef6": 92, "\u6a21\u578b\u53ef\u80fd\u52a0\u8f7d\u8bcd\u6c47\u8868": 92, "\u8fd9\u662f\u5b9e\u9645\u8ba1\u7b97\u53d1\u751f\u7684\u5730\u65b9": 92, "\u8f93\u5165\u901a\u8fc7\u7f51\u7edc\u5c42\u548c\u5404\u79cd\u51fd\u6570\u751f\u6210\u8f93\u51fa": 92, "\u9664\u6b64\u4e4b\u5916": 92, "\u4f60\u53ef\u4ee5\u50cf\u6784\u5efa\u4efb\u4f55\u5176\u4ed6": 92, "\u7c7b\u4e00\u6837\u6784\u5efa\u4f60\u7684\u6a21\u578b\u7c7b": 92, "\u6dfb\u52a0\u4efb\u4f55\u4f60\u9700\u8981\u652f\u6301\u6a21\u578b\u8ba1\u7b97\u7684\u5c5e\u6027\u548c\u65b9\u6cd5": 92, "\u8ba9\u6211\u4eec\u5b9e\u4f8b\u5316\u8fd9\u4e2a\u5bf9\u8c61\u5e76\u8fd0\u884c\u4e00\u4e2a\u793a\u4f8b\u8f93\u5165": 92, "\u5bf9\u8c61\u6253\u5370\u4e86\u4ec0\u4e48\u4fe1\u606f": 92, "\u7684\u9ed1\u767d\u56fe\u50cf": [92, 93, 104], "nimag": 92, "\u4e0d\u76f4\u63a5\u8c03\u7528": 92, "nraw": 92, "\u5982\u4e0a\u4ee3\u7801\u5b58\u5728\u4e00\u4e9b\u8981\u70b9": 92, "\u6211\u4eec\u5b9e\u4f8b\u5316": 92, "\u7c7b": [92, 93, 104, 246], "\u5e76\u6253\u5370": 92, "\u7684\u5b50\u7c7b\u5c06\u62a5\u544a\u5b83\u521b\u5efa\u7684\u5c42\u53ca\u5176\u5f62\u72b6\u548c\u53c2\u6570": 92, "\u8fd9\u53ef\u4ee5\u63d0\u4f9b\u4e00\u4e2a\u6a21\u578b\u7684\u6982\u89c8": 92, "\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u5b83\u7684\u5904\u7406\u8fc7\u7a0b": 92, "\u5728\u4e0b\u9762": [92, 95], "\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u865a\u62df\u8f93\u5165": 92, "\u8868\u793a\u4e00\u4e2a": 92, "\u7684\u5355\u901a\u9053\u56fe\u50cf": 92, "\u4f60\u4f1a\u52a0\u8f7d\u4e00\u4e2a\u56fe\u50cf\u5207\u7247\u5e76\u5c06\u5176\u8f6c\u6362\u4e3a\u8fd9\u79cd\u5f62\u72b6\u7684\u5f20\u91cf": 92, "\u4f60\u53ef\u80fd\u5df2\u7ecf\u6ce8\u610f\u5230\u6211\u4eec\u7684\u5f20\u91cf\u6709\u4e00\u4e2a\u989d\u5916\u7684\u7ef4\u5ea6": 92, "\u6279\u6b21\u7ef4\u5ea6": 92, "\u6a21\u578b\u5047\u8bbe\u5b83\u4eec\u6b63\u5728\u5904\u7406\u6570\u636e": 92, "\u6279\u6b21": [92, 95, 96], "\u5305\u542b": [92, 104], "\u4e2a\u56fe\u50cf\u5207\u7247\u7684\u6279\u6b21\u5c06\u5177\u6709\u5f62\u72b6": 92, "\u7531\u4e8e\u6211\u4eec\u53ea\u4f7f\u7528\u4e00\u4e2a\u56fe\u50cf": 92, "\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u5f62\u72b6\u4e3a": 92, "\u7684\u6279\u6b21": 92, "\u6211\u4eec\u901a\u8fc7\u50cf\u51fd\u6570\u4e00\u6837\u8c03\u7528\u5b83\u6765\u8981\u6c42\u6a21\u578b\u8fdb\u884c\u63a8\u7406": 92, "\u8fd9\u4e2a\u8c03\u7528\u7684\u8f93\u51fa\u8868\u793a\u6a21\u578b\u5bf9\u8f93\u5165\u8868\u793a\u7279\u5b9a\u6570\u5b57\u7684\u7f6e\u4fe1\u5ea6": 92, "\u7531\u4e8e\u8fd9\u4e2a\u6a21\u578b\u5b9e\u4f8b\u8fd8\u6ca1\u6709\u5b66\u4e60\u4efb\u4f55\u4e1c\u897f": 92, "\u6211\u4eec\u4e0d\u5e94\u8be5\u671f\u671b\u5728\u8f93\u51fa\u4e2d\u770b\u5230\u4efb\u4f55\u4fe1\u53f7": 92, "\u67e5\u770b": [92, 236], "\u7684\u5f62\u72b6": 92, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5b83\u4e5f\u6709\u4e00\u4e2a\u6279\u6b21\u7ef4\u5ea6": 92, "\u5176\u5927\u5c0f\u5e94\u8be5\u59cb\u7ec8\u4e0e\u8f93\u5165\u6279\u6b21\u7ef4\u5ea6\u76f8\u5339\u914d": 92, "\u5982\u679c\u6211\u4eec\u4f20\u5165\u4e86\u4e00\u4e2a\u5305\u542b": 92, "\u4e2a\u5b9e\u4f8b\u7684\u8f93\u5165\u6279\u6b21": 92, "\u5c06\u5177\u6709": 92, "\u6211\u4eec\u5c06\u6f14\u793a\u5982\u4f55\u4f7f\u7528": 92, "\u4e2d\u7684\u4e00\u4e2a\u53ef\u4e0b\u8f7d\u7684\u5f00\u653e\u8bbf\u95ee\u6570\u636e\u96c6": 92, "\u5982\u4f55\u8f6c\u6362\u56fe\u50cf\u4ee5\u4f9b\u4f60\u7684\u6a21\u578b\u4f7f\u7528": 92, "\u4ee5\u53ca\u5982\u4f55\u4f7f\u7528": 92, "\u5c06\u6570\u636e\u6279\u6b21\u63d0\u4f9b\u7ed9\u4f60\u7684\u6a21\u578b": 92, "\u6211\u4eec\u9700\u8981\u505a\u7684\u7b2c\u4e00\u4ef6\u4e8b\u662f\u5c06\u4f20\u5165\u7684\u56fe\u50cf\u8f6c\u6362\u4e3a": 92, "4914": 92, "4822": 92, "4465": 92, "2470": 92, "2435": 92, "2616": 92, "\u6211\u4eec\u4e3a\u8f93\u5165\u6307\u5b9a\u4e86\u4e24\u79cd\u8f6c\u6362": 92, "\u52a0\u8f7d\u7684\u56fe\u50cf\u8f6c\u6362\u4e3a": 92, "\u8c03\u6574\u5f20\u91cf\u7684\u503c": 92, "\u4f7f\u5176\u5e73\u5747\u503c\u4e3a\u96f6": 92, "\u6807\u51c6\u5dee\u4e3a": 92, "\u5927\u591a\u6570\u6fc0\u6d3b\u51fd\u6570\u5728": 92, "\u9644\u8fd1\u5177\u6709\u6700\u5f3a\u68af\u5ea6": [92, 93], "\u56e0\u6b64\u5c06\u6211\u4eec\u7684\u6570\u636e\u5c45\u4e2d\u53ef\u4ee5\u52a0\u5feb\u5b66\u4e60\u901f\u5ea6": 92, "\u4f20\u9012\u7ed9\u8f6c\u6362\u7684\u503c\u662f\u6570\u636e\u96c6\u4e2d\u56fe\u50cf\u7684": 92, "\u503c\u7684\u5747\u503c": 92, "\u7b2c\u4e00\u4e2a\u5143\u7ec4": 92, "\u548c\u6807\u51c6\u5dee": 92, "\u7b2c\u4e8c\u4e2a\u5143\u7ec4": 92, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u51e0\u884c\u4ee3\u7801\u81ea\u5df1\u8ba1\u7b97\u8fd9\u4e9b\u503c": 92, "concatdataset": 92, "\u5c06\u6240\u6709\u8bad\u7ec3\u56fe\u50cf\u5806\u53e0\u6210\u5f62\u72b6\u4e3a": 92, "50000": 92, "\u83b7\u53d6\u6bcf\u4e2a\u901a\u9053\u7684\u5747\u503c": 92, "\u8fd8\u6709\u8bb8\u591a\u5176\u4ed6\u53ef\u7528\u7684\u8f6c\u6362": 92, "\u5305\u62ec\u88c1\u526a": 92, "\u5c45\u4e2d": 92, "\u65cb\u8f6c\u548c\u53cd\u5c04": 92, "\u6211\u4eec\u5c06\u521b\u5efa": 92, "\u6570\u636e\u96c6\u7684\u4e00\u4e2a\u5b9e\u4f8b": 92, "\u8fd9\u662f\u4e00\u7ec4": 92, "\u7684\u5f69\u8272\u56fe\u50cf\u5207\u7247": 92, "\u4ee3\u8868": [92, 95], "\u7c7b\u7269\u4f53": 92, "\u79cd\u52a8\u7269": 92, "\u9e1f": 92, "\u732b": 92, "\u9e7f": 92, "\u72d7": 92, "\u9752\u86d9": 92, "\u9a6c": 92, "\u79cd\u8f66\u8f86": 92, "\u98de\u673a": 92, "\u6c7d\u8f66": 92, "\u8239": 92, "\u5361\u8f66": 92, "\u5f53\u4f60\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u65f6": 92, "\u5b83\u53ef\u80fd\u9700\u8981\u4e00\u4e9b\u65f6\u95f4\u6765\u4e0b\u8f7d\u6570\u636e\u96c6": 92, "\u8fd9\u662f\u5728": 92, "\u4e2d\u521b\u5efa\u6570\u636e\u96c6\u5bf9\u8c61\u7684\u4e00\u4e2a\u793a\u4f8b": 92, "\u53ef\u4e0b\u8f7d\u7684\u6570\u636e\u96c6": 92, "\u5982\u4e0a\u9762\u7684": 92, "\u7c7b\u5305\u62ec": 92, "\u4e2d\u7684\u53ef\u4e0b\u8f7d\u6570\u636e\u96c6": 92, "\u4ee5\u53ca\u8bf8\u5982": 92, "\u4e4b\u7c7b\u7684\u5b9e\u7528\u7a0b\u5e8f\u6570\u636e\u96c6\u7c7b": 92, "\u5b83\u5c06\u8bfb\u53d6\u4e00\u4e2a\u6807\u8bb0\u8fc7\u7684\u56fe\u50cf\u6587\u4ef6\u5939": 92, "\u4f60\u4e5f\u53ef\u4ee5\u521b\u5efa": 92, "\u7684\u81ea\u5df1\u7684\u5b50\u7c7b": 92, "\u5f53\u6211\u4eec\u5b9e\u4f8b\u5316\u6211\u4eec\u7684\u6570\u636e\u96c6\u65f6": 92, "\u6211\u4eec\u9700\u8981\u544a\u8bc9\u5b83\u4e00\u4e9b\u4e8b\u60c5": 92, "\u6211\u4eec\u5e0c\u671b\u6570\u636e\u5b58\u653e\u7684\u6587\u4ef6\u7cfb\u7edf\u8def\u5f84": 92, "\u6211\u4eec\u662f\u5426\u4f7f\u7528\u8fd9\u4e2a\u96c6\u5408\u8fdb\u884c\u8bad\u7ec3": 92, "\u5927\u591a\u6570\u6570\u636e\u96c6\u5c06\u88ab\u5206\u4e3a\u8bad\u7ec3\u548c\u6d4b\u8bd5\u5b50\u96c6": 92, "\u5982\u679c\u6211\u4eec\u8fd8\u6ca1\u6709\u4e0b\u8f7d\u6570\u636e\u96c6": 92, "\u6211\u4eec\u662f\u5426\u5e0c\u671b\u4e0b\u8f7d\u5b83": 92, "\u6211\u4eec\u60f3\u5bf9\u6570\u636e\u5e94\u7528\u54ea\u4e9b\u8f6c\u6362": 92, "\u4e00\u65e6\u4f60\u7684\u6570\u636e\u96c6\u51c6\u5907\u5c31\u7eea": 92, "\u4f60\u5c31\u53ef\u4ee5\u5c06\u5b83\u4ea4\u7ed9": 92, "\u7684\u5b50\u7c7b\u5305\u88c5\u4e86\u5bf9\u6570\u636e\u7684\u8bbf\u95ee": 92, "\u5e76\u4e13\u95e8\u9488\u5bf9\u5b83\u6b63\u5728\u670d\u52a1\u7684\u6570\u636e\u7c7b\u578b": 92, "\u5bf9\u5b83\u6b63\u5728\u670d\u52a1\u7684\u6570\u636e\u4e00\u65e0\u6240\u77e5": 92, "\u4f46\u4f1a\u6839\u636e\u4f60\u6307\u5b9a\u7684\u53c2\u6570\u5c06": 92, "\u63d0\u4f9b\u7684\u8f93\u5165\u5f20\u91cf\u7ec4\u7ec7\u6210\u6279\u6b21": 92, "\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d": [92, 111, 238], "\u6211\u4eec\u8981\u6c42\u4e00\u4e2a": 92, "\u4e2d\u7ed9\u6211\u4eec\u6279\u6b21\u5927\u5c0f\u4e3a": 92, "\u968f\u673a\u6253\u4e71\u5b83\u4eec\u7684\u987a\u5e8f": 92, "\u5e76\u544a\u8bc9\u5b83\u542f\u52a8\u4e24\u4e2a\u5de5\u4f5c\u8fdb\u7a0b\u4ece\u78c1\u76d8\u52a0\u8f7d\u6570\u636e": 92, "\u53ef\u89c6\u5316\u4f60\u7684": 92, "\u63d0\u4f9b\u7684\u6279\u6b21\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u505a\u6cd5": 92, "\u83b7\u53d6\u4e00\u4e9b\u968f\u673a\u8bad\u7ec3\u56fe\u50cf": 92, "\u663e\u793a\u56fe\u50cf": 92, "\u6253\u5370\u6807\u7b7e": 92, "\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u5e94\u8be5\u4f1a\u663e\u793a\u4f60\u4e00\u6761\u56db\u5f20\u56fe\u50cf\u7684\u6761\u5e26": 92, "\u4ee5\u53ca\u6bcf\u5f20\u56fe\u50cf\u7684\u6b63\u786e\u6807\u7b7e": 92, "\u8ba9\u6211\u4eec\u628a\u6240\u6709\u7684\u90e8\u5206\u653e\u5728\u4e00\u8d77": 92, "\u8bad\u7ec3\u4e00\u4e2a\u6a21\u578b": 92, "\u6211\u4eec\u9700\u8981\u8bad\u7ec3\u548c\u6d4b\u8bd5\u6570\u636e\u96c6": 92, "\u5982\u679c\u4f60\u8fd8\u6ca1\u6709": 92, "\u8fd0\u884c\u4e0b\u9762\u7684\u5355\u5143\u683c\u6765\u786e\u4fdd\u6570\u636e\u96c6\u5df2\u4e0b\u8f7d": 92, "\u53ef\u80fd\u9700\u8981\u4e00\u5206\u949f": 92, "\u8fd0\u884c\u5bf9": 92, "\u8f93\u51fa\u7684\u68c0\u67e5": 92, "\u8fd9\u662f\u6211\u4eec\u5c06\u8981\u8bad\u7ec3\u7684\u6a21\u578b": 92, "\u5982\u679c\u5b83\u770b\u8d77\u6765\u5f88\u719f\u6089": 92, "\u90a3\u662f\u56e0\u4e3a\u5b83\u662f": 92, "\u7684\u4e00\u4e2a\u53d8\u4f53": 92, "\u5728\u672c\u89c6\u9891\u524d\u9762\u8ba8\u8bba\u8fc7": 92, "\u9002\u7528\u4e8e": 92, "\u8272\u56fe\u50cf": 92, "\u6211\u4eec\u6700\u540e\u9700\u8981\u7684\u662f\u4e00\u4e2a\u635f\u5931\u51fd\u6570\u548c\u4e00\u4e2a\u4f18\u5316\u5668": 92, "\u5982\u672c\u89c6\u9891\u524d\u9762\u6240\u8ba8\u8bba\u7684": 92, "\u662f\u8861\u91cf\u6a21\u578b\u9884\u6d4b\u4e0e\u7406\u60f3\u8f93\u51fa\u4e4b\u95f4\u5dee\u8ddd\u7684\u6307\u6807": 92, "\u4ea4\u53c9\u71b5\u635f\u5931\u662f\u50cf\u6211\u4eec\u8fd9\u6837\u7684\u5206\u7c7b\u6a21\u578b\u7684\u5178\u578b\u635f\u5931\u51fd\u6570": 92, "\u662f\u9a71\u52a8\u5b66\u4e60\u7684\u5173\u952e": 92, "\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u5b9e\u73b0": 92, "\u968f\u673a\u68af\u5ea6\u4e0b\u964d": 92, "\u7684\u4f18\u5316\u5668": 92, "\u8fd9\u662f\u6700\u76f4\u63a5\u7684\u4f18\u5316\u7b97\u6cd5\u4e4b\u4e00": 92, "\u9664\u4e86\u7b97\u6cd5\u7684\u53c2\u6570": 92, "\u5982\u5b66\u4e60\u7387": 92, "\u548c\u52a8\u91cf": 92, "\u4e4b\u5916": [92, 93], "\u6211\u4eec\u8fd8\u4f20\u5165\u4e86": 92, "\u5b83\u662f\u6a21\u578b\u4e2d\u6240\u6709\u5b66\u4e60\u6743\u91cd\u7684\u96c6\u5408": 92, "\u8fd9\u662f\u4f18\u5316\u5668\u8981\u8c03\u6574\u7684\u5bf9\u8c61": 92, "\u6240\u6709\u8fd9\u4e9b\u90fd\u88ab\u7ec4\u88c5\u5230\u8bad\u7ec3\u5faa\u73af\u4e2d": 92, "\u7ee7\u7eed\u8fd0\u884c\u8fd9\u4e2a\u5355\u5143\u683c": 92, "\u5b83\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u624d\u80fd\u6267\u884c": 92, "\u5728\u6570\u636e\u96c6\u4e0a\u5faa\u73af\u591a\u6b21": [92, 94], "\u83b7\u53d6\u8f93\u5165": [92, 250], "\u5c06\u53c2\u6570\u68af\u5ea6\u5f52\u96f6": 92, "\u53cd\u5411": [92, 250], "\u6253\u5370\u7edf\u8ba1\u4fe1\u606f": [92, 250], "\u6bcf": 92, "\u4e2a\u5c0f\u6279\u6b21\u6253\u5370\u4e00\u6b21": 92, "\u6211\u4eec\u53ea\u8fdb\u884c\u4e86": 92, "\u4e2a\u8bad\u7ec3\u8f6e\u6b21": 92, "\u7b2c": 92, "\u884c": 92, "\u4e5f\u5c31\u662f\u5728\u8bad\u7ec3\u6570\u636e\u96c6\u4e0a\u8fdb\u884c\u4e86\u4e24\u6b21\u5b8c\u6574\u904d\u5386": 92, "\u6bcf\u6b21\u904d\u5386\u90fd\u6709\u4e00\u4e2a\u5185\u90e8\u5faa\u73af": 92, "\u904d\u5386\u8bad\u7ec3\u6570\u636e": 92, "\u63d0\u4f9b\u7ecf\u8fc7\u8f6c\u6362\u7684\u8f93\u5165\u56fe\u50cf\u6279\u6b21\u53ca\u5176\u6b63\u786e\u6807\u7b7e": 92, "\u5c06\u68af\u5ea6\u5f52\u96f6": [92, 96], "\u662f\u4e00\u4e2a\u91cd\u8981\u6b65\u9aa4": 92, "\u68af\u5ea6\u4f1a\u5728\u4e00\u4e2a\u6279\u6b21\u4e0a\u7d2f\u79ef": 92, "\u5982\u679c\u6211\u4eec\u4e0d\u4e3a\u6bcf\u4e2a\u6279\u6b21\u91cd\u7f6e\u5b83\u4eec": 92, "\u5b83\u4eec\u5c06\u7ee7\u7eed\u7d2f\u79ef": 92, "\u4ece\u800c\u63d0\u4f9b\u9519\u8bef\u7684\u68af\u5ea6\u503c": 92, "\u4f7f\u5b66\u4e60\u53d8\u5f97\u4e0d\u53ef\u80fd": 92, "\u5728\u7b2c": 92, "\u6211\u4eec": 92, "\u8981\u6c42\u6a21\u578b\u5bf9\u8fd9\u4e2a\u6279\u6b21\u8fdb\u884c\u9884\u6d4b": 92, "\u5728\u4e0b\u4e00\u884c": 92, "\u6211\u4eec\u8ba1\u7b97\u635f\u5931": 92, "\u6a21\u578b\u9884\u6d4b": 92, "\u6b63\u786e\u8f93\u51fa": 92, "\u4e4b\u95f4\u7684\u5dee\u5f02": 92, "\u6211\u4eec\u8fdb\u884c": 92, "\u4f20\u64ad": 92, "\u8ba1\u7b97\u5c06\u6307\u5bfc\u5b66\u4e60\u7684\u68af\u5ea6": 92, "\u4f18\u5316\u5668\u6267\u884c\u4e00\u6b65\u5b66\u4e60": 92, "\u5b83\u4f7f\u7528": 92, "\u8c03\u7528\u5f97\u5230\u7684\u68af\u5ea6\u6765\u8c03\u6574\u5b66\u4e60\u6743\u91cd": 92, "\u4ee5\u51cf\u5c0f\u635f\u5931": 92, "\u5faa\u73af\u7684\u5176\u4f59\u90e8\u5206\u5bf9\u8f6e\u6b21\u53f7": 92, "\u5df2\u5b8c\u6210\u7684\u8bad\u7ec3\u5b9e\u4f8b\u6570\u4ee5\u53ca\u8bad\u7ec3\u5faa\u73af\u4e2d\u6536\u96c6\u7684\u635f\u5931\u8fdb\u884c\u4e86\u4e00\u4e9b\u8f7b\u91cf\u7ea7\u62a5\u544a": 92, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u7c7b\u4f3c\u8fd9\u6837\u7684\u8f93\u51fa": 92, "235": [92, 109], "940": 92, "6000": 92, "8000": [92, 246], "573": 92, "507": 92, "12000": 92, "442": 92, "378": 92, "364": 92, "319": [92, 219, 238], "284": [92, 163], "267": 92, "\u6ce8\u610f\u635f\u5931\u503c\u662f\u5355\u8c03\u4e0b\u964d\u7684": 92, "\u8868\u660e\u6211\u4eec\u7684\u6a21\u578b\u5728\u7ee7\u7eed\u63d0\u9ad8\u5176\u5728\u8bad\u7ec3\u6570\u636e\u96c6\u4e0a\u7684\u6027\u80fd": 92, "\u4f5c\u4e3a\u6700\u540e\u4e00\u6b65": 92, "\u6211\u4eec\u5e94\u8be5\u68c0\u67e5\u6a21\u578b\u662f\u5426\u771f\u6b63\u505a\u5230\u4e86": 92, "\u6cdb\u5316": 92, "\u5b66\u4e60": [92, 104], "\u800c\u4e0d\u662f\u7b80\u5355\u5730": 92, "\u8bb0\u4f4f": 92, "\u4e86\u6570\u636e\u96c6": 92, "\u8fd9\u88ab\u79f0\u4e3a": 92, "\u8fc7\u62df\u5408": 92, "\u901a\u5e38\u8868\u660e\u6570\u636e\u96c6\u592a\u5c0f": 92, "\u6ca1\u6709\u8db3\u591f\u7684\u6837\u672c\u8fdb\u884c\u6cdb\u5316\u5b66\u4e60": 92, "\u6216\u8005\u6a21\u578b\u7684\u5b66\u4e60\u53c2\u6570\u6bd4\u6b63\u786e\u5efa\u6a21\u6570\u636e\u96c6\u6240\u9700\u7684\u66f4\u591a": 92, "\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u6570\u636e\u96c6\u88ab\u5206\u4e3a\u8bad\u7ec3\u548c\u6d4b\u8bd5\u5b50\u96c6\u7684\u539f\u56e0": 92, "\u4e3a\u4e86\u6d4b\u8bd5\u6a21\u578b\u7684\u6cdb\u5316\u80fd\u529b": 92, "\u6211\u4eec\u8981\u6c42\u5b83\u5bf9\u4ece\u672a\u8bad\u7ec3\u8fc7\u7684\u6570\u636e\u8fdb\u884c\u9884\u6d4b": 92, "\u5982\u679c\u4f60\u4e00\u76f4\u8ddf\u968f\u4e0b\u6765": 92, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u6a21\u578b\u5728\u8fd9\u4e00\u70b9\u4e0a\u7684\u51c6\u786e\u7387\u5927\u7ea6\u4e3a": 92, "\u8fd9\u5e76\u4e0d\u662f\u6700\u5148\u8fdb\u7684\u6c34\u5e73": 92, "\u4f46\u6bd4\u968f\u673a\u8f93\u51fa\u7684": 92, "\u51c6\u786e\u7387\u8981\u597d\u5f97\u591a": 92, "\u8fd9\u8bc1\u660e\u4e86\u6a21\u578b\u786e\u5b9e\u53d1\u751f\u4e86\u4e00\u4e9b\u6cdb\u5316\u5b66\u4e60": 92, "\u5728\u8fd9\u4e2a\u89c6\u9891\u4e2d": 93, "\u6211\u4eec\u5c06\u8ba8\u8bba": 93, "\u63d0\u4f9b\u7684\u4e00\u4e9b\u7528\u4e8e\u6784\u5efa\u6df1\u5ea6\u5b66\u4e60\u7f51\u7edc\u7684\u5de5\u5177": 93, "\u9664\u4e86": 93, "\u6211\u4eec\u5728\u672c\u89c6\u9891\u4e2d\u8ba8\u8bba\u7684\u6240\u6709\u7c7b\u90fd\u662f": 93, "\u7684\u57fa\u7c7b": 93, "\u65e8\u5728\u5c01\u88c5\u7279\u5b9a\u4e8e": 93, "\u6a21\u578b\u53ca\u5176\u7ec4\u4ef6\u7684\u884c\u4e3a": 93, "\u7684\u4e00\u4e2a\u91cd\u8981\u884c\u4e3a\u662f\u6ce8\u518c\u53c2\u6570": 93, "\u5982\u679c\u7279\u5b9a\u7684": 93, "\u5b50\u7c7b\u5177\u6709\u5b66\u4e60\u6743\u91cd": 93, "\u8fd9\u4e9b\u6743\u91cd\u5c06\u8868\u793a\u4e3a": 93, "\u7c7b\u662f": 93, "\u5177\u6709\u7279\u6b8a\u884c\u4e3a": 93, "\u5373\u5f53\u5b83\u4eec\u88ab\u5206\u914d\u4e3a": 93, "\u7684\u5c5e\u6027\u65f6": 93, "\u5b83\u4eec\u5c06\u88ab\u6dfb\u52a0\u5230\u8be5\u6a21\u5757\u7684\u53c2\u6570\u5217\u8868\u4e2d": 93, "\u7c7b\u4e0a\u7684": 93, "\u65b9\u6cd5\u8bbf\u95ee\u8fd9\u4e9b\u53c2\u6570": 93, "\u4f5c\u4e3a\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50": 93, "\u8fd9\u91cc\u6709\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684\u6a21\u578b": 93, "\u5305\u542b\u4e24\u4e2a\u7ebf\u6027\u5c42\u548c\u4e00\u4e2a\u6fc0\u6d3b\u51fd\u6570": 93, "\u6211\u4eec\u5c06\u521b\u5efa\u5b83\u7684\u4e00\u4e2a\u5b9e\u4f8b": 93, "\u5e76\u8981\u6c42\u5b83\u62a5\u544a\u5176\u53c2\u6570": 93, "linear1": [93, 103], "linear2": [93, 103], "njust": 93, "nmodel": 93, "\u8fd9\u663e\u793a\u4e86": 93, "\u6a21\u578b\u7684\u57fa\u672c\u7ed3\u6784": 93, "\u65b9\u6cd5\u5b9a\u4e49\u6a21\u578b\u7684\u5c42\u548c\u5176\u4ed6\u7ec4\u4ef6": 93, "\u8fd8\u6709\u4e00\u4e2a": 93, "\u65b9\u6cd5\u6267\u884c\u8ba1\u7b97": 93, "\u6ce8\u610f\u6211\u4eec\u53ef\u4ee5\u6253\u5370\u6a21\u578b\u6216\u4efb\u4f55\u5b50\u6a21\u5757": 93, "\u4ee5\u4e86\u89e3\u5176\u7ed3\u6784": 93, "\u6700\u57fa\u672c\u7684\u795e\u7ecf\u7f51\u7edc\u5c42\u7c7b\u578b\u662f": 93, "\u7ebf\u6027": 93, "\u5168\u8fde\u63a5": 93, "\u8fd9\u662f\u4e00\u79cd\u6bcf\u4e2a\u8f93\u5165\u90fd\u4f1a\u5f71\u54cd\u8be5\u5c42\u6bcf\u4e2a\u8f93\u51fa\u7684\u5c42": 93, "\u5176\u5f71\u54cd\u7a0b\u5ea6\u7531\u5c42\u7684\u6743\u91cd\u6307\u5b9a": 93, "\u5982\u679c\u4e00\u4e2a\u6a21\u578b\u6709": 93, "\u4e2a\u8f93\u5165\u548c": 93, "\u4e2a\u8f93\u51fa": 93, "\u6743\u91cd\u5c06\u662f\u4e00\u4e2a": 93, "\u77e9\u9635": [93, 95], "lin": [93, 99, 104, 137, 157, 172, 173, 174, 209], "nweight": 93, "noutput": 93, "\u5982\u679c\u4f60\u5c06": 93, "\u4e0e\u7ebf\u6027\u5c42\u7684\u6743\u91cd\u76f8\u4e58": 93, "\u5e76\u52a0\u4e0a\u504f\u7f6e": 93, "\u4f60\u4f1a\u53d1\u73b0\u5f97\u5230\u7684\u662f\u8f93\u51fa\u5411\u91cf": 93, "\u53e6\u4e00\u4e2a\u9700\u8981\u6ce8\u610f\u7684\u91cd\u8981\u7279\u6027\u662f": 93, "\u5f53\u6211\u4eec\u7528": 93, "\u68c0\u67e5\u5c42\u7684\u6743\u91cd\u65f6": 93, "\u5b83\u5c06\u81ea\u5df1\u62a5\u544a\u4e3a\u4e00\u4e2a": 93, "\u5e76\u8ba9\u6211\u4eec\u77e5\u9053\u5b83\u6b63\u5728\u4f7f\u7528": 93, "\u8ddf\u8e2a\u68af\u5ea6": 93, "\u4e0d\u540c\u7684\u9ed8\u8ba4\u884c\u4e3a": 93, "\u7ebf\u6027\u5c42\u5728\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\u4e2d\u88ab\u5e7f\u6cdb\u4f7f\u7528": 93, "\u4f60\u4f1a\u7ecf\u5e38\u5728\u5206\u7c7b\u5668\u6a21\u578b\u7684\u672b\u7aef\u770b\u5230\u5b83\u4eec": 93, "\u5176\u4e2d\u6700\u540e\u4e00\u5c42\u5c06\u6709": 93, "\u662f\u5206\u7c7b\u5668\u6240\u5904\u7406\u7684\u7c7b\u522b\u6570": 93, "\u5377\u79ef": 93, "\u5c42\u88ab\u8bbe\u8ba1\u7528\u4e8e\u5904\u7406\u5177\u6709\u9ad8\u5ea6\u7a7a\u95f4\u76f8\u5173\u6027\u7684\u6570\u636e": 93, "\u5b83\u4eec\u5728\u8ba1\u7b97\u673a\u89c6\u89c9\u9886\u57df\u975e\u5e38\u5e38\u7528": 93, "\u7528\u4e8e\u68c0\u6d4b\u7ec4\u6210\u66f4\u9ad8\u7ea7\u7279\u5f81\u7684\u7d27\u5bc6\u7279\u5f81\u7ec4": 93, "\u5b83\u4eec\u4e5f\u51fa\u73b0\u5728\u5176\u4ed6\u4e0a\u4e0b\u6587\u4e2d": 93, "\u5e94\u7528\u7a0b\u5e8f\u4e2d": 93, "\u4e00\u4e2a\u5355\u8bcd\u7684\u76f4\u63a5\u4e0a\u4e0b\u6587": 93, "\u5373\u5e8f\u5217\u4e2d\u9644\u8fd1\u7684\u5176\u4ed6\u5355\u8bcd": 93, "\u53ef\u80fd\u4f1a\u5f71\u54cd\u53e5\u5b50\u7684\u542b\u4e49": 93, "\u6211\u4eec\u5728\u4e4b\u524d\u7684\u89c6\u9891\u4e2d\u770b\u5230\u4e86": 93, "lenet5": 93, "\u4e2d\u7684\u5377\u79ef\u5c42": 93, "\u8f93\u5165\u56fe\u50cf\u901a\u9053": 93, "\u8f93\u51fa\u901a\u9053": 93, "\u5e73\u65b9\u5377\u79ef\u6838": 93, "\u6765\u81ea\u56fe\u50cf\u7ef4\u5ea6": 93, "\u8ba9\u6211\u4eec\u5206\u89e3\u4e00\u4e0b\u8fd9\u4e2a\u6a21\u578b\u4e2d\u5377\u79ef\u5c42\u7684\u5de5\u4f5c\u539f\u7406": 93, "\u65e8\u5728\u63a5\u53d7": 93, "1x32x32": 93, "\u5377\u79ef\u5c42\u6784\u9020\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u8f93\u5165\u901a\u9053\u6570": 93, "\u8fd9\u91cc\u662f": 93, "\u5982\u679c\u6211\u4eec\u6784\u5efa\u8fd9\u4e2a\u6a21\u578b\u6765\u67e5\u770b": 93, "\u8272\u5f69\u901a\u9053": 93, "\u5b83\u5c06\u662f": 93, "\u5377\u79ef\u5c42\u5c31\u50cf\u4e00\u4e2a\u626b\u63cf\u56fe\u50cf\u7684\u7a97\u53e3": 93, "\u5bfb\u627e\u5b83\u80fd\u8bc6\u522b\u7684\u6a21\u5f0f": 93, "\u8fd9\u4e9b\u6a21\u5f0f\u88ab\u79f0\u4e3a": 93, "\u7279\u5f81": 93, "\u5377\u79ef\u5c42\u7684\u4e00\u4e2a\u53c2\u6570\u662f\u6211\u4eec\u5e0c\u671b\u5b83\u5b66\u4e60\u7684\u7279\u5f81\u6570\u91cf": 93, "\u6784\u9020\u51fd\u6570\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u8f93\u51fa\u7279\u5f81\u7684\u6570\u91cf": 93, "\u6211\u4eec\u8981\u6c42\u6211\u4eec\u7684\u5c42\u5b66\u4e60": 93, "\u4e2a\u7279\u5f81": 93, "\u5c31\u5728\u4e0a\u9762": 93, "\u6211\u5c06\u5377\u79ef\u5c42\u6bd4\u4f5c\u4e00\u4e2a\u7a97\u53e3": 93, "\u4f46\u662f\u7a97\u53e3\u6709\u591a\u5927": 93, "\u7b2c\u4e09\u4e2a\u53c2\u6570\u662f\u7a97\u53e3\u6216\u5185\u6838\u5927\u5c0f": 93, "\u6570\u5b57": 93, "\u610f\u5473\u7740\u6211\u4eec\u9009\u62e9\u4e86\u4e00\u4e2a": 93, "\u7684\u5185\u6838": 93, "\u5982\u679c\u4f60\u5e0c\u671b\u5185\u6838\u7684\u9ad8\u5ea6\u4e0e\u5bbd\u5ea6\u4e0d\u540c": 93, "\u4f60\u53ef\u4ee5\u4e3a\u6b64\u53c2\u6570\u6307\u5b9a\u4e00\u4e2a\u5143\u7ec4": 93, "\u6765\u83b7\u5f97\u4e00\u4e2a": 93, "3x5": 93, "\u7684\u5377\u79ef\u6838": 93, "\u5377\u79ef\u5c42\u7684\u8f93\u51fa\u662f\u4e00\u4e2a": 93, "\u6fc0\u6d3b\u6620\u5c04": 93, "\u8f93\u5165\u5f20\u91cf\u4e2d\u7279\u5f81\u5b58\u5728\u7684\u7a7a\u95f4\u8868\u793a": 93, "\u5c06\u7ed9\u6211\u4eec\u4e00\u4e2a": 93, "6x28x28": 93, "\u7684\u8f93\u51fa\u5f20\u91cf": [93, 95], "\u662f\u7279\u5f81\u6570": 93, "\u662f\u6620\u5c04\u7684\u9ad8\u5ea6\u548c\u5bbd\u5ea6": 93, "\u6765\u81ea\u4e8e\u5f53\u5728": 93, "\u50cf\u7d20\u884c\u4e0a\u626b\u63cf": 93, "\u50cf\u7d20\u7a97\u53e3\u65f6": 93, "\u53ea\u6709": 93, "\u4e2a\u6709\u6548\u4f4d\u7f6e\u7684\u4e8b\u5b9e": 93, "\u6211\u4eec\u5c06\u5377\u79ef\u7684\u8f93\u51fa\u901a\u8fc7": 93, "\u7a0d\u540e\u5c06\u8ba8\u8bba\u6fc0\u6d3b\u51fd\u6570": 93, "\u7136\u540e\u901a\u8fc7\u6700\u5927\u6c60\u5316\u5c42": 93, "\u6700\u5927\u6c60\u5316\u5c42\u5c06\u6fc0\u6d3b\u6620\u5c04\u4e2d\u5f7c\u6b64\u9760\u8fd1\u7684\u7279\u5f81\u7ec4\u5408\u5728\u4e00\u8d77": 93, "\u5b83\u901a\u8fc7\u51cf\u5c0f\u5f20\u91cf\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9": 93, "\u5c06\u8f93\u51fa\u4e2d\u6bcf\u4e2a": 93, "\u7ec4\u7684\u5355\u5143\u683c\u5408\u5e76\u4e3a\u4e00\u4e2a\u5355\u5143\u683c": 93, "\u5e76\u5c06\u8be5\u5355\u5143\u683c\u7684\u503c\u5206\u914d\u4e3a\u7ec4\u6210\u5b83\u7684": 93, "\u4e2a\u5355\u5143\u683c\u4e2d\u7684\u6700\u5927\u503c": 93, "\u8fd9\u7ed9\u4e86\u6211\u4eec\u4e00\u4e2a\u8f83\u4f4e\u5206\u8fa8\u7387\u7684\u6fc0\u6d3b\u6620\u5c04": 93, "\u5c3a\u5bf8\u4e3a": 93, "6x14x14": 93, "\u6211\u4eec\u7684\u4e0b\u4e00\u4e2a\u5377\u79ef\u5c42": 93, "\u671f\u671b": 93, "\u4e2a\u8f93\u5165\u901a\u9053": 93, "\u5bf9\u5e94\u4e8e\u7b2c\u4e00\u5c42\u5bfb\u627e\u7684": 93, "\u6709": 93, "\u5e76\u4e14\u5185\u6838\u5927\u5c0f\u4e3a": 93, "3x3": 93, "\u5b83\u8f93\u51fa\u4e00\u4e2a": 93, "16x12x12": 93, "\u7684\u6fc0\u6d3b\u6620\u5c04": 93, "\u518d\u6b21\u901a\u8fc7\u6700\u5927\u6c60\u5316\u5c42\u51cf\u5c0f\u5230": 93, "16x6x6": 93, "\u5728\u5c06\u6b64\u8f93\u51fa\u4f20\u9012\u7ed9\u7ebf\u6027\u5c42\u4e4b\u524d": 93, "\u5b83\u88ab\u91cd\u65b0\u6574\u5f62\u4e3a\u4e00\u4e2a": 93, "576": 93, "\u5143\u7d20\u5411\u91cf": 93, "\u4f9b\u4e0b\u4e00\u5c42\u4f7f\u7528": 93, "\u6709\u9488\u5bf9": 93, "\u5f20\u91cf\u7684\u5377\u79ef\u5c42": 93, "\u5377\u79ef\u5c42\u6784\u9020\u51fd\u6570\u8fd8\u6709\u8bb8\u591a\u5176\u4ed6\u53ef\u9009\u53c2\u6570": 93, "\u5305\u62ec\u6b65\u957f\u957f\u5ea6": 93, "\u53ea\u626b\u63cf\u6bcf\u7b2c\u4e8c\u4e2a\u6216\u6bcf\u7b2c\u4e09\u4e2a\u4f4d\u7f6e": 93, "\u586b\u5145": 93, "\u56e0\u6b64\u4f60\u53ef\u4ee5\u626b\u63cf\u5230\u8f93\u5165\u7684\u8fb9\u7f18": 93, "\u7b49\u7b49": 93, "\u66f4\u591a\u4fe1\u606f\u8bf7\u53c2\u89c1": 93, "\u5faa\u73af\u795e\u7ecf\u7f51\u7edc": 93, "\u7528\u4e8e\u5e8f\u5217\u6570\u636e": 93, "\u4ece\u79d1\u5b66\u4eea\u5668\u7684\u65f6\u95f4\u5e8f\u5217\u6d4b\u91cf\u5230\u81ea\u7136\u8bed\u8a00\u53e5\u5b50\u518d\u5230": 93, "dna": 93, "\u6838\u82f7\u9178": 93, "\u901a\u8fc7\u7ef4\u62a4\u4e00\u4e2a": 93, "\u9690\u85cf\u72b6\u6001": 93, "\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9": 93, "\u8be5\u9690\u85cf\u72b6\u6001\u5145\u5f53\u4e00\u79cd\u8bb0\u5fc6": 93, "\u8bb0\u5f55\u5230\u76ee\u524d\u4e3a\u6b62\u5b83\u5728\u5e8f\u5217\u4e2d\u770b\u5230\u7684\u5185\u5bb9": 93, "\u5c42\u7684\u5185\u90e8\u7ed3\u6784": 93, "\u6216\u5176\u53d8\u4f53": 93, "\u957f\u77ed\u671f\u8bb0\u5fc6": 93, "\u95e8\u63a7\u5faa\u73af\u5355\u5143": 93, "\u76f8\u5f53\u590d\u6742": 93, "\u8d85\u51fa\u4e86\u672c\u89c6\u9891\u7684\u8303\u56f4": 93, "\u4f46\u6211\u4eec\u5c06\u5411\u4f60\u5c55\u793a\u57fa\u4e8e": 93, "\u7684\u8bcd\u6027\u6807\u6ce8\u5668": 93, "\u4e00\u79cd\u5206\u7c7b\u5668": 93, "\u7528\u4e8e\u544a\u8bc9\u4f60\u4e00\u4e2a\u5355\u8bcd\u662f\u540d\u8bcd": 93, "\u52a8\u8bcd\u7b49": 93, "\u7684\u6837\u5b50": 93, "lstmtagger": [93, 102], "vocab_s": [93, 98, 99, 102, 103, 115, 118, 137, 144, 185, 220], "tagset_s": [93, 98, 102], "word_embed": [93, 102], "\u63a5\u53d7\u8bcd\u5d4c\u5165\u4f5c\u4e3a\u8f93\u5165": 93, "\u5e76\u8f93\u51fa\u7ef4\u5ea6\u4e3a": 93, "\u7684\u9690\u85cf\u72b6\u6001": 93, "\u5c06\u4ece\u9690\u85cf\u72b6\u6001\u7a7a\u95f4\u6620\u5c04\u5230\u6807\u8bb0\u7a7a\u95f4\u7684\u7ebf\u6027\u5c42": 93, "hidden2tag": [93, 98, 102], "lstm_out": [93, 98, 102], "tag_spac": [93, 102], "tag_scor": [93, 102], "\u6784\u9020\u51fd\u6570\u6709\u56db\u4e2a\u53c2\u6570": 93, "\u662f\u8f93\u5165\u8bcd\u6c47\u8868\u4e2d\u5355\u8bcd\u7684\u6570\u91cf": 93, "\u6bcf\u4e2a\u5355\u8bcd\u662f\u4e00\u4e2a": 93, "\u7ef4\u7684\u4e00\u70ed\u5411\u91cf": 93, "\u6216\u5355\u4f4d\u5411\u91cf": 93, "\u662f\u8f93\u51fa\u6807\u7b7e\u96c6\u7684\u5927\u5c0f": 93, "\u662f\u8bcd\u6c47\u7684": 93, "\u5d4c\u5165": 93, "\u7a7a\u95f4\u7684\u5927\u5c0f": 93, "\u5d4c\u5165\u5c06\u8bcd\u6c47\u6620\u5c04\u5230\u4e00\u4e2a\u4f4e\u7ef4\u7a7a\u95f4": 93, "\u5728\u8be5\u7a7a\u95f4\u4e2d": 93, "\u610f\u4e49\u76f8\u4f3c\u7684\u5355\u8bcd\u5f7c\u6b64\u63a5\u8fd1": 93, "\u7684\u8bb0\u5fc6\u5927\u5c0f": 93, "\u8f93\u5165\u5c06\u662f\u4e00\u4e2a\u53e5\u5b50": 93, "\u5355\u8bcd\u8868\u793a\u4e3a\u4e00\u70ed\u5411\u91cf\u7684\u7d22\u5f15": 93, "\u5d4c\u5165\u5c42\u5c06\u628a\u8fd9\u4e9b\u6620\u5c04\u5230\u4e00\u4e2a": 93, "\u7ef4\u7684\u7a7a\u95f4": 93, "\u63a5\u6536\u8fd9\u4e2a\u5d4c\u5165\u5e8f\u5217\u5e76\u5bf9\u5176\u8fdb\u884c\u8fed\u4ee3": 93, "\u4ea7\u751f\u4e00\u4e2a\u957f\u5ea6\u4e3a": 93, "\u7684\u8f93\u51fa\u5411\u91cf": 93, "\u6700\u540e\u7684\u7ebf\u6027\u5c42\u5145\u5f53\u5206\u7c7b\u5668": 93, "\u5c06\u6700\u540e\u4e00\u5c42\u7684\u8f93\u51fa\u901a\u8fc7": 93, "\u8f6c\u6362\u4e3a\u4e00\u7ec4\u5f52\u4e00\u5316\u7684\u4f30\u8ba1\u6982\u7387": 93, "\u8868\u793a\u7ed9\u5b9a\u5355\u8bcd\u6620\u5c04\u5230\u7ed9\u5b9a\u6807\u7b7e\u7684\u6982\u7387": 93, "\u5982\u679c\u4f60\u60f3\u770b\u770b\u8fd9\u4e2a\u7f51\u7edc\u7684\u5b9e\u9645\u8fd0\u884c\u60c5\u51b5": 93, "\u53ef\u4ee5\u67e5\u770b": 93, "\u4e0a\u7684": [93, 121], "\u5e8f\u5217\u6a21\u578b\u548c": 93, "\u7f51\u7edc": 93, "\u6559\u7a0b": [93, 104, 238], "\u662f\u591a\u7528\u9014\u7f51\u7edc": 93, "\u9886\u57df\u53d6\u5f97\u4e86\u6700\u5148\u8fdb\u7684\u6210\u679c": 93, "\u8ba8\u8bba\u8f6c\u6362\u5668\u67b6\u6784\u8d85\u51fa\u4e86\u672c\u89c6\u9891\u7684\u8303\u56f4": 93, "\u5141\u8bb8\u4f60\u5b9a\u4e49\u8f6c\u6362\u5668\u6a21\u578b\u7684\u6574\u4f53\u53c2\u6570": 93, "\u6ce8\u610f\u529b\u5934\u7684\u6570\u91cf": 93, "\u7f16\u7801\u5668\u548c\u89e3\u7801\u5668\u5c42\u7684\u6570\u91cf": 93, "\u548c\u6fc0\u6d3b\u51fd\u6570\u7b49": 93, "\u4f60\u751a\u81f3\u53ef\u4ee5\u7528\u6b63\u786e\u7684\u53c2\u6570\u4ece\u8fd9\u4e2a\u5355\u4e00\u7c7b\u6784\u5efa": 93, "\u7c7b\u8fd8\u5305\u542b\u5c01\u88c5\u5355\u4e2a\u7ec4\u4ef6": 93, "transformerdecod": 93, "\u548c\u5b50\u7ec4\u4ef6": 93, "transformerdecoderlay": 93, "\u8be6\u60c5\u8bf7\u67e5\u770b": 93, "\u4e2d\u5173\u4e8e\u8f6c\u6362\u5668\u7c7b\u7684\u5185\u5bb9": 93, "\u4ee5\u53ca": [93, 104], "\u4e0a\u76f8\u5173\u7684": 93, "\u8fd8\u6709\u5176\u4ed6\u7c7b\u578b\u7684\u5c42\u6267\u884c\u6a21\u578b\u4e2d\u7684\u91cd\u8981\u529f\u80fd": 93, "\u4f46\u5b83\u4eec\u81ea\u8eab\u4e0d\u53c2\u4e0e\u5b66\u4e60\u8fc7\u7a0b": 93, "\u6700\u5927\u6c60\u5316": 93, "\u53ca\u5176\u5b6a\u751f\u5c42\u6700\u5c0f\u6c60\u5316": 93, "\u901a\u8fc7\u7ec4\u5408\u5355\u5143\u5e76\u5c06\u8f93\u5165\u5355\u5143\u7684\u6700\u5927\u503c\u5206\u914d\u7ed9\u8f93\u51fa\u5355\u5143\u6765\u51cf\u5c0f\u5f20\u91cf": 93, "\u6211\u4eec\u4e4b\u524d\u770b\u5230\u8fc7\u8fd9\u4e00\u70b9": 93, "maxpool_lay": 93, "\u5982\u679c\u4f60\u4ed4\u7ec6\u89c2\u5bdf\u4e0a\u9762\u7684\u503c": 93, "\u4f60\u4f1a\u53d1\u73b0\u6700\u5927\u6c60\u5316\u8f93\u51fa\u4e2d\u7684\u6bcf\u4e2a\u503c\u90fd\u662f": 93, "6x6": 93, "\u8f93\u5165\u7684\u6bcf\u4e2a\u8c61\u9650\u7684\u6700\u5927\u503c": 93, "\u5f52\u4e00\u5316\u5c42": 93, "\u5728\u5c06\u4e00\u5c42\u7684\u8f93\u51fa\u9988\u9001\u5230\u53e6\u4e00\u5c42\u4e4b\u524d": 93, "\u91cd\u65b0\u5c45\u4e2d\u5e76\u5f52\u4e00\u5316\u8f93\u51fa": 93, "\u5c45\u4e2d\u548c\u7f29\u653e\u4e2d\u95f4\u5f20\u91cf\u6709\u8bb8\u591a\u6709\u76ca\u7684\u6548\u679c": 93, "\u4f8b\u5982\u8ba9\u4f60\u53ef\u4ee5\u4f7f\u7528\u66f4\u9ad8\u7684\u5b66\u4e60\u7387\u800c\u4e0d\u4f1a\u51fa\u73b0\u68af\u5ea6\u7206\u70b8": 93, "\u6d88\u5931": 93, "norm_lay": [93, 134], "batchnorm1d": 93, "normed_tensor": 93, "\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c": 93, "\u6211\u4eec\u4e3a\u8f93\u5165\u5f20\u91cf\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5927\u7684\u7f29\u653e\u56e0\u5b50\u548c\u504f\u79fb\u91cf": 93, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u8f93\u5165\u5f20\u91cf\u7684": 93, "\u5de6\u53f3": 93, "\u7ecf\u8fc7\u5f52\u4e00\u5316\u5c42\u5904\u7406\u540e": 93, "\u4f60\u53ef\u4ee5\u770b\u5230\u503c\u53d8\u5c0f\u4e86": 93, "\u5e76\u4e14\u56f4\u7ed5\u7740": 93, "\u5206\u5e03": 93, "\u5e73\u5747\u503c\u5e94\u8be5\u975e\u5e38\u5c0f": 93, "\u8fd9\u662f\u6709\u76ca\u7684": 93, "\u56e0\u4e3a\u8bb8\u591a\u6fc0\u6d3b\u51fd\u6570": 93, "\u4e0b\u9762\u5c06\u8ba8\u8bba": 93, "\u4f46\u6709\u65f6\u5bf9\u4e8e\u5c06\u5b83\u4eec\u63a8\u79bb": 93, "\u5f88\u8fdc\u7684\u8f93\u5165\u4f1a\u9047\u5230\u68af\u5ea6\u6d88\u5931\u6216\u7206\u70b8\u7684\u95ee\u9898": 93, "\u5c06\u6570\u636e\u4fdd\u6301\u5728\u6700\u9661\u68af\u5ea6\u533a\u57df\u5468\u56f4\u5c06\u503e\u5411\u4e8e\u610f\u5473\u7740\u66f4\u5feb": 93, "\u66f4\u597d\u7684\u5b66\u4e60\u548c\u66f4\u9ad8\u7684\u53ef\u884c\u5b66\u4e60\u7387": 93, "\u662f\u4e00\u79cd\u9f13\u52b1\u6a21\u578b": 93, "\u7a00\u758f\u8868\u793a": 93, "\u7684\u5de5\u5177": 93, "\u4e5f\u5c31\u662f\u8bf4": [93, 95], "\u63a8\u52a8\u5b83\u5728\u63a8\u7406\u65f6\u4f7f\u7528\u8f83\u5c11\u7684\u6570\u636e": 93, "\u5c42\u7684\u5de5\u4f5c\u539f\u7406\u662f\u5728": 93, "\u8bad\u7ec3\u671f\u95f4": 93, "\u968f\u673a\u8bbe\u7f6e\u8f93\u5165\u5f20\u91cf\u7684\u4e00\u90e8\u5206": 93, "\u5c42\u5728\u63a8\u7406\u65f6\u603b\u662f\u5173\u95ed\u7684": 93, "\u8fd9\u8feb\u4f7f\u6a21\u578b\u9488\u5bf9\u8fd9\u79cd\u63a9\u7801\u6216\u51cf\u5c11\u7684\u6570\u636e\u96c6\u8fdb\u884c\u5b66\u4e60": 93, "\u5bf9\u793a\u4f8b\u5f20\u91cf\u7684\u5f71\u54cd": 93, "\u4f60\u53ef\u4ee5\u4f7f\u7528\u53ef\u9009\u7684": 93, "\u53c2\u6570\u8bbe\u7f6e\u5355\u4e2a\u6743\u91cd\u4e22\u5f03\u7684\u6982\u7387": 93, "\u5982\u679c\u4e0d\u8bbe\u7f6e": 93, "\u9ed8\u8ba4\u4e3a": 93, "\u6fc0\u6d3b\u51fd\u6570\u4f7f\u6df1\u5ea6\u5b66\u4e60\u6210\u4e3a\u53ef\u80fd": 93, "\u795e\u7ecf\u7f51\u7edc\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u7a0b\u5e8f": 93, "\u6709\u8bb8\u591a\u53c2\u6570": 93, "\u7528\u4e8e": 93, "\u6a21\u62df\u4e00\u4e2a\u6570\u5b66\u51fd\u6570": 93, "\u5982\u679c\u6211\u4eec\u53ea\u662f\u91cd\u590d\u5730\u5c06\u5f20\u91cf\u4e0e\u5c42\u6743\u91cd\u76f8\u4e58": 93, "\u6211\u4eec\u53ea\u80fd\u6a21\u62df": 93, "\u7ebf\u6027\u51fd\u6570": 93, "\u6709\u591a\u5c42\u4e5f\u6ca1\u6709\u610f\u4e49": 93, "\u56e0\u4e3a\u6574\u4e2a\u7f51\u7edc\u53ef\u4ee5\u7b80\u5316\u4e3a\u5355\u4e2a\u77e9\u9635\u4e58\u6cd5": 93, "\u5728\u5c42\u4e4b\u95f4\u63d2\u5165": 93, "\u6fc0\u6d3b\u51fd\u6570\u4f7f\u5f97\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\u80fd\u591f\u6a21\u62df\u4efb\u4f55\u51fd\u6570": 93, "\u800c\u4e0d\u4ec5\u4ec5\u662f\u7ebf\u6027\u51fd\u6570": 93, "\u6709\u5c01\u88c5\u6240\u6709\u4e3b\u8981\u6fc0\u6d3b\u51fd\u6570\u7684\u5bf9\u8c61": 93, "\u53ca\u5176\u8bb8\u591a\u53d8\u4f53": 93, "hardtanh": [93, 110, 252], "\u7b49": [93, 95, 104, 111], "\u5b83\u8fd8\u5305\u62ec\u5176\u4ed6\u51fd\u6570": 93, "\u8fd9\u4e9b\u51fd\u6570\u5728\u6a21\u578b\u7684\u8f93\u51fa\u9636\u6bb5\u6700\u6709\u7528": 93, "\u635f\u5931\u51fd\u6570\u544a\u8bc9\u6211\u4eec\u6a21\u578b\u7684\u9884\u6d4b\u4e0e\u6b63\u786e\u7b54\u6848\u76f8\u5dee\u591a\u8fdc": 93, "\u5305\u542b\u5404\u79cd\u635f\u5931\u51fd\u6570": 93, "\u5305\u62ec\u5e38\u89c1\u7684": 93, "\u8303\u6570": 93, "\u4ea4\u53c9\u71b5\u635f\u5931\u548c\u8d1f\u5bf9\u6570\u4f3c\u7136\u635f\u5931": 93, "\u5bf9\u4e8e\u5206\u7c7b\u5668\u5f88\u6709\u7528": 93, "\u8981\u8fd0\u884c\u6b64\u6559\u7a0b": 94, "\u60a8\u9700\u8981\u5b89\u88c5pytorch": 94, "matplotlib\u548ctensorboard": 94, "\u5b89\u88c5\u5b8c\u4f9d\u8d56\u9879\u540e": 94, "\u8bf7\u5728\u5b89\u88c5\u5b83\u4eec\u7684python\u73af\u5883\u4e2d\u91cd\u65b0\u542f\u52a8\u6b64\u7b14\u8bb0\u672c": 94, "\u5728\u672c\u7b14\u8bb0\u672c\u4e2d": 94, "\u6211\u4eec\u5c06\u8bad\u7ec3lenet": 94, "5\u7684\u53d8\u4f53": 94, "\u9488\u5bf9fashion": 94, "mnist\u6570\u636e\u96c6": 94, "mnist\u662f\u4e00\u7ec4\u63cf\u7ed8\u5404\u79cd\u670d\u88c5\u7684\u56fe\u50cf\u74e6\u7247": 94, "\u6709\u5341\u4e2a\u7c7b\u6807\u7b7e\u6307\u793a\u6240\u63cf\u7ed8\u7684\u670d\u88c5\u7c7b\u578b": 94, "pytorch\u6a21\u578b\u548c\u8bad\u7ec3\u5fc5\u9700\u54c1": 94, "\u56fe\u50cf\u6570\u636e\u96c6\u548c\u56fe\u50cf\u64cd\u4f5c": 94, "\u56fe\u50cf\u663e\u793a": 94, "summarywrit": [94, 96, 169, 245], "\u5982\u679c\u60a8\u4f7f\u7528\u7684\u73af\u5883\u5b89\u88c5\u4e86tensorflow": 94, "\u5982googl": 94, "\u8bf7\u53d6\u6d88\u6ce8\u91ca\u4ee5\u4e0b\u4ee3\u7801\u4ee5\u907f\u514d\u5c06\u5d4c\u5165\u4fdd\u5b58\u5230tensorboard\u76ee\u5f55\u65f6\u51fa\u73b0\u9519\u8bef": 94, "tb": [94, 172, 173, 174], "gfile": 94, "tensorflow_stub": 94, "\u8ba9\u6211\u4eec\u4ece\u5c06\u6570\u636e\u96c6\u4e2d\u7684\u793a\u4f8b\u56fe\u50cf\u6dfb\u52a0\u5230tensorboard\u5f00\u59cb": 94, "\u6536\u96c6\u6570\u636e\u96c6\u5e76\u51c6\u5907\u6d88\u8d39": 94, "data\u4e2d\u5b58\u50a8\u5355\u72ec\u7684\u8bad\u7ec3\u548c\u9a8c\u8bc1\u5206\u5272": 94, "training_set": [94, 96], "validation_set": [94, 96], "training_load": [94, 96], "validation_load": [94, 96], "\u7c7b\u6807\u7b7e": 94, "\u5185\u8054\u56fe\u50cf\u663e\u793a\u7684\u8f85\u52a9\u51fd\u6570": [94, 96], "matplotlib_imshow": [94, 96, 169], "one_channel": [94, 96, 169], "\u53cd\u5f52\u4e00\u5316": 94, "grei": [94, 96, 119, 169, 188], "\u63d0\u53d6\u4e00\u62794\u5f20\u56fe\u50cf": 94, "\u4ece\u56fe\u50cf\u521b\u5efa\u7f51\u683c\u5e76\u663e\u793a\u5b83\u4eec": [94, 96], "img_grid": [94, 96, 169], "\u6211\u4eec\u4f7f\u7528torchvision\u548cmatplotlib\u521b\u5efa\u4e86\u4e00\u4e2a\u8f93\u5165\u6570\u636e\u5c0f\u6279\u91cf\u7684\u53ef\u89c6\u7f51\u683c": 94, "\u4e0a\u4f7f\u7528": 94, "add_imag": [94, 169], "\u8c03\u7528\u6765\u8bb0\u5f55\u56fe\u50cf": 94, "\u4ee5\u4f9btensorboard\u4f7f\u7528": 94, "\u6211\u4eec\u8fd8\u8c03\u7528": 94, "\u4ee5\u786e\u4fdd\u5b83\u7acb\u5373\u5199\u5165\u78c1\u76d8": 94, "\u9ed8\u8ba4log_dir\u53c2\u6570\u4e3a": 94, "\u4f46\u6700\u597d\u660e\u786e\u6307\u5b9a": 94, "summarywriter\u5728\u4e0a\u9762\u5bfc\u5165": 94, "fashion_mnist_experiment_1": [94, 169], "\u5c06\u56fe\u50cf\u6570\u636e\u5199\u5165tensorboard\u65e5\u5fd7\u76ee\u5f55": 94, "\u8981\u67e5\u770b": 94, "\u8bf7\u5728\u547d\u4ee4\u884c\u4e0a\u542f\u52a8tensorboard": 94, "logdir": [94, 168, 169, 245], "\u5e76\u5728\u65b0\u7684\u6d4f\u89c8\u5668\u9009\u9879\u5361\u4e2d\u6253\u5f00http": 94, "6006": [94, 168, 169, 245], "\u5982\u679c\u60a8\u5728\u547d\u4ee4\u884c\u542f\u52a8tensorboard\u5e76\u5728\u65b0\u7684\u6d4f\u89c8\u5668\u9009\u9879\u5361\u4e2d\u6253\u5f00\u5b83": 94, "\u901a\u5e38\u5728": 94, "\u60a8\u5e94\u8be5\u5728images\u9009\u9879\u5361\u4e0b\u770b\u5230\u56fe\u50cf\u7f51\u683c": 94, "tensorboard\u5bf9\u4e8e\u8ddf\u8e2a\u8bad\u7ec3\u7684\u8fdb\u5ea6\u548c\u6548\u679c\u5f88\u6709\u7528": 94, "\u6211\u4eec\u5c06\u8fd0\u884c\u4e00\u4e2a\u8bad\u7ec3\u5faa\u73af": 94, "\u8ddf\u8e2a\u4e00\u4e9b\u6307\u6807": 94, "\u5e76\u4fdd\u5b58\u6570\u636e\u4ee5\u4f9btensorboard\u4f7f\u7528": 94, "\u8ba9\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u6a21\u578b\u6765\u5bf9\u6211\u4eec\u7684\u56fe\u50cf\u74e6\u7247\u8fdb\u884c\u5206\u7c7b": 94, "\u4ee5\u53ca\u7528\u4e8e\u8bad\u7ec3\u7684\u4f18\u5316\u5668\u548c\u635f\u5931\u51fd\u6570": 94, "\u73b0\u5728\u8ba9\u6211\u4eec\u8bad\u7ec3\u4e00\u4e2aepoch": 94, "\u5e76\u6bcf1000\u6279\u6b21\u8bc4\u4f30\u4e00\u6b21\u8bad\u7ec3\u4e0e\u9a8c\u8bc1\u96c6\u7684\u635f\u5931": 94, "\u57fa\u672c\u8bad\u7ec3\u5faa\u73af": 94, "\u6bcf1000\u4e2a\u5c0f\u6279\u91cf": 94, "\u5bf9\u7167\u9a8c\u8bc1\u96c6": 94, "running_vloss": [94, 96], "\u5728\u8bc4\u4f30\u6a21\u5f0f\u4e0b": 94, "\u53ef\u4ee5\u7701\u7565\u4e00\u4e9b\u7279\u5b9a\u4e8e\u6a21\u578b\u7684\u64cd\u4f5c": 94, "\u4f8b\u5982dropout\u5c42": 94, "\u5207\u6362\u5230\u8bc4\u4f30\u6a21\u5f0f": 94, "\u4f8b\u5982\u5173\u95ed\u6b63\u5219\u5316": 94, "vdata": [94, 96], "vinput": [94, 96], "vlabel": [94, 96], "voutput": [94, 96], "vloss": [94, 96], "\u5207\u6362\u56de\u8bad\u7ec3\u6a21\u5f0f": 94, "\u4f8b\u5982\u6253\u5f00\u6b63\u5219\u5316": 94, "avg_loss": [94, 96], "avg_vloss": [94, 96], "\u8bb0\u5f55\u6bcf\u6279\u6b21\u5e73\u5747\u7684\u8fd0\u884c\u635f\u5931": [94, 96], "add_scalar": [94, 96, 169, 245], "\u5207\u6362\u5230\u60a8\u6253\u5f00\u7684tensorboard": 94, "\u67e5\u770bscalars\u9009\u9879\u5361": 94, "tensorboard\u8fd8\u53ef\u7528\u4e8e\u68c0\u67e5\u6a21\u578b\u5185\u7684\u6570\u636e\u6d41": 94, "\u8bf7\u4f7f\u7528\u6a21\u578b\u548c\u793a\u4f8b\u8f93\u5165\u8c03\u7528": 94, "add_graph": [94, 169], "\u518d\u6b21\u83b7\u53d6\u4e00\u4e2a\u5c0f\u6279\u91cf\u7684\u56fe\u50cf": 94, "\u5c06\u901a\u8fc7\u60a8\u7684\u6a21\u578b\u8ddf\u8e2a\u793a\u4f8b\u8f93\u5165": 94, "\u5e76\u5c06\u5176\u6e32\u67d3\u4e3a\u56fe\u5f62": 94, "\u5f53\u60a8\u5207\u6362\u5230tensorboard\u65f6": 94, "\u60a8\u5e94\u8be5\u4f1a\u770b\u5230\u4e00\u4e2agraphs\u9009\u9879\u5361": 94, "\u53cc\u51fb": 94, "\u8282\u70b9\u53ef\u67e5\u770b\u6a21\u578b\u5185\u7684\u5c42\u548c\u6570\u636e\u6d41": 94, "\u6211\u4eec\u4f7f\u7528\u768428x28\u56fe\u50cf\u74e6\u7247\u53ef\u4ee5\u5efa\u6a21\u4e3a784\u7ef4\u5411\u91cf": 94, "\u5c06\u5176\u6295\u5f71\u5230\u8f83\u4f4e\u7ef4\u5ea6\u7684\u8868\u793a\u5f62\u5f0f\u53ef\u80fd\u4f1a\u5f88\u6709\u542f\u53d1\u6027": 94, "add_embed": [94, 169], "\u65b9\u6cd5\u5c06\u4e00\u7ec4\u6570\u636e\u6295\u5f71\u5230\u5177\u6709\u6700\u9ad8\u65b9\u5dee\u7684\u4e09\u4e2a\u7ef4\u5ea6\u4e0a": 94, "\u5e76\u5c06\u5b83\u4eec\u663e\u793a\u4e3a\u4ea4\u4e92\u5f0f3d\u56fe\u8868": 94, "\u65b9\u6cd5\u901a\u8fc7\u6295\u5f71\u5230\u5177\u6709\u6700\u9ad8\u65b9\u5dee\u7684\u4e09\u4e2a\u7ef4\u5ea6\u6765\u81ea\u52a8\u6267\u884c\u6b64\u64cd\u4f5c": 94, "\u6211\u4eec\u5c06\u91c7\u6837\u6570\u636e": 94, "\u5e76\u751f\u6210\u8fd9\u6837\u4e00\u4e2a\u5d4c\u5165": 94, "\u9009\u62e9\u968f\u673a\u5b50\u96c6\u7684\u6570\u636e\u548c\u76f8\u5e94\u7684\u6807\u7b7e": 94, "select_n_random": [94, 169], "perm": [94, 169], "randperm": [94, 169, 178], "\u63d0\u53d6\u968f\u673a\u5b50\u96c6\u7684\u6570\u636e": 94, "\u83b7\u53d6\u6bcf\u4e2a\u56fe\u50cf\u7684\u7c7b\u6807\u7b7e": 94, "class_label": [94, 169, 171], "\u8bb0\u5f55\u5d4c\u5165": 94, "label_img": [94, 169], "\u5982\u679c\u60a8\u5207\u6362\u5230tensorboard\u5e76\u9009\u62e9projector\u9009\u9879\u5361": 94, "\u60a8\u5e94\u8be5\u4f1a\u770b\u5230\u6295\u5f71\u76843d\u8868\u793a": 94, "\u60a8\u53ef\u4ee5\u65cb\u8f6c\u548c\u7f29\u653e\u6a21\u578b": 94, "\u5728\u5927\u5c0f\u4e0d\u540c\u7684\u5c3a\u5ea6\u4e0a\u68c0\u67e5\u5b83": 94, "\u770b\u770b\u60a8\u662f\u5426\u53ef\u4ee5\u53d1\u73b0\u6295\u5f71\u6570\u636e\u548c\u6807\u7b7e\u805a\u7c7b\u4e2d\u7684\u6a21\u5f0f": 94, "\u4e3a\u4e86\u66f4\u597d\u7684\u53ef\u89c1\u6027": 94, "\u5efa\u8bae": 94, "\u4ece\u5de6\u4fa7\u7684": 94, "\u4e0b\u62c9\u83dc\u5355\u4e2d\u9009\u62e9": 94, "\u5207\u6362\u9876\u90e8\u7684night": 94, "mode\u56fe\u6807": 94, "\u5c06\u6d45\u8272\u56fe\u50cf\u7f6e\u4e8e\u6df1\u8272\u80cc\u666f\u4e0a": 94, "pytorch\u5173\u4e8e": 94, "__\u7684\u6587\u6863": 94, "org\u6559\u7a0b": 94, "\u4e2d\u7684tensorboard\u6559\u7a0b\u5185\u5bb9": 94, "\u6709\u5173tensorboard\u7684\u66f4\u591a\u4fe1\u606f": 94, "tensorboard\u6587\u6863": 94, "\u5f20\u91cf\u662fpytorch\u4e2d\u7684\u4e2d\u5fc3\u6570\u636e\u62bd\u8c61": 95, "\u8fd9\u4e2a\u4ea4\u4e92\u5f0f\u7b14\u8bb0\u672c\u63d0\u4f9b\u4e86\u5bf9": 95, "\u7c7b\u7684\u6df1\u5165\u4ecb\u7ecd": 95, "\u8ba9\u6211\u4eec\u5bfc\u5165pytorch\u6a21\u5757": 95, "\u6211\u4eec\u8fd8\u5c06\u6dfb\u52a0python\u7684\u6570\u5b66\u6a21\u5757": 95, "\u4ee5\u4fbf\u4e8e\u4e00\u4e9b\u793a\u4f8b": 95, "\u521b\u5efa\u5f20\u91cf\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u4f7f\u7528": 95, "\u8ba9\u6211\u4eec\u89e3\u91ca\u4e0b\u521a\u624d\u53d1\u751f\u7684\u4e8b\u60c5": 95, "\u6211\u4eec\u4f7f\u7528\u9644\u52a0\u5230": 95, "\u6a21\u5757\u7684\u4f17\u591a\u5de5\u5382\u65b9\u6cd5\u4e4b\u4e00\u521b\u5efa\u4e86\u4e00\u4e2a\u5f20\u91cf": 95, "\u8be5\u5f20\u91cf\u662f\u4e8c\u7ef4\u7684": 95, "\u67093\u884c4\u5217": 95, "\u8fd4\u56de\u5bf9\u8c61\u7684\u7c7b\u578b\u662f": 95, "\u7684\u522b\u540d": 95, "pytorch\u5f20\u91cf\u752832\u4f4d\u6d6e\u70b9\u6570\u586b\u5145": 95, "\u66f4\u591a\u5173\u4e8e\u6570\u636e\u7c7b\u578b\u7684\u5185\u5bb9\u89c1\u4e0b\u6587": 95, "\u5f53\u6253\u5370\u4f60\u7684\u5f20\u91cf\u65f6": 95, "\u4f60\u53ef\u80fd\u4f1a\u770b\u5230\u4e00\u4e9b\u968f\u673a\u7684\u503c": 95, "\u8c03\u7528\u4e3a\u5f20\u91cf\u5206\u914d\u5185\u5b58": 95, "\u4f46\u4e0d\u4f1a\u7528\u4efb\u4f55\u503c\u521d\u59cb\u5316\u5b83": 95, "\u6240\u4ee5\u4f60\u770b\u5230\u7684\u662f\u5206\u914d\u65f6\u5185\u5b58\u4e2d\u7684\u4efb\u4f55\u503c": 95, "\u5173\u4e8e\u5f20\u91cf\u53ca\u5176\u7ef4\u6570\u548c\u672f\u8bed\u7684\u7b80\u8981\u8bf4\u660e": 95, "\u4f60\u6709\u65f6\u4f1a\u770b\u5230\u4e00\u7ef4\u5f20\u91cf\u88ab\u79f0\u4e3a": 95, "\u5411\u91cf": 95, "\u4e8c\u7ef4\u5f20\u91cf\u901a\u5e38\u88ab\u79f0\u4e3a": 95, "\u4efb\u4f55\u8d85\u8fc7\u4e24\u4e2a\u7ef4\u5ea6\u7684\u5f20\u91cf\u901a\u5e38\u90fd\u88ab\u79f0\u4e3a\u5f20\u91cf": 95, "\u5927\u591a\u6570\u60c5\u51b5\u4e0b": 95, "\u4f60\u4f1a\u5e0c\u671b\u7528\u4e00\u4e9b\u503c\u521d\u59cb\u5316\u4f60\u7684\u5f20\u91cf": 95, "\u5e38\u89c1\u7684\u60c5\u51b5\u662f\u5168\u96f6": 95, "\u5168\u4e00\u6216\u968f\u673a\u503c": 95, "\u6a21\u5757\u4e3a\u6240\u6709\u8fd9\u4e9b\u60c5\u51b5\u63d0\u4f9b\u4e86\u5de5\u5382\u65b9\u6cd5": 95, "\u5de5\u5382\u65b9\u6cd5\u90fd\u505a\u4e86\u4f60\u671f\u671b\u7684\u4e8b\u60c5": 95, "\u6211\u4eec\u6709\u4e00\u4e2a\u5168\u96f6\u5f20\u91cf": 95, "\u4e00\u4e2a\u5168\u4e00\u5f20\u91cf\u548c\u4e00\u4e2a\u968f\u673a\u503c\u57280\u52301\u4e4b\u95f4\u7684\u5f20\u91cf": 95, "\u8bf4\u5230\u968f\u673a\u5f20\u91cf": 95, "\u4f60\u662f\u5426\u6ce8\u610f\u5230\u5728\u5b83\u4e4b\u524d\u7acb\u5373\u8c03\u7528\u4e86": 95, "\u7528\u968f\u673a\u503c\u521d\u59cb\u5316\u5f20\u91cf": 95, "\u5982\u6a21\u578b\u7684\u5b66\u4e60\u6743\u91cd": 95, "\u662f\u5f88\u5e38\u89c1\u7684": 95, "\u4f46\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b": 95, "\u7279\u522b\u662f\u5728\u7814\u7a76\u73af\u5883\u4e2d": 95, "\u4f60\u53ef\u80fd\u5e0c\u671b\u5bf9\u7ed3\u679c\u7684\u53ef\u91cd\u590d\u6027\u6709\u4e00\u4e9b\u4fdd\u8bc1": 95, "\u624b\u52a8\u8bbe\u7f6e\u968f\u673a\u6570\u751f\u6210\u5668\u7684\u79cd\u5b50\u5c31\u662f\u8fd9\u6837\u505a\u7684\u65b9\u6cd5": 95, "\u8ba9\u6211\u4eec\u4ed4\u7ec6\u770b\u770b": 95, "random1": 95, "random2": 95, "random3": 95, "random4": 95, "\u4f60\u5e94\u8be5\u770b\u5230\u4e0a\u9762": 95, "\u5305\u542b\u76f8\u540c\u7684\u503c": 95, "\u4e5f\u662f\u5982\u6b64": 95, "\u624b\u52a8\u8bbe\u7f6erng\u7684\u79cd\u5b50\u4f1a\u91cd\u7f6e\u5b83": 95, "\u56e0\u6b64\u76f8\u540c\u7684\u968f\u673a\u6570\u8ba1\u7b97\u5728\u5927\u591a\u6570\u8bbe\u7f6e\u4e0b\u5e94\u8be5\u63d0\u4f9b\u76f8\u540c\u7684\u7ed3\u679c": 95, "\u8bf7\u53c2\u9605pytorch\u5173\u4e8e\u53ef\u91cd\u590d\u6027\u7684": 95, "\u5f53\u4f60\u5728\u4e24\u4e2a\u6216\u591a\u4e2a\u5f20\u91cf\u4e0a\u6267\u884c\u64cd\u4f5c\u65f6": 95, "\u5b83\u4eec\u901a\u5e38\u9700\u8981\u5177\u6709\u76f8\u540c\u7684": 95, "\u5177\u6709\u76f8\u540c\u7684\u7ef4\u6570\u548c\u6bcf\u4e2a\u7ef4\u5ea6\u4e2d\u7684\u76f8\u540c\u6570\u91cf\u7684\u5355\u5143": 95, "_like": [95, 147], "empty_like_x": 95, "empty_lik": [95, 108, 147, 173, 174, 189, 209], "zeros_like_x": 95, "ones_like_x": 95, "rand_like_x": 95, "\u4e0a\u9762\u4ee3\u7801\u5355\u5143\u4e2d\u7684\u7b2c\u4e00\u4e2a\u65b0\u4e8b\u7269\u662f\u5728\u5f20\u91cf\u4e0a\u4f7f\u7528": 95, "\u8fd9\u4e2a\u5c5e\u6027\u5305\u542b\u4e86\u6bcf\u4e2a\u7ef4\u5ea6\u5f20\u91cf\u7684\u8303\u56f4\u7684\u5217\u8868": 95, "\u662f\u4e00\u4e2a\u4e09\u7ef4\u5f20\u91cf": 95, "\u5f62\u72b6\u4e3a": 95, "\u6211\u4eec\u53ef\u4ee5\u9a8c\u8bc1\u6bcf\u4e2a\u8fd9\u4e9b\u65b9\u6cd5\u90fd\u8fd4\u56de\u4e00\u4e2a\u5177\u6709\u76f8\u540c\u7ef4\u6570\u548c\u8303\u56f4\u7684\u5f20\u91cf": 95, "\u521b\u5efa\u5f20\u91cf\u7684\u6700\u540e\u4e00\u79cd\u65b9\u5f0f\u662f\u76f4\u63a5\u4ecepytorch\u96c6\u5408\u4e2d\u6307\u5b9a\u5176\u6570\u636e": 95, "some_const": 95, "1415926": 95, "71828": 95, "61803": 95, "0072897": 95, "some_integ": 95, "more_integ": 95, "\u662f\u5728\u4f60\u5df2\u7ecf\u6709python\u5143\u7ec4\u6216\u5217\u8868\u6570\u636e\u7684\u60c5\u51b5\u4e0b\u521b\u5efa\u5f20\u91cf\u7684\u6700\u76f4\u63a5\u65b9\u5f0f": 95, "\u5982\u4e0a\u6240\u793a": 95, "\u5d4c\u5957\u96c6\u5408\u4f1a\u751f\u6210\u591a\u7ef4\u5f20\u91cf": 95, "\u521b\u5efa\u6570\u636e\u7684\u526f\u672c": 95, "\u8bbe\u7f6e\u5f20\u91cf\u7684\u6570\u636e\u7c7b\u578b\u6709\u4e24\u79cd\u65b9\u5f0f": 95, "int32": [95, 137, 165, 184, 185, 197, 200, 234], "\u8bbe\u7f6e\u5f20\u91cf\u5e95\u5c42\u6570\u636e\u7c7b\u578b\u7684\u6700\u7b80\u5355\u65b9\u5f0f\u662f\u5728\u521b\u5efa\u65f6\u4f7f\u7528\u53ef\u9009\u53c2\u6570": 95, "\u5728\u4e0a\u9762\u5355\u5143\u683c\u7684\u7b2c\u4e00\u884c\u4e2d": 95, "\u8bbe\u7f6e\u4e3a\u5f20\u91cf": 95, "\u5f53\u6211\u4eec\u6253\u5370": 95, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5b83\u662f\u7531": 95, "\u586b\u5145\u7684": 95, "python\u7684\u4e00\u4e2a\u5fae\u5999\u63d0\u793a": 95, "\u8fd9\u662f\u4e00\u4e2a\u6574\u6570\u7c7b\u578b\u800c\u4e0d\u662f\u6d6e\u70b9\u6570": 95, "\u4f60\u53ef\u80fd\u8fd8\u6ce8\u610f\u5230": 95, "\u6253\u5370": 95, "\u4e0e\u6211\u4eec\u5c06": 95, "\u4fdd\u7559\u4e3a\u9ed8\u8ba4\u503c": 95, "32\u4f4d\u6d6e\u70b9\u6570": 95, "\u65f6\u4e0d\u540c": 95, "\u6253\u5370\u5f20\u91cf\u65f6\u4e5f\u6307\u5b9a\u4e86\u5176": 95, "\u6211\u4eec\u4ece\u6307\u5b9a\u5f20\u91cf\u5f62\u72b6\u4e3a\u4e00\u7cfb\u5217\u6574\u6570\u53c2\u6570": 95, "\u8f6c\u4e3a\u5c06\u8fd9\u4e9b\u53c2\u6570\u5206\u7ec4\u5230\u4e00\u4e2a\u5143\u7ec4\u4e2d": 95, "\u8fd9\u4e0d\u662f\u7edd\u5bf9\u5fc5\u8981\u7684": 95, "pytorch\u4f1a\u5c06\u4e00\u7cfb\u5217\u521d\u59cb\u7684": 95, "\u672a\u6807\u8bb0\u7684\u6574\u6570\u53c2\u6570\u89c6\u4e3a\u5f20\u91cf\u5f62\u72b6": 95, "\u4f46\u662f\u5f53\u6dfb\u52a0\u53ef\u9009\u53c2\u6570\u65f6": 95, "\u5b83\u53ef\u4ee5\u4f7f\u4f60\u7684\u610f\u56fe\u66f4\u52a0\u53ef\u8bfb": 95, "\u8bbe\u7f6e\u6570\u636e\u7c7b\u578b\u7684\u53e6\u4e00\u79cd\u65b9\u5f0f\u662f\u4f7f\u7528": 95, "\u6211\u4eec\u4ee5\u901a\u5e38\u7684\u65b9\u5f0f\u521b\u5efa\u4e86\u4e00\u4e2a\u968f\u673a\u6d6e\u70b9\u5f20\u91cf": 95, "\u6211\u4eec\u901a\u8fc7\u5c06": 95, "\u8f6c\u6362\u4e3a32\u4f4d\u6574\u6570\u6765\u521b\u5efa": 95, "\u5305\u542b\u4e0e": 95, "\u76f8\u540c\u7684\u503c": 95, "\u4f46\u88ab\u622a\u65ad\u4e3a\u6574\u6570": 95, "\u53ef\u7528\u7684\u6570\u636e\u7c7b\u578b\u5305\u62ec": 95, "bfloat": 95, "\u73b0\u5728\u4f60\u77e5\u9053\u4e86\u4e00\u4e9b\u521b\u5efa\u5f20\u91cf\u7684\u65b9\u6cd5": 95, "\u90a3\u4f60\u80fd\u5bf9\u5b83\u4eec\u505a\u4ec0\u4e48\u5462": 95, "\u8ba9\u6211\u4eec\u9996\u5148\u770b\u57fa\u672c\u7b97\u672f\u8fd0\u7b97": 95, "\u4ee5\u53ca\u5f20\u91cf\u5982\u4f55\u4e0e\u7b80\u5355\u7684\u6807\u91cf\u4ea4\u4e92": 95, "sqrt2": 95, "\u5982\u4f60\u6240\u89c1": [95, 104], "\u5f20\u91cf\u548c\u6807\u91cf\u4e4b\u95f4\u7684\u52a0\u6cd5": 95, "\u51cf\u6cd5": 95, "\u4e58\u6cd5": 95, "\u9664\u6cd5\u548c\u6307\u6570\u8fd0\u7b97\u90fd\u662f\u5728\u5f20\u91cf\u7684\u6bcf\u4e2a\u5143\u7d20\u4e0a\u5206\u5e03\u5f0f\u8fdb\u884c\u7684": 95, "\u7531\u4e8e\u8fd9\u79cd\u64cd\u4f5c\u7684\u8f93\u51fa\u5c06\u662f\u4e00\u4e2a\u5f20\u91cf": 95, "\u4f60\u53ef\u4ee5\u50cf\u901a\u5e38\u7684\u8fd0\u7b97\u7b26\u4f18\u5148\u7ea7\u89c4\u5219\u4e00\u6837\u5c06\u5b83\u4eec\u94fe\u63a5\u5728\u4e00\u8d77": 95, "\u5c31\u50cf\u6211\u4eec\u5728\u521b\u5efa": 95, "\u7684\u90a3\u4e00\u884c\u4e2d\u6240\u505a\u7684\u90a3\u6837": 95, "\u4e24\u4e2a\u5f20\u91cf\u4e4b\u95f4\u7684\u7c7b\u4f3c\u8fd0\u7b97\u4e5f\u50cf\u4f60\u76f4\u89c9\u4e0a\u671f\u671b\u7684\u90a3\u6837": 95, "powers2": 95, "dozen": [95, 165], "\u8fd9\u91cc\u9700\u8981\u6ce8\u610f\u7684\u662f": 95, "\u524d\u9762\u4ee3\u7801\u5355\u5143\u4e2d\u7684\u6240\u6709\u5f20\u91cf\u90fd\u5177\u6709\u76f8\u540c\u7684\u5f62\u72b6": 95, "\u5982\u679c\u6211\u4eec\u5c1d\u8bd5\u5728\u4e0d\u540c\u5f62\u72b6\u7684\u5f20\u91cf\u4e0a\u6267\u884c\u4e8c\u5143\u8fd0\u7b97\u4f1a\u600e\u6837": 95, "\u4e0b\u9762\u7684\u5355\u5143\u683c\u4f1a\u629b\u51fa\u4e00\u4e2a\u8fd0\u884c\u65f6\u9519\u8bef": 95, "\u8fd9\u662f\u6709\u610f\u7684": 95, "\u4e00\u822c\u60c5\u51b5\u4e0b": 95, "\u4f60\u4e0d\u80fd\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u5bf9\u4e0d\u540c\u5f62\u72b6\u7684\u5f20\u91cf\u8fdb\u884c\u64cd\u4f5c": 95, "\u5373\u4f7f\u5728\u4e0a\u9762\u7684\u5355\u5143\u683c\u4e2d": 95, "\u5f20\u91cf\u5177\u6709\u76f8\u540c\u6570\u91cf\u7684\u5143\u7d20": 95, "\u5982\u679c\u4f60\u719f\u6089numpi": 95, "ndarrays\u4e2d\u7684\u5e7f\u64ad\u8bed\u4e49": 95, "\u4f60\u4f1a\u53d1\u73b0\u8fd9\u91cc\u5e94\u7528\u7684\u662f\u76f8\u540c\u7684\u89c4\u5219": 95, "\u540c\u5f62\u89c4\u5219\u7684\u4f8b\u5916\u662f": 95, "\u8fd9\u91cc\u6709\u4e00\u4e2a\u4f8b\u5b50": 95, "\u8fd9\u91cc\u7684\u6280\u5de7\u662f\u4ec0\u4e48": 95, "\u6211\u4eec\u662f\u5982\u4f55\u5c06": 95, "\u5f20\u91cf\u4e0e": 95, "\u5f20\u91cf\u76f8\u4e58\u7684": 95, "\u5e7f\u64ad\u662f\u4e00\u79cd\u5728\u5177\u6709\u76f8\u4f3c\u5f62\u72b6\u7684\u5f20\u91cf\u4e4b\u95f4\u6267\u884c\u64cd\u4f5c\u7684\u65b9\u5f0f": 95, "\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d": 95, "\u4e00\u884c\u56db\u5217\u7684\u5f20\u91cf\u4e0e\u4e24\u884c\u56db\u5217\u5f20\u91cf\u7684": 95, "\u4e24\u884c": 95, "\u76f8\u4e58": 95, "\u8fd9\u662f\u6df1\u5ea6\u5b66\u4e60\u4e2d\u4e00\u4e2a\u91cd\u8981\u7684\u64cd\u4f5c": 95, "\u5e38\u89c1\u7684\u4f8b\u5b50\u662f\u5c06\u4e00\u6279\u8f93\u5165\u5f20\u91cf\u7684\u5b66\u4e60\u6743\u91cd\u5f20\u91cf\u76f8\u4e58": 95, "\u5206\u522b\u5bf9\u6279\u6b21\u4e2d\u7684\u6bcf\u4e2a\u5b9e\u4f8b\u5e94\u7528\u8be5\u64cd\u4f5c": 95, "\u5e76\u8fd4\u56de\u4e00\u4e2a\u5f62\u72b6\u76f8\u540c\u7684\u5f20\u91cf": 95, "\u5c31\u50cf\u6211\u4eec\u4e0a\u9762\u7684": 95, "\u793a\u4f8b\u4e00\u6837": 95, "\u8fd4\u56de\u4e86\u4e00\u4e2a\u5f62\u72b6\u4e3a": 95, "\u5e7f\u64ad\u7684\u89c4\u5219\u662f": 95, "\u6bcf\u4e2a\u5f20\u91cf\u5fc5\u987b\u81f3\u5c11\u6709\u4e00\u4e2a\u7ef4\u5ea6": 95, "\u4e0d\u5141\u8bb8\u7a7a\u5f20\u91cf": 95, "\u6bd4\u8f83\u4e24\u4e2a\u5f20\u91cf\u7684\u7ef4\u5ea6\u5927\u5c0f": 95, "\u4ece\u6700\u540e\u4e00\u4e2a\u5230\u7b2c\u4e00\u4e2a": 95, "\u6bcf\u4e2a\u7ef4\u5ea6\u5fc5\u987b\u76f8\u7b49": 95, "\u5176\u4e2d\u4e00\u4e2a\u7ef4\u5ea6\u5fc5\u987b\u4e3a1": 95, "\u8be5\u7ef4\u5ea6\u5728\u5176\u4e2d\u4e00\u4e2a\u5f20\u91cf\u4e2d\u4e0d\u5b58\u5728": 95, "\u5f53\u7136": 95, "\u76f8\u540c\u5f62\u72b6\u7684\u5f20\u91cf\u662f": 95, "\u53ef\u5e7f\u64ad": 95, "\u6b63\u5982\u4f60\u4e4b\u524d\u770b\u5230\u7684\u90a3\u6837": 95, "\u8fd9\u91cc\u6709\u4e00\u4e9b\u7b26\u5408\u4e0a\u8ff0\u89c4\u5219\u5e76\u5141\u8bb8\u5e7f\u64ad\u7684\u60c5\u51b5\u793a\u4f8b": 95, "\u7b2c3\u548c\u7b2c2\u7ef4\u4e0ea\u76f8\u540c": 95, "\u7b2c1\u7ef4\u4e0d\u5b58\u5728": 95, "\u7b2c3\u7ef4\u4e3a1": 95, "\u7b2c2\u7ef4\u4e0ea\u76f8\u540c": 95, "\u7b2c3\u7ef4\u4e0ea\u76f8\u540c": 95, "\u7b2c2\u7ef4\u4e3a1": 95, "\u4ed4\u7ec6\u89c2\u5bdf\u4e0a\u9762\u6bcf\u4e2a\u5f20\u91cf\u7684\u503c": 95, "\u521b\u5efa": 95, "\u7684\u4e58\u6cd5\u8fd0\u7b97\u662f\u5728": 95, "\u7684\u6bcf\u4e00\u5c42\u4e0a\u5e7f\u64ad\u7684": 95, "\u5bf9\u4e8e": 95, "\u8be5\u8fd0\u7b97\u5728": 95, "\u7684\u6bcf\u4e00\u5c42\u548c\u6bcf\u4e00\u884c\u4e0a\u90fd\u8fdb\u884c\u4e86\u5e7f\u64ad": 95, "\u6bcf\u4e00\u52173\u4e2a\u5143\u7d20\u90fd\u662f\u76f8\u540c\u7684": 95, "\u6211\u4eec\u98a0\u5012\u4e86\u4e00\u4e0b": 95, "\u73b0\u5728\u6bcf\u4e00\u884c\u5728\u5c42\u4e0e\u5217\u4e4b\u95f4\u90fd\u662f\u76f8\u540c\u7684": 95, "\u6709\u5173\u5e7f\u64ad\u7684\u66f4\u591a\u4fe1\u606f": 95, "\u8bf7\u53c2\u9605pytorch\u5173\u4e8e\u6b64\u7684": 95, "\u8fd9\u91cc\u6709\u4e00\u4e9b\u5c1d\u8bd5\u5e7f\u64ad\u4f46\u4f1a\u5931\u8d25\u7684\u4f8b\u5b50": 95, "\u7ef4\u5ea6\u5fc5\u987b\u4ece\u6700\u540e\u5230\u7b2c\u4e00\u4e2a\u5339\u914d": 95, "\u7b2c3\u548c\u7b2c2\u7ef4\u90fd\u4e0d\u540c": 95, "\u4e0d\u80fd\u4e0e\u7a7a\u5f20\u91cf\u8fdb\u884c\u5e7f\u64ad": 95, "\u5f20\u91cf\u6709\u8d85\u8fc7\u4e09\u767e\u79cd\u53ef\u4ee5\u6267\u884c\u7684\u64cd\u4f5c": 95, "\u8fd9\u91cc\u662f\u4e00\u4e9b\u4e3b\u8981\u64cd\u4f5c\u7c7b\u522b\u7684\u793a\u4f8b": 95, "\u5e38\u7528\u65b9\u6cd5": 95, "ceil": [95, 135], "\u4e09\u89d2\u51fd\u6570\u53ca\u5176\u53cd\u51fd\u6570": 95, "nsine": 95, "arcsin": 95, "\u4f4d\u8fd0\u7b97": 95, "nbitwis": 95, "xor": 95, "bitwise_xor": 95, "\u6bd4\u8f83\u64cd\u4f5c": 95, "nbroadcast": 95, "\u8fd4\u56de\u5e03\u5c14\u7c7b\u578b\u5f20\u91cf": 95, "\u5f52\u7ea6\u64cd\u4f5c": 95, "n\u5f52\u7ea6\u64cd\u4f5c": 95, "\u8fd4\u56de\u5355\u5143\u7d20\u5f20\u91cf": 95, "\u4ece\u8fd4\u56de\u7684\u5f20\u91cf\u4e2d\u63d0\u53d6\u503c": 95, "\u5e73\u5747\u503c": 95, "\u6807\u51c6\u5dee": 95, "prod": [95, 190], "\u6240\u6709\u6570\u5b57\u7684\u4e58\u79ef": 95, "\u8fc7\u6ee4\u552f\u4e00\u5143\u7d20": 95, "\u5411\u91cf\u548c\u7ebf\u6027\u4ee3\u6570\u8fd0\u7b97": 95, "\u5355\u4f4d\u5411\u91cf": 95, "m1": [95, 231], "\u968f\u673a\u77e9\u9635": 95, "m2": 95, "\u4e09\u500d\u5355\u4f4d\u77e9\u9635": 95, "n\u5411\u91cf\u548c\u77e9\u9635": 95, "\u5355\u4f4d\u5411\u91cf\u7684\u8d1f\u503c": 95, "m3": 95, "\u7684\u4e09\u500d": 95, "\u5947\u5f02\u503c\u5206\u89e3": 95, "\u6709\u5173\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\u548c\u5b8c\u6574\u7684\u6570\u5b66\u51fd\u6570\u6e05\u5355": 95, "\u5927\u591a\u6570\u5f20\u91cf\u7684\u4e8c\u5143\u8fd0\u7b97\u5c06\u8fd4\u56de\u7b2c\u4e09\u4e2a\u65b0\u5f20\u91cf": 95, "\u5f53\u6211\u4eec\u8bf4": 95, "\u662f\u5f20\u91cf": 95, "\u65b0\u5f20\u91cf": 95, "\u5c06\u5360\u7528\u4e0e\u5176\u4ed6\u5f20\u91cf\u4e0d\u540c\u7684\u5185\u5b58\u533a\u57df": 95, "\u6709\u65f6\u60a8\u53ef\u80fd\u5e0c\u671b\u5c31\u5730\u4fee\u6539\u5f20\u91cf": 95, "\u5982\u679c\u60a8\u6b63\u5728\u6267\u884c\u5143\u7d20wise\u8ba1\u7b97": 95, "\u53ef\u4ee5\u4e22\u5f03\u4e2d\u95f4\u503c": 95, "\u5927\u591a\u6570\u6570\u5b66\u51fd\u6570\u90fd\u6709\u4e00\u4e2a\u5e26\u6709\u9644\u52a0\u4e0b\u5212\u7ebf": 95, "\u7684\u7248\u672c": 95, "\u5b83\u5c06\u5c31\u5730\u4fee\u6539\u5f20\u91cf": 95, "\u6b64\u64cd\u4f5c\u5728\u5185\u5b58\u4e2d\u521b\u5efa\u65b0\u5f20\u91cf": 95, "\u672a\u66f4\u6539": 95, "sin_": 95, "\u6ce8\u610f\u4e0b\u5212\u7ebf": 95, "\u88ab\u4fee\u6539": 95, "\u5bf9\u4e8e\u7b97\u672f\u8fd0\u7b97": 95, "\u6709\u4e00\u4e9b\u51fd\u6570\u7684\u884c\u4e3a\u7c7b\u4f3c": 95, "nafter": [95, 153], "\u8fd9\u4e9b\u5c31\u5730\u7b97\u672f\u51fd\u6570\u662f": 95, "\u5bf9\u8c61\u4e0a\u7684\u65b9\u6cd5": 95, "\u800c\u4e0d\u662f\u50cf\u8bb8\u591a\u5176\u4ed6\u51fd\u6570": 95, "\u90a3\u6837\u9644\u52a0\u5230": 95, "\u6a21\u5757\u4e0a": 95, "\u6b63\u5982\u4f60\u4ece": 95, "\u4e2d\u770b\u5230\u7684": 95, "\u88ab\u8c03\u7528\u7684\u5f20\u91cf\u662f\u5c31\u5730\u6539\u53d8\u7684\u90a3\u4e2a": 95, "\u8fd8\u6709\u53e6\u4e00\u79cd\u9009\u62e9": 95, "\u53ef\u4ee5\u5c06\u8ba1\u7b97\u7ed3\u679c\u653e\u5728\u4e00\u4e2a\u5df2\u7ecf\u5206\u914d\u7684\u5f20\u91cf\u4e2d": 95, "\u6211\u4eec\u5230\u76ee\u524d\u4e3a\u6b62\u770b\u5230\u7684\u8bb8\u591a\u65b9\u6cd5\u548c\u51fd\u6570": 95, "\u5305\u62ec\u521b\u5efa\u65b9\u6cd5": 95, "\u90fd\u6709\u4e00\u4e2a": 95, "\u8ba9\u4f60\u6307\u5b9a\u4e00\u4e2a\u5f20\u91cf\u6765\u63a5\u6536\u8f93\u51fa": 95, "\u5982\u679c": [95, 111, 246], "\u5f20\u91cf\u7684\u5f62\u72b6\u548c": 95, "\u6b63\u786e": 95, "\u8fd9\u53ef\u4ee5\u5728\u4e0d\u5206\u914d\u65b0\u5185\u5b58\u7684\u60c5\u51b5\u4e0b\u53d1\u751f": 95, "old_id": 95, "\u7684\u5185\u5bb9\u5df2\u7ecf\u6539\u53d8": 95, "\u6d4b\u8bd5": [95, 236], "\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61": 95, "\u800c\u4e0d\u53ea\u662f\u5305\u542b\u76f8\u7b49\u7684\u503c": 95, "\u786e\u4fdd\u6211\u4eec\u7684\u65b0": 95, "\u662f\u65e7": 95, "\u7684\u540c\u4e00\u4e2a\u5bf9\u8c61": 95, "\u5bf9\u4e8e\u521b\u5efa\u4e5f\u53ef\u4ee5": 95, "\u53c8\u4e00\u6b21\u6539\u53d8": 95, "\u4ecd\u7136\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61": 95, "\u4e2d\u7684\u4efb\u4f55\u5bf9\u8c61\u4e00\u6837": 95, "\u5c06\u5f20\u91cf\u8d4b\u503c\u7ed9\u53d8\u91cf\u4f1a\u4f7f\u8be5\u53d8\u91cf\u6210\u4e3a\u5f20\u91cf\u7684": 95, "\u6807\u7b7e": [95, 236, 250], "\u800c\u4e0d\u4f1a\u590d\u5236\u5b83": 95, "561": [95, 177], "\u6211\u4eec\u6539\u53d8": 95, "\u4e5f\u88ab\u6539\u53d8\u4e86": 95, "\u5982\u679c\u4f60\u60f3\u8981\u4e00\u4e2a\u5355\u72ec\u7684\u6570\u636e\u526f\u672c\u6765\u5904\u7406\u5462": 95, "\u8fd9\u65f6\u5c31\u53ef\u4ee5\u4f7f\u7528": 95, "\u5185\u5b58\u4e2d\u7684\u4e0d\u540c\u5bf9\u8c61": 95, "\u4f46\u4ecd\u7136\u5177\u6709\u76f8\u540c\u7684\u5185\u5bb9": 95, "\u6539\u53d8\u4e86": 95, "\u4f46": 95, "\u4ecd\u7136\u662f\u5168": 95, "\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u4e8b\u60c5\u9700\u8981\u6ce8\u610f": 95, "\u5982\u679c\u4f60\u7684\u6e90\u5f20\u91cf\u542f\u7528\u4e86\u81ea\u52a8\u6c42\u5bfc": 95, "\u90a3\u4e48\u514b\u9686\u5f20\u91cf\u4e5f\u4f1a\u542f\u7528\u81ea\u52a8\u6c42\u5bfc": 95, "\u8fd9\u5c06\u5728\u5173\u4e8e\u81ea\u52a8\u6c42\u5bfc\u7684\u89c6\u9891\u4e2d\u66f4\u6df1\u5165\u5730\u4ecb\u7ecd": 95, "\u4f46\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u7ec6\u8282\u7684\u7b80\u5355\u7248\u672c": 95, "\u8bf7\u7ee7\u7eed\u9605\u8bfb": 95, "\u5728\u8bb8\u591a\u60c5\u51b5\u4e0b": 95, "\u8fd9\u6b63\u662f\u4f60\u6240\u9700\u8981\u7684": 95, "\u5982\u679c\u4f60\u7684\u6a21\u578b\u5728\u5176": 95, "\u65b9\u6cd5\u4e2d\u6709\u591a\u4e2a\u8ba1\u7b97\u8def\u5f84": 95, "\u5e76\u4e14": 95, "\u539f\u59cb\u5f20\u91cf\u548c\u5b83\u7684\u514b\u9686": 95, "\u90fd\u4f1a\u5f71\u54cd\u6a21\u578b\u7684\u8f93\u51fa": 95, "\u90a3\u4e48\u4e3a\u4e86\u542f\u7528\u6a21\u578b\u5b66\u4e60": 95, "\u4f60\u5e0c\u671b\u4e24\u4e2a\u5f20\u91cf\u90fd\u542f\u7528\u81ea\u52a8\u6c42\u5bfc": 95, "\u901a\u5e38\u5982\u679c\u5b83\u662f\u4e00\u7ec4\u5b66\u4e60\u6743\u91cd\u6216\u6e90\u81ea\u6d89\u53ca\u6743\u91cd\u7684\u8ba1\u7b97": 95, "\u90a3\u4e48\u4f60\u5c31\u4f1a\u5f97\u5230\u6240\u9700\u7684\u7ed3\u679c": 95, "\u53e6\u4e00\u65b9\u9762": 95, "\u5982\u679c\u4f60\u6b63\u5728\u8fdb\u884c\u4e00\u4e2a\u8ba1\u7b97": 95, "\u90fd\u4e0d\u9700\u8981\u8ddf\u8e2a\u68af\u5ea6": 95, "\u90a3\u4e48\u53ea\u8981\u6e90\u5f20\u91cf\u5173\u95ed\u4e86\u81ea\u52a8\u6c42\u5bfc": 95, "\u4f60\u5c31\u53ef\u4ee5\u7ee7\u7eed\u4e86": 95, "\u8fd8\u6709\u7b2c\u4e09\u79cd\u60c5\u51b5": 95, "\u5047\u8bbe\u4f60\u5728\u6a21\u578b\u7684": 95, "\u51fd\u6570\u4e2d\u6267\u884c\u4e00\u4e2a\u8ba1\u7b97": 95, "\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6240\u6709\u5185\u5bb9\u7684\u68af\u5ea6\u90fd\u6253\u5f00": 95, "\u4f46\u4f60\u60f3\u5728\u4e2d\u95f4\u63d0\u53d6\u4e00\u4e9b\u503c\u6765\u751f\u6210\u4e00\u4e9b\u6307\u6807": 95, "\u4f60": 95, "\u4e0d\u5e0c\u671b": 95, "\u514b\u9686\u7684\u6e90\u5f20\u91cf\u526f\u672c\u8ddf\u8e2a\u68af\u5ea6": 95, "\u5173\u95ed\u81ea\u52a8\u6c42\u5bfc\u7684\u5386\u53f2\u8bb0\u5f55\u8ddf\u8e2a\u53ef\u4ee5\u63d0\u9ad8\u6027\u80fd": 95, "\u4f60\u53ef\u4ee5\u5728\u6e90\u5f20\u91cf\u4e0a\u4f7f\u7528": 95, "\u6253\u5f00\u81ea\u52a8\u6c42\u5bfc": 95, "\u6b64\u5904\u53d1\u751f\u4e86\u4ec0\u4e48": 95, "\u6211\u4eec\u521b\u5efa\u4e86": 95, "\u5e76\u5c06": 95, "\u6211\u4eec\u8fd8\u6ca1\u6709\u4ecb\u7ecd\u8fd9\u4e2a\u53ef\u9009\u53c2\u6570": 95, "\u4f46\u5c06\u5728\u5173\u4e8e\u81ea\u52a8\u6c42\u5bfc\u7684\u5355\u5143\u4e2d\u4ecb\u7ecd": 95, "\u5b83\u544a\u8bc9\u6211\u4eec\u5c5e\u6027": 95, "\u8fd9\u610f\u5473\u7740\u81ea\u52a8\u6c42\u5bfc\u548c\u8ba1\u7b97\u5386\u53f2\u8ddf\u8e2a\u5df2\u6253\u5f00": 95, "\u6211\u4eec\u514b\u9686": 95, "\u5e76\u5c06\u5176\u6807\u8bb0\u4e3a": 95, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5b83\u6b63\u5728\u8ddf\u8e2a\u5176\u8ba1\u7b97\u5386\u53f2": 95, "\u5b83\u7ee7\u627f\u4e86": 95, "\u7684\u81ea\u52a8\u6c42\u5bfc\u8bbe\u7f6e": 95, "\u5e76\u6dfb\u52a0\u5230\u4e86\u8ba1\u7b97\u5386\u53f2\u4e2d": 95, "\u4f46\u9996\u5148\u8c03\u7528": 95, "\u6211\u4eec\u770b\u4e0d\u5230\u4efb\u4f55\u8ba1\u7b97\u5386\u53f2": 95, "\u4e5f\u6ca1\u6709": 95, "\u5c06\u5f20\u91cf\u4e0e\u5176\u8ba1\u7b97\u5386\u53f2\u5206\u79bb": 95, "\u5b83\u8bf4": 95, "\u65e0\u8bba\u63a5\u4e0b\u6765\u53d1\u751f\u4ec0\u4e48": 95, "\u90fd\u50cf\u81ea\u52a8\u6c42\u5bfc\u5173\u95ed\u65f6\u90a3\u6837\u8fdb\u884c": 95, "\u5b83\u8fd9\u6837\u505a": 95, "\u5e76\u4e0d\u4f1a\u6539\u53d8": 95, "\u5f53\u6211\u4eec\u5728\u6700\u540e\u518d\u6b21\u6253\u5370": 95, "\u5b83\u4fdd\u7559\u4e86\u5176": 95, "\u7684\u4e3b\u8981\u4f18\u52bf\u4e4b\u4e00\u662f\u5728": 95, "\u517c\u5bb9\u7684": 95, "\u4e0a\u6709\u5f3a\u5927\u7684\u52a0\u901f\u80fd\u529b": 95, "\u7684\u5e76\u884c\u8ba1\u7b97\u5e73\u53f0": 95, "\u5230\u76ee\u524d\u4e3a\u6b62": 95, "\u6211\u4eec\u6240\u505a\u7684\u4e00\u5207\u90fd\u662f\u5728": 95, "\u6211\u4eec\u5982\u4f55\u79fb\u52a8\u5230\u66f4\u5feb\u7684\u786c\u4ef6\u4e0a\u5462": 95, "\u6211\u4eec\u5e94\u8be5\u4f7f\u7528": 95, "\u65b9\u6cd5\u68c0\u67e5\u662f\u5426\u6709": 95, "\u53ef\u7528": 95, "\u5982\u679c\u4f60\u6ca1\u6709\u5b89\u88c5": 95, "\u9a71\u52a8\u7a0b\u5e8f": 95, "\u672c\u8282\u4e2d\u7684\u53ef\u6267\u884c\u5355\u5143\u683c\u5c06\u4e0d\u4f1a\u6267\u884c\u4efb\u4f55": 95, "\u76f8\u5173\u7684\u4ee3\u7801": 95, "\u4e00\u65e6\u6211\u4eec\u786e\u5b9a\u6709\u4e00\u4e2a\u6216\u591a\u4e2agpu\u53ef\u7528": 95, "\u6211\u4eec\u9700\u8981\u5c06\u6570\u636e\u653e\u5728gpu\u53ef\u4ee5\u8bbf\u95ee\u7684\u5730\u65b9": 95, "\u4f60\u7684cpu\u5728\u8ba1\u7b97\u673a\u7684ram\u4e0a\u5bf9\u6570\u636e\u8fdb\u884c\u8ba1\u7b97": 95, "\u4f60\u7684gpu\u6709\u4e13\u7528\u7684\u5185\u5b58\u8fde\u63a5\u5230\u5b83": 95, "\u6bcf\u5f53\u4f60\u60f3\u5728\u4e00\u4e2a\u8bbe\u5907\u4e0a\u6267\u884c\u8ba1\u7b97\u65f6": 95, "\u4f60\u5fc5\u987b\u5c06\u8be5\u8ba1\u7b97\u6240\u9700\u7684": 95, "\u6570\u636e\u79fb\u52a8\u5230\u8be5\u8bbe\u5907\u53ef\u8bbf\u95ee\u7684\u5185\u5b58\u4e2d": 95, "\u4fd7\u79f0": 95, "\u5c06\u6570\u636e\u79fb\u52a8\u5230gpu\u53ef\u8bbf\u95ee\u7684\u5185\u5b58": 95, "\u88ab\u7b80\u79f0\u4e3a": 95, "\u5c06\u6570\u636e\u79fb\u52a8\u5230gpu": 95, "\u6709\u591a\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5c06\u6570\u636e\u79fb\u52a8\u5230\u76ee\u6807\u8bbe\u5907": 95, "\u4f60\u53ef\u4ee5\u5728\u521b\u5efa\u65f6\u8fd9\u6837\u505a": 95, "gpu_rand": 95, "\u65b0\u7684\u5f20\u91cf\u662f\u5728cpu\u4e0a\u521b\u5efa\u7684": 95, "\u6240\u4ee5\u6211\u4eec\u5fc5\u987b\u4f7f\u7528\u53ef\u9009\u7684": 95, "\u53c2\u6570\u6765\u6307\u5b9a\u6211\u4eec\u60f3\u5728gpu\u4e0a\u521b\u5efa\u5f20\u91cf": 95, "\u5f53\u6211\u4eec\u6253\u5370\u65b0\u7684\u5f20\u91cf\u65f6": 95, "\u4f60\u53ef\u4ee5\u770b\u5230pytorch\u4f1a\u544a\u8bc9\u6211\u4eec\u5b83\u5728\u54ea\u4e2a\u8bbe\u5907\u4e0a": 95, "\u5982\u679c\u4e0d\u5728cpu\u4e0a": 95, "\u67e5\u8be2gpu\u7684\u6570\u91cf": 95, "\u5982\u679c\u4f60\u6709\u591a\u4e2agpu": 95, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u7d22\u5f15\u6307\u5b9a\u5b83\u4eec": 95, "\u4f5c\u4e3a\u7f16\u7801\u5b9e\u8df5": 95, "\u5728\u4efb\u4f55\u5730\u65b9\u90fd\u4f7f\u7528\u5b57\u7b26\u4e32\u5e38\u91cf\u6765\u6307\u5b9a\u8bbe\u5907\u662f\u76f8\u5f53\u8106\u5f31\u7684": 95, "\u65e0\u8bba\u4f60\u5728cpu\u8fd8\u662fgpu\u786c\u4ef6\u4e0a": 95, "\u4f60\u7684\u4ee3\u7801\u90fd\u5e94\u8be5\u7a33\u5065\u5730\u6267\u884c": 95, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u4e00\u4e2a\u8bbe\u5907\u53e5\u67c4\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9": 95, "\u800c\u4e0d\u662f\u4f7f\u7528\u5b57\u7b26\u4e32\u4f20\u9012\u7ed9\u4f60\u7684\u5f20\u91cf": 95, "my_devic": 95, "\u5982\u679c\u4f60\u6709\u4e00\u4e2a\u5df2\u7ecf\u5b58\u5728\u4e8e\u4e00\u4e2a\u8bbe\u5907\u4e0a\u7684\u5f20\u91cf": 95, "\u65b9\u6cd5\u5c06\u5b83\u79fb\u52a8\u5230\u53e6\u4e00\u4e2a\u8bbe\u5907": 95, "\u4e0b\u9762\u4e00\u884c\u4ee3\u7801\u5728cpu\u4e0a\u521b\u5efa\u4e00\u4e2a\u5f20\u91cf": 95, "\u5e76\u5c06\u5b83\u79fb\u52a8\u5230\u4f60\u5728\u4e0a\u4e00\u4e2a\u5355\u5143\u683c\u4e2d\u83b7\u53d6\u7684\u4efb\u4f55\u8bbe\u5907\u53e5\u67c4\u4e0a": 95, "\u91cd\u8981\u7684\u662f\u8981\u77e5\u9053": 95, "\u4e3a\u4e86\u8fdb\u884c\u6d89\u53ca\u4e24\u4e2a\u6216\u591a\u4e2a\u5f20\u91cf\u7684\u8ba1\u7b97": 95, "\u6240\u6709\u5f20\u91cf\u5fc5\u987b\u5728\u540c\u4e00\u8bbe\u5907\u4e0a": 95, "\u65e0\u8bba\u4f60\u662f\u5426\u6709gpu\u8bbe\u5907\u53ef\u7528": 95, "\u4ee5\u4e0b\u4ee3\u7801\u90fd\u4f1a\u629b\u51fa\u8fd0\u884c\u65f6\u9519\u8bef": 95, "thrown": [95, 192, 206], "\u6709\u65f6": 95, "\u4f60\u9700\u8981\u6539\u53d8\u5f20\u91cf\u7684\u5f62\u72b6": 95, "\u6211\u4eec\u5c06\u770b\u4e00\u4e9b\u5e38\u89c1\u7684\u60c5\u51b5": 95, "\u4ee5\u53ca\u5982\u4f55\u5904\u7406\u5b83\u4eec": 95, "\u4f60\u53ef\u80fd\u9700\u8981\u6539\u53d8\u7ef4\u5ea6\u6570\u91cf\u7684\u4e00\u79cd\u60c5\u51b5\u662f\u5c06\u5355\u4e2a\u5b9e\u4f8b\u8f93\u5165\u5230\u4f60\u7684\u6a21\u578b\u4e2d": 95, "pytorch\u6a21\u578b": 95, "\u901a\u5e38\u671f\u671b\u8f93\u5165": 95, "\u6570\u636e": [95, 236], "\u5047\u8bbe\u6709\u4e00\u4e2a\u6a21\u578b\u53ef\u4ee5\u5904\u74063x226x226\u7684\u56fe\u50cf": 95, "\u4e00\u4e2a226\u50cf\u7d20\u7684\u6b63\u65b9\u5f62": 95, "\u67093\u4e2a\u989c\u8272\u901a\u9053": 95, "\u5f53\u4f60\u52a0\u8f7d\u548c\u8f6c\u6362\u5b83\u65f6": 95, "\u4f60\u4f1a\u5f97\u5230\u4e00\u4e2a\u5f62\u72b6\u4e3a": 95, "226": 95, "\u4f46\u662f\u4f60\u7684\u6a21\u578b": 95, "\u671f\u671b\u8f93\u5165\u5f62\u72b6\u4e3a": 95, "\u662f\u6279\u6b21\u4e2d\u56fe\u50cf\u7684\u6570\u91cf": 95, "\u90a3\u4e48\u5982\u4f55\u521b\u5efa\u4e00\u4e2a\u6279\u6b21\u5927\u5c0f\u4e3a1\u7684\u8f93\u5165\u5462": 95, "\u65b9\u6cd5\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6": 95, "\u5728\u6700\u524d\u9762\u6dfb\u52a0\u4e86\u4e00\u4e2a\u65b0\u76840\u7ef4\u5ea6": 95, "\u73b0\u5728\u4f60\u6709\u4e86\u4e00\u4e2a\u6279\u6b21\u5927\u5c0f\u4e3a1\u7684\u8f93\u5165": 95, "\u90a3\u4e48\u5982\u679c\u662f": 95, "\u53bb\u9664": 95, "\u591a\u4f59\u76841\u7ef4\u5ea6\u5462": 95, "\u6211\u4eec\u6240\u8bf4\u7684\u6324\u538b": 95, "\u5c31\u662f\u5229\u7528\u4e86": 95, "\u4efb\u4f55\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6": 95, "\u4e0d\u4f1a": 95, "\u6539\u53d8\u5f20\u91cf\u4e2d\u5143\u7d20\u7684\u6570\u91cf\u8fd9\u4e00\u4e8b\u5b9e": 95, "\u7ee7\u7eed\u4e0a\u9762\u7684\u4f8b\u5b50": 95, "\u5047\u8bbe\u6a21\u578b\u7684\u8f93\u51fa\u662f\u4e00\u4e2a20\u5143\u7d20\u7684\u5411\u91cf": 95, "\u5bf9\u4e8e\u6bcf\u4e2a\u8f93\u5165": 95, "\u90a3\u4e48\u4f60\u4f1a\u671f\u671b\u8f93\u51fa\u7684\u5f62\u72b6\u4e3a": 95, "\u662f\u8f93\u5165\u6279\u6b21\u4e2d\u7684\u5b9e\u4f8b\u6570\u91cf": 95, "\u8fd9\u610f\u5473\u7740\u5bf9\u4e8e\u6211\u4eec\u7684\u5355\u8f93\u5165\u6279\u6b21": 95, "\u6211\u4eec\u4f1a\u5f97\u5230\u5f62\u72b6\u4e3a": 95, "\u7684\u8f93\u51fa": [95, 236], "\u5982\u679c\u4f60\u60f3\u5bf9\u8be5\u8f93\u51fa\u8fdb\u884c\u4e00\u4e9b": 95, "\u975e\u6279\u6b21": 95, "\u4e00\u4e9b\u53ea\u671f\u671b20\u5143\u7d20\u5411\u91cf\u7684\u8ba1\u7b97": 95, "\u8be5\u600e\u4e48\u529e": 95, "\u4f60\u53ef\u4ee5\u4ece\u5f62\u72b6\u770b\u51fa": 95, "\u6211\u4eec\u7684\u4e8c\u7ef4\u5f20\u91cf\u73b0\u5728\u53d8\u6210\u4e86\u4e00\u7ef4\u7684": 95, "\u5982\u679c\u4f60\u4ed4\u7ec6\u89c2\u5bdf\u4e0a\u9762\u5355\u5143\u683c\u7684\u8f93\u51fa": 95, "\u4f60\u4f1a\u53d1\u73b0\u6253\u5370": 95, "\u65f6\u4f1a\u663e\u793a\u4e00\u7ec4": 95, "\u989d\u5916": 95, "\u7684\u65b9\u62ec\u53f7": 95, "\u8fd9\u662f\u56e0\u4e3a\u591a\u4e86\u4e00\u4e2a\u7ef4\u5ea6": 95, "\u4f60\u53ea\u80fd\u5bf9\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6\u6267\u884c": 95, "\u770b\u4e0a\u9762\u6211\u4eec\u5c1d\u8bd5\u5bf9\u5927\u5c0f\u4e3a2\u7684\u7ef4\u5ea6": 95, "\u8fdb\u884c\u6324\u538b": 95, "\u5f97\u5230\u7684\u5f62\u72b6\u4e0e\u5f00\u59cb\u65f6\u76f8\u540c": 95, "\u7684\u8c03\u7528\u53ea\u80fd\u4f5c\u7528\u4e8e\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6": 95, "\u56e0\u4e3a\u5bf9\u5176\u4ed6\u7ef4\u5ea6\u64cd\u4f5c\u4f1a\u6539\u53d8\u5f20\u91cf\u4e2d\u5143\u7d20\u7684\u6570\u91cf": 95, "\u4f60\u53ef\u80fd\u4f1a\u4f7f\u7528": 95, "\u7684\u53e6\u4e00\u4e2a\u573a\u666f\u662f\u4e3a\u4e86\u65b9\u4fbf\u5e7f\u64ad\u64cd\u4f5c": 95, "\u56de\u60f3\u4e00\u4e0b\u4e0a\u9762\u7684\u4f8b\u5b50": 95, "\u6211\u4eec\u6709\u4ee5\u4e0b\u4ee3\u7801": 95, "\u5176\u51c0\u6548\u679c\u662f\u5728\u7ef4\u5ea60\u548c2\u4e0a\u8fdb\u884c\u5e7f\u64ad\u64cd\u4f5c": 95, "\u5bfc\u81f4\u5f62\u72b6\u4e3a3x1\u7684\u968f\u673a\u5f20\u91cf\u4e0e": 95, "\u4e2d\u7684\u6bcf\u4e00\u52173\u5143\u7d20\u9010\u5143\u7d20\u76f8\u4e58": 95, "\u5982\u679c\u968f\u673a\u5411\u91cf\u53ea\u662f\u4e00\u4e2a3\u5143\u7d20\u5411\u91cf\u5462": 95, "\u6211\u4eec\u5c31\u5931\u53bb\u4e86\u5e7f\u64ad\u7684\u80fd\u529b": 95, "\u56e0\u4e3a\u6700\u540e\u7684\u7ef4\u5ea6\u4e0d\u4f1a\u6839\u636e\u5e7f\u64ad\u89c4\u5219\u5339\u914d": 95, "\u53ef\u4ee5\u89e3\u6551\u6211\u4eec": 95, "\u8bd5\u56fe\u5c06": 95, "\u4f1a\u5bfc\u81f4\u8fd0\u884c\u65f6\u9519\u8bef": 95, "\u53d8\u6210\u4e8c\u7ef4\u5f20\u91cf": 95, "\u5728\u672b\u5c3e\u6dfb\u52a0\u65b0\u7ef4\u5ea6": 95, "\u5e7f\u64ad\u518d\u6b21\u751f\u6548": 95, "\u65b9\u6cd5\u4e5f\u6709\u672c\u5730\u7248\u672c": 95, "batch_m": 95, "\u6709\u65f6\u4f60\u9700\u8981\u66f4\u5f7b\u5e95\u5730\u6539\u53d8\u5f20\u91cf\u7684\u5f62\u72b6": 95, "\u540c\u65f6\u4fdd\u7559\u5143\u7d20\u6570\u91cf\u548c\u5185\u5bb9\u4e0d\u53d8": 95, "\u4e00\u79cd\u60c5\u51b5\u662f\u5728\u6a21\u578b\u7684\u5377\u79ef\u5c42\u548c\u7ebf\u6027\u5c42\u4e4b\u95f4\u7684\u63a5\u53e3": 95, "\u8fd9\u5728\u56fe\u50cf\u5206\u7c7b\u6a21\u578b\u4e2d\u5f88\u5e38\u89c1": 95, "\u5377\u79ef\u6838\u4f1a\u4ea7\u751f\u5f62\u72b6\u4e3a": 95, "\u4f46\u63a5\u4e0b\u6765\u7684\u7ebf\u6027\u5c42\u671f\u671b\u4e00\u7ef4\u8f93\u5165": 95, "\u53ef\u4ee5\u4e3a\u4f60\u505a\u8fd9\u4ef6\u4e8b": 95, "\u53ea\u8981\u4f60\u8bf7\u6c42\u7684\u7ef4\u5ea6\u4e0e\u8f93\u5165\u5f20\u91cf\u5177\u6709\u76f8\u540c\u6570\u91cf\u7684\u5143\u7d20\u5373\u53ef": 95, "output3d": 95, "input1d": 95, "\u4e0a\u9762\u6700\u540e\u4e00\u884c\u5355\u5143\u683c\u4e2d\u7684": 95, "\u53c2\u6570\u662f\u56e0\u4e3apytorch\u5728\u6307\u5b9a\u5f20\u91cf\u5f62\u72b6\u65f6": 95, "\u671f\u671b\u4e00\u4e2a": 95, "\u5143\u7ec4": 95, "\u4f46\u5f53\u5f62\u72b6\u662f\u65b9\u6cd5\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u65f6": 95, "\u5b83\u5141\u8bb8\u6211\u4eec\u53ea\u4f7f\u7528\u4e00\u7cfb\u5217\u6574\u6570": 95, "\u6211\u4eec\u5fc5\u987b\u6dfb\u52a0\u62ec\u53f7\u548c\u9017\u53f7\u6765\u8bf4\u670d\u8be5\u65b9\u6cd5\u8fd9\u786e\u5b9e\u662f\u4e00\u4e2a\u5355\u5143\u7d20\u5143\u7ec4": 95, "\u5f53\u53ef\u80fd\u65f6": 95, "\u4f1a\u8fd4\u56de\u8be5\u5f20\u91cf\u7684": 95, "\u89c6\u56fe": 95, "\u4e5f\u5c31\u662f\u4e00\u4e2a\u5355\u72ec\u7684\u5f20\u91cf\u5bf9\u8c61": 95, "\u67e5\u770b\u76f8\u540c\u7684\u5e95\u5c42\u5185\u5b58\u533a\u57df": 95, "\u8fd9\u4e00\u70b9\u5f88\u91cd\u8981": 95, "\u8fd9\u610f\u5473\u7740\u5bf9\u6e90\u5f20\u91cf\u6240\u505a\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u4f1a\u53cd\u6620\u5728\u8be5\u5f20\u91cf\u7684\u89c6\u56fe\u4e0a": 95, "\u9664\u975e\u4f60": 95, "\u786e\u5b9e\u6709\u4e00\u4e9b\u6761\u4ef6": 95, "\u8d85\u51fa\u4e86\u672c\u4ecb\u7ecd\u7684\u8303\u56f4": 95, "\u5fc5\u987b\u8fd4\u56de\u6570\u636e\u7684\u526f\u672c": 95, "kinship": 95, "numpy_arrai": 95, "pytorch_tensor": 95, "pytorch_rand": 95, "numpy_rand": 95, "\u5728\u8fc7\u53bb\u7684\u89c6\u9891\u4e2d": 96, "\u6211\u4eec\u8ba8\u8bba\u5e76\u6f14\u793a\u4e86": 96, "\u6a21\u5757\u4e2d\u7684\u795e\u7ecf\u7f51\u7edc\u5c42\u548c\u51fd\u6570\u6784\u5efa\u6a21\u578b": 96, "\u81ea\u52a8\u68af\u5ea6\u8ba1\u7b97\u7684\u673a\u5236": 96, "\u8fd9\u662f\u57fa\u4e8e\u68af\u5ea6\u7684\u6a21\u578b\u8bad\u7ec3\u7684\u6838\u5fc3": 96, "\u53ef\u89c6\u5316\u8bad\u7ec3\u8fdb\u5ea6\u548c\u5176\u4ed6\u6d3b\u52a8": 96, "\u5728\u672c\u89c6\u9891\u4e2d": 96, "\u6211\u4eec\u5c06\u4e3a\u60a8\u7684\u5e93\u5b58\u6dfb\u52a0\u4e00\u4e9b\u65b0\u5de5\u5177": 96, "\u6211\u4eec\u5c06\u719f\u6089\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668\u62bd\u8c61": 96, "\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u7b80\u5316\u5411\u6a21\u578b\u8bad\u7ec3\u5faa\u73af\u63d0\u4f9b\u6570\u636e\u7684\u8fc7\u7a0b": 96, "\u6211\u4eec\u5c06\u8ba8\u8bba\u7279\u5b9a\u7684\u635f\u5931\u51fd\u6570\u4ee5\u53ca\u4f55\u65f6\u4f7f\u7528\u5b83\u4eec": 96, "\u6211\u4eec\u5c06\u4e86\u89e3": 96, "\u5b83\u4eec\u5b9e\u73b0\u4e86\u6839\u636e\u635f\u5931\u51fd\u6570\u7684\u7ed3\u679c\u8c03\u6574\u6a21\u578b\u6743\u91cd\u7684\u7b97\u6cd5": 96, "\u6211\u4eec\u5c06\u628a\u6240\u6709\u8fd9\u4e9b\u7ed3\u5408\u8d77\u6765": 96, "\u770b\u4e00\u4e2a\u5b8c\u6574\u7684": 96, "\u8bad\u7ec3\u5faa\u73af\u7684\u5b9e\u9645\u8fd0\u884c": 96, "\u7c7b\u5c01\u88c5\u4e86\u4ece\u5b58\u50a8\u4e2d\u63d0\u53d6\u6570\u636e\u5e76\u4ee5\u6279\u6b21\u5f62\u5f0f\u66b4\u9732\u7ed9\u8bad\u7ec3\u5faa\u73af\u7684\u8fc7\u7a0b": 96, "\u8d1f\u8d23\u8bbf\u95ee\u548c\u5904\u7406\u5355\u4e2a\u6570\u636e\u5b9e\u4f8b": 96, "\u4e2d\u63d0\u53d6\u6570\u636e\u5b9e\u4f8b": 96, "\u65e0\u8bba\u662f\u81ea\u52a8\u63d0\u53d6\u8fd8\u662f\u4f7f\u7528\u60a8\u5b9a\u4e49\u7684\u91c7\u6837\u5668": 96, "\u5c06\u5b83\u4eec\u6536\u96c6\u5230\u6279\u6b21\u4e2d": 96, "\u5e76\u8fd4\u56de\u7ed9\u60a8\u7684\u8bad\u7ec3\u5faa\u73af\u8fdb\u884c\u6d88\u8d39": 96, "\u53ef\u4ee5\u4e0e\u6240\u6709\u7c7b\u578b\u7684\u6570\u636e\u96c6\u4e00\u8d77\u4f7f\u7528": 96, "\u65e0\u8bba\u5b83\u4eec\u5305\u542b\u4ec0\u4e48\u7c7b\u578b\u7684\u6570\u636e": 96, "\u5bf9\u4e8e\u672c\u6559\u7a0b": [96, 233, 242, 243, 248, 249, 250], "\u63d0\u4f9b\u7684": 96, "\u6765\u96f6\u4e2d\u5fc3\u548c\u6807\u51c6\u5316\u56fe\u50cf\u74e6\u7247\u5185\u5bb9\u7684\u5206\u5e03": 96, "\u5e76\u4e0b\u8f7d\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u5206\u5272": 96, "datetim": [96, 122, 146], "\u521b\u5efa\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u96c6": 96, "\u5982\u679c\u9700\u8981\u5219\u4e0b\u8f7d": 96, "\u4e3a\u6211\u4eec\u7684\u6570\u636e\u96c6\u521b\u5efa\u6570\u636e\u52a0\u8f7d\u5668": 96, "\u8bad\u7ec3\u65f6\u6253\u4e71": 96, "\u9a8c\u8bc1\u65f6\u4e0d\u6253\u4e71": 96, "\u7c7b\u522b\u6807\u7b7e": 96, "\u62a5\u544a\u5206\u5272\u5927\u5c0f": 96, "\u8bad\u7ec3\u96c6\u6709": 96, "\u4e2a\u5b9e\u4f8b": 96, "\u9a8c\u8bc1\u96c6\u6709": 96, "\u50cf\u5f80\u5e38\u4e00\u6837": 96, "\u8ba9\u6211\u4eec\u53ef\u89c6\u5316\u6570\u636e\u4f5c\u4e3a\u5065\u5168\u6027\u68c0\u67e5": 96, "\u53cd\u6807\u51c6\u5316": 96, "\u6211\u4eec\u5728\u672c\u4f8b\u4e2d\u4f7f\u7528\u7684\u6a21\u578b\u662f": 96, "\u7684\u53d8\u4f53": 96, "\u5982\u679c\u60a8\u89c2\u770b\u4e86\u672c\u7cfb\u5217\u7684\u524d\u51e0\u4e2a\u89c6\u9891": 96, "\u5e94\u8be5\u4f1a\u5f88\u719f\u6089": 96, "\u6a21\u578b\u7ee7\u627f\u81ea": 96, "garmentclassifi": 96, "\u5bf9\u4e8e\u672c\u4f8b": [96, 236], "\u6211\u4eec\u5c06\u4f7f\u7528\u4ea4\u53c9\u71b5\u635f\u5931": 96, "\u4e3a\u4e86\u6f14\u793a\u76ee\u7684": 96, "\u6211\u4eec\u5c06\u521b\u5efa\u865a\u62df\u8f93\u51fa\u548c\u6807\u7b7e\u503c\u7684\u6279\u6b21": 96, "\u5c06\u5b83\u4eec\u901a\u8fc7\u635f\u5931\u51fd\u6570": 96, "\u5e76\u68c0\u67e5\u7ed3\u679c": 96, "\u635f\u5931\u51fd\u6570\u671f\u671b\u6570\u636e\u4ee5\u6279\u6b21\u5f62\u5f0f": 96, "\u6240\u4ee5\u6211\u4eec\u521b\u5efa\u4e86": 96, "\u4e2a\u6279\u6b21": 96, "\u8868\u793a\u6a21\u578b\u5bf9\u7ed9\u5b9a\u8f93\u5165\u7684": 96, "\u4e2a\u7c7b\u522b\u4e2d\u6bcf\u4e00\u4e2a\u7684\u7f6e\u4fe1\u5ea6": 96, "dummy_output": 96, "\u8868\u793a\u6b63\u786e\u7684\u7c7b\u522b\u5728\u6d4b\u8bd5\u7684": 96, "\u4e2a\u7c7b\u522b\u4e2d": 96, "dummy_label": 96, "\u6b64\u6279\u6b21\u7684\u603b\u635f\u5931": 96, "\u6211\u4eec\u5c06\u4f7f\u7528\u5e26\u52a8\u91cf\u7684\u7b80\u5355\u968f\u673a\u68af\u5ea6\u4e0b\u964d": 96, "\u5c1d\u8bd5\u4e00\u4e9b\u4f18\u5316\u65b9\u6848\u7684\u53d8\u4f53\u4f1a\u5f88\u6709\u542f\u53d1\u6027": 96, "\u5b66\u4e60\u7387\u51b3\u5b9a\u4e86\u4f18\u5316\u5668\u91c7\u53d6\u7684\u6b65\u957f\u5927\u5c0f": 96, "\u4e0d\u540c\u7684\u5b66\u4e60\u7387\u5bf9\u60a8\u7684\u8bad\u7ec3\u7ed3\u679c\u6709\u4f55\u5f71\u54cd": 96, "\u5728\u51c6\u786e\u6027\u548c\u6536\u655b\u65f6\u95f4\u65b9\u9762": 96, "\u52a8\u91cf\u5728\u591a\u4e2a\u6b65\u9aa4\u4e2d\u5c06\u4f18\u5316\u5668\u63a8\u5411\u6700\u5f3a\u68af\u5ea6\u7684\u65b9\u5411": 96, "\u6539\u53d8\u8fd9\u4e2a\u503c\u4f1a\u5bf9\u7ed3\u679c\u4ea7\u751f\u4ec0\u4e48\u5f71\u54cd": 96, "\u5c1d\u8bd5\u4e00\u4e9b\u4e0d\u540c\u7684\u4f18\u5316\u7b97\u6cd5": 96, "\u5982\u5e73\u5747": 96, "\u60a8\u7684\u7ed3\u679c\u6709\u4f55\u4e0d\u540c": 96, "\u5305\u4e2d\u6307\u5b9a\u4f18\u5316\u5668": 96, "\u6211\u4eec\u6709\u4e00\u4e2a\u6267\u884c\u4e00\u4e2a\u8bad\u7ec3\u5468\u671f\u7684\u51fd\u6570": 96, "\u679a\u4e3e\u6570\u636e": 96, "\u5e76\u5728\u5faa\u73af\u7684\u6bcf\u4e00\u6b21\u901a\u8fc7\u65f6\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c": 96, "\u83b7\u53d6\u4e00\u6279\u8bad\u7ec3\u6570\u636e": 96, "\u5c06\u4f18\u5316\u5668\u7684\u68af\u5ea6\u5f52\u96f6": 96, "\u6267\u884c\u63a8\u7406": 96, "\u4e5f\u5c31\u662f\u4ece\u6a21\u578b\u83b7\u53d6\u8f93\u5165\u6279\u6b21\u7684\u9884\u6d4b": 96, "\u8ba1\u7b97\u8be5\u7ec4\u9884\u6d4b\u4e0e\u6570\u636e\u96c6\u4e0a\u7684\u6807\u7b7e\u4e4b\u95f4\u7684\u635f\u5931": 96, "\u8ba1\u7b97\u5b66\u4e60\u6743\u91cd\u7684\u53cd\u5411\u68af\u5ea6": 96, "\u544a\u8bc9\u4f18\u5316\u5668\u6267\u884c\u4e00\u4e2a\u5b66\u4e60\u6b65\u9aa4": 96, "\u4e5f\u5c31\u662f\u6839\u636e\u6211\u4eec\u9009\u62e9\u7684\u4f18\u5316\u7b97\u6cd5": 96, "\u57fa\u4e8e\u8be5\u6279\u6b21\u89c2\u5bdf\u5230\u7684\u68af\u5ea6\u6765\u8c03\u6574\u6a21\u578b\u7684\u5b66\u4e60\u6743\u91cd": 96, "\u5b83\u6bcf": 96, "\u4e2a\u6279\u6b21\u62a5\u544a\u4e00\u6b21\u635f\u5931": 96, "\u5b83\u62a5\u544a\u6700\u540e": 96, "\u4e2a\u6279\u6b21\u7684\u5e73\u5747\u6bcf\u6279\u6b21\u635f\u5931": 96, "\u4ee5\u4fbf\u4e0e\u9a8c\u8bc1\u8fd0\u884c\u8fdb\u884c\u6bd4\u8f83": 96, "epoch_index": 96, "tb_writer": 96, "last_loss": 96, "\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u8ddf\u8e2a\u6279\u6b21\u7d22\u5f15\u5e76\u8fdb\u884c\u4e00\u4e9b\u5468\u671f\u5185\u62a5\u544a": 96, "\u6bcf\u4e2a\u6570\u636e\u5b9e\u4f8b\u90fd\u662f\u4e00\u4e2a\u8f93\u5165": 96, "\u6807\u7b7e\u5bf9": 96, "\u5bf9\u4e8e\u6bcf\u4e2a\u6279\u6b21": 96, "\u5bf9\u8be5\u6279\u6b21\u8fdb\u884c\u9884\u6d4b": 96, "\u8ba1\u7b97\u635f\u5931\u53ca\u5176\u68af\u5ea6": 96, "\u8c03\u6574\u5b66\u4e60\u6743\u91cd": 96, "\u6536\u96c6\u6570\u636e\u5e76\u62a5\u544a": 96, "\u6bcf\u6279\u6b21\u635f\u5931": 96, "tb_x": 96, "\u6211\u4eec\u6bcf\u4e2a\u5468\u671f\u9700\u8981\u505a\u7684\u4e8b\u60c5\u6709": 96, "\u901a\u8fc7\u68c0\u67e5\u672a\u7528\u4e8e\u8bad\u7ec3\u7684\u4e00\u7ec4\u6570\u636e\u4e0a\u7684\u76f8\u5bf9\u635f\u5931\u6765\u6267\u884c\u9a8c\u8bc1": 96, "\u5e76\u62a5\u544a\u8fd9\u4e00\u70b9": 96, "\u4fdd\u5b58\u6a21\u578b\u7684\u526f\u672c": 96, "\u6211\u4eec\u5c06\u5728": 96, "\u4e2d\u8fdb\u884c\u62a5\u544a": 96, "\u8fd9\u9700\u8981\u8f6c\u5230\u547d\u4ee4\u884c\u542f\u52a8": 96, "\u5e76\u5728\u53e6\u4e00\u4e2a\u6d4f\u89c8\u5668\u9009\u9879\u5361\u4e2d\u6253\u5f00\u5b83": 96, "\u5728\u5355\u72ec\u7684\u5355\u5143\u683c\u4e2d\u521d\u59cb\u5316": 96, "\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5730\u5c06\u66f4\u591a\u5468\u671f\u6dfb\u52a0\u5230\u540c\u4e00\u8fd0\u884c\u4e2d": 96, "timestamp": [96, 128, 143, 226], "strftime": [96, 122, 146], "fashion_trainer_": 96, "epoch_numb": 96, "best_vloss": 96, "\u5468\u671f": 96, "\u786e\u4fdd\u68af\u5ea6\u8ddf\u8e2a\u5df2\u6253\u5f00": 96, "\u5e76\u5bf9\u6570\u636e\u8fdb\u884c\u4e00\u6b21\u4f20\u9012": 96, "\u5c06\u6a21\u578b\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 96, "\u7981\u7528": 96, "\u5e76\u4f7f\u7528\u6279\u91cf\u89c4\u8303\u5316\u7684\u7fa4\u4f53\u7edf\u8ba1\u6570\u636e": 96, "\u7981\u7528\u68af\u5ea6\u8ba1\u7b97\u5e76\u51cf\u5c11\u5185\u5b58\u6d88\u8017": 96, "\u6709\u6548": 96, "\u5bf9\u4e8e\u8bad\u7ec3\u548c\u9a8c\u8bc1": 96, "\u8bad\u7ec3\u4e0e\u9a8c\u8bc1\u635f\u5931": 96, "\u8ddf\u8e2a\u6700\u4f73\u6027\u80fd": 96, "\u5e76\u4fdd\u5b58\u6a21\u578b\u7684\u72b6\u6001": 96, "model_path": [96, 222], "\u8981\u52a0\u8f7d\u4fdd\u5b58\u7684\u6a21\u578b\u7248\u672c": 96, "\u4e00\u65e6\u52a0\u8f7d\u4e86\u6a21\u578b": 96, "\u5b83\u5c31\u53ef\u4ee5\u7528\u4e8e\u60a8\u9700\u8981\u7684\u4efb\u4f55\u4e8b\u60c5": 96, "\u66f4\u591a\u8bad\u7ec3": 96, "\u63a8\u7406\u6216\u5206\u6790": 96, "\u5982\u679c\u60a8\u7684\u6a21\u578b\u6709\u5f71\u54cd\u6a21\u578b\u7ed3\u6784\u7684\u6784\u9020\u51fd\u6570\u53c2\u6570": 96, "\u60a8\u9700\u8981\u63d0\u4f9b\u5b83\u4eec\u5e76\u4ee5\u4e0e\u4fdd\u5b58\u65f6\u76f8\u540c\u7684\u65b9\u5f0f\u914d\u7f6e\u6a21\u578b": 96, "\u4e0a\u7684\u6570\u636e\u5de5\u5177\u6587\u6863": 96, "\u5173\u4e8e\u4f7f\u7528\u56fa\u5b9a\u5185\u5b58\u8fdb\u884c": 96, "\u8bad\u7ec3\u7684\u8bf4\u660e": 96, "\u4e2d\u53ef\u7528\u6570\u636e\u96c6\u7684\u6587\u6863": 96, "\u4e2d\u53ef\u7528\u635f\u5931": 96, "trainingyt": 96, "alexandro": 97, "chariton": 97, "computation": [97, 171], "lightweight": [97, 121, 156, 213, 230, 251], "drone": 97, "4gb": [97, 152, 158, 223], "satur": [97, 199, 230], "subtract": [97, 247], "greedi": [97, 113, 118, 136, 146, 160], "transforms_cifar": 97, "test_dataset": [97, 115], "num_images_to_keep": 97, "50_000": [97, 159], "train_load": [97, 122, 123, 129, 162, 166, 168, 220, 221, 253], "extractor": [97, 171], "neuron": [97, 229], "deepnn": 97, "lightnn": 97, "detriment": 97, "denot": [97, 99, 102, 189, 190, 193, 262, 271], "nn_deep": 97, "test_accuracy_deep": 97, "nn_light": 97, "new_nn_light": 97, "conclud": [97, 130, 149, 200], "total_params_deep": 97, "total_params_light": 97, "test_accuracy_light_c": 97, "interven": 97, "soft": [97, 160], "mistaken": 97, "valuabl": [97, 165, 193], "alon": [97, 112, 124, 165, 169], "meaningfulli": 97, "smoother": 97, "soft_target_loss_weight": 97, "ce_loss_weight": 97, "train_knowledge_distil": 97, "ce_loss": 97, "teacher_logit": 97, "student_logit": 97, "soft_target": 97, "soft_prob": 97, "soft_targets_loss": 97, "label_loss": 97, "ce": [97, 165], "test_accuracy_light_ce_and_kd": 97, "kd": 97, "coeffici": 97, "convei": [97, 200], "naiv": [97, 125, 145, 154, 164, 193], "rational": 97, "capac": [97, 131, 159, 160, 171, 247], "cosineembeddingloss": [97, 110], "obvious": [97, 101, 163], "somehow": [97, 103], "modifieddeepnncosin": 97, "flattened_conv_output": 97, "flattened_conv_output_after_pool": 97, "avg_pool1d": 97, "modifiedlightnncosin": 97, "modified_nn_deep": 97, "deep_nn": 97, "modified_deep_nn": 97, "modified_nn_light": 97, "hidden_represent": 97, "sample_input": [97, 209, 247], "total_class": 97, "hidden_representation_s": 97, "train_cosine_loss": 97, "hidden_rep_loss_weight": 97, "cosine_loss": 97, "teacher_hidden_represent": 97, "student_hidden_represent": 97, "hidden_rep_loss": 97, "test_multiple_output": 97, "disregard": 97, "test_accuracy_light_ce_and_cosine_loss": 97, "convolutional_fe_output_stud": 97, "convolutional_fe_output_teach": 97, "modifieddeepnnregressor": 97, "conv_feature_map": 97, "modifiedlightnnregressor": 97, "regressor_output": 97, "train_mse_loss": 97, "feature_map_weight": 97, "teacher_feature_map": 97, "regressor_feature_map": 97, "modified_nn_light_reg": 97, "modified_nn_deep_reg": 97, "test_accuracy_light_ce_and_mse_loss": 97, "cosineloss": 97, "wiggl": 97, "regressorms": 97, "hinton": [97, 127], "vinyal": 97, "dean": 97, "workshop": 97, "romero": 97, "balla": 97, "kahou": 97, "chassang": 97, "gatta": 97, "bengio": 97, "fitnet": 97, "thin": [97, 262, 271], "confer": 97, "knowledge_distillation_tutori": 97, "kit": 98, "dynet": [98, 100], "opposit": [98, 190], "theano": [98, 100], "kera": [98, 100, 111], "difficult": [98, 113, 145, 153, 165, 191, 195, 205], "constitu": 98, "roughli": [98, 122, 133, 144, 149, 181, 247], "fat": [98, 113], "exception": 98, "entiti": [98, 103, 175, 262, 271], "recognit": [98, 207, 247], "tagger": 98, "ner": 98, "sound": [98, 101, 173, 174], "scari": 98, "viterbi": [98, 102], "sum_": [98, 103, 160], "psi_i": 98, "sum_i": 98, "partit": [98, 121, 124, 135, 149, 214, 247], "emiss": 98, "textbf": 98, "psi_": 98, "y_i": [98, 102], "x_i": [98, 99], "tran": [98, 171], "h_i": [98, 102], "collin": 98, "robert": [98, 99, 101, 102, 103, 234], "guthri": [98, 99, 101, 102, 103, 234], "prepare_sequ": [98, 102], "to_ix": [98, 102], "log_sum_exp": 98, "max_scor": 98, "max_score_broadcast": 98, "bilstm_crf": 98, "tag_to_ix": [98, 102], "word_emb": 98, "num_lay": [98, 181, 230], "start_tag": 98, "stop_tag": 98, "_forward_alg": 98, "feat": [98, 171], "init_alpha": 98, "forward_var": 98, "alphas_t": 98, "next_tag": 98, "emit_scor": 98, "ith": [98, 103, 193], "trans_scor": 98, "next_tag_var": 98, "terminal_var": 98, "_get_lstm_featur": 98, "lstm_feat": 98, "_score_sent": 98, "_viterbi_decod": 98, "backpoint": 98, "init_vvar": 98, "bptrs_t": 98, "viterbivars_t": 98, "best_tag_id": 98, "path_scor": 98, "best_path": 98, "dont": [98, 99], "caller": [98, 134, 162, 212], "saniti": [98, 126, 159, 171, 256], "neg_log_likelihood": 98, "forward_scor": 98, "gold_scor": 98, "bilstm": 98, "tag_seq": 98, "street": [98, 263, 272], "journal": 98, "todai": [98, 117, 157, 191, 223], "corpor": [98, 137], "monei": 98, "georgia": 98, "tech": 98, "univers": [98, 113, 115, 160, 171, 176, 262, 271], "word_to_ix": [98, 99, 102, 103], "precheck_s": 98, "precheck_tag": 98, "sentence_in": [98, 102], "anywai": [98, 101], "gold": [98, 165], "perceptron": [98, 176], "score_sent": 98, "advanced_tutori": [98, 100], "workhors": 99, "2x5": 99, "acx": 99, "ac": [99, 171, 265, 274], "sigma": [99, 159], "plenti": 99, "peopl": [99, 100, 103, 113, 117, 185, 200, 262, 271], "shy": 99, "vanish": 99, "linearit": 99, "sum_j": 99, "x_j": 99, "theres": 99, "unseen": [99, 103], "supervis": [99, 166, 171], "eta": 99, "vari": [99, 113, 129, 146, 165, 172, 181, 182, 191, 193, 199, 210, 223, 230, 234], "spanish": [99, 127, 128], "bow": 99, "gusta": 99, "comer": 99, "cafeteria": 99, "creo": 99, "que": [99, 165], "sea": [99, 118], "una": 99, "buena": 99, "yo": 99, "si": [99, 155, 165], "bowclassifi": 99, "bow_vec": 99, "make_bow_vector": 99, "make_target": 99, "label_to_ix": 99, "bow_vector": 99, "log_prob": [99, 103, 161, 163], "bigger": [99, 127, 128, 158, 171, 262, 271], "0th": [99, 154, 156, 164, 193], "deep_learning_tutori": [99, 100], "russel": 100, "norvig": 100, "book": [100, 102], "rip": 100, "pytorch_tutori": [100, 101], "word_embeddings_tutori": [100, 103], "lexic": 100, "sequence_models_tutori": [100, 102, 234], "bi": [100, 137], "crf": 100, "v_data": 101, "m_data": 101, "2x2x2": 101, "t_data": 101, "terminolog": 101, "z_1": 101, "x_2": [101, 116, 150, 262, 271], "y_2": [101, 116], "z_2": 101, "complain": 101, "vagu": 101, "programm": [101, 103, 197, 199, 262, 271], "x_0": [101, 262, 271], "overbrac": [101, 102, 103], "y_0": 101, "z_0": 101, "gloss": 101, "new_z": 101, "NO": 101, "forgotten": 101, "classic": [102, 113, 147, 153, 166, 244], "markov": 102, "myriad": 102, "cow": 102, "q_": [102, 103, 146], "2nd": [102, 162, 193], "reader": [102, 135, 149, 176, 262, 271], "unfamiliar": 102, "w_1": 102, "w_m": 102, "w_i": [102, 103], "_i": [102, 185], "_1": [102, 252], "_m": 102, "_j": 102, "ah_i": 102, "noun": 102, "verb": 102, "ate": 102, "everybodi": [102, 135], "affix": [102, 103], "bear": 102, "ly": 102, "adverb": 102, "c_w": 102, "x_w": 102, "po": [102, 118, 171], "capit": [103, 262, 271], "enorm": [103, 171], "notion": [103, 118], "mathematician": 103, "physicist": 103, "orthograph": 103, "linguist": 103, "hypothesi": 103, "coffe": 103, "phi": [103, 262, 271], "dissimilar": 103, "pain": [103, 113], "earth": [103, 113], "herself": 103, "lookup_tensor": 103, "hello_emb": 103, "context_s": 103, "shakespear": [103, 164], "sonnet": 103, "test_sent": 103, "forti": 103, "winter": [103, 113], "besieg": 103, "thy": 103, "brow": 103, "trench": 103, "beauti": [103, 229], "youth": 103, "proud": 103, "liveri": 103, "gaze": 103, "Will": [103, 257], "totter": 103, "weed": [103, 189], "treasur": 103, "lusti": 103, "thine": 103, "sunken": 103, "eat": [103, 152], "shame": 103, "thriftless": 103, "prais": 103, "thou": 103, "couldst": 103, "mine": [103, 164, 262, 271], "excus": 103, "blood": 103, "cold": [103, 113, 165], "word_i": 103, "ngram": 103, "ngramlanguagemodel": 103, "context_idx": 103, "cbow": 103, "probabilist": [103, 159], "q_w": 103, "raw_text": 103, "studi": [103, 115, 121, 126, 156, 171, 176], "beings": 103, "inhabit": 103, "evolut": 103, "conjur": 103, "spell": [103, 127], "dedupl": 103, "make_context_vector": 103, "jeremi": 104, "howard": [104, 146, 155], "rachel": 104, "thoma": 104, "ingham": 104, "\u6211\u4eec\u5efa\u8bae\u5c06\u672c\u6559\u7a0b\u4f5c\u4e3a\u7b14\u8bb0\u672c": 104, "\u8fd0\u884c": 104, "\u8bf7\u70b9\u51fb\u9875\u9762\u9876\u90e8\u7684\u94fe\u63a5": 104, "\u4e0b\u8f7d\u7b14\u8bb0\u672c": 104, "\u63d0\u4f9b\u4e86\u4f18\u96c5\u8bbe\u8ba1\u7684\u6a21\u5757\u548c\u7c7b": 104, "\u4ee5\u5e2e\u52a9\u4f60\u521b\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 104, "\u4e3a\u4e86\u5145\u5206\u5229\u7528\u5b83\u4eec\u7684\u529f\u80fd": 104, "\u5e76\u901a\u8fc7\u81ea\u5b9a\u4e49\u5bf9\u5e94\u6a21\u5757\u6216\u7c7b": 104, "\u6765\u89e3\u51b3\u7279\u5b9a\u95ee\u9898": 104, "\u9700\u8981\u7406\u89e3\u5b83\u4eec\u7684\u5177\u4f53\u529f\u80fd": 104, "\u6211\u4eec\u5c06\u9996\u5148\u5728": 104, "\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3\u4e00\u4e2a\u57fa\u672c\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u800c\u4e0d\u4f7f\u7528\u8fd9\u4e9b\u6a21\u578b\u7684\u4efb\u4f55\u7279\u6027": 104, "\u6211\u4eec\u6700\u521d\u53ea\u4f7f\u7528\u6700\u57fa\u672c\u7684": 104, "\u5f20\u91cf\u529f\u80fd": 104, "\u6211\u4eec\u5c06\u9010\u6b65\u6dfb\u52a0": 104, "\u4e2d\u7684\u4e00\u4e2a\u7279\u6027": 104, "\u5c55\u793a\u6bcf\u4e2a\u90e8\u5206\u7684\u4f5c\u7528": 104, "\u4ee5\u53ca\u5982\u4f55\u4f7f\u7528\u5b83\u4eec\u8ba9\u4ee3\u7801\u66f4\u7b80\u6d01\u6216\u66f4\u7075\u6d3b": 104, "\u672c\u6559\u7a0b\u5047\u5b9a\u4f60\u5df2\u7ecf\u5b89\u88c5\u4e86": 104, "\u5e76\u4e14\u719f\u6089\u5f20\u91cf\u64cd\u4f5c\u7684\u57fa\u7840\u77e5\u8bc6": 104, "\u5982\u679c\u4f60\u719f\u6089": 104, "\u6570\u7ec4\u64cd\u4f5c": 104, "\u4f60\u4f1a\u53d1\u73b0\u8fd9\u91cc\u4f7f\u7528\u7684": 104, "\u5f20\u91cf\u64cd\u4f5c\u51e0\u4e4e\u76f8\u540c": 104, "\u6211\u4eec\u5c06\u4f7f\u7528\u7ecf\u5178\u7684": 104, "\u8be5\u6570\u636e\u96c6\u5305\u542b\u624b\u7ed8\u6570\u5b57": 104, "0\u52309\u4e4b\u95f4": 104, "\u6765\u5904\u7406\u8def\u5f84": 104, "\u6807\u51c6\u5e93\u7684\u4e00\u90e8\u5206": 104, "\u4e0b\u8f7d\u6570\u636e\u96c6": 104, "\u6211\u4eec\u53ea\u4f1a\u5728\u4f7f\u7528\u6a21\u5757\u65f6\u624d\u5bfc\u5165\u5b83\u4eec": 104, "\u56e0\u6b64\u4f60\u53ef\u4ee5\u6e05\u695a\u5730\u770b\u5230\u6bcf\u4e2a\u6b65\u9aa4\u4e2d\u6b63\u5728\u4f7f\u7528\u7684\u5185\u5bb9": 104, "exist_ok": 104, "\u8fd9\u4e2a\u6570\u636e\u96c6\u662f": 104, "\u6570\u7ec4\u683c\u5f0f\u7684": 104, "\u5e76\u4e14\u4f7f\u7528": 104, "\u5b58\u50a8": 104, "\u8fd9\u662f\u4e00\u4e2a": 104, "\u7279\u6709\u7684\u7528\u4e8e\u5e8f\u5217\u5316\u6570\u636e\u7684\u683c\u5f0f": 104, "gzip": 104, "as_posix": [104, 126], "x_train": [104, 150], "y_train": 104, "x_valid": 104, "y_valid": 104, "latin": 104, "\u6bcf\u5f20\u56fe\u50cf\u7684\u5c3a\u5bf8\u4e3a": 104, "\u5e76\u4ee5\u957f\u5ea6\u4e3a": 104, "\u7684\u5c55\u5e73\u884c\u5b58\u50a8": 104, "\u8ba9\u6211\u4eec\u6765\u770b\u770b\u5176\u4e2d\u4e00\u5f20": 104, "\u6211\u4eec\u9700\u8981\u5148\u5c06\u5176\u91cd\u5851\u4e3a\u4e8c\u7ef4": 104, "\u5728\u4e0d\u4f7f\u7528": 104, "\u65f6\u4f7f\u7528": 104, "importerror": 104, "\u6240\u4ee5\u6211\u4eec\u9700\u8981\u8f6c\u6362\u6211\u4eec\u7684\u6570\u636e": 104, "\u6211\u4eec\u53ea\u4f7f\u7528": [104, 250], "\u5f20\u91cf\u64cd\u4f5c\u521b\u5efa\u4e00\u4e2a\u6a21\u578b": 104, "\u6211\u4eec\u5047\u8bbe\u4f60\u5df2\u7ecf\u719f\u6089\u795e\u7ecf\u7f51\u7edc\u7684\u57fa\u7840\u77e5\u8bc6": 104, "\u5982\u679c\u4e0d\u719f\u6089": 104, "\u63d0\u4f9b\u65b9\u6cd5\u6765\u521b\u5efa": 104, "\u968f\u673a": 104, "\u96f6": 104, "\u586b\u5145\u7684\u5f20\u91cf": 104, "\u6211\u4eec\u5c06\u4f7f\u7528\u8fd9\u4e9b\u65b9\u6cd5\u4e3a\u4e00\u4e2a\u7b80\u5355\u7684\u7ebf\u6027\u6a21\u578b\u521b\u5efa\u6743\u91cd\u548c\u504f\u7f6e": 104, "\u8fd9\u4e9b\u53ea\u662f\u5e38\u89c4\u7684\u5f20\u91cf": 104, "\u6709\u4e00\u4e2a\u975e\u5e38\u7279\u522b\u7684\u9644\u52a0\u529f\u80fd": 104, "\u6211\u4eec\u544a\u8bc9": 104, "\u5b83\u4eec\u9700\u8981\u68af\u5ea6": 104, "\u4f1a\u8bb0\u5f55\u5728\u5f20\u91cf\u4e0a\u5b8c\u6210\u7684\u6240\u6709\u64cd\u4f5c": 104, "\u4ee5\u4fbf\u5728\u53cd\u5411\u4f20\u64ad\u671f\u95f4": 104, "\u81ea\u52a8": 104, "\u8ba1\u7b97\u68af\u5ea6": 104, "\u5bf9\u4e8e\u6743\u91cd": 104, "\u6211\u4eec\u5728\u521d\u59cb\u5316": 104, "\u8bbe\u7f6e": 104, "\u56e0\u4e3a\u6211\u4eec\u4e0d\u5e0c\u671b\u521d\u59cb\u5316\u6b65\u9aa4\u5305\u62ec\u5728\u68af\u5ea6\u4e2d": 104, "\u4e2d\u7684\u5c3e\u968f": 104, "\u8868\u793a\u64cd\u4f5c\u662f\u5728\u539f\u5730\u6267\u884c": 104, "\u7531\u4e8e": [104, 249], "\u80fd\u591f\u81ea\u52a8\u8ba1\u7b97\u68af\u5ea6": 104, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4efb\u4f55\u6807\u51c6\u7684": 104, "\u6216\u53ef\u8c03\u7528\u5bf9\u8c61": 104, "\u4f5c\u4e3a\u6a21\u578b": 104, "\u8ba9\u6211\u4eec\u7f16\u5199\u4e00\u4e2a\u7b80\u5355\u7684\u77e9\u9635\u4e58\u6cd5\u548c\u5e7f\u64ad\u52a0\u6cd5": 104, "\u6765\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u7ebf\u6027\u6a21\u578b": 104, "\u6211\u4eec\u8fd8\u9700\u8981\u7f16\u5199\u4e00\u4e2a\u6fc0\u6d3b\u51fd\u6570": 104, "\u63d0\u4f9b\u4e86\u8bb8\u591a\u9884\u5148\u7f16\u5199\u7684\u635f\u5931\u51fd\u6570": 104, "\u6fc0\u6d3b\u51fd\u6570\u7b49": 104, "\u4f60\u4ecd\u53ef\u4ee5\u4f7f\u7528\u666e\u901a\u7684": 104, "\u7f16\u5199\u81ea\u5df1\u7684\u51fd\u6570": 104, "\u4f1a\u4e3a\u4f60\u7684\u51fd\u6570\u81ea\u52a8\u521b\u5efa": 104, "\u6216\u77e2\u91cf\u5316": 104, "\u4ee3\u7801": 104, "xb": 104, "\u5728\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d": 104, "\u8868\u793a\u77e9\u9635\u4e58\u6cd5\u64cd\u4f5c": 104, "\u5728\u4e00\u4e2a\u6570\u636e\u6279\u6b21\u4e0a\u8c03\u7528\u6211\u4eec\u7684\u51fd\u6570": 104, "\u5728\u672c\u4f8b\u4e2d\u4e3a64\u5f20\u56fe\u50cf": 104, "\u8fd9\u5c31\u662f\u4e00\u6b21": 104, "\u524d\u5411\u4f20\u9012": 104, "\u7531\u4e8e\u6211\u4eec\u5728\u5f00\u59cb\u65f6\u8bbe\u7f6e\u6743\u91cd\u4e3a\u968f\u673a\u6570\u503c": 104, "\u6b64\u65f6\u9884\u6d4b\u7ed3\u679c\u51c6\u786e\u6027\u8f83\u4f4e": 104, "\u5f20\u91cf\u4e0d\u4ec5\u5305\u542b\u5f20\u91cf\u503c": 104, "\u8fd8\u5305\u542b\u68af\u5ea6\u51fd\u6570": 104, "\u5728\u7a0d\u540e\u7684\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u4f1a\u7528\u5230\u5b83": 104, "\u8ba9\u6211\u4eec\u5b9e\u73b0": 104, "\u6211\u4eec\u53ef\u4ee5\u53ea\u4f7f\u7528\u6807\u51c6\u7684": 104, "nll": 104, "loss_func": 104, "\u8ba9\u6211\u4eec\u4f7f\u7528\u6211\u4eec\u7684\u968f\u673a\u6a21\u578b\u6765\u68c0\u67e5\u635f\u5931": 104, "\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u770b\u5230\u5728\u4e4b\u540e\u8fdb\u884c\u53cd\u5411\u4f20\u64ad\u540e": 104, "\u9884\u6d4b\u7ed3\u679c\u51c6\u786e\u7387\u662f\u5426\u6709\u6240\u63d0\u5347": 104, "yb": 104, "\u6211\u4eec\u8fd8\u8981\u5b9e\u73b0\u4e00\u4e2a\u51fd\u6570\u6765\u8ba1\u7b97\u6211\u4eec\u6a21\u578b\u7684\u51c6\u786e\u7387": 104, "\u5bf9\u4e8e\u6bcf\u4e2a\u9884\u6d4b\u7ed3\u679c": 104, "\u5982\u679c\u5177\u6709\u6700\u5927\u503c\u7684\u7d22\u5f15\u4e0e\u76ee\u6807\u503c\u5339\u914d": 104, "\u5219\u9884\u6d4b\u662f\u6b63\u786e\u7684": 104, "\u68c0\u67e5\u6211\u4eec\u968f\u673a\u6a21\u578b\u7684\u51c6\u786e\u7387": 104, "\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u770b\u5230\u968f\u7740\u635f\u5931\u7684\u6539\u5584": 104, "\u51c6\u786e\u7387\u662f\u5426\u6709\u6240\u63d0\u9ad8": 104, "\u73b0\u5728\u53ef\u4ee5\u8fd0\u884c\u4e00\u4e2a\u8bad\u7ec3\u5faa\u73af": 104, "\u5bf9\u4e8e\u6bcf\u6b21\u8fed\u4ee3": 104, "\u9009\u62e9\u4e00\u4e2a\u5927\u5c0f\u4e3a": 104, "\u7684\u6279\u91cf\u6570\u636e": 104, "\u4f7f\u7528\u6a21\u578b\u8fdb\u884c\u9884\u6d4b": 104, "\u8ba1\u7b97\u635f\u5931": 104, "\u66f4\u65b0\u6a21\u578b\u7684\u68af\u5ea6": 104, "\u5373\u66f4\u65b0": 104, "\u6211\u4eec\u73b0\u5728\u4f7f\u7528\u8fd9\u4e9b\u68af\u5ea6\u6765\u66f4\u65b0\u6743\u91cd": 104, "\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u4e2d\u6267\u884c\u6b64\u64cd\u4f5c": 104, "\u56e0\u4e3a\u6211\u4eec\u4e0d\u5e0c\u671b\u8fd9\u4e9b\u64cd\u4f5c\u8bb0\u5f55\u4e3a\u4e0b\u4e00\u6b21\u68af\u5ea6\u8ba1\u7b97\u7684\u4e00\u90e8\u5206": 104, "\u4f60\u53ef\u4ee5\u5728": [104, 233], "\u9605\u8bfb\u6709\u5173": 104, "\u5982\u4f55\u8bb0\u5f55\u64cd\u4f5c\u7684\u66f4\u591a\u4fe1\u606f": 104, "\u6211\u4eec\u5c06\u68af\u5ea6\u8bbe\u7f6e\u4e3a\u96f6": 104, "\u4ee5\u4fbf\u6211\u4eec\u51c6\u5907\u8fdb\u884c\u4e0b\u4e00\u6b21\u5faa\u73af": 104, "\u5426\u5219": 104, "\u6211\u4eec\u7684\u68af\u5ea6\u5c06\u8bb0\u5f55\u6240\u6709\u5df2\u53d1\u751f\u7684\u64cd\u4f5c": 104, "\u6dfb\u52a0": 104, "\u68af\u5ea6\u5230\u5df2\u6709\u7684\u68af\u5ea6\u4e2d": 104, "\u800c\u4e0d\u662f\u66ff\u6362\u5b83\u4eec": 104, "set_trac": 104, "start_i": 104, "end_i": 104, "\u6211\u4eec\u5df2\u7ecf\u4ece\u96f6\u5f00\u59cb\u521b\u5efa\u5e76\u8bad\u7ec3\u4e86\u4e00\u4e2a\u6700\u5c0f\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u4f7f\u7528\u903b\u8f91\u56de\u5f52": 104, "\u6ca1\u6709\u9690\u85cf\u5c42": 104, "\u8ba9\u6211\u4eec\u68c0\u67e5\u4e00\u4e0b\u635f\u5931\u548c\u51c6\u786e\u7387": 104, "\u5e76\u5c06\u5b83\u4eec\u4e0e\u4e4b\u524d\u5f97\u5230\u7684\u7ed3\u679c\u8fdb\u884c\u6bd4\u8f83": 104, "\u9884\u8ba1\u635f\u5931\u4f1a\u51cf\u5c11": 104, "\u51c6\u786e\u7387\u4f1a\u63d0\u9ad8": 104, "\u73b0\u5728\u6211\u4eec\u5c06\u91cd\u6784\u4ee3\u7801": 104, "\u4f7f\u5176\u4e0e\u4e4b\u524d\u505a\u7684\u4e8b\u60c5\u76f8\u540c": 104, "\u53ea\u662f\u6211\u4eec\u5c06\u5f00\u59cb\u5229\u7528": 104, "\u4f7f\u5176\u66f4\u7b80\u6d01\u548c\u7075\u6d3b": 104, "\u4ece\u8fd9\u91cc\u5f00\u59cb\u7684\u6bcf\u4e00\u6b65": 104, "\u90fd\u8ba9\u6211\u4eec\u7684\u4ee3\u7801\u53d8\u5f97\u66f4\u77ed": 104, "\u66f4\u6613\u7406\u89e3\u548c\u66f4\u7075\u6d3b": 104, "\u7b2c\u4e00\u6b65\u4e5f\u662f\u6700\u7b80\u5355\u7684\u4e00\u6b65\u662f\u901a\u8fc7\u7528": 104, "\u901a\u5e38\u6309\u60ef\u4f8b\u5bfc\u5165\u4e3a\u547d\u540d\u7a7a\u95f4": 104, "\u4e2d\u7684\u6fc0\u6d3b\u548c\u635f\u5931\u51fd\u6570\u66ff\u6362\u6211\u4eec\u624b\u5199\u7684\u6fc0\u6d3b\u548c\u635f\u5931\u51fd\u6570": 104, "\u4ece\u800c\u4f7f\u6211\u4eec\u7684\u4ee3\u7801\u66f4\u7b80\u77ed": 104, "\u8be5\u6a21\u5757\u5305\u542b": 104, "\u5e93\u4e2d\u7684\u6240\u6709\u51fd\u6570": 104, "\u9664\u4e86\u5404\u79cd\u635f\u5931\u548c\u6fc0\u6d3b\u51fd\u6570": 104, "\u4f60\u8fd8\u4f1a\u770b\u5230\u4e00\u4e9b\u521b\u5efa\u795e\u7ecf\u7f51\u7edc\u7684\u4fbf\u6377\u51fd\u6570": 104, "\u6bd4\u5982\u6c60\u5316\u51fd\u6570": 104, "\u8fd8\u6709\u7528\u4e8e\u5377\u79ef": 104, "\u7ebf\u6027\u5c42\u7b49\u7684\u51fd\u6570": 104, "\u4f46\u6b63\u5982\u6211\u4eec\u5c06\u770b\u5230\u7684": 104, "\u8fd9\u4e9b\u901a\u5e38\u66f4\u9002\u5408\u4f7f\u7528\u5e93\u7684\u5176\u4ed6\u6a21\u5757\u6765\u5904\u7406": 104, "\u5982\u679c\u4f60\u4f7f\u7528neg": 104, "\u90a3\u4e48": [104, 111], "\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7ed3\u5408\u4e86\u4e24\u8005\u7684\u5355\u4e00\u51fd\u6570": 104, "cross_entropi": [104, 124], "\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u4ece\u6a21\u578b\u4e2d\u79fb\u9664\u6fc0\u6d3b\u51fd\u6570": 104, "\u6211\u4eec\u4e0d\u518d\u5728": 104, "\u51fd\u6570\u4e2d\u8c03\u7528": 104, "\u67e5\u770b\u4e0b\u635f\u5931\u548c\u51c6\u786e\u7387\u662f\u5426\u4e0e\u4e4b\u524d\u7ed3\u679c\u4e00\u81f4": 104, "\u4ee5\u5b9e\u73b0\u66f4\u6e05\u6670\u548c\u7b80\u6d01\u7684\u8bad\u7ec3\u5faa\u73af": 104, "\u6211\u4eec\u5c06\u7ee7\u627f": 104, "\u5b83\u672c\u8eab\u662f\u4e00\u4e2a\u7c7b": 104, "\u80fd\u591f\u8ddf\u8e2a\u72b6\u6001": 104, "\u6211\u4eec\u60f3\u521b\u5efa\u4e00\u4e2a\u7c7b\u6765\u4fdd\u5b58\u6211\u4eec\u7684\u6743\u91cd": 104, "\u504f\u7f6e\u548cforward\u65b9\u6cd5": 104, "\u6211\u4eec\u5c06\u4f1a\u4f7f\u7528": 104, "\u7684\u5c5e\u6027\u548c\u65b9\u6cd5": 104, "\u5927\u5199": 104, "\u7279\u6709\u7684\u6982\u5ff5": 104, "\u662f\u4f7f\u7528pytorch\u8fc7\u7a0b\u4e2d\u5927\u91cf\u4f7f\u7528\u7684\u7c7b": 104, "\u4e0d\u8981\u4e0e": 104, "\u6982\u5ff5\u7684": 104, "\u5c0f\u5199": 104, "\u6df7\u6dc6": 104, "mnist_logist": 104, "\u7531\u4e8e\u6211\u4eec\u73b0\u5728\u4f7f\u7528\u7684\u662f\u5bf9\u8c61\u800c\u4e0d\u662f\u4ec5\u4ec5\u4f7f\u7528\u51fd\u6570": 104, "\u6211\u4eec\u9996\u5148\u8981\u521b\u5efa\u6a21\u578b\u5bf9\u8c61": 104, "\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u50cf\u4e4b\u524d\u4e00\u6837\u8ba1\u7b97\u635f\u5931": 104, "\u5bf9\u8c61\u53ef\u4ee5\u50cf\u51fd\u6570\u4e00\u6837\u4f7f\u7528": 104, "\u5373\u5b83\u4eec\u662f": 104, "\u53ef\u8c03\u7528\u7684": 104, "\u4f1a\u81ea\u52a8\u8c03\u7528\u6211\u4eec\u7684": 104, "\u5728\u4e4b\u524d\u7684\u8bad\u7ec3\u5faa\u73af\u4e2d": 104, "\u6211\u4eec\u5fc5\u987b\u6309\u540d\u79f0\u66f4\u65b0\u6bcf\u4e2a\u53c2\u6570\u7684\u503c": 104, "\u5e76\u624b\u52a8\u5c06\u6bcf\u4e2a\u53c2\u6570\u7684\u68af\u5ea6\u5206\u522b\u6e05\u96f6": 104, "\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u5229\u7528": 104, "\u5b9a\u4e49\u7684\u65b9\u6cd5": 104, "\u6765\u4f7f\u8fd9\u4e9b\u6b65\u9aa4\u66f4\u7b80\u6d01": 104, "\u9632\u6b62\u5fd8\u8bb0\u5904\u7406\u67d0\u4e9b\u53c2\u6570\u5bfc\u81f4\u9519\u8bef": 104, "\u5c24\u5176\u662f\u5f53\u6211\u4eec\u5b9e\u73b0\u4e00\u4e2a\u66f4\u590d\u6742\u7684\u6a21\u578b\u65f6": 104, "\u5c06\u8bad\u7ec3\u5faa\u73af\u5305\u88c5\u5728\u4e00\u4e2a": 104, "\u51fd\u6570\u4e2d": 104, "\u8fd9\u6837\u53ef\u4ee5\u591a\u6b21\u8fd0\u884c\u5b83": 104, "gone": [104, 113, 125], "\u8ba9\u6211\u4eec\u67e5\u770b\u4e0b\u8bad\u7ec3\u540e": 104, "\u635f\u5931\u662f\u5426\u4e0b\u964d\u4e86": 104, "\u6211\u4eec\u7ee7\u7eed\u91cd\u6784\u4ee3\u7801": 104, "\u6765\u5b9e\u73b0\u7ebf\u6027\u5c42": 104, "\u4e0d\u518d\u624b\u52a8\u5b9a\u4e49\u548c\u521d\u59cb\u5316": 104, "\u4ee5\u53ca\u8ba1\u7b97": 104, "\u5177\u6709\u591a\u79cd\u9884\u5b9a\u4e49\u7684\u5c42": 104, "\u53ef\u4ee5\u5927\u5927\u7b80\u5316\u6211\u4eec\u7684\u4ee3\u7801": 104, "\u5e76\u4e14\u63d0\u9ad8\u6267\u884c\u901f\u5ea6": 104, "\u521d\u59cb\u5316\u6a21\u578b\u5bf9\u8c61": 104, "\u5e76\u8ba1\u7b97\u635f\u5931\u6570\u503c": 104, "\u65b9\u6cd5\u8fdb\u884c\u8bad\u7ec3\u6a21\u578b": 104, "\u67e5\u770b\u8bad\u7ec3\u7ed3\u679c": 104, "\u5305\u542b\u591a\u79cd\u4f18\u5316\u7b97\u6cd5": 104, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4f18\u5316\u5668\u7684": 104, "\u65b9\u6cd5\u8fdb\u884c\u4f18\u5316\u6b65\u9aa4": 104, "\u65e0\u9700\u624b\u52a8\u66f4\u65b0\u6bcf\u4e2a\u53c2\u6570": 104, "\u4e4b\u524d\u7684\u4f18\u5316\u6b65\u9aa4": 104, "\u91cd\u6784\u4e3a": 104, "\u5728\u4e0b\u4e2a\u8bad\u7ec3\u5faa\u73af\u5f00\u59cb\u524d": 104, "\u6211\u4eec\u9700\u8c03\u7528": 104, "\u5c06\u53c2\u6570\u7684\u68af\u5ea6\u91cd\u7f6e\u4e3a0": 104, "\u5b9a\u4e49\u521b\u5efa\u6a21\u578b\u548c\u4f18\u5316\u5668\u7684\u65b9\u6cd5\u5982\u4e0b": 104, "\u6709\u4e00\u4e2a\u62bd\u8c61\u7684": 104, "\u53ef\u4ee5\u662f\u4efb\u4f55\u5177\u6709": 104, "\u7531": 104, "\u7684\u6807\u51c6": 104, "\u51fd\u6570\u8c03\u7528": 104, "\u4f5c\u4e3a\u7d22\u5f15\u65b9\u5f0f": 104, "\u7684\u5bf9\u8c61": 104, "\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u521b\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49": 104, "faciallandmarkdataset": 104, "\u7c7b\u4f5c\u4e3a": 104, "\u5b50\u7c7b\u7684\u4f8b\u5b50": 104, "tensordataset": [104, 110, 137, 165, 185], "\u662f\u4e00\u4e2a\u5305\u88c5\u5f20\u91cf\u7684": 104, "\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u4e00\u79cd\u8fed\u4ee3": 104, "\u7d22\u5f15\u548c\u6cbf\u5f20\u91cf\u7684\u7b2c\u4e00\u4e2a\u7ef4\u5ea6\u5207\u7247\u7684\u65b9\u5f0f": 104, "\u4f7f\u6211\u4eec\u5728\u8bad\u7ec3\u65f6\u66f4\u5bb9\u6613\u540c\u65f6\u8bbf\u95ee\u81ea\u53d8\u91cf\u548c\u56e0\u53d8\u91cf": 104, "\u5bf9": 104, "\u8fdb\u884c\u5305\u88c5": 104, "\u8ba9\u6211\u4eec\u66f4\u5bb9\u6613\u5bf9\u6570\u636e\u8fdb\u884c\u904d\u5386\u548c\u5207\u7247\u64cd\u4f5c": 104, "train_d": 104, "\u4e4b\u524d\u6211\u4eec\u9700\u8981\u5355\u72ec\u5904\u7406": 104, "\u4e24\u7ec4\u6570\u503c": 104, "\u73b0\u5728\u53ef\u4ee5\u5408\u5e76\u5904\u7406": 104, "\u4f60\u53ef\u4ee5\u4ece\u4efb\u4f55": 104, "\u521b\u5efa\u4e00\u4e2a": 104, "\u800c\u540e\u7531": 104, "\u8d1f\u8d23\u5bf9\u6570\u636e\u5206\u6279": 104, "\u6211\u4eec\u4e0d\u5fc5\u518d\u53bb\u5b9e\u73b0\u5206\u6279\u4ee3\u7801": 104, "\u4f1a\u81ea\u52a8\u4e3a\u6211\u4eec\u63d0\u4f9b\u6bcf\u6279\u6570\u636e": 104, "train_dl": 104, "\u4e4b\u524d\u6211\u4eec\u7f16\u5199\u5206\u6279\u4ee3\u7801\u5982\u4e0b": 104, "\u6211\u4eec\u7684\u5faa\u73af\u53d8\u5f97\u66f4\u52a0\u7b80\u6d01": 104, "\u81ea\u52a8\u4ecedataloader\u4e2d\u52a0\u8f7d": 104, "\u901a\u8fc7\u4f7f\u7528": [104, 236], "\u6211\u4eec\u5b9e\u73b0\u7684\u8bad\u7ec3\u5faa\u4ee3\u7801\u91cf\u5e76\u4e14\u66f4\u5bb9\u6613\u7406\u89e3": 104, "\u73b0\u5728\u8ba9\u6211\u4eec\u5c1d\u8bd5\u589e\u52a0\u4e00\u4e9b\u521b\u5efa\u5b9e\u9645\u6709\u6548\u6a21\u578b\u6240\u9700\u7684\u57fa\u672c\u529f\u80fd": 104, "\u5728\u7b2c\u4e00\u90e8\u5206\u4e2d": 104, "\u6211\u4eec\u53ea\u662f\u5b9e\u73b0\u4e86\u4f7f\u7528\u6570\u636e\u8fdb\u884c\u8bad\u7ec3\u7684\u903b\u8f91": 104, "\u5b9e\u9645\u5e94\u7528\u4e2d": 104, "\u8fd8\u9700\u8981": 104, "\u9a8c\u8bc1\u96c6": 104, "\u4ee5\u786e\u5b9a\u6211\u4eec\u7684\u6a21\u578b\u662f\u5426\u5b58\u5728\u8fc7\u62df\u5408\u95ee\u9898": 104, "\u6253\u4e71\u8bad\u7ec3\u6570\u636e\u662f": 104, "\u5341\u5206\u5fc5\u8981\u7684": 104, "\u4ee5\u9632\u6b62\u6279\u6b21\u4e4b\u95f4\u7684\u76f8\u5173\u6027\u548c\u8fc7\u62df\u5408": 104, "\u800c\u9a8c\u8bc1\u6570\u636e\u96c6\u5219\u65e0\u9700\u8fdb\u6b64\u64cd\u4f5c": 104, "\u65e0\u8bba\u6253\u4e71\u4e0e\u5426": 104, "\u9a8c\u8bc1\u635f\u5931\u503c\u662f\u76f8\u540c\u7684": 104, "\u800c\u4e14\u6253\u4e71\u64cd\u4f5c\u9700\u8981\u6d88\u8017\u989d\u5916\u7684\u65f6\u95f4": 104, "\u6ca1\u6709\u5b9e\u9645\u610f\u4e49": 104, "\u6211\u4eec\u5c06\u4e3a\u9a8c\u8bc1\u96c6\u4f7f\u7528\u7684\u6279\u91cf\u5927\u5c0f\u8bbe\u4e3a\u8bad\u7ec3\u96c6\u7684\u4e24\u500d": 104, "\u56e0\u4e3a\u9a8c\u8bc1\u96c6\u4e0d\u9700\u8981\u8fdb\u884c\u53cd\u5411\u4f20\u64ad": 104, "\u56e0\u6b64\u9700\u8981\u7684\u5185\u5b58\u8f83\u5c11": 104, "\u4e0d\u9700\u8981\u5b58\u50a8\u68af\u5ea6": 104, "\u56e0\u6b64\u6211\u6211\u4eec\u53ef\u4ee5\u914d\u7f6e\u8f83\u5927\u5355\u6279\u6570\u91cf": 104, "\u63d0\u9ad8\u8ba1\u7b97\u901f\u5ea6": 104, "valid_d": 104, "valid_dl": 104, "\u7ed3\u675f\u65f6\u8ba1\u7b97\u5e76\u6253\u5370\u635f\u5931\u503c": 104, "\u6211\u4eec\u5728\u8bad\u7ec3\u4e4b\u524d\u603b\u662f\u8c03\u7528": 104, "\u5728\u63a8\u65ad\u4e4b\u524d\u8c03\u7528": 104, "\u5c42\u4f1a\u4f7f\u7528": 104, "\u6765\u786e\u4fdd\u5176\u7ed3\u679c\u6b63\u786e": 104, "valid_loss": 104, "\u6211\u4eec\u5728\u8ba1\u7b97\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\u7684\u635f\u5931\u7c7b\u4f3c\u7684\u4ee3\u7801": 104, "\u62bd\u53d6\u4e00\u4e2a\u72ec\u7acb\u7684\u51fd\u6570": 104, "loss_batch": 104, "\u7528\u4e8e\u8ba1\u7b97\u4e00\u4e2a\u6279\u6b21\u7684\u635f\u5931": 104, "\u8bad\u7ec3\u96c6\u4f20\u5165\u4e00\u4e2a\u4f18\u5316\u5668": 104, "\u5e76\u4f7f\u7528\u5b83\u6267\u884c\u53cd\u5411\u4f20\u64ad": 104, "\u5bf9\u4e8e\u9a8c\u8bc1\u96c6": 104, "\u5219\u4e0d\u4f20\u5165\u4f18\u5316\u5668": 104, "\u4e0d\u6267\u884c\u53cd\u5411\u4f20\u64ad": 104, "\u5728\u6bcf\u4e2a\u8bad\u7ec3\u5faa\u73af\u4e2d\u8ba1\u7b97\u8bad\u7ec3\u548c\u9a8c\u8bc1\u635f\u5931": 104, "\u8fd4\u56de\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u96c6\u7684dataload": 104, "\u6211\u4eec\u83b7\u53d6\u6570\u636e\u52a0\u8f7d\u5668\u548c\u62df\u5408\u6a21\u578b\u7684\u6574\u4e2a\u8fc7\u7a0b\u53ef\u4ee5\u7528": 104, "\u884c\u4ee3\u7801\u6765\u5b9e\u73b0": 104, "\u4f60\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e09\u884c\u57fa\u672c\u4ee3\u7801\u6765\u8bad\u7ec3\u5404\u79cd\u5404\u6837\u7684\u6a21\u578b": 104, "\u8ba9\u6211\u4eec\u770b\u770b\u662f\u5426\u53ef\u4ee5\u7528\u6765\u8bad\u7ec3\u4e00\u4e2a\u5377\u79ef\u795e\u7ecf\u7f51\u7edc": 104, "\u73b0\u5728\u6211\u4eec\u5c06\u4f7f\u7528\u4e09\u4e2a\u5377\u79ef\u5c42\u6784\u5efa\u6211\u4eec\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u56e0\u4e3a\u524d\u9762\u90e8\u5206\u7684\u51fd\u6570\u90fd\u4e0d\u5047\u8bbe\u4efb\u4f55\u5173\u4e8e\u6a21\u578b\u5f62\u5f0f\u7684\u4e1c\u897f": 104, "\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u5728\u4e0d\u505a\u4efb\u4f55\u4fee\u6539\u7684\u60c5\u51b5\u4e0b\u4f7f\u7528\u5b83\u4eec\u6765\u8bad\u7ec3\u4e00\u4e2a": 104, "\u9884\u5b9a\u4e49\u7684": 104, "\u7c7b\u4f5c\u4e3a\u6211\u4eec\u7684\u5377\u79ef\u5c42": 104, "\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u5177\u6709": 104, "\u4e2a\u5377\u79ef\u5c42\u7684": 104, "\u6bcf\u4e2a\u5377\u79ef\u5c42\u540e\u9762\u8ddf\u7740\u4e00\u4e2a": 104, "\u6211\u4eec\u6267\u884c\u5e73\u5747\u6c60\u5316": 104, "\u7248\u7684": 104, "mnist_cnn": [104, 123], "avg_pool2d": [104, 206], "\u7684\u4e00\u79cd\u53d8\u4f53": 104, "\u901a\u8fc7\u7edf\u8ba1\u66f4\u65b0\u8bb0\u5f55\u6765\u63d0\u5347\u8bad\u7ec3\u901f\u5ea6": 104, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528": [104, 111, 238], "\u6765\u5e2e\u52a9\u6211\u4eec\u7b80\u5316\u4ee3\u7801": 104, "\u63d0\u4f9b\u4e86\u4e00\u79cd\u66f4\u7b80\u5355\u7684\u7f16\u5199\u795e\u7ecf\u7f51\u7edc\u7684\u65b9\u5f0f": 104, "\u5176\u4f1a\u6309\u987a\u5e8f\u8fd0\u884c\u5b9a\u4e49\u4e2d\u5305\u542b\u7684\u6bcf\u4e2a\u6a21\u5757": 104, "\u6211\u4eec\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a": 104, "\u81ea\u5b9a\u4e49\u5c42": 104, "\u6ca1\u6709\u7684": 104, "view\u5c42": 104, "\u521b\u5efa\u6a21\u578b\u5341\u5206\u7b80\u5355": 104, "avgpool2d": 104, "\u6211\u4eec\u7f16\u5199\u7684": 104, "\u5341\u5206\u7b80\u6d01": 104, "\u4f46\u4ec5\u9002\u7528\u4e8emnist": 104, "\u5b83\u5047\u8bbe\u8f93\u5165\u662f\u4e00\u4e2a": 104, "\u957f\u7684\u5411\u91cf": 104, "\u5b83\u5047\u8bbe\u6700\u7ec8\u7684": 104, "\u7f51\u683c\u5927\u5c0f\u662f": 104, "\u6211\u4eec\u4f7f\u7528\u7684\u5e73\u5747\u6c60\u5316\u6838\u5927\u5c0f": 104, "\u8ba9\u6211\u4eec\u53bb\u9664\u8fd9\u4e24\u4e2a\u5047\u8bbe": 104, "\u4f7f\u6211\u4eec\u7684\u6a21\u578b\u9002\u7528\u4e8e\u4efb\u4f552d\u5355\u901a\u9053\u56fe\u50cf": 104, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5c06\u6570\u636e\u9884\u5904\u7406\u79fb\u5230\u751f\u6210\u5668\u4e2d\u6765\u5220\u9664": 104, "wrappeddataload": 104, "__iter__": 104, "\u4e3a\u4e86\u8ba9\u6211\u4eec\u5b9a\u4e49\u6211\u4eec\u60f3\u8981\u7684\u8f93\u51fa\u5f20\u91cf\u7684\u5927\u5c0f": 104, "\u800c\u975e": 104, "\u8f93\u5165": [104, 250], "\u6211\u4eec\u53ef\u4ee5\u7528": 104, "adaptiveavgpool2d": [104, 134, 136], "\u66ff\u6362": 104, "\u4ece\u800c\u4f7f\u6211\u4eec\u7684\u6a21\u578b\u53ef\u9002\u7528\u4e8e\u4efb\u4f55\u5927\u5c0f\u7684\u8f93\u5165": 104, "\u8ba9\u6211\u4eec\u67e5\u770b\u4e0b\u7ed3\u679c": 104, "\u5728\u62e5\u6709": 104, "gpu\u7684\u73af\u5883\u4e2d": 104, "\u4f60\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u52a0\u901f\u4ee3\u7801": 104, "\u9996\u5148\u68c0\u67e5\u4f60\u7684gpu\u5728pytorch\u4e2d\u662f\u5426\u6b63\u5e38\u5de5\u4f5c": 104, "\u7136\u540e\u521b\u5efa": 104, "\u4fee\u6539": 104, "\u6b65\u9aa4": [104, 238], "\u5c06\u6570\u636e\u79fb\u52a8\u81f3": 104, "\u5c06\u6a21\u578b\u52a0\u8f7d\u5230": 104, "\u8fd0\u884c\u901f\u5ea6\u4f1a\u63d0\u5347\u5f88\u591a": 104, "\u7f16\u5199\u4e86\u4e00\u4e2a\u53ef\u4ee5\u7528\u4e8e\u591a\u79cd\u6a21\u578b\u8bad\u7ec3\u7684\u5b9e\u73b0": 104, "\u5b8c\u6574\u7684\u8bad\u7ec3\u4ee3\u7801": 104, "mnist_sampl": 104, "\u540e\u7eed\u8fd8\u53ef\u5c1d\u8bd5\u589e\u52a0\u5176\u4ed6\u529f\u80fd": 104, "\u4f8b\u5982\u6570\u636e\u589e\u5f3a": 104, "\u8d85\u53c2\u6570\u8c03\u4f18": 104, "\u76d1\u63a7\u8bad\u7ec3": 104, "\u8fc1\u79fb\u5b66\u4e60\u7b49\u7b49": 104, "\u8fd9\u4e9b\u529f\u80fd\u5728fastai\u5e93\u4e2d\u90fd\u6709\u63d0\u4f9b": 104, "\u8be5\u5e93\u662f\u4f7f\u7528\u672c\u6559\u7a0b\u4e2d\u6240\u793a\u7684\u76f8\u540c\u8bbe\u8ba1\u65b9\u6cd5\u5f00\u53d1\u7684": 104, "\u4e3a\u5e0c\u671b\u8fdb\u4e00\u6b65\u6539\u8fdb\u6a21\u578b\u7684\u4ece\u4e1a\u4eba\u5458\u63d0\u4f9b\u4e0b\u4e00\u6b65\u6307\u5bfc": 104, "\u6211\u4eec\u5b66\u4e60\u4e86\u5982\u4f55\u4f7f\u7528": 104, "\u73b0\u5728\u8ba9\u6211\u4eec\u603b\u7ed3\u4e00\u4e0b": 104, "\u521b\u5efa\u4e00\u4e2a\u7c7b\u4f3c\u4e8e\u51fd\u6570\u7684\u53ef\u8c03\u7528\u5bf9\u8c61": 104, "\u5176\u4e2d\u5305\u542b\u4e86\u72b6\u6001\u6570\u636e": 104, "\u5982\u795e\u7ecf\u7f51\u7edc\u5c42\u6743\u91cd": 104, "\u5b83\u53ef\u4ee5\u81ea\u52a8\u5bf9\u5305\u542b\u7684\u53c2\u6570": 104, "\u8fdb\u884c\u68af\u5ea6\u5f52\u96f6\u548c\u66f4\u65b0\u6743\u91cd\u7b49\u64cd\u4f5c": 104, "\u5bf9\u5f20\u91cf\u8fdb\u884c\u5305\u88c5": 104, "\u4f7f": [104, 249], "\u5bf9\u8c61\u5728\u8fdb\u884c\u53cd\u5411\u4f20\u64ad\u65f6": 104, "\u53ef\u66f4\u65b0\u6743\u91cd\u53c2\u6570": 104, "\u4ec5\u8bbe\u7f6e": 104, "\u53c2\u6570\u65f6\u751f\u6548": 104, "\u5305\u542b\u591a\u79cd\u6fc0\u6d3b\u51fd\u6570": 104, "\u4ee5\u53ca\u65e0\u72b6\u6001\u7684\u5377\u79ef\u5c42\u548c\u7ebf\u6027\u5c42\u7b49\u7684\u5b9e\u73b0": 104, "\u5305\u542b\u591a\u79cd\u4f18\u5316\u5668": 104, "\u5728\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u4f18\u5316\u6743\u91cd\u53c2\u6570": 104, "\u65b9\u6cd5\u7684\u62bd\u8c61\u63a5\u53e3\u5b9a\u4e49": 104, "\u5b9e\u73b0\u7c7b": 104, "\u8fdb\u884c\u5c01\u88c5": 104, "\u63d0\u4f9b\u5206\u6279\u904d\u5386\u6570\u636e\u96c6\u7684\u80fd\u529b": 104, "nn_tutori": 104, "registri": [105, 106, 107, 121, 208, 257], "thiago": [105, 107], "crepaldi": [105, 107], "gamut": 105, "supercomput": 105, "constrain": [105, 126, 153, 173, 174], "onnxscript": [105, 107, 108], "torch_input": 105, "onnx_program": [105, 108], "onnxprogram": 105, "protobuf": [105, 108, 187], "my_image_classifi": 105, "drag": [105, 152, 168, 169, 224, 225], "onnx_input": [105, 108], "adapt_torch_inputs_to_onnx": [105, 108], "onnxruntime_input": [105, 108], "onnxruntime_output": [105, 108], "torch_output": [105, 108], "adapt_torch_outputs_to_onnx": [105, 108], "assert_clos": [105, 108], "export_simple_model_to_onnx_tutori": [105, 106], "intro_onnx": [106, 107], "onnx_registry_tutori": [106, 108], "sphx_glr_beginner_onnx_intro_onnx": 106, "sphx_glr_beginner_onnx_export_simple_model_to_onnx_tutori": 106, "sphx_glr_beginner_onnx_onnx_registry_tutori": 106, "bytecod": [107, 172, 222], "fx": [107, 121, 144, 173, 174, 179, 196, 197, 200, 221, 247], "polish": [107, 127, 261, 270], "newer": [107, 147, 152, 154, 247], "upgrad": [107, 153, 158, 168, 196], "opset18": [107, 108], "opset": [107, 108, 173, 174], "succe": 107, "ti": 108, "tai": 108, "titaiwang": 108, "empow": 108, "runtimeerrorwithdiagnost": 108, "call_funct": [108, 173, 200], "operator_nam": 108, "onnxregistri": 108, "input_x": 108, "input_i": 108, "input_add_x": 108, "input_add_i": 108, "aten_add_model": 108, "custom_aten_add": 108, "custom_aten": 108, "native_funct": 108, "yaml": [108, 131, 204, 221, 222], "castlik": 108, "onnx_registri": 108, "register_op": 108, "op_nam": 108, "is_registered_op": 108, "export_opt": 108, "exportopt": 108, "op_typ": 108, "custom_aten_add_model": 108, "custom_add_model": 108, "gelu": [108, 110], "customgelu": 108, "namspac": 108, "custom_ort": 108, "custom_aten_gelu": 108, "aten_gelu_model": 108, "input_gelu_x": 108, "diagram": [108, 160], "custom_aten_gelu_model": 108, "custom_gelu_model": 108, "_custom_op": 108, "mylibrari": 108, "addandround_op": 108, "tensor_x": 108, "impl_abstract": [108, 174], "addandround_op_impl_abstract": 108, "addandround_op_impl": 108, "_dynamo": [108, 144, 172, 173, 199, 255], "allow_in_graph": 108, "customfoo": 108, "input_addandround_x": 108, "custom_addandround_model": 108, "customop": 108, "customopon": 108, "customoptwo": 108, "cpu_op": 108, "custom_opset": 108, "custom_addandround": 108, "add_x": 108, "round_x": 108, "libcustom_op_librari": 108, "custom_op_librari": 108, "ort": 108, "lonnxruntim": 108, "ort_session_opt": 108, "sessionopt": 108, "register_custom_ops_librari": 108, "sess_opt": 108, "quicker": 109, "record_funct": [109, 144, 164, 219, 238], "incur": [109, 124, 212], "investig": [109, 113, 147, 156, 171, 172], "hi_idx": 109, "argwher": 109, "with_stack": [109, 168, 238], "profile_memori": [109, 168, 238], "group_by_stack_n": [109, 238], "traceback": [109, 144, 172, 173, 174], "193a910735e8": 109, "stacktrac": 109, "row_limit": [109, 144, 164, 238], "88": [109, 163, 176, 197], "212": 109, "953": 109, "mnt": [109, 135], "xarfus": 109, "au": 109, "07": [109, 122, 218, 219, 246], "715": 109, "848m": 109, "350": [109, 137], "151u": 109, "293": [109, 147], "342u": 109, "095u": 109, "931": 109, "006": 109, "476": 109, "338": 109, "759m": 109, "as_strid": [109, 144], "281": [109, 147], "808u": 109, "275": 109, "721u": 109, "_local": 109, "268": 109, "650u": [109, 238], "_scalar_dens": 109, "347": 109, "elimin": [109, 129, 138, 144, 145, 158, 183, 193, 216], "nonzero": [109, 247], "as_tupl": [109, 116], "089m": 109, "402m": 109, "491m": 109, "119": [109, 185], "441": 109, "587u": 109, "_numpi": 109, "395": [109, 163], "602u": 109, "801m": 109, "xxxx": 110, "alexnet": [110, 147], "printable_graph": 110, "tensor_seq": 110, "ret": [110, 149, 158, 161, 209], "disable_cuda": 110, "convxd": 110, "maxpoolxd": 110, "batchnormxd": 110, "dropout2d": [110, 162, 166, 203, 221, 233], "l1loss": 110, "ctcloss": 110, "poissonnllloss": 110, "kldivloss": 110, "bcewithlogitsloss": 110, "marginrankingloss": 110, "hingeembeddingloss": 110, "multilabelmarginloss": 110, "smoothl1loss": [110, 146, 160], "softmarginloss": 110, "multilabelsoftmarginloss": 110, "multimarginloss": 110, "tripletmarginloss": 110, "prelu": 110, "rrelu": 110, "celu": 110, "hardshrink": 110, "logsigmoid": 110, "softplu": 110, "softshrink": 110, "softsign": 110, "tanhshrink": 110, "softmin": 110, "softmax2d": 110, "adaptivesoftmaxwithloss": 110, "adadelta": [110, 123, 129], "sparseadam": 110, "adamax": 110, "asgd": 110, "rprop": 110, "lambdalr": 110, "multiplicativelr": 110, "multisteplr": 110, "exponentiallr": 110, "reducelronplateau": 110, "cycliclr": 110, "onecyclelr": 110, "cosineannealingwarmrestart": 110, "xsampler": 110, "subsetrandom": 110, "weightedrandom": 110, "justin": 111, "johnson": 111, "\u672c\u6559\u7a0b\u901a\u8fc7\u81ea\u5305\u542b\u793a\u4f8b\u4ecb\u7ecd\u4e86": 111, "\u7684\u57fa\u672c\u6982\u5ff5": [111, 121], "\u5728\u5176\u6838\u5fc3": 111, "pytorch\u63d0\u4f9b\u4e86\u4e24\u4e2a\u4e3b\u8981\u529f\u80fd": 111, "\u4e00\u4e2an\u7ef4\u5f20\u91cf": 111, "\u7c7b\u4f3c\u4e8enumpi": 111, "\u4f46\u53ef\u4ee5\u5728gpu\u4e0a\u8fd0\u884c": 111, "\u7528\u4e8e\u6784\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u7684\u81ea\u52a8\u5fae\u5206": 111, "\u6211\u4eec\u5c06\u4f7f\u7528\u62df\u5408": 111, "\u7684\u95ee\u9898\u4f5c\u4e3a\u793a\u4f8b": 111, "\u7f51\u7edc\u5c06\u5177\u6709\u56db\u4e2a\u53c2\u6570": 111, "\u5e76\u5c06\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u6cd5\u8bad\u7ec3": 111, "\u901a\u8fc7\u6700\u5c0f\u5316\u7f51\u7edc\u8f93\u51fa\u4e0e\u771f\u5b9e\u8f93\u51fa\u4e4b\u95f4\u7684\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb": 111, "\u6765\u62df\u5408\u968f\u673a\u6570\u636e": 111, "\u53ef\u5728": 111, "\u672c\u6587\u672b\u5c3e\u5904": 111, "\u67e5\u770b\u793a\u4f8b": [111, 121], "\u5728\u4ecb\u7ecd": 111, "\u4e4b\u524d": 111, "\u6211\u4eec\u5c06\u5148\u4f7f\u7528": 111, "\u6765\u5b9e\u73b0\u7f51\u7edc": 111, "numpy\u63d0\u4f9b\u4e86\u4e00\u4e2an\u7ef4\u6570\u7ec4\u5bf9\u8c61": 111, "\u5e76\u63d0\u4f9b\u4e86\u8bb8\u591a\u7528\u4e8e\u64cd\u4f5c\u8fd9\u4e9b\u6570\u7ec4\u7684\u51fd\u6570": 111, "numpy\u662f\u4e00\u4e2a\u901a\u7528\u7684\u79d1\u5b66\u8ba1\u7b97\u6846\u67b6": 111, "\u5b83\u4e0d\u77e5\u9053\u4efb\u4f55\u5173\u4e8e\u8ba1\u7b97\u56fe": 111, "\u6df1\u5ea6\u5b66\u4e60\u6216\u68af\u5ea6\u7684\u4fe1\u606f": 111, "\u6211\u4eec\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u4f7f\u7528": 111, "\u63d0\u4f9b\u7684\u65b9\u6cd5": 111, "\u624b\u52a8\u5b9e\u73b0\u524d\u5411\u548c\u540e\u5411\u4f20\u64ad\u8fc7\u7a0b": 111, "\u6765\u62df\u5408\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f\u5230\u6b63\u5f26\u51fd\u6570": 111, "numpy\u662f\u4e00\u4e2a\u5f88\u68d2\u7684\u6846\u67b6": 111, "\u4f46\u5b83\u4e0d\u80fd\u5229\u7528gpu\u6765\u52a0\u901f\u5176\u6570\u503c\u8ba1\u7b97": 111, "\u5bf9\u4e8e\u73b0\u4ee3\u6df1\u5ea6\u795e\u7ecf\u7f51\u7edc": 111, "gpu\u901a\u5e38\u63d0\u4f9b": 111, "50\u500d\u6216\u66f4\u5927\u7684\u52a0\u901f": 111, "numpy\u5bf9\u4e8e\u73b0\u4ee3\u6df1\u5ea6\u5b66\u4e60\u6765\u8bf4\u8fd8\u662f\u4e0d\u591f\u7684": 111, "\u6211\u4eec\u4ecb\u7ecd\u4e86pytorch\u6700\u57fa\u672c\u7684\u6982\u5ff5": 111, "\u4e00\u4e2apytorch\u5f20\u91cf\u5728\u6982\u5ff5\u4e0a\u4e0enumpy\u6570\u7ec4\u76f8\u540c": 111, "\u4e00\u4e2an\u7ef4\u6570\u7ec4": 111, "pytorch\u63d0\u4f9b\u4e86\u8bb8\u591a\u64cd\u4f5c\u8fd9\u4e9b\u5f20\u91cf\u7684\u51fd\u6570": 111, "\u53ef\u4ee5\u81ea\u52a8\u8ddf\u8e2a\u8ba1\u7b97\u56fe\u548c\u68af\u5ea6": 111, "\u5b83\u4eec\u4e5f\u4f5c\u4e3a\u79d1\u5b66\u8ba1\u7b97\u7684\u901a\u7528\u5de5\u5177\u975e\u5e38\u6709\u7528": 111, "\u4e0d\u540c": 111, "\u5f20\u91cf\u53ef\u4ee5\u5229\u7528gpu\u6765\u52a0\u901f\u5b83\u4eec\u7684\u6570\u503c\u8ba1\u7b97": 111, "\u8981\u5728gpu\u4e0a\u8fd0\u884c": 111, "\u60a8\u53ea\u9700\u8981\u6307\u5b9a\u6b63\u786e\u7684\u8bbe\u5907": 111, "\u5f20\u91cf\u6765\u62df\u5408\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f\u5230\u6b63\u5f26\u51fd\u6570\u4e2d": 111, "\u4e0e\u4e0a\u9762\u7684numpy\u793a\u4f8b\u7c7b\u4f3c": 111, "\u6211\u4eec\u9700\u8981\u624b\u52a8\u5b9e\u73b0\u7f51\u7edc\u7684\u524d\u5411\u548c\u540e\u5411\u4f20\u9012": 111, "\u6211\u4eec\u5fc5\u987b\u624b\u52a8\u5b9e\u73b0\u795e\u7ecf\u7f51\u7edc\u7684\u524d\u5411\u548c\u540e\u5411\u4f20\u9012": 111, "\u5bf9\u4e8e\u4e00\u4e2a\u5c0f\u578b\u7684\u4e24\u5c42\u7f51\u7edc\u6765\u8bf4": 111, "\u624b\u52a8\u5b9e\u73b0\u540e\u5411\u4f20\u9012\u5e76\u4e0d\u662f\u4ec0\u4e48\u5927\u95ee\u9898": 111, "\u4f46\u5bf9\u4e8e\u5927\u578b\u590d\u6742\u7684\u7f51\u7edc\u6765\u8bf4": 111, "\u5f88\u5feb\u5c31\u4f1a\u53d8\u5f97\u975e\u5e38\u9ebb\u70e6": 111, "\u5e78\u8fd0\u7684\u662f": 111, "\u6765\u81ea\u52a8\u8ba1\u7b97\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u540e\u5411\u4f20\u9012": 111, "pytorch\u4e2d\u7684": 111, "\u5305\u6b63\u662f\u63d0\u4f9b\u4e86\u8fd9\u79cd\u529f\u80fd": 111, "\u5f53\u4f7f\u7528\u81ea\u52a8\u6c42\u5bfc\u65f6": 111, "\u7f51\u7edc\u7684\u524d\u5411\u4f20\u9012\u5c06\u5b9a\u4e49\u4e00\u4e2a": 111, "\u56fe\u4e2d\u7684\u8282\u70b9\u662f\u5f20\u91cf": 111, "\u8fb9\u662f\u4ece\u8f93\u5165\u5f20\u91cf\u751f\u6210\u8f93\u51fa\u5f20\u91cf\u7684\u51fd\u6570": 111, "\u901a\u8fc7\u8fd9\u4e2a\u56fe\u8fdb\u884c\u53cd\u5411\u4f20\u64ad": 111, "\u7136\u540e\u53ef\u4ee5\u8f7b\u677e\u8ba1\u7b97\u68af\u5ea6": 111, "\u8fd9\u542c\u8d77\u6765\u5f88\u590d\u6742": 111, "\u4f46\u5728\u5b9e\u9645\u4f7f\u7528\u4e2d\u975e\u5e38\u7b80\u5355": 111, "\u6bcf\u4e2a\u5f20\u91cf\u4ee3\u8868\u8ba1\u7b97\u56fe\u4e2d\u7684\u4e00\u4e2a\u8282\u70b9": 111, "\u662f\u4e00\u4e2a\u8bbe\u7f6e\u4e86": 111, "\u5c06\u662f\u53e6\u4e00\u4e2a\u5f20\u91cf": 111, "\u5b83\u5305\u542b\u4e86": 111, "\u76f8\u5bf9\u4e8e\u67d0\u4e2a\u6807\u91cf\u503c\u7684\u68af\u5ea6": 111, "\u6211\u4eec\u4f7f\u7528pytorch\u5f20\u91cf\u548c\u81ea\u52a8\u6c42\u5bfc\u6765\u5b9e\u73b0\u6211\u4eec\u7528\u4e09\u6b21\u591a\u9879\u5f0f\u62df\u5408\u6b63\u5f26\u6ce2\u7684\u793a\u4f8b": 111, "\u73b0\u5728\u6211\u4eec\u4e0d\u518d\u9700\u8981\u624b\u52a8\u5b9e\u73b0\u7f51\u7edc\u7684\u540e\u5411\u4f20\u9012": 111, "\u5728\u5e95\u5c42": 111, "\u6bcf\u4e2a\u539f\u59cb\u7684\u81ea\u52a8\u6c42\u5bfc\u64cd\u4f5c\u5b9e\u9645\u4e0a\u662f\u5bf9\u5f20\u91cf\u8fdb\u884c\u64cd\u4f5c\u7684\u4e24\u4e2a\u51fd\u6570": 111, "\u51fd\u6570\u4ece\u8f93\u5165\u5f20\u91cf\u8ba1\u7b97\u8f93\u51fa\u5f20\u91cf": 111, "\u540e\u5411": 111, "\u51fd\u6570\u63a5\u6536\u8f93\u51fa\u5f20\u91cf\u76f8\u5bf9\u4e8e\u67d0\u4e2a\u6807\u91cf\u503c\u7684\u68af\u5ea6": 111, "\u5e76\u8ba1\u7b97\u8f93\u5165\u5f20\u91cf\u76f8\u5bf9\u4e8e\u540c\u4e00\u6807\u91cf\u503c\u7684\u68af\u5ea6": 111, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5b9a\u4e49\u4e00\u4e2a": 111, "\u7684\u5b50\u7c7b\u5e76\u5b9e\u73b0": 111, "\u8f7b\u677e\u5b9a\u4e49\u81ea\u5df1\u7684\u81ea\u52a8\u6c42\u5bfc\u64cd\u4f5c\u7b26": 111, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u5b9e\u4f8b\u5e76\u50cf\u51fd\u6570\u4e00\u6837\u8c03\u7528\u5b83": 111, "\u4f20\u9012\u5305\u542b\u8f93\u5165\u6570\u636e\u7684\u5f20\u91cf": 111, "\u6765\u4f7f\u7528\u6211\u4eec\u65b0\u7684\u81ea\u52a8\u6c42\u5bfc\u64cd\u4f5c\u7b26": 111, "\u6211\u4eec\u5c06\u6a21\u578b\u5b9a\u4e49\u4e3a": 111, "\u662f\u4e09\u9636\u7684": 111, "\u52d2\u8ba9\u5fb7\u591a\u9879\u5f0f": 111, "\u6211\u4eec\u7f16\u5199\u4e86\u81ea\u5df1\u7684\u81ea\u5b9a\u4e49\u81ea\u52a8\u6c42\u5bfc\u51fd\u6570\u6765\u8ba1\u7b97": 111, "\u7684\u524d\u5411\u548c\u540e\u5411\u4f20\u9012": 111, "\u5e76\u4f7f\u7528\u5b83\u6765\u5b9e\u73b0\u6211\u4eec\u7684\u6a21\u578b": 111, "\u548c\u81ea\u52a8\u6c42\u5bfc": 111, "\u662f\u5b9a\u4e49\u590d\u6742\u64cd\u4f5c\u975e\u5e38\u5f3a\u5927\u7684\u529f\u80fd": 111, "\u539f\u59cb\u7684\u81ea\u52a8\u6c42\u5bfc\u8fd8\u662f\u4e0d\u8db3\u4ee5\u652f\u6301\u5b9e\u73b0\u5927\u578b\u795e\u7ecf\u7f51\u7edc": 111, "\u5728\u6784\u5efa\u795e\u7ecf\u7f51\u7edc\u65f6": 111, "\u6211\u4eec\u901a\u5e38\u4f1a\u8003\u8651\u5c06\u8ba1\u7b97\u5b89\u6392\u6210": 111, "\u5176\u4e2d\u4e00\u4e9b\u5c42\u5177\u6709": 111, "\u53ef\u5b66\u4e60\u7684\u53c2\u6570": 111, "\u8fd9\u4e9b\u53c2\u6570\u5c06\u5728\u5b66\u4e60\u8fc7\u7a0b\u4e2d\u8fdb\u884c\u4f18\u5316": 111, "\u5728tensorflow\u4e2d": 111, "\u50cf": 111, "tflearn": 111, "\u63d0\u4f9b\u4e86\u76f8\u8f83\u4e8e\u539f\u59cb\u8ba1\u7b97\u56fe\u7684\u66f4\u9ad8\u5c42\u6b21\u7684\u62bd\u8c61": 111, "\u8fd9\u4e9b\u62bd\u8c61\u5bf9\u4e8e\u6784\u5efa\u795e\u7ecf\u7f51\u7edc\u975e\u5e38\u6709\u7528": 111, "\u5305\u8d77\u5230\u4e86\u540c\u6837\u7684\u4f5c\u7528": 111, "\u5305\u5b9a\u4e49\u4e86\u4e00\u7ec4": 111, "\u8fd9\u4e9b\u6a21\u5757\u76f8\u5f53\u4e8e\u795e\u7ecf\u7f51\u7edc\u5c42": 111, "\u4e00\u4e2a\u6a21\u5757\u63a5\u6536\u8f93\u5165\u5f20\u91cf\u5e76\u8ba1\u7b97\u8f93\u51fa\u5f20\u91cf": 111, "\u4f46\u4e5f\u53ef\u4ee5\u5305\u542b\u5185\u90e8\u72b6\u6001": 111, "\u4f8b\u5982\u5305\u542b\u53ef\u5b66\u4e60\u53c2\u6570\u7684\u5f20\u91cf": 111, "\u5305\u8fd8\u5b9a\u4e49\u4e86\u4e00\u7ec4\u5e38\u7528\u4e8e\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u7684\u6709\u7528\u7684\u635f\u5931\u51fd\u6570": 111, "\u5305\u6765\u5b9e\u73b0\u6211\u4eec\u7684\u591a\u9879\u5f0f\u6a21\u578b\u7f51\u7edc": 111, "\u6211\u4eec\u901a\u8fc7\u4f7f\u7528": 111, "\u624b\u52a8\u66f4\u6539\u5f20\u91cf\u7684\u53ef\u5b66\u4e60\u53c2\u6570": 111, "\u6765\u66f4\u65b0\u6a21\u578b\u7684\u6743\u91cd": 111, "\u5bf9\u4e8e\u50cf\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u8fd9\u6837\u7684\u4f18\u5316\u7b97\u6cd5\u6765\u8bf4": 111, "\u8fd9\u5e76\u4e0d\u662f\u4e00\u4e2a\u5f88\u5927\u7684\u8d1f\u62c5": 111, "\u4f46\u5728\u5b9e\u8df5\u4e2d": 111, "\u6211\u4eec\u7ecf\u5e38\u4f7f\u7528\u66f4\u590d\u6742\u7684\u4f18\u5316\u5668\u6765\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 111, "\u6bd4\u5982": 111, "\u5305\u62bd\u8c61\u4e86\u4f18\u5316\u7b97\u6cd5\u7684\u5b9a\u4e49": 111, "\u5e76\u63d0\u4f9b\u4e86\u5e38\u7528\u4f18\u5316\u7b97\u6cd5\u7684\u5b9e\u73b0": 111, "\u6211\u4eec\u5c06\u50cf\u4ee5\u524d\u4e00\u6837\u4f7f\u7528": 111, "\u5305\u6765\u5b9a\u4e49\u6211\u4eec\u7684\u6a21\u578b": 111, "\u4f46\u6211\u4eec\u5c06\u4f7f\u7528": 111, "\u5305\u63d0\u4f9b\u7684": 111, "\u7b97\u6cd5\u6765\u4f18\u5316\u6a21\u578b": 111, "\u6709\u65f6\u4f60\u53ef\u80fd\u4f1a\u5e0c\u671b\u81ea\u5b9a\u4e49\u6bd4\u73b0\u6709\u6a21\u5757\u96c6\u66f4\u590d\u6742\u7684\u6a21\u578b": 111, "\u5728\u8fd9\u4e9b\u60c5\u51b5\u4e0b": 111, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u7ee7\u627f": 111, "\u5e76\u5b9a\u4e49\u4e00\u4e2a": 111, "\u65b9\u6cd5\u6765\u81ea\u5b9a\u4e49\u6a21\u5757": 111, "\u8be5\u65b9\u6cd5\u63a5\u6536\u8f93\u5165\u5f20\u91cf": 111, "\u5e76\u4f7f\u7528\u5176\u4ed6\u6a21\u5757\u6216\u5728\u5f20\u91cf\u4e0a\u81ea\u52a8\u6c42\u5bfc\u7b49\u64cd\u4f5c\u751f\u6210\u65b0\u7684\u8f93\u51fa\u5f20\u91cf": 111, "\u6211\u4eec\u5c06\u5b9e\u73b0\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f\u4f5c\u4e3a\u81ea\u5b9a\u4e49\u6a21\u5757\u7684\u5b50\u7c7b": 111, "\u4f5c\u4e3a\u52a8\u6001\u8ba1\u7b97\u56fe\u548c\u6743\u91cd\u5171\u4eab\u7684\u4e00\u4e2a\u793a\u4f8b": 111, "\u6211\u4eec\u5b9e\u73b0\u4e86\u4e00\u4e2a\u975e\u5e38\u5947\u7279\u7684\u6a21\u578b": 111, "\u4e00\u4e2a\u4e09\u81f3\u4e94\u9636\u7684\u591a\u9879\u5f0f": 111, "\u5728\u6bcf\u6b21\u524d\u5411\u4f20\u9012\u65f6\u968f\u673a\u9009\u62e9\u4e00\u4e2a3\u52305\u4e4b\u95f4\u7684\u6570\u5b57": 111, "\u5e76\u4f7f\u7528\u8be5\u9636\u6570\u591a\u9879\u5f0f\u6765\u8ba1\u7b97": 111, "\u91cd\u590d\u4f7f\u7528\u76f8\u540c\u7684\u6743\u91cd\u591a\u6b21\u4ee5\u8ba1\u7b97\u56db\u9636\u548c\u4e94\u9636\u591a\u9879\u5f0f": 111, "\u5bf9\u4e8e\u8fd9\u4e2a\u6a21\u578b": 111, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528python\u6d41\u63a7\u5236\u6765\u5b9e\u73b0\u5faa\u73af": 111, "\u5e76\u4e14\u53ef\u4ee5\u901a\u8fc7\u5728\u5b9a\u4e49\u524d\u5411\u4f20\u9012\u65f6": 111, "\u591a\u6b21\u91cd\u590d\u4f7f\u7528\u76f8\u540c\u7684\u53c2\u6570": 111, "\u6765\u5b9e\u73b0\u6743\u91cd\u5171\u4eab": 111, "\u6211\u4eec\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u5c06\u8fd9\u4e2a\u6a21\u578b\u5b9e\u73b0\u4e3a\u4e00\u4e2a\u6a21\u5757\u7684\u5b50\u7c7b": 111, "\u5177\u4f53\u793a\u4f8b\u5982\u4e0b": 111, "unpickl": 112, "facil": 112, "running_mean": [112, 142, 198, 249], "themodelclass": 112, "param_tensor": [112, 249], "var_nam": [112, 249], "param_group": [112, 159, 211, 216, 244], "dampen": 112, "4675713712": 112, "4675713784": 112, "4675714000": 112, "4675714072": 112, "4675714216": 112, "4675714288": 112, "4675714432": 112, "4675714504": 112, "4675714648": 112, "4675714720": 112, "_use_new_zipfile_seri": 112, "inconsist": [112, 144, 241], "best_model_st": 112, "deepcopi": [112, 138, 142, 157, 182, 198, 199], "overfit": [112, 128, 157], "model_script": 112, "model_state_dict": [112, 214, 220, 241], "theoptimizerclass": 112, "modela_state_dict": [112, 243], "modela": [112, 243], "modelb_state_dict": [112, 243], "modelb": [112, 243], "optimizera_state_dict": [112, 243], "optimizera": [112, 243], "optimizerb_state_dict": [112, 243], "optimizerb": [112, 243], "themodelaclass": 112, "themodelbclass": 112, "theoptimizeraclass": 112, "theoptimizerbclass": 112, "gan": [112, 121, 153, 243], "ensembl": [112, 121], "remap": 112, "overwrit": 112, "saving_loading_model": 112, "pendo": 113, "abbo": 113, "joe": [113, 133], "cum": 113, "cnndm": 113, "imdb": 113, "multi30k": [113, 118], "sentencepiec": 113, "t5transform": 113, "padding_idx": 113, "eos_idx": [113, 118], "max_seq_len": 113, "t5_sp_model_path": 113, "t5_tokenizer_bas": 113, "sp_model_path": 113, "t5_base_gener": 113, "t5_base": 113, "beam": 113, "sequence_gener": 113, "datapip": [113, 116], "appendix": 113, "cnndm_batch_siz": 113, "cnndm_datapip": 113, "apply_prefix": 113, "rows2columnar": 113, "cnndm_dataload": 113, "batch_prefix": 113, "sst2": 113, "imdb_batch_s": 113, "imdb_datapip": 113, "process_label": 113, "imdb_dataload": 113, "german": [113, 116, 118, 127, 128], "multi_batch_s": 113, "language_pair": [113, 118], "multi_datapip": 113, "multi_dataload": 113, "input_text": 113, "beam_siz": 113, "model_output": [113, 141, 162], "num_beam": 113, "output_text": 113, "year": [113, 150, 153], "tattoo": 113, "decad": [113, 176], "australia": 113, "campaign": 113, "honest": 113, "london": 113, "stephen": 113, "hendri": 113, "fame": [113, 265, 274], "supermodel": 113, "sydnei": 113, "australian": 113, "fan": [113, 158], "him": 113, "hotel": 113, "heartthrob": 113, "strai": 113, "pooch": 113, "buri": 113, "stagger": 113, "nearbi": 113, "farm": 113, "dirt": 113, "emaci": 113, "disloc": 113, "jaw": 113, "leg": 113, "injuri": [113, 262, 271], "cave": 113, "sinu": 113, "caviti": 113, "surgeri": [113, 171], "breath": 113, "theia": 113, "bulli": 113, "breed": 113, "appar": [113, 157], "whack": 113, "hammer": 113, "miracl": 113, "sara": 113, "mellado": 113, "mohammad": 113, "javad": 113, "zarif": 113, "iran": 113, "sunni": 113, "fridai": 113, "morn": 113, "bring": [113, 159, 168, 171, 184, 192, 205, 216, 234, 247], "rejoin": 113, "john": 113, "kerri": 113, "foreign": 113, "minist": 113, "takeov": 113, "iranian": 113, "consul": 113, "tweet": 113, "american": 113, "week": 113, "ebola": 113, "west": 113, "africa": 113, "discharg": 113, "hasn": 113, "clinician": 113, "health": 113, "boston": 113, "viru": 113, "sierra": 113, "march": 113, "diagnos": [113, 132], "diseas": [113, 171], "maryland": 113, "nation": 113, "institut": 113, "patient": [113, 171], "campu": 113, "polic": 113, "offic": [113, 197, 198], "affair": 113, "admit": 113, "noos": 113, "wednesdai": 113, "incid": 113, "racist": 113, "colleg": 113, "duke": 113, "disciplinari": 113, "school": 113, "rope": 113, "sci": [113, 115], "fi": 113, "tv": 113, "underfund": 113, "misunderstood": 113, "babylon": 113, "star": 113, "trek": 113, "silli": [113, 125], "prosthet": 113, "cheap": 113, "cardboard": 113, "stilt": 113, "dialogu": 113, "cg": 113, "painfulli": 113, "clich\u00e9d": 113, "uninspir": 113, "viewer": 113, "emot": 113, "genr": 113, "serious": 113, "cf": 113, "seriou": 113, "foolish": 113, "spark": 113, "Their": [113, 190, 192], "reaction": 113, "wooden": [113, 262, 271], "maker": 113, "rubbish": 113, "gene": 113, "roddenberri": 113, "ash": 113, "orbit": 113, "dull": 113, "poorli": [113, 127], "advert": 113, "trudg": 113, "trabant": 113, "lumber": 113, "spoiler": 113, "kill": 113, "actor": [113, 136], "jeeez": 113, "dalla": 113, "entertain": 113, "rental": 113, "fight": 113, "van": 113, "damm": 113, "shoot": 113, "battl": 113, "shell": [113, 208, 213, 218, 223], "shotgun": 113, "terrorist": 113, "bomb": 113, "blow": 113, "br": 113, "inclus": [113, 173, 174, 246], "rabbit": 113, "hardli": [113, 115], "profound": 113, "stereotyp": 113, "angri": 113, "veteran": 113, "terrifi": 113, "illeg": 113, "alien": 113, "crook": 113, "cop": 113, "indiffer": 113, "bitchi": 113, "ladi": 113, "station": 113, "politician": 113, "federal": 113, "typecast": 113, "mexican": 113, "hollywood": 113, "1940": 113, "passabl": 113, "villain": 113, "certainli": [113, 143, 190, 192, 234], "knew": 113, "gui": [113, 226, 251, 262, 271], "weren": [113, 138, 154], "desert": 113, "simplist": 113, "hamlet": 113, "annoi": [113, 145], "vd": 113, "daughter": 113, "film": 113, "semi": [113, 121, 193, 196], "alright": 113, "dam": 113, "disappoint": [113, 115], "budget": [113, 126], "poor": 113, "orang": [113, 125, 158], "ein": [113, 118], "mann": 113, "einem": [113, 118], "orangen": 113, "hut": 113, "der": 113, "etwa": 113, "schaut": 113, "mit": [113, 139], "orangefarbenen": 113, "anstarrt": 113, "terrier": 113, "lush": 113, "grass": 113, "front": [113, 115, 138, 156, 176, 177], "fenc": 113, "l\u00e4uft": 113, "auf": 113, "\u00fcppigem": 113, "gr\u00fcnem": 113, "gra": 113, "vor": [113, 118], "wei\u00dfen": 113, "zaun": 113, "\u00fcber": 113, "saftig": 113, "gr\u00fcne": 113, "girl": 113, "karat": 113, "m\u00e4dchen": 113, "bricht": 113, "einen": [113, 116], "st\u00f6ck": 113, "frontkick": 113, "karateanzug": 113, "brett": 113, "tritt": 113, "wear": 113, "jacket": 113, "helmet": 113, "snow": 113, "snowmobil": 113, "f\u00fcnf": 113, "menschen": [113, 118], "winterjacken": 113, "und": 113, "helmen": 113, "stehen": 113, "schnee": 113, "schneemobilen": 113, "hintergrund": 113, "leut": 113, "roof": 113, "hous": 113, "die": 113, "fixieren": 113, "da": 113, "dach": 113, "haus": 113, "reparieren": 113, "t5_tutori": 113, "firstnam": 114, "lastnam": 114, "gallery_pattern": 114, "neural_style_transfer_tutori": 114, "_build": 114, "beginner_sourc": 114, "link1": 114, "link2": 114, "template_tutori": 114, "portalock": 115, "ag_new": 115, "fear": 115, "pension": 115, "union": [115, 179], "turner": 115, "newal": 115, "stricken": 115, "firm": 115, "feder": 115, "mogul": 115, "race": [115, 135, 216], "spaceflight": 115, "toronto": 115, "canada": [115, 263, 272], "rocket": 115, "ansari": 115, "prize": 115, "contest": 115, "fund": 115, "suborbit": 115, "flight": 115, "ky": 115, "grant": 115, "peptid": 115, "ap": 115, "chemistri": 115, "louisvil": 115, "amino": 115, "acid": 115, "protein": 115, "revisit": [115, 190, 262, 271], "yield_token": [115, 118], "data_it": [115, 116, 118], "475": [115, 163], "5297": 115, "text_pipelin": 115, "label_pipelin": 115, "collate_batch": 115, "label_list": [115, 137, 171, 185], "text_list": 115, "_label": 115, "_text": 115, "processed_text": 115, "cumsum": 115, "textclassificationmodel": 115, "embed_dim": [115, 164], "sport": 115, "tec": 115, "total_acc": 115, "total_count": 115, "to_map_style_dataset": 115, "total_accu": 115, "num_train": 115, "split_train_": 115, "split_valid_": 115, "valid_dataload": 115, "accu_v": 115, "accu_test": 115, "golf": 115, "ag_news_label": 115, "ex_text_str": 115, "memphi": 115, "tenn": 115, "ago": 115, "jon": 115, "rahm": 115, "endur": 115, "season": 115, "weather": 115, "sundai": 115, "royal": 115, "portrush": 115, "wind": 115, "rain": 115, "thursdai": 115, "wgc": 115, "fedex": 115, "jude": 115, "invit": 115, "stori": 115, "mid": 115, "spaniard": 115, "stroke": 115, "flawless": 115, "pga": 115, "tour": 115, "nine": 115, "tpc": 115, "southwind": 115, "text_sentiment_ngrams_tutori": 115, "sharma": 116, "legaci": 116, "tatoeba": [116, 165], "deu": 116, "en_core_web_sm": [116, 118], "de_core_news_sm": [116, 118], "dp": [116, 124, 176, 177], "eng": [116, 165, 194], "file_path": 116, "data_pip": 116, "iterablewrapp": 116, "fileopen": 116, "parse_csv": 116, "skip_lin": 116, "removeattribut": 116, "engtoken": 116, "detoken": 116, "haben": 116, "sie": 116, "guten": 116, "gettoken": 116, "source_vocab": 116, "min_freq": [116, 118], "special_first": [116, 118], "target_vocab": 116, "get_ito": 116, "gettransform": 116, "text_tranform": 116, "vocabtransform": 116, "addtoken": 116, "temp_list": 116, "some_sent": 116, "798": 116, "transformed_sent": 116, "index_to_str": 116, "applytransform": 116, "sequence_pair": 116, "bucketbatch": 116, "sortbucket": 116, "batch_num": 116, "bucket_num": 116, "use_in_batch_shuffl": 116, "sort_kei": 116, "x_3": [116, 262, 271], "y_3": 116, "x_4": [116, 262, 271], "y_4": 116, "separatesourcetarget": 116, "applypad": 116, "pair_of_sequ": 116, "source_index_to_str": 116, "target_index_to_str": 116, "showsometransformedsent": 116, "traget": 116, "torchtext_custom_dataset_tutori": 116, "cs231n": 117, "licens": [117, 137, 139, 166], "bsd": [117, 166], "image_dataset": [117, 157], "dataset_s": [117, 157], "class_nam": [117, 139, 157, 171, 213], "train_model": [117, 157, 245], "tempdir": 117, "best_model_params_path": 117, "best_model_param": 117, "best_acc": [117, 157], "running_correct": [117, 157], "set_grad_en": [117, 157, 219], "epoch_loss": [117, 135, 157], "epoch_acc": [117, 157], "time_elaps": [117, 157], "visualize_model": [117, 157], "was_train": [117, 157], "images_so_far": 117, "model_ft": [117, 157], "num_ftr": [117, 157], "optimizer_ft": [117, 157], "exp_lr_schedul": [117, 157], "step_siz": [117, 122, 123, 129, 157, 178], "model_conv": 117, "optimizer_conv": 117, "visualize_model_predict": 117, "72100438_73de9f17af": 117, "transfer_learning_tutori": 117, "\u8fdb\u884c\u8bed\u8a00\u7ffb\u8bd1": [118, 121], "inbuilt": [118, 153], "1756": 118, "issuecom": 118, "1163664163": 118, "githubusercont": [118, 119, 178], "neychev": 118, "small_dl_repo": 118, "src_languag": 118, "tgt_languag": 118, "token_transform": 118, "vocab_transform": 118, "language_index": 118, "data_sampl": 118, "unk_idx": 118, "pad_idx": 118, "bos_idx": 118, "special_symbol": 118, "bo": 118, "ln": 118, "emb_siz": 118, "maxlen": [118, 160], "den": 118, "pos_embed": 118, "register_buff": [118, 153, 202], "token_embed": 118, "tokenembed": 118, "seq2seqtransform": 118, "num_encoder_lay": 118, "num_decoder_lay": 118, "src_vocab_s": 118, "tgt_vocab_s": 118, "dim_feedforward": 118, "src_tok_emb": 118, "tgt_tok_emb": 118, "positional_encod": 118, "trg": 118, "src_mask": 118, "tgt_mask": 118, "src_padding_mask": 118, "tgt_padding_mask": 118, "memory_key_padding_mask": 118, "src_emb": 118, "tgt_emb": 118, "tgt": [118, 165], "generate_square_subsequent_mask": 118, "sz": 118, "triu": [118, 153], "masked_fil": [118, 191], "create_mask": 118, "src_seq_len": 118, "tgt_seq_len": 118, "ffn_hid_dim": 118, "xavier_uniform_": 118, "ignore_index": 118, "pad_sequ": 118, "club": 118, "sequential_transform": 118, "txt_input": 118, "tensor_transform": 118, "token_id": 118, "text_transform": 118, "src_batch": 118, "tgt_batch": 118, "src_sampl": 118, "tgt_sampl": 118, "rstrip": 118, "train_epoch": [118, 165], "tgt_input": 118, "tgt_out": 118, "val_dataload": [118, 148], "ingredi": 118, "timeit": [118, 138, 144, 145, 149, 154, 193, 223, 234, 239, 246], "default_tim": [118, 193, 239], "train_loss": 118, "end_tim": [118, 230, 237], "greedy_decod": 118, "start_symbol": 118, "ys": 118, "prob": [118, 159, 161, 163, 169], "next_word": 118, "src_sentenc": 118, "num_token": 118, "tgt_token": 118, "lookup_token": 118, "grupp": 118, "von": 118, "steht": 118, "iglu": 118, "3f5ee243547dee91fbd053c1c4a845aa": 118, "pdf": 118, "harvard": 118, "edu": [118, 178], "translation_transform": 118, "geeta": [119, 176], "chauhan": [119, 176], "facebook": [119, 135, 204, 222], "android": [119, 121, 194, 196, 227, 228, 251, 252], "2012": [119, 263, 272], "hundr": [119, 120, 124, 171], "distil": [119, 121, 187, 221], "timm": 119, "imagenet_default_mean": 119, "imagenet_default_std": 119, "facebookresearch": [119, 184], "deit_base_patch16_224": 119, "clsidx": 119, "269": [119, 147], "timber": [119, 188], "wolf": [119, 188], "cani": [119, 188], "lupu": [119, 188], "scripted_model": [119, 188], "fbdeit_script": 119, "346mb": 119, "qnnpack": [119, 158, 179, 218, 223, 228], "qconfig_spec": [119, 228], "scripted_quantized_model": 119, "fbdeit_scripted_quant": 119, "fbdeit_quantized_script": 119, "89mb": 119, "mobile_optim": [119, 188, 194, 206, 218, 222, 224, 225, 252], "optimize_for_mobil": [119, 188, 194, 206, 218, 222, 223, 224, 225, 252], "optimized_scripted_quantized_model": 119, "fbdeit_optimized_scripted_quant": 119, "_save_for_lite_interpret": [119, 187, 188, 194, 204, 222, 223], "fbdeit_optimized_scripted_quantized_lit": 119, "ptl": [119, 187, 204, 222, 223], "prof1": 119, "prof2": 119, "prof3": 119, "prof4": 119, "prof5": 119, "1236": 119, "69m": 119, "1226": 119, "72m": 119, "593": 119, "19m": 119, "598": 119, "01m": 119, "81": [119, 144, 219], "52": [119, 127, 147, 176, 219], "vt_tutori": 119, "spread": [120, 171], "demand": 120, "mesh": [120, 124, 215], "ddp_series_intro": 120, "utm_sourc": 120, "distr_land": 120, "utm_medium": 120, "distributeddata": 120, "ddp_tutori": 120, "intermediate_ddp_tutori": 120, "generic_join": 120, "fsdp_tutori": 120, "fsdp_getting_start": 120, "huggingfac": [120, 122, 123, 185, 201], "hf": 120, "t5": 120, "fsdp_adavnced_tutori": 120, "fsdp_advanc": 120, "tp_tutori": [120, 124], "distributed_device_mesh": 120, "rpc_tutori": 120, "rpc_getting_start": 120, "rpc_param_server_tutori": 120, "rpc_async_execut": 120, "rpc_ddp_tutori": 120, "rpc_plus_ddp": 120, "plug": [120, 155, 166, 223], "process_group_cpp_extension_tutori": 120, "custom_extensions_cpp": 120, "\u65b0\u589e\u6559\u7a0b": 121, "\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684": 121, "triton": [121, 144, 172, 199, 251], "\u5185\u6838\u4e0e": 121, "tp": 121, "\u8fdb\u884c\u5927\u89c4\u6a21": 121, "\u6a21\u578b\u8bad\u7ec3": 121, "\u5229\u7528\u534a\u7ed3\u6784\u5316": 121, "\u7a00\u758f\u6027\u52a0\u901f": 121, "\u548c\u5f20\u91cf\u5b50\u7c7b\u7684\u6269\u5c55\u70b9": 121, "\u719f\u6089": 121, "\u7684\u6982\u5ff5\u548c\u6a21\u5757": 121, "\u901a\u8fc7\u672c\u5feb\u901f\u5165\u95e8\u6307\u5357": 121, "\u5b66\u4e60\u5982\u4f55\u52a0\u8f7d\u6570\u636e": 121, "\u6784\u5efa\u6df1\u5ea6\u795e\u7ecf\u7f51\u7edc": 121, "\u8bad\u7ec3\u548c\u4fdd\u5b58\u6a21\u578b": 121, "\u5f00\u542f": 121, "\u65c5\u7a0b": 121, "\u793a\u4f8b": 121, "\u5c0f\u5de7\u6613\u7528": 121, "\u5373\u65f6\u90e8\u7f72\u7684": 121, "\u4ee3\u7801\u793a\u4f8b": 121, "\u5168\u90e8": 121, "\u9010\u6b65\u6559\u4f60\u5982\u4f55\u7528pytorch\u6784\u5efa\u5b8c\u6574\u7684\u673a\u5668\u5b66\u4e60\u6d41\u7a0b": 121, "\u4ecb\u7ecd\u89c6\u9891": 121, "\u7528pytorch\u6784\u5efa\u5b8c\u6574\u7684\u673a\u5668\u5b66\u4e60\u5de5\u4f5c\u6d41\u7a0b": 121, "pytorch\u521d\u5b66\u8005\u7cfb\u5217": 121, "\u901a\u8fc7\u793a\u4f8b\u5b66\u4e60": 121, "\u672c\u6559\u7a0b\u901a\u8fc7\u72ec\u7acb\u7684\u793a\u4f8b\u4ecb\u7ecd\u4e86": 121, "\u4ec0\u4e48\u662f": 121, "\u6765\u521b\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 121, "\u5c55\u73b0\u6a21\u578b": 121, "\u6570\u636e\u548c\u8bad\u7ec3\u8fc7\u7a0b": 121, "\u5b66\u4e60\u4f7f\u7528": 121, "\u53ef\u89c6\u5316\u6570\u636e\u96c6\u548c\u6a21\u578b\u8bad\u7ec3\u8fc7\u7a0b": 121, "\u76ee\u6807\u68c0\u6d4b\u5fae\u8c03\u6559\u7a0b": 121, "\u5fae\u8c03\u9884\u8bad\u7ec3\u7684": 121, "\u4f7f\u7528\u8fc1\u79fb\u5b66\u4e60\u8bad\u7ec3\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u8fdb\u884c\u56fe\u50cf\u5206\u7c7b": 121, "\u4f18\u5316\u89c6\u89c9transformer\u6a21\u578b": 121, "\u5e94\u7528\u6700\u524d\u6cbf\u7684": 121, "\u57fa\u4e8e": 121, "\u6a21\u578b\u5230\u8ba1\u7b97\u673a\u89c6\u89c9\u4efb\u52a1\u4e2d": 121, "\u5bf9\u6297\u6027\u6837\u672c\u751f\u6210": 121, "dcgan": 121, "\u5b66\u4e60\u5982\u4f55\u901a\u8fc7\u89c6\u89c9\u6ce8\u610f\u673a\u5236\u589e\u5f3a\u4f60\u7684\u7f51\u7edc": 121, "tiatoolbox": 121, "\u5bf9\u56fe\u50cf\u8fdb\u884c\u63a8\u7406": 121, "\u5b66\u4e60\u5982\u4f55\u4f7f\u7528tiatoolbox\u5bf9\u56fe\u50cf\u8fdb\u884c\u63a8\u7406": 121, "usb": [121, 158], "\u7684\u534a\u76d1\u7763\u5b66\u4e60\u6559\u7a0b": 121, "\u5b66\u4e60\u5982\u4f55\u4f7f\u7528": [121, 251], "\u5bf9\u81ea\u5b9a\u4e49\u6570\u636e\u8fdb\u884c\u534a\u76d1\u7763\u5b66\u4e60\u7b97\u6cd5\u7684\u8bad\u7ec3": 121, "\u52a0\u8f7d\u6570\u636e": [121, 235, 251], "\u91cd\u91c7\u6837": 121, "\u5bf9\u97f3\u9891\u6ce2\u5f62\u8fdb\u884c\u91cd\u65b0\u91c7\u6837": 121, "\u6570\u636e\u589e\u5f3a": 121, "\u5e94\u7528\u6570\u636e\u589e\u5f3a": 121, "\u7279\u5f81\u63d0\u53d6": 121, "\u63d0\u53d6\u7279\u5f81": 121, "\u7279\u5f81\u589e\u5f3a": 121, "\u5bf9\u7279\u5f81\u8fdb\u884c\u589e\u5f3a": 121, "\u4e2d\u4f7f\u7528": 121, "wav2vec2": 121, "\u8fdb\u884c\u81ea\u52a8\u8bed\u97f3\u8bc6\u522b": 121, "\u7684\u9884\u8bad\u7ec3\u6a21\u578b\u6765\u6784\u5efa\u8bed\u97f3\u8bc6\u522b\u5e94\u7528\u7a0b\u5e8f": 121, "\u8bed\u97f3\u547d\u4ee4\u5206\u7c7b": 121, "\u5b66\u4e60\u5982\u4f55\u6b63\u786e\u683c\u5f0f\u5316\u97f3\u9891\u6570\u636e\u96c6": 121, "\u7136\u540e\u5728\u8be5\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3": 121, "\u6d4b\u8bd5\u97f3\u9891\u5206\u7c7b\u5668\u7f51\u7edc": 121, "\u8fdb\u884c\u6587\u672c\u8f6c\u8bed\u97f3": 121, "\u7684\u9884\u8bad\u7ec3\u6a21\u578b\u6784\u5efa\u6587\u672c\u8f6c\u8bed\u97f3\u5e94\u7528\u7a0b\u5e8f": 121, "\u8fdb\u884c\u5bf9\u9f50": 121, "\u9884\u8bad\u7ec3\u6a21\u578b\u5bf9\u6587\u672c\u8fdb\u884c\u4e0e\u8bed\u97f3\u5bf9\u9f50": 121, "\u63d0\u5347\u63a8\u7406\u6548\u7387": 121, "\u5b9e\u73b0\u7684": 121, "\u4ee5\u5b9e\u73b0\u9ad8\u6027\u80fd\u7684\u63a8\u65ad": 121, "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406": 121, "\u4f7f\u7528\u5b57\u7b26\u7ea7": 121, "\u5bf9\u59d3\u540d\u8fdb\u884c\u5206\u7c7b": 121, "\u6784\u5efa\u5e76\u8bad\u7ec3\u4e00\u4e2a\u57fa\u672c\u7684\u5b57\u7b26\u7ea7\u5faa\u73af\u795e\u7ecf\u7f51\u7edc": 121, "\u4ece\u96f6\u5f00\u59cb\u5206\u7c7b\u5355\u8bcd": 121, "\u800c\u4e0d\u4f7f\u7528": 121, "\u751f\u6210\u59d3\u540d": [121, 127, 165], "\u5728\u4f7f\u7528\u5b57\u7b26\u7ea7\u5faa\u73af\u795e\u7ecf\u7f51\u7edc\u5bf9\u59d3\u540d\u8fdb\u884c\u5206\u7c7b\u4e4b\u540e": 121, "\u5b66\u4e60\u5982\u4f55\u4ece\u8bed\u8a00\u4e2d\u751f\u6210\u59d3\u540d": 121, "\u4f7f\u7528\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u8fdb\u884c\u7ffb\u8bd1": 121, "\u5728\u8fd9\u91cc\u6211\u4eec\u7f16\u5199\u81ea\u5df1\u7684\u7c7b\u548c\u51fd\u6570\u6765\u9884\u5904\u7406\u6570\u636e\u4ee5\u6267\u884c\u6211\u4eec\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\u5efa\u6a21\u4efb\u52a1": 121, "\u8fdb\u884c\u6587\u672c\u5206\u7c7b": 121, "\u5e93\u6784\u5efa\u6570\u636e\u96c6\u5e76\u5bf9\u6587\u672c\u8fdb\u884c\u5206\u7c7b": 121, "\u4ece\u96f6\u5f00\u59cb\u8bad\u7ec3\u4e00\u4e2a\u4f7f\u7528": 121, "\u7684\u8bed\u8a00\u7ffb\u8bd1\u6a21\u578b": 121, "\u4f7f\u7528torchtext\u9884\u5904\u7406\u81ea\u5b9a\u4e49\u6587\u672c\u6570\u636e\u96c6": 121, "\u51c6\u5907\u81ea\u5b9a\u4e49\u6570\u636e\u96c6": 121, "\u53ef\u9009": 121, "\u6a21\u578b\u5bfc\u51fa\u4e3a": 121, "\u8fd0\u884c\u5b83": 121, "\u6784\u5efa\u4e00\u4e2a": 121, "\u56fe\u50cf\u5206\u7c7b\u5668\u6a21\u578b": 121, "\u7136\u540e\u5c06\u5176\u8f6c\u6362\u4e3a": 121, "\u683c\u5f0f": 121, "\u6700\u540e\u4f7f\u7528": 121, "\u90e8\u7f72\u5b83": 121, "\u4ecb\u7ecd": 121, "\u6f14\u793a\u5982\u4f55\u901a\u8fc7\u4f7f\u7528": 121, "\u6765\u89e3\u51b3\u4e0d\u652f\u6301\u7684\u64cd\u4f5c\u7b26": 121, "\u4ece\u800c\u5b9e\u73b0\u7aef\u5230\u7aef\u7684\u6d41\u7a0b": 121, "\u5f3a\u5316\u5b66\u4e60": 121, "dqn": 121, "cartpol": [121, 136, 160, 163], "\u4efb\u52a1\u4e0a\u8bad\u7ec3\u4e00\u4e2a": 121, "\u4ee3\u7406": 121, "\u4f7f\u7528torchrl\u8fdb\u884c\u5f3a\u5316\u5b66\u4e60": 121, "torchrl": [121, 136, 146], "proxim": [121, 159], "pendulum": [121, 159], "\u8bad\u7ec3\u4e00\u4e2a\u9a6c\u91cc\u5965\u6e38\u620f\u7684": 121, "mario": [121, 146, 153], "ddpg": 121, "\u4e2d\u90e8\u7f72": [121, 139], "densenet": [121, 139, 213], "121": [121, 139, 144, 178, 238], "\u4e2d\u52a0\u8f7d": [121, 139], "thumbnail": [121, 171], "holist": 121, "fuser": [121, 247], "nchw": [121, 129, 147, 177, 220, 223], "raspberri": 121, "nerur": 121, "netork": 121, "exploresever": 121, "tangent": [121, 141, 145], "plugin": [121, 168, 208], "rai": 121, "orthogon": [121, 153], "symmetr": [121, 137, 153, 197, 200], "prune": [121, 153, 196, 221], "snapshot": [121, 131, 174, 208, 222], "grok": 121, "torchserv": [121, 161, 213, 251], "torchx": 121, "inductor": [121, 174, 184, 196, 197, 254, 255], "scaled_dot_product_attent": [121, 164, 193], "paral": 121, "executorch": [121, 197], "sdk": [121, 208, 227, 257], "v3": [121, 228], "xnnpack": [121, 179, 197, 198, 200], "metal": 121, "shader": 121, "fp32": [121, 122, 131, 137, 147, 177, 179, 184, 185, 188, 197, 199, 207, 221, 234], "torchrec": 121, "distributedmodelparallel": 121, "torchmultimod": 121, "\u89c6\u89c9": 121, "\u6587\u672c": 121, "\u5f3a\u5316\u5b66\u4e60\u7684": 121, "\u53ef\u4ee5\u5c06\u5176\u878d\u5165\u73b0\u6709\u5de5\u4f5c\u5185\u5bb9": 121, "sheet": 121, "\u57fa\u7840\u5185\u5bb9\u901f\u89c8": 121, "\u4e0a\u7684\u6559\u7a0b": 121, "\u83b7\u53d6": 121, "\u4e0a\u8fd0\u884c\u6559\u7a0b": 121, "\u5b66\u4e60\u5982\u4f55\u5c06\u6559\u7a0b\u6570\u636e\u590d\u5236\u5230": 121, "\u4ee5\u4fbf\u60a8\u53ef\u4ee5\u5728": 121, "hamid": [122, 123, 176, 177], "shojanazeri": [122, 123, 176, 177], "wright": 122, "rohan": [122, 162], "varma": [122, 162], "yanli": [122, 123], "zhao": [122, 123], "wikihow": 122, "p4dn": 122, "pressur": 122, "fdsp": 122, "discard": [122, 123, 168], "reduce_scatt": [122, 123, 124], "xxl": 122, "3b": [122, 158], "whl": [122, 137, 157, 168, 172, 184, 187, 188], "cu113": 122, "torch_nightli": [122, 137, 157, 187, 188], "wikihowal": 122, "wikihowsep": 122, "cs": 122, "summarization_dataset": 122, "t5_train": 122, "gpt2tokenizerfast": 122, "t5token": 122, "t5forconditionalgener": 122, "modeling_t5": 122, "t5block": 122, "checkpoint_wrapp": 122, "checkpointimpl": 122, "apply_activation_checkpointing_wrapp": 122, "fullyshardeddataparallel": [122, 123, 124, 155, 214, 215], "mixedprecis": 122, "backwardprefetch": [122, 123], "shardingstrategi": [122, 215], "fullstatedictconfig": 122, "statedicttyp": [122, 214], "transformer_auto_wrap_polici": 122, "enable_wrap": [122, 123], "cleanup": [122, 123, 133, 214], "setup_model": 122, "get_date_of_run": 122, "2022": 122, "12_pm": 122, "date_of_run": 122, "s_": [122, 160], "format_metrics_to_gb": 122, "gigabyt": 122, "metric_num": 122, "g_gigabyt": 122, "ndigit": 122, "fsdp_loss": 122, "inner_pbar": 122, "colour": 122, "desc": [122, 137, 185], "source_id": 122, "attention_mask": [122, 137, 185], "source_mask": 122, "target_id": [122, 165], "train_accuraci": 122, "val_load": 122, "fsdp_main": [122, 123], "type_path": 122, "output_length": 122, "print_text": 122, "150": [122, 163], "val_dataset": 122, "sampler1": [122, 123], "num_replica": [122, 123], "sampler2": [122, 123], "train_kwarg": [122, 123, 129], "test_kwarg": [122, 123, 129], "test_batch_s": [122, 123], "cuda_kwarg": [122, 123, 129], "t5_auto_wrap_polici": 122, "transformer_layer_cl": 122, "sharding_strategi": [122, 215], "shard_grad_op": 122, "zero2": 122, "full_shard": 122, "zero3": 122, "init_start_ev": [122, 123], "enable_tim": [122, 123, 172], "init_end_ev": [122, 123], "bf16_readi": 122, "is_bf16_support": 122, "loosevers": 122, "is_nccl_avail": 122, "mp_polici": 122, "bfsixteen": 122, "auto_wrap_polici": [122, 123], "mixed_precis": 122, "current_devic": [122, 230], "curr_val_loss": 122, "file_save_nam": 122, "time_of_run": 122, "dur": 122, "train_acc_track": 122, "val_acc_track": 122, "training_start_tim": 122, "track_memori": 122, "mem_alloc_track": 122, "mem_reserved_track": 122, "run_valid": 122, "zone": 122, "memory_alloc": [122, 129], "memory_reserv": 122, "save_model": [122, 123], "save_polici": 122, "offload_to_cpu": 122, "rank0_onli": 122, "state_dict_typ": 122, "full_state_dict": 122, "cpu_stat": 122, "currepoch": 122, "save_nam": 122, "barrier": [122, 123, 133, 135, 137, 176, 185], "metavar": [122, 123, 161, 163], "002": 122, "store_tru": [122, 123], "store_fals": 122, "nnode": [122, 133], "transfom": 122, "mhsa": 122, "ffn": 122, "fsdp_auto_wrap_polici": [122, 123], "bfloat16": [122, 184, 199, 207, 230, 237, 244, 247, 253], "v100": [122, 172, 175], "percis": 122, "fpsixteen": 122, "param_dtyp": 122, "reduce_dtyp": 122, "buffer_dtyp": 122, "fp32_polici": 122, "grad_bf16": 122, "backward_pr": 122, "backward_prefetch": 122, "backward_post": 122, "offload": [122, 123, 219], "allgath": [122, 123, 124, 155, 247], "ram": [122, 223, 237], "1t": [123, 131], "feasibl": 123, "possess": [123, 184, 237], "fsdp_mnist": 123, "size_based_auto_wrap_polici": 123, "default_auto_wrap_polici": 123, "fully_sharded_data_parallel": [123, 214], "cpuoffload": 123, "handwritten": 123, "ddp_loss": 123, "batch_idx": [123, 129, 148, 166, 220, 221, 253], "tloss": [123, 129, 166, 221], "6f": [123, 129, 166, 221], "view_a": [123, 129, 162, 166, 221], "dataset1": [123, 129], "dataset2": [123, 129], "my_auto_wrap_polici": 123, "min_num_param": 123, "elapsed_tim": [123, 172], "110": [123, 163, 185, 231], "85": [123, 137, 219, 231], "67462890625sec": 123, "_fsdp_wrapped_modul": 123, "flattenparamswrapp": 123, "_fpw_modul": 123, "peak": [123, 129, 152, 158, 184, 254, 258], "g4dn": 123, "xlarg": 123, "seal": 123, "20000": 123, "89130859375sec": 123, "auto_wrap": 123, "66": [123, 219, 231], "cpu_offload": 123, "offload_param": 123, "dpp": 123, "ddp_mnist": 123, "77766015625sec": 123, "wanchao": [124, 215], "liang": [124, 215], "tianyu": 124, "liu": 124, "devicemesh": [124, 251], "megatron": 124, "lm": [124, 212], "sp": 124, "parallelstyl": 124, "parallelize_modul": 124, "dtensor": 124, "foward": 124, "aris": [124, 184, 191], "exceed": [124, 159], "domin": [124, 147, 171, 203, 234], "consequ": [124, 160], "ballpark": [124, 234], "flop": 124, "llm": 124, "trillion": [124, 131], "month": 124, "llama": 124, "70b": 124, "2k": 124, "llama2": 124, "1k": 124, "colwiseparallel": 124, "rowwiseparallel": 124, "sequenceparallel": 124, "rmsnormpython": 124, "preparemoduleinput": 124, "preparemoduleoutput": 124, "device_mesh": [124, 215], "init_device_mesh": [124, 215], "tp_mesh": 124, "transformerblock": 124, "swiglu": 124, "w2": 124, "silu": 124, "w1": 124, "w3": 124, "colwis": 124, "rowwis": [124, 231], "parallelize_plan": 124, "layer_tp_plan": 124, "feed_foward": 124, "feed_forward": 124, "wq": 124, "wk": 124, "wv": 124, "wo": 124, "tp_plan": 124, "draft": [124, 135], "num_head": [124, 164], "layer_id": 124, "attn_lay": 124, "n_head": 124, "n_kv_head": 124, "tok_embed": 124, "input_layout": 124, "output_layout": 124, "attention_norm": 124, "ffn_norm": 124, "desired_input_layout": 124, "yellow": 124, "loss_parallel": 124, "use_local_output": 124, "mesh_2d": [124, 215], "submesh": 124, "dp_mesh": 124, "model_tp": 124, "model_2d": 124, "use_orig_param": 124, "broadli": 125, "torchviz": [125, 130], "_save": 125, "_saved_self": 125, "_saved_oth": 125, "kept": [125, 127, 263, 272], "_saved_result": 125, "cycl": [125, 168, 207, 231], "thumb": [125, 145, 159, 230], "pack_hook": 125, "unpack_hook": 125, "saved_tensors_hook": 125, "harmless": 125, "debat": 125, "__repr__": [125, 231, 244], "repr": [125, 231], "save_on_cpu": 125, "152": 125, "48gb": 125, "5gb": 125, "6x": [125, 177, 223], "savetocpu": 125, "uuid": 125, "tmp_dir": 125, "uuid4": 125, "leak": 125, "tmp_dir_obj": 125, "succeed": [125, 208], "selfdeletingtempfil": 125, "__del__": 125, "temp_fil": 125, "save_on_disk_threshold": 125, "tensor_or_sctf": 125, "savetodisk": 125, "autograd_saved_tensors_hooks_tutori": 125, "david": [126, 263, 272], "eriksson": 126, "balandat": 126, "methodolog": [126, 177, 216, 220], "runnabl": [126, 144], "laptop": [126, 194], "sustain": 126, "botorch": 126, "bayesian": 126, "mnist_train_na": [126, 148], "appdef": 126, "log_path": [126, 148], "hidden_size_1": [126, 148], "hidden_size_2": [126, 148], "trial_idx": 126, "joinpath": 126, "torchx_imag": 126, "kubernet": 126, "local_cwd": 126, "torchxrunn": 126, "log_dir": [126, 169], "mkdtemp": 126, "ax_runn": 126, "tracker_bas": 126, "component_const_param": 126, "cfg": 126, "choiceparamet": 126, "parametertyp": 126, "rangeparamet": 126, "num_param": [126, 148], "pareto": 126, "frontier": 126, "weird": 126, "upper": [126, 153, 164, 263, 272], "parameter_typ": 126, "log_scal": 126, "is_ord": 126, "search_spac": 126, "parameter_constraint": 126, "outcom": [126, 200], "fetch": [126, 128, 134, 161, 162, 163, 176, 177], "proxi": [126, 189, 192, 231], "tensorboardcurvemetr": 126, "mytensorboardmetr": 126, "prespecifi": 126, "classmethod": [126, 183, 244], "get_ids_from_tri": 126, "queryabl": 126, "is_available_while_run": 126, "curve_nam": 126, "lower_is_bett": 126, "val_acc": [126, 148], "model_num_param": 126, "multiobjectiveoptimizationconfig": 126, "94": [126, 197, 219, 238], "multiobject": 126, "objectivethreshold": 126, "optimization_config": 126, "opt_config": 126, "objective_threshold": 126, "80_000": 126, "torchx_mnist": 126, "generationstrategi": 126, "total_tri": 126, "modelbridg": 126, "dispatch_util": 126, "choose_generation_strategi": 126, "gs": [126, 257], "num_trial": 126, "scheduleropt": 126, "max_pending_tri": 126, "generation_strategi": 126, "autom": [126, 143, 147, 171, 182], "run_all_tri": 126, "report_util": 126, "exp_to_df": 126, "_pareto_frontier_scatter_2d_plotli": 126, "surrog": 126, "uncertainti": 126, "cross_valid": 126, "compute_diagnost": 126, "diagnost": 126, "interact_cross_validation_plotli": 126, "init_notebook_plot": 126, "contour": 126, "interact_contour_plotli": 126, "metric_nam": 126, "kiuk": 126, "tristan": [126, 158], "rice": [126, 158], "ax_multiobjective_nas_tutori": [126, 148], "\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u673a\u5236\u8fdb\u884c\u7ffb\u8bd1": 127, "surnam": 127, "scottish": 127, "irish": 127, "schmidhub": 127, "czech": 127, "dutch": 127, "\u8ddf\u7740\u793a\u4f8b\u5b66\u4e60": [127, 128, 165], "unreason": [127, 128], "roman": [127, 263, 272], "glob": [127, 128, 208], "findfil": [127, 128], "all_lett": [127, 128], "ascii_lett": [127, 128], "n_letter": [127, 128], "\u015blus\u00e0rski": 127, "category_lin": [127, 128], "all_categori": [127, 128], "splitext": [127, 128], "basenam": [127, 128], "n_categori": [127, 128], "italian": 127, "0s": [127, 136, 185], "line_length": 127, "lettertoindex": 127, "lettertotensor": 127, "linetotensor": 127, "jone": 127, "h2h": 127, "inithidden": [127, 128], "n_hidden": 127, "next_hidden": 127, "precomput": 127, "albert": 127, "greatest": [127, 171, 230], "categoryfromoutput": 127, "top_n": 127, "top_i": 127, "category_i": 127, "randomchoic": [127, 128], "randomtrainingexampl": [127, 128], "category_tensor": [127, 128], "line_tensor": 127, "005": [127, 160, 178], "plot_everi": [127, 128, 165], "current_loss": 127, "all_loss": [127, 128], "timesinc": [127, 128, 165], "guess_i": 127, "histor": [127, 128], "minu": [127, 168], "n_confus": 127, "111": [127, 163, 165, 176, 185, 231, 256], "cax": [127, 165], "matshow": [127, 165], "colorbar": [127, 165], "set_xticklabel": [127, 149, 165], "rotat": [127, 165, 166, 169], "set_yticklabel": [127, 165], "tick": [127, 165], "xaxi": [127, 165], "set_major_loc": [127, 165], "multipleloc": [127, 165], "yaxi": [127, 149, 165], "bright": 127, "incorrectli": [127, 198], "chines": [127, 128], "korean": 127, "greek": 127, "input_lin": 127, "n_predict": 127, "topv": [127, 128], "category_index": 127, "doveski": 127, "jackson": 127, "satoshi": 127, "bottl": [127, 144], "hazaki": 127, "japanes": 127, "5533": 127, "yournam": 127, "gender": 127, "subreddit": 127, "char_rnn_classification_tutori": 127, "russian": 128, "ru": 128, "rovakov": 128, "uantov": 128, "shavakov": 128, "ger": 128, "gerren": 128, "ereng": 128, "rosher": 128, "spa": 128, "salla": 128, "parer": 128, "allan": 128, "chi": 128, "chan": 128, "iun": 128, "\u8fdb\u884c\u59d3\u540d\u5206\u7c7b": [128, 165], "some_fil": [128, 133], "n\u00e9\u00e0l": 128, "o2o": 128, "muscl": [128, 171], "fuzz": 128, "chao": 128, "i2o": 128, "input_combin": 128, "output_combin": 128, "randomtrainingpair": 128, "abcd": 128, "categorytensor": 128, "targettensor": 128, "letter_index": 128, "input_line_tensor": 128, "target_line_tensor": 128, "0005": [128, 178], "start_lett": 128, "abc": [128, 171], "fiction": 128, "countri": 128, "citi": 128, "char_rnn_generation_tutori": 128, "adjac": [129, 262, 271], "dilat": [129, 134], "track_running_statist": 129, "denomin": 129, "nenadmarku": [129, 142], "once_differenti": 129, "convolution_backward": 129, "grad_out": [129, 130], "grad_x": [129, 130], "conv_transpose2d": [129, 207], "unsqueeze_al": 129, "batch_norm_backward": 129, "sqrt_var": 129, "d_denom": 129, "denom": 129, "unnecessarili": 129, "d_var": 129, "d_mean_dx": 129, "reassign": [129, 156], "unbiased_var": 129, "unbias": 129, "fast_mod": 129, "fusedconvbn2dfunct": 129, "conv_weight": 129, "ndim": [129, 192], "x_conv_out": 129, "fusedconvbn": 129, "in_channel": [129, 146, 153, 178], "out_channel": [129, 146, 153, 178], "exp_avg_factor": 129, "factory_kwarg": 129, "weight_shap": 129, "kaiming_uniform_": [129, 202], "convbn1": 129, "convbn2": 129, "bn1": [129, 142, 149, 157], "track_running_stat": [129, 179, 218], "bn2": 129, "ntest": [129, 166], "geforc": 129, "rtx": 129, "3070": 129, "56gb": 129, "unfus": [129, 142], "68gb": 129, "shallow": [129, 136], "peak_memory_alloc": 129, "123456": 129, "max_memory_alloc": [129, 184, 230, 258], "reset_peak_memory_stat": [129, 184], "gb": [129, 184], "custom_function_conv_bn_tutori": 129, "finit": [130, 150], "differenc": 130, "magnifi": 130, "gradgradcheck": [130, 247], "make_dot": 130, "dout": [130, 145], "ouptut": 130, "sinh": 130, "cosh": 130, "expx": 130, "expnegx": 130, "_grad_out_exp": 130, "_grad_out_negexp": 130, "sinhbad": 130, "cube_backward": 130, "cubebackward": 130, "cube_forward": 130, "cube_backward_backward": 130, "sav_grad_out": 130, "cube_backward_backward_grad_out": 130, "cube": 130, "dgrad_out": 130, "artifact": [131, 174], "reachabl": [131, 132, 135], "2xlarg": [131, 132], "hydra": 131, "slurm": [131, 132, 133], "char_dataset": 131, "gpt2_train_cfg": 131, "bucket": [131, 247, 257], "aggress": 131, "rendezv": [132, 155], "nccl_debug": 132, "nccl_socket_ifnam": 132, "eth0": 132, "zhu": [133, 144], "trigger": [133, 144, 161, 163, 247], "clarifi": 133, "filestor": 133, "tcpstore": 133, "libtmp": 133, "toymodel": [133, 149, 214, 215], "net1": [133, 149, 214, 215], "net2": [133, 149, 214, 215], "demo_bas": 133, "ddp_model": [133, 258], "run_demo": 133, "demo_fn": 133, "caution": 133, "timeout": [133, 155], "straggler": [133, 168], "unpredict": 133, "spike": [133, 158], "AND": [133, 252], "torchelast": 133, "demo_checkpoint": 133, "checkpoint_path": [133, 184, 198], "gettempdir": 133, "toympmodel": 133, "dev0": 133, "dev1": 133, "demo_model_parallel": 133, "mp_model": 133, "ddp_mp_model": 133, "n_gpu": [133, 137, 185], "elastic_ddp": 133, "rdzv_id": [133, 215], "rdzv_backend": 133, "rdzv_endpoint": [133, 215], "29400": [133, 215], "aka": [133, 145, 147, 157, 173, 174, 220, 223], "scontrol": 133, "hostnam": 133, "slurm_nodelist": 133, "srun": 133, "torchrun_script": 133, "rpc_sync": [134, 161, 162, 163, 212], "embeddingt": [134, 163, 175], "amort": [134, 159, 161, 247], "resnetbas": 134, "conv1x1": 134, "inplan": 134, "width_per_group": 134, "_lock": 134, "_block": 134, "_norm_lay": 134, "base_width": 134, "_make_lay": 134, "previous_dil": 134, "parameter_rref": [134, 163, 212], "calle": [134, 161, 162, 212], "resnetshard1": 134, "nonlinear": 134, "x_rref": 134, "to_her": 134, "resnetshard2": 134, "distresnet50": 134, "micro": [134, 176, 177], "y_rref": 134, "num_split": 134, "p1_rref": 134, "p2_rref": 134, "out_futur": 134, "z_fut": 134, "wait_al": [134, 161], "remote_param": [134, 162, 163], "worker1": [134, 212], "worker2": 134, "image_w": [134, 149, 161], "image_h": [134, 149, 161], "run_mast": 134, "one_hot_indic": [134, 149, 161], "passiv": [134, 161, 163], "num_worker_thread": [134, 212], "tik": [134, 161, 212], "tok": [134, 161, 212], "s\u00e9b": 135, "arnold": 135, "practition": [135, 192, 257], "sysadmin": 135, "coordin": [135, 166, 178, 184, 192], "pdsh": 135, "clustershel": 135, "init_process": 135, "127": [135, 179, 200], "set_start_method": 135, "ip": 135, "recv": [135, 163], "irecv": 135, "dst": 135, "req": 135, "nor": [135, 142, 179, 189], "undefin": [135, 149, 189, 190, 191], "behaviour": 135, "fanci": 135, "baidu": 135, "deepspeech": 135, "communc": 135, "new_group": [135, 215], "commut": 135, "scatter_list": 135, "gather_list": 135, "tnt": 135, "splitdataset": 135, "data_idx": 135, "datapartition": 135, "1234": 135, "data_len": 135, "part_len": 135, "partition_dataset": 135, "get_world_s": 135, "partition_s": 135, "train_set": [135, 168], "average_gradi": 135, "voil\u00e0": 135, "send_buff": 135, "recv_buff": 135, "accum": 135, "send_req": 135, "bandwidth": [135, 168, 196, 219], "subsect": [135, 262, 271], "eleg": 135, "handi": [135, 146, 169], "smi": [135, 230], "mvapich2": 135, "ipc": [135, 168], "recompil": [135, 142, 172, 198, 211], "requisit": 135, "forg": [135, 221], "openmpi": 135, "mpirun": 135, "myscript": 135, "handshak": 135, "superflu": 135, "readili": 135, "fcntl": 135, "nf": 135, "sharedfil": 135, "23456": 135, "socket": [135, 144, 176, 177, 247], "everyon": 135, "unclear": [135, 149, 173, 174], "natalia": 135, "gimelshein": 135, "carrier": [136, 159], "brought": [136, 159], "mod": [136, 142, 143, 172, 173, 174, 194, 203, 232, 244], "set_exploration_typ": [136, 159], "totensorimag": 136, "egreedymodul": 136, "lstmmodul": 136, "qvaluemodul": 136, "dqnloss": 136, "84x84": 136, "accessori": [136, 158], "stamp": 136, "is_init": 136, "tensordictprim": 136, "primer": [136, 192], "disappear": 136, "keep_dim": 136, "backbon": [136, 171], "flank": 136, "assist": [136, 215], "num_cel": [136, 159], "squeeze_output": 136, "aggregator_class": 136, "aggregator_kwarg": 136, "n_cell": 136, "tensordictmodulebas": 136, "batch_first": [136, 165], "make_tensordict_prim": 136, "action_valu": [136, 146], "qval": 136, "action_spac": [136, 146, 160], "qvalueactor": 136, "stoch_polici": 136, "exploration_modul": 136, "eps_init": 136, "set_recurrent_mod": 136, "redund": 136, "delay_valu": 136, "3e": [136, 154, 159], "longest": [136, 143], "npai": 136, "chosen_action_valu": 136, "recurrent_st": 136, "to_tensordict": 136, "non_block": 136, "step_count": [136, 159], "action_spread": 136, "dqn_with_rnn_tutori": 136, "jianyu": 137, "huang": [137, 155, 214], "jessica": [137, 157], "paraphras": 137, "mrpc": [137, 185], "dolan": 137, "brockett": 137, "2005": 137, "imbalanc": 137, "sklearn": [137, 171], "tochvis": 137, "cu101": [137, 157], "bertconfig": [137, 185], "bertforsequenceclassif": [137, 185], "glue_compute_metr": [137, 185], "glue_output_mod": [137, 185], "output_mod": [137, 185], "glue_processor": [137, 185], "processor": [137, 176, 185, 199, 207, 220, 247, 251], "glue_convert_examples_to_featur": [137, 185], "convert_examples_to_featur": [137, 185], "getlogg": [137, 148, 171, 185], "basicconfig": [137, 185], "asctim": [137, 185], "levelnam": [137, 185], "datefmt": [137, 185], "modeling_util": [137, 185], "setlevel": [137, 148, 185], "__config__": [137, 185], "parallel_info": [137, 185], "sep": [137, 193], "glue_data": [137, 185], "download_glue_data": [137, 185], "glue_dir": [137, 185], "task_nam": [137, 185], "out_dir": [137, 185], "run_glu": 137, "model_typ": [137, 184, 185], "model_name_or_path": [137, 185], "do_train": 137, "do_ev": 137, "do_lower_cas": [137, 185], "max_seq_length": [137, 185], "per_gpu_eval_batch_s": [137, 185], "per_gpu_train_batch_s": 137, "save_step": 137, "output_dir": [137, 185], "get_label": [137, 185], "overwrite_cach": [137, 185], "copyright": [137, 263, 272], "inc": 137, "apach": [137, 176, 177], "complianc": 137, "law": [137, 193], "AS": 137, "IS": 137, "warranti": 137, "OR": [137, 245], "OF": 137, "govern": [137, 161], "permiss": 137, "mnli": [137, 185], "mi": [137, 185, 265, 274], "eval_task_nam": [137, 185], "eval_outputs_dir": [137, 185], "eval_task": [137, 185], "eval_output_dir": [137, 185], "load_and_cache_exampl": [137, 185], "eval_sampl": [137, 185], "eval_dataload": [137, 185, 221], "eval_loss": 137, "nb_eval_step": [137, 185], "out_label_id": [137, 185], "distilbert": [137, 185], "token_type_id": [137, 185], "xlnet": [137, 185], "roberta": [137, 185], "segment_id": [137, 185], "tmp_eval_loss": 137, "regress": [137, 166, 185, 231, 245], "output_eval_fil": [137, 185], "eval_result": [137, 185], "cached_features_fil": [137, 185], "cached_": [137, 185], "get_dev_exampl": [137, 185], "get_train_exampl": [137, 185], "pad_on_left": 137, "convert_tokens_to_id": 137, "pad_token_segment_id": 137, "all_input_id": [137, 185], "all_attention_mask": [137, 185], "all_token_type_id": [137, 185], "all_label": [137, 185], "438": [137, 185], "181": [137, 231], "30522": 137, "eval_start_tim": [137, 185], "eval_end_tim": [137, 185], "eval_duration_tim": [137, 185], "408": [137, 177], "prec": [137, 147], "9019": 137, "902": [137, 185], "8788": 137, "8956": 137, "asymmetr": [137, 200], "openmp": [137, 176, 207, 226], "tbb": 137, "ids_tensor": [137, 185], "dummy_input": [137, 185, 224, 225, 252, 256], "traced_model": [137, 142, 185, 247], "bert_traced_eager_qu": 137, "loaded_quantized_model": [137, 182, 197], "implic": [137, 185], "devlin": 137, "lee": 137, "toutanova": 137, "zafrir": 137, "boudoukh": 137, "izsak": 137, "wasserblat": 137, "2019": 137, "q8bert": 137, "8bit": 137, "tradition": [138, 202], "simplemlp": 138, "pretend": [138, 154], "minibatch": [138, 154], "num_model": [138, 154], "6400": 138, "predictions_diff_minibatch_loop": 138, "predictions2": 138, "stack_module_st": 138, "functional_cal": [138, 141, 150, 154], "base_model": 138, "fmodel": 138, "predictions1_vmap": 138, "in_dim": [138, 145, 154, 205, 234], "predictions2_vmap": 138, "without_vmap": [138, 145, 154], "with_vmap": [138, 145, 154], "avinash": 139, "sajjanshetti": 139, "refresh": [139, 169], "endpoint": [139, 213, 251], "class_id": [139, 213], "n02124075": 139, "egyptian_cat": [139, 213], "jsonifi": [139, 213], "image_net_xxx": 139, "transform_imag": [139, 213], "image_byt": 139, "my_transform": [139, 213], "bytesio": [139, 229], "densenet121": [139, 147, 172, 213], "get_predict": [139, 213], "y_hat": [139, 213], "predicted_idx": 139, "img_byt": 139, "TO": [139, 252], "flask_env": 139, "flask_app": [139, 213], "resp": 139, "recogn": [139, 155, 200], "ui": [139, 158, 245, 251, 261, 270], "streamer": 139, "queue": [139, 247], "flask_rest_api_tutori": 139, "forced_alignment_tutori": 140, "incomplet": 141, "eagerli": [141, 152, 174], "primal": [141, 145, 262, 271], "dual": [141, 262, 271], "forward_ad": 141, "fwad": 141, "dual_level": 141, "make_du": 141, "dual_input": 141, "unpack_du": 141, "dual_input_alt": 141, "plain_tensor": 141, "dual_output": 141, "namedtupl": [141, 160], "delattr": 141, "setattr": [141, 142, 147], "fresh": [141, 230], "dual_param": 141, "jvp2": 141, "gi": 141, "check_forward_ad": 141, "check_backward_ad": 141, "check_undefined_grad": 141, "check_batched_grad": 141, "functorch": [141, 173, 174], "downsid": 141, "ft": 141, "primal0": 141, "tangent0": 141, "primal1": 141, "tangent1": 141, "primal_out": 141, "tangent_out": 141, "new_fn": 141, "reformul": [141, 150], "make_functional_with_buff": 141, "analog": [141, 191, 192], "consolid": [141, 161, 198], "func_params_onli": 141, "jvp_out": 141, "dual_numb": 141, "forward_ad_usag": 141, "horac": 142, "wrappedbatchnorm": 142, "symbolic_trac": [142, 143, 172], "bake": 142, "fuse_conv_bn_ev": 142, "batch_norm": [142, 238], "fused_conv": 142, "fuse_conv_bn_weight": 142, "running_var": [142, 198], "conv_w": 142, "conv_b": 142, "bn_rm": 142, "bn_rv": 142, "bn_ep": 142, "bn_w": 142, "bn_b": 142, "bn_var_rsqrt": 142, "rsqrt": 142, "_parent_nam": 142, "qualnam": 142, "atom": 142, "baz": 142, "rsplit": 142, "replace_node_modul": 142, "new_modul": 142, "parent_nam": 142, "graphmodul": [142, 143, 172, 173, 174, 179], "fx_model": 142, "call_modul": 142, "replace_all_uses_with": 142, "erase_nod": 142, "lint": 142, "simplif": [142, 234], "fused_model": 142, "rn18": [142, 143], "fused_rn18": 142, "jit_rn18": 142, "conclus": 142, "tracker": [142, 143], "fx_conv_bn_fus": 142, "nicer": 143, "instrument": [143, 251], "tabul": [143, 172], "traced_rn18": 143, "ca": 143, "profilinginterpret": 143, "gm": [143, 172, 200], "total_runtime_sec": 143, "runtimes_sec": 143, "intercept": [143, 177], "t_start": 143, "return_v": 143, "t_end": 143, "run_nod": 143, "setdefault": 143, "should_sort": 143, "node_summari": 143, "mean_total_runtim": 143, "mean_runtim": 143, "pct_total": 143, "pct": 143, "clock": [143, 231], "interp": 143, "51393": 143, "fx_profiling_tutori": 143, "xuan": 144, "liao": 144, "haozh": 144, "jiong": [144, 176, 177, 186, 199, 200], "gong": [144, 176, 177, 186, 199, 200], "weihan": 144, "intricaci": 144, "troubleshoot": 144, "pinpoint": [144, 177], "foo1": 144, "x1": [144, 150, 178], "x2": [144, 150], "8390": 144, "compiled_foo1": 144, "neg1": 144, "torch_compile_debug": 144, "_inductor": [144, 174, 184, 186, 199], "model___20": 144, "torchinductor_root": 144, "rx": 144, "crxfi2ybd7yp5sbj2pnhw33wfhtdw7wumvrobyp5sjvdui5ktjc2": 144, "fx_graph_runn": 144, "fx_graph_transform": 144, "ir_post_fus": 144, "ir_pre_fus": 144, "output_cod": [144, 255], "forward1": 144, "arg0_1": [144, 173, 186], "arg1_1": [144, 173], "codecach": 144, "asynccompil": 144, "async_compil": 144, "cpp_fused_cat_maximum_neg_0": 144, "gv": 144, "cgv6n5aotqjo5w4vknjibhengeycuattfto532hkxpozszcgxr3x": 144, "in_ptr0": [144, 254], "in_ptr1": [144, 254], "out_ptr0": 144, "pragma": 144, "ivdep": 144, "i0": 144, "static_cast": 144, "0l": 144, "8390l": 144, "1l": [144, 186], "i1": 144, "8l": 144, "tmp0": 144, "tmp1": 144, "tmp2": 144, "tmp3": 144, "max_propagate_nan": 144, "dynamo": [144, 173, 174, 186, 255], "aot_eag": 144, "aot": [144, 254], "neg2": 144, "exc": [144, 173], "backendcompilerfail": 144, "cppcompileerror": 144, "xg": 144, "cxga5tk3b4lkwoxyigrtocjp5s7vc5cg2ikuscf6bk6pjqip2bhx": 144, "deduct": 144, "substitut": [144, 145, 152, 200, 262, 271], "deduc": 144, "buf0": [144, 186], "schedulernod": 144, "computedbuff": 144, "memorydep": 144, "c0": 144, "67120": 144, "unmet_depend": 144, "met_depend": 144, "nodeus": 144, "can_inplac": 144, "buf0_loop_bodi": 144, "var_rang": 144, "z0": 144, "index0": 144, "index1": 144, "get_index": 144, "get_index_1": 144, "load_1": 144, "get_index_2": 144, "silent": [144, 172, 199, 244], "minifi": 144, "dead": 144, "unus": [144, 155], "minif": 144, "foo2": 144, "expected_result": 144, "compiled_foo2": 144, "actual_result": 144, "neg3": 144, "tol": 144, "test_script": 144, "assertionerror": 144, "torchdynamo_repro_aft": 144, "torchdynamo_repro_level": 144, "forward2": 144, "conduct": [144, 155, 184], "mobilebertforquestionansw": 144, "xeon": [144, 147, 176, 199, 207, 220], "platinum": [144, 176], "8358": 144, "60ghz": 144, "kmp_blocktim": [144, 247], "kmp_set": 144, "kmp_affin": [144, 247], "compact": [144, 209, 247], "ld_preload": [144, 247], "conda_prefix": [144, 231], "dirnam": [144, 155, 226], "libiomp5": [144, 247], "libjemalloc": 144, "malloc_conf": 144, "oversize_threshold": 144, "background_thread": 144, "metadata_thp": 144, "dirty_decay_m": 144, "muzzy_decay_m": 144, "numactl": [144, 247], "bench": [144, 176, 177], "csarron": 144, "mobilebert": 144, "seq_length": [144, 220], "input_dict": 144, "compiled_model": [144, 164], "num_it": [144, 159], "warmup": [144, 168, 194, 203, 210, 211, 219, 223, 238], "eager_t": 144, "inductor_t": 144, "1023553796113": 144, "339": 144, "95180135127157": 144, "359459053287382": 144, "355x": 144, "enable_kernel_profil": 144, "profileract": [144, 164, 219, 238], "result_dir": 144, "prof_trac": 144, "my_schedul": [144, 238], "skip_first": [144, 238], "trace_handl": [144, 238], "step_num": [144, 238], "on_trace_readi": [144, 168, 238], "370": 144, "814m": 144, "362": 144, "161": [144, 218], "276m": 144, "363": 144, "416m": 144, "488": [144, 231], "154m": 144, "194": 144, "clamp_min": [144, 219], "444m": 144, "258m": [144, 219], "810": 144, "920m": 144, "447m": 144, "_softmax": 144, "087m": 144, "376": [144, 173, 187], "888m": 144, "77": 144, "430m": 144, "502m": 144, "161m": 144, "850": 144, "377m": 144, "386": [144, 163, 193], "index_select": 144, "000u": [144, 238], "986": 144, "420m": 144, "703": 144, "656": [144, 258], "963": 144, "864m": 144, "_mkl_linear": 144, "231": [144, 231, 238], "573m": [144, 238], "992m": 144, "336": [144, 238], "642m": 144, "graph_0_cpp_fused_constant_pad_nd_embedding_0": 144, "915": 144, "911": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_151": 144, "901": [144, 185], "graph_0_cpp_fused__mkl_linear_add_mul_relu_226": 144, "899": [144, 256], "graph_0_cpp_fused__mkl_linear_add_mul_relu_361": 144, "898": [144, 256], "graph_0_cpp_fused__mkl_linear_add_mul_relu_121": 144, "895": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_31": 144, "893": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_76": 144, "892": [144, 158, 231, 256], "graph_0_cpp_fused__mkl_linear_add_mul_relu_256": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_346": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_241": 144, "891": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_316": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_91": 144, "890": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_106": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_211": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_61": 144, "889": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_286": 144, "graph_0_cpp_fused_": 144, "63x": 144, "cblas_sgemm_comput": 144, "339m": 144, "94x": 144, "cpp_fused__mkl_linear_add_mul_relu_151": 144, "clrlgu27q4ggd472umdzwsu6qcpqxcuusjxqvx2hwitjbujiiz7z": 144, "in_out_ptr0": 144, "in_ptr2": 144, "in_ptr3": 144, "arrayref": 144, "omp": [144, 176], "num_thread": [144, 231, 246], "16384l": 144, "512l": 144, "loadu": 144, "tmp5": 144, "tmp7": 144, "tmp4": 144, "tmp6": 144, "tmp8": 144, "neck": 144, "arg_0": 144, "arg_1": 144, "arg_2": 144, "arg_3": 144, "arg_4": 144, "add_0": 144, "add_1": 144, "mul_1": 144, "add_2": 144, "16384": [144, 231], "inductor_func": 144, "780875144992024": 144, "9588955780491233": 144, "0286805751604735": 144, "smallest": [144, 156], "solid": 144, "analyt": [144, 260, 269], "hotspot": [144, 176, 177], "phenomenon": 144, "inductor_debug_cpu": 144, "jax": [145, 150, 205], "compute_jac": 145, "xp": 145, "jacobian_row": [145, 205], "unit_vector": 145, "rid": [145, 216], "vjp_fn": [145, 150], "ft_jacobian": 145, "argnum": 145, "millisecond": [145, 155, 187, 223, 247], "get_perf": [145, 154], "first_descriptor": [145, 154], "second_descriptor": [145, 154], "final_gain": [145, 154], "no_vmap_tim": [145, 154], "with_vmap_tim": [145, 154], "ft_jac_weight": 145, "ft_jac_bia": 145, "rigor": [145, 234], "taller": 145, "din": 145, "using_fwd": 145, "using_bwd": 145, "jacfwd_tim": 145, "jacrev_tim": 145, "hessiani": 145, "overwhelm": 145, "hess_api": 145, "hess_fwdfwd": 145, "hess_revrev": 145, "compute_batch_jacobian": 145, "batch_jacobian0": 145, "predict_with_output_sum": 145, "batch_jacobian1": 145, "movedim": 145, "compute_batch_hessian": 145, "batch_hess": 145, "hvp_revrev": 145, "result_hvp_revrev": 145, "jacobians_hessian": 145, "yuansong": 146, "feng": [146, 155], "steven": 146, "guo": 146, "cheatsheet": 146, "companion": 146, "bro": 146, "dequ": [146, 160], "framestack": 146, "ne": [146, 165, 173, 238], "nes_pi": 146, "joypadspac": 146, "gym_super_mario_bro": 146, "tube": 146, "mushroom": 146, "supermariobro": 146, "new_step_api": 146, "apply_api_compat": 146, "next_stat": [146, 160], "trunc": 146, "240": [146, 163, 238], "pipe": 146, "sky": 146, "grayscaleobserv": 146, "resizeobserv": 146, "skipfram": 146, "movement": 146, "_skip": 146, "total_reward": 146, "trunk": 146, "observationwrapp": 146, "obs_shap": 146, "observation_spac": 146, "permute_orient": 146, "antialia": 146, "num_stack": 146, "exploration_r": 146, "marionet": 146, "state_dim": 146, "dnn": [146, 238], "exploration_rate_decai": 146, "99999975": 146, "exploration_rate_min": 146, "curr_step": 146, "5e5": 146, "lazyfram": 146, "action_idx": 146, "__array__": 146, "first_if_tupl": 146, "ddqn": 146, "output_dim": 146, "__build_cnn": 146, "q_target": 146, "3136": 146, "_e": 146, "argmax_": 146, "td_target": 146, "td_estim": 146, "current_q": 146, "q_onlin": 146, "next_state_q": 146, "best_act": 146, "next_q": 146, "td_t": 146, "td_e": 146, "leftarrow": 146, "nabla": [146, 262, 271], "00025": 146, "update_q_onlin": 146, "sync_q_target": 146, "save_path": 146, "mario_net_": 146, "chkpt": 146, "burnin": 146, "1e4": 146, "learn_everi": 146, "sync_everi": 146, "td_est": 146, "td_tgt": 146, "metriclogg": 146, "save_log": 146, "episod": [146, 160, 161, 163], "meanreward": 146, "meanlength": 146, "meanloss": 146, "meanqvalu": 146, "timedelta": 146, "ep_rewards_plot": 146, "reward_plot": 146, "ep_lengths_plot": 146, "length_plot": 146, "ep_avg_losses_plot": 146, "loss_plot": 146, "ep_avg_qs_plot": 146, "q_plot": 146, "ep_reward": [146, 161, 163], "ep_length": 146, "ep_avg_loss": 146, "ep_avg_q": 146, "moving_avg_ep_reward": 146, "moving_avg_ep_length": 146, "moving_avg_ep_avg_loss": 146, "moving_avg_ep_avg_q": 146, "init_episod": 146, "record_tim": 146, "log_step": 146, "curr_ep_reward": 146, "curr_ep_length": 146, "curr_ep_loss": 146, "curr_ep_q": 146, "curr_ep_loss_length": 146, "log_episod": 146, "mean_ep_reward": 146, "mean_ep_length": 146, "mean_ep_loss": 146, "mean_ep_q": 146, "last_record_tim": 146, "time_since_last_record": 146, "8d": 146, "clf": [146, 160], "moving_avg_": 146, "_plot": 146, "flag_get": 146, "mario_rl_tutori": 146, "vitali": 147, "fedyunin": 147, "densest": 147, "4x4": 147, "10x3x16x16": 147, "memory_format": [147, 194, 199, 206, 207, 216, 218, 220, 223], "channels_last": [147, 177, 194, 199, 207, 218, 220, 223], "contiguous_format": 147, "minor": [147, 157, 163, 169, 220, 221], "ambigu": [147, 190, 191], "n1hw": 147, "contrari": [147, 156], "restrid": 147, "special_x": 147, "unintend": 147, "7603": 147, "apex": 147, "main_amp": 147, "resnet50": [147, 149, 158, 161, 176, 177, 220, 247, 253], "o2": 147, "opt_level": 147, "keep_batchnorm_fp32": 147, "nonetyp": 147, "loss_scal": 147, "cast_model_typ": 147, "patch_torch_funct": 147, "master_weight": 147, "125": [147, 238], "866": 147, "230": [147, 163, 171], "949": 147, "6735125184": 147, "6735": 147, "259": 147, "562": 147, "773": 147, "481": 147, "355": 147, "693": 147, "6968704462": 147, "6852": 147, "55": [147, 176, 197, 204, 231], "58": [147, 201, 221], "258": [147, 262, 271], "461": 147, "775": 147, "089": 147, "433": 147, "965": 147, "7877287269": 147, "7194": 147, "833": 147, "771": 147, "710": 147, "487": 147, "8285319805": 147, "7467": 147, "260": [147, 163], "380": 147, "770": 147, "090": 147, "525": 147, "908": 147, "7370464802": 147, "7447": 147, "360": 147, "623": 147, "555": 147, "728": 147, "7592862844": 147, "7472": 147, "917": 147, "345": [147, 178], "774": 147, "746": [147, 231], "115": [147, 185, 219], "9698858261": 147, "9218": 147, "324": 147, "597": 147, "659": 147, "2505953312": 147, "0879": 147, "767": [147, 223], "785": 147, "7579724789": 147, "7580": 147, "198": 147, "482": 147, "135": [147, 158, 231], "414": 147, "716": [147, 219, 231], "7007197738": 147, "7293": 147, "250": [147, 163, 238], "387": 147, "1010": 147, "516": 147, "7113101482": 147, "7233": 147, "667": 147, "197": 147, "340": 147, "1013": 147, "023": 147, "588": 147, "333": 147, "8943189979": 147, "7661": 147, "541": 147, "7113249302": 147, "9551": 147, "1011": 147, "163": 147, "683": 147, "574": 147, "8537774086": 147, "7716": 147, "279": 147, "453": 147, "7595844269": 147, "3413": 147, "429": 147, "827": 147, "743": [147, 173], "883": 147, "8196096420": 147, "4011": 147, "volta": [147, 230, 247], "mnasnet0_5": 147, "mnasnet0_75": 147, "mnasnet1_0": 147, "mnasnet1_3": 147, "mobilenet_v2": [147, 158, 178, 187, 188, 194, 206, 223, 224, 225, 228], "resnet152": 147, "resnet34": 147, "resnext50_32x4d": 147, "shufflenet_v2_x0_5": [147, 158], "shufflenet_v2_x1_0": [147, 158], "shufflenet_v2_x1_5": [147, 158], "shufflenet_v2_x2_0": [147, 158], "squeezenet1_0": 147, "squeezenet1_1": 147, "vgg11": 147, "vgg11_bn": 147, "vgg13": 147, "vgg13_bn": 147, "vgg16_bn": 147, "vgg19_bn": 147, "wide_resnet101_2": 147, "wide_resnet50_2": 147, "ic": 147, "lake": [147, 220], "densenet161": 147, "densenet169": 147, "googlenet": [147, 158, 228], "inception_v3": [147, 158], "resnext101_32x8d": [147, 158], "spite": 147, "contains_cl": 147, "print_input": 147, "check_wrapp": 147, "check_cl": 147, "was_cl": 147, "old_attr": 147, "exclude_funct": 147, "has_nam": 147, "nc11": 147, "memory_format_tutori": 147, "pytorch_lightn": 148, "lightningmodul": 148, "pl_logger": 148, "torchmetr": 148, "multiclass_accuraci": 148, "path_dataset": 148, "mnistmodel": 148, "tunabl": 148, "hidden_lay": [148, 178], "validation_step": 148, "prog_bar": 148, "configure_optim": 148, "prepare_data": 148, "mnist_train": 148, "mnist_val": 148, "run_training_job": 148, "mnist_model": 148, "enable_progress_bar": 148, "default_root_dir": 148, "tensorboardlogg": 148, "train_tim": 148, "log_metr": 148, "capture_output": 148, "val_accuraci": 148, "stitch": [149, 161, 162], "modelparallelresnet50": 149, "seq1": 149, "maxpool": [149, 157, 200], "seq2": 149, "layer4": [149, 157], "avgpool": [149, 157], "deterior": 149, "quantit": 149, "switch_backend": [149, 165], "num_repeat": 149, "mp_run_tim": 149, "mp_mean": 149, "mp_std": 149, "rn_run_tim": 149, "rn_mean": 149, "rn_std": 149, "fig_nam": 149, "yerr": 149, "center": [149, 160, 168, 229, 247], "ecolor": 149, "capsiz": 149, "set_ylabel": 149, "set_xtick": [149, 157], "mp_vs_rn": 149, "idl": [149, 161, 168], "pipelineparallelresnet50": 149, "split_siz": 149, "s_next": 149, "s_prev": 149, "pp_run_tim": 149, "pp_mean": 149, "pp_std": 149, "mp_vs_rn_vs_pp": 149, "destin": [149, 163, 212], "errorbar": 149, "ro": 149, "set_xlabel": 149, "split_size_tradeoff": 149, "prev": 149, "model_parallel_tutori": 149, "jacrev": 150, "21632": 150, "x_test": 150, "fnet_singl": 150, "j_": 150, "empirical_ntk_jacobian_contract": 150, "jac1": 150, "jac2": 150, "einsum": 150, "naf": 150, "mbf": 150, "nmab": 150, "j1": 150, "j2": 150, "diagon": 150, "einsum_expr": 150, "maf": 150, "nma": 150, "asymptot": 150, "i_o": 150, "i_": 150, "e_o": 150, "textrm": 150, "_o": 150, "empirical_ntk_ntk_vp": 150, "get_ntk": 150, "func_x1": 150, "func_x2": 150, "get_ntk_slic": 150, "nmkk": 150, "nmk": 150, "tensorfloat": 150, "sacrific": [150, 194], "allow_tf32": 150, "result_from_jacobian_contract": 150, "result_from_ntk_vp": 150, "luck": [150, 152], "neural_tangent_kernel": 150, "deprec": [151, 168, 180, 217], "homepag": [151, 180], "ooz": 152, "_might_": 152, "vit_l_16": 152, "2p": 152, "_record_memory_histori": 152, "_snapshot": 152, "memory_viz": 152, "devot": 152, "bat": 152, "2gb": [152, 158], "6gb": 152, "foreach": 152, "reveal": [152, 164, 172, 173, 229, 231], "silver": 152, "bullet": 152, "sizabl": 152, "tantamount": 152, "lora": 152, "unlock": [152, 182, 185, 216], "optimizer_dict": 152, "optimizer_hook": 152, "neat": 152, "lrschedul": [152, 251], "convinc": 152, "slate": 152, "bwd": 152, "likewis": 152, "woohoo": 152, "apart": 152, "shrunk": 152, "0gb": 152, "optimizer_step_in_backward_tutori": 152, "lezcano": 153, "surprisingli": 153, "ill": 153, "singular": [153, 164], "frobeniu": 153, "spectral": 153, "lipschitz": 153, "x\u1d40": 153, "triangular": 153, "linearsymmetr": 153, "n_featur": 153, "reimplement": [153, 156], "register_parametr": 153, "skew": [153, 168], "unparametr": 153, "nparametr": 153, "moduledict": [153, 201], "parametrizationlist": [153, 201], "weight_orig": [153, 156], "noisyparametr": 153, "caylei": 153, "cayleymap": 153, "linalg": 153, "spd": 153, "matrixexponenti": 153, "matrix_exp": 153, "layer_orthogon": 153, "layer_spd": 153, "eigvalsh": 153, "right_invers": 153, "cayley_transform": 153, "matrix_map": 153, "neg_": 153, "pruningparametr": 153, "p_drop": 153, "full_lik": [153, 189], "bernoulli": 153, "niniti": 153, "remove_parametr": 153, "unconstrain": [153, 173, 174], "parametri": 153, "leave_parametr": 153, "privaci": [154, 156], "simplecnn": 154, "compute_grad": 154, "compute_sample_grad": 154, "sample_grad": 154, "per_sample_grad": 154, "named_buff": [154, 156], "compute_loss": 154, "ft_compute_grad": 154, "ft_compute_sample_grad": 154, "ft_per_sample_grad": 154, "25x": [154, 171, 201], "second_r": 154, "first_r": 154, "opacu": 154, "tian": 155, "processgroupnccl": 155, "processgroupgloo": 155, "processgroupmpi": 155, "ucc": 155, "oneccl": [155, 247], "trainum": 155, "emerg": 155, "backenddummi": 155, "chrono": 155, "allgatheropt": 155, "allreduceopt": 155, "workdummi": 155, "optyp": 155, "recvanysourc": 155, "future_": 155, "iscomplet": 155, "issuccess": 155, "kunsettimeout": 155, "virtual": [155, 237], "getfutur": 155, "outputtensorvec": 155, "listtyp": 155, "tensortyp": 155, "markcomplet": 155, "createbackenddummi": 155, "backenddummyconstructor": 155, "__attribute__": 155, "register_backend": 155, "cpp_function": [155, 231], "libraries_dir": 155, "dummy_collect": 155, "michela": 156, "paganini": 156, "biolog": 156, "batteri": 156, "lucki": 156, "subnetwork": 156, "lotteri": 156, "ticket": 156, "destruct": [156, 177], "0a0": [156, 188, 206], "8e8a5e0": 156, "lecun": 156, "1998": 156, "nelement": 156, "unprun": 156, "basepruningmethod": 156, "adequ": [156, 159], "random_unstructur": 156, "_orig": 156, "intact": [156, 161, 244], "weight_mask": 156, "_mask": 156, "forward_pre_hook": 156, "_forward_pre_hook": 156, "l1_unstructur": 156, "bias_orig": 156, "bias_mask": 156, "pruningcontain": 156, "compute_mask": 156, "ln_structur": 156, "_tensor_nam": 156, "perman": 156, "undo": 156, "new_model": [156, 157], "global_unstructur": 156, "parameters_to_prun": 156, "pruning_method": 156, "l1unstructur": 156, "induc": 156, "apply_mask": 156, "shouldn": 156, "unstructur": 156, "preprun": 156, "pruning_typ": 156, "foobarpruningmethod": 156, "default_mask": 156, "foobar_unstructur": 156, "pruning_tutori": 156, "zafar": 157, "takhirov": 157, "initializaion": 157, "unfreez": 157, "set_ytick": 157, "nrow": 157, "best_model_wt": 157, "current_row": 157, "current_col": 157, "lbl": 157, "jdx": 157, "model_f": 157, "isol": 157, "create_combined_model": 157, "model_fe_featur": 157, "new_head": 157, "default_qat_qconfig": 157, "model_ft_tun": 157, "model_quantized_and_train": 157, "heat": 158, "sink": [158, 262, 271], "5v": 158, "sd": 158, "card": [158, 164], "8gb": 158, "arm": [158, 219, 228], "64bit": 158, "aarch64": 158, "arm64": [158, 188, 204, 206, 218, 223], "raspberrypi": 158, "raspios_arm64": 158, "rpi": 158, "internet": 158, "sdcard": 158, "start_x": 158, "128m": 158, "gpu_mem": 158, "commment": 158, "camera_auto_detect": 158, "v4l2": 158, "reboot": 158, "video4linux2": 158, "video0": 158, "picamera": 158, "36fp": 158, "30fp": 158, "framer": 158, "cv2": 158, "cap": [158, 159, 168], "videocaptur": 158, "cap_prop_frame_width": 158, "cap_prop_frame_height": 158, "cap_prop_fp": 158, "bgr": 158, "chose": [158, 230], "mobilenet_v3_larg": 158, "109": 158, "233": [158, 163], "885": [158, 219], "204": [158, 219, 231], "195": [158, 163], "132": 158, "82": [158, 197, 219], "prequant": 158, "20fp": 158, "cap_v4l2": 158, "last_log": 158, "frame_count": 158, "htop": [158, 176], "mug": 158, "allevi": 158, "repetit": [159, 231], "maximis": 159, "clipppoloss": 159, "theta_k": 159, "pi_": 159, "shift": [159, 262, 271], "lingua": 159, "franca": 159, "normalparamextractor": 159, "replaybuff": 159, "samplerwithoutreplac": 159, "lazytensorstorag": 159, "tanhnorm": 159, "max_grad_norm": 159, "sub_batch_s": 159, "inner": [159, 177, 263, 272], "cardin": 159, "clip_epsilon": 159, "entropy_ep": 159, "deepmind": [159, 166], "interchang": 159, "panel": [159, 168], "inverteddoublependulum": 159, "transmit": [159, 262, 271], "gymwrapp": 159, "loos": 159, "supplementari": 159, "told": 159, "stringent": 159, "mu_": 159, "d_ob": 159, "d_action": 159, "mu": [159, 171, 262, 271], "policy_modul": 159, "distribution_kwarg": 159, "return_log_prob": 159, "discount": [159, 160, 161], "value_net": 159, "value_modul": 159, "datacollector": 159, "multisyncdatacollector": 159, "refil": [159, 223], "max_siz": 159, "value_target": 159, "advantage_modul": 159, "average_ga": 159, "critic_network": 159, "entropy_bonu": 159, "entropy_coef": 159, "critic_coef": 159, "loss_critic_typ": 159, "smooth_l1": 159, "eval_str": 159, "tensordict_data": 159, "data_view": 159, "subdata": 159, "loss_object": 159, "loss_crit": 159, "loss_entropi": 159, "cum_reward_str": 159, "stepcount_str": 159, "lr_str": 159, "horizon": 159, "eval_rollout": 159, "videorecord": 159, "reinforcement_ppo": 159, "tower": 160, "cart": 160, "pole": 160, "attach": [160, 195, 200, 209, 213], "upright": 160, "classic_control": 160, "decorrel": 160, "replaymemori": 160, "cyclic": 160, "formul": 160, "r_": 160, "t_0": 160, "r_t": 160, "uncertain": 160, "tempor": 160, "max_a": 160, "obei": 160, "bellman": 160, "huber": 160, "noisi": [160, 231, 246], "mathcal": 160, "le": [160, 165], "mathrm": 160, "n_observ": 160, "n_action": 160, "left0exp": 160, "right0exp": 160, "select_act": [160, 161, 163], "eps_start": 160, "eps_end": 160, "eps_decai": 160, "plot_dur": 160, "underneath": 160, "policy_net": 160, "target_net": 160, "amsgrad": 160, "steps_don": 160, "eps_threshold": 160, "episode_dur": 160, "show_result": 160, "durations_t": 160, "unfold": [160, 165], "optimize_model": 160, "s_t": 160, "a_t": 160, "19343": 160, "3343043": 160, "non_final_mask": 160, "non_final_next_st": 160, "state_batch": 160, "action_batch": 160, "reward_batch": 160, "next_state_valu": 160, "expected_state_action_valu": 160, "clip_grad_value_": 160, "num_episod": [160, 161], "i_episod": [160, 161, 163], "\u03b8": 160, "\u03c4": 160, "target_net_state_dict": 160, "policy_net_state_dict": 160, "reinforcement_q_learn": 160, "unblock": 161, "callback": 161, "update_and_fetch_model": 161, "future_model": 161, "notifi": [161, 168], "batch_update_s": 161, "batchupdateparameterserv": 161, "curr_update_s": 161, "ps_rref": 161, "setti": 161, "set_result": 161, "get_worker_info": [161, 163], "543": 161, "affine1": [161, 163], "affine2": [161, 163], "action_scor": [161, 163], "select_action_batch": 161, "run_episod": [161, 163], "agent_rref": [161, 163], "start_step": 161, "curr_reward": 161, "saved_log_prob": [161, 163], "rob": 161, "ob_rref": [161, 163], "running_reward": [161, 163], "ob_rank": [161, 163], "ob_info": [161, 163], "observer_nam": [161, 163], "future_act": 161, "pending_st": 161, "select_acion": 161, "ob_id": [161, 163], "oberv": [161, 163], "policy_loss": [161, 163], "n_episod": 161, "print_log": 161, "rank0": [161, 163], "agent_nam": [161, 163], "tlast": [161, 163], "taverag": [161, 163], "next_devic": 162, "call_method": 162, "remote_method": 162, "foo_inst": 162, "parameterserv": 162, "input_devic": 162, "intention": [162, 163, 212], "miscellan": 162, "get_dist_gradi": 162, "get_gradi": 162, "get_param_rref": 162, "cid": 162, "cpu_grad": 162, "k_cpu": 162, "v_cpu": 162, "paramt": 162, "param_rref": [162, 163], "run_parameter_serv": 162, "param_serv": 162, "global_lock": 162, "get_parameter_serv": 162, "parameter_serv": 162, "offlin": 162, "trainernet": 162, "param_server_rref": 162, "get_global_param_rref": 162, "paramat": 162, "run_training_loop": 162, "nueral": 162, "get_accuraci": 162, "correct_sum": 162, "trainer_": 162, "traffic": [162, 176], "listen": [162, 213], "subprocess": [162, 231, 247], "rpc_parameter_serv": 162, "solver": 163, "formatter_class": 163, "argumentdefaultshelpformatt": 163, "report_reward": 163, "_max_episode_step": 163, "finfo": 163, "reward_threshold": 163, "finish_episod": 163, "min_reward": 163, "distinguish": [163, 169], "surpass": 163, "ctrl": 163, "131": 163, "130": [163, 219], "137": 163, "140": 163, "104": 163, "170": [163, 178], "126": [163, 173], "180": [163, 173, 174, 219, 231], "213": 163, "322": [163, 219], "165": 163, "272": [163, 219], "210": 163, "168": [163, 173], "184": [163, 185], "208": [163, 171, 229], "270": [163, 171], "405": 163, "280": 163, "290": 163, "464": 163, "3163778435275": 163, "vehicl": 163, "rnnmodel": 163, "emb_table_rref": 163, "decoder_rref": 163, "_remote_method": 163, "rremot": 163, "_parameter_rref": 163, "run_train": 163, "nindic": 163, "driss": 164, "guessou": 164, "flashattent": 164, "benchmark_torch_function_in_microsecond": [164, 210], "max_sequence_len": 164, "embed_dimens": 164, "sdpbackend": 164, "sdpa_kernel": 164, "math_tim": 164, "flash_attent": 164, "flash_tim": 164, "flash": [164, 184], "efficient_attent": 164, "efficient_tim": 164, "efficientattent": 164, "andrej": 164, "karpathi": 164, "nanogpt": 164, "causalselfattent": 164, "is_caus": [164, 193], "c_attn": 164, "c_proj": 164, "resid_dropout": 164, "query_project": 164, "head_dim": 164, "attn_mask": 164, "dropout_p": [164, 165, 193], "heads_per_dim": 164, "generate_rand_batch": 164, "pad_percentag": 164, "seq_len_list": 164, "gauss": 164, "nested_tensor": [164, 193], "random_nt": 164, "random_dens": 164, "nt": [164, 193], "166": 164, "616": 164, "726": 164, "amaz": 164, "record_shap": [164, 168, 238], "compili": 164, "cuda_time_tot": [164, 238], "compiled_causal_attention_trac": 164, "concentr": 164, "6090": 164, "49m": 164, "3273": 164, "17m": 164, "commit": [164, 196, 207], "ae3a8d5": 164, "causal_upper_left": 164, "causal_lower_right": 164, "sequence_length_q": 164, "sequence_length_kv": 164, "upper_left_bia": 164, "lower_right_bia": 164, "issubclass": 164, "causalbia": 164, "corner": 164, "attn_scor": 164, "out_upper_left": 164, "out_lower_right": 164, "out_is_caus": 164, "compiled_sdpa": 164, "scaled_dot_product_attention_tutori": 164, "french": 165, "il": 165, "est": [165, 168, 265, 274], "peindr": 165, "tableau": 165, "paint": 165, "pourquoi": 165, "pa": 165, "essay": 165, "vin": 165, "delicieux": 165, "delici": 165, "wine": 165, "poet": 165, "romancier": 165, "novelist": 165, "vou": 165, "trop": 165, "maigr": 165, "skinni": 165, "condens": [165, 209, 246], "phrase": [165, 262, 271], "\u5b57\u7b26\u7ea7": 165, "__future__": [165, 171, 237, 244], "unicode_liter": 165, "print_funct": 165, "manyth": 165, "anki": 165, "fra": 165, "froid": 165, "lang": [165, 208, 261, 270], "n_word": [165, 252], "readlang": 165, "lang1": 165, "lang2": 165, "input_lang": [165, 252], "output_lang": [165, 252], "apostroph": 165, "eng_prefix": 165, "preparedata": 165, "je": 165, "sui": 165, "noir": 165, "decoderrnn": 165, "target_tensor": 165, "forward_step": 165, "burden": [165, 247], "attn_appli": 165, "bahdanauattent": 165, "ua": 165, "va": 165, "attndecoderrnn": [165, 252], "input_gru": 165, "tensorfromsent": 165, "tensorsfrompair": 165, "get_dataload": 165, "inp_id": 165, "tgt_id": 165, "exhibit": [165, 247], "coher": 165, "grammar": 165, "wander": 165, "asminut": 165, "es": 165, "n_epoch": 165, "plot_loss": 165, "print_loss_tot": 165, "plot_loss_tot": 165, "plot_loss_avg": 165, "showplot": 165, "decoder_attn": 165, "decoded_id": 165, "judgement": 165, "evaluaterandomli": 165, "showattent": 165, "bone": 165, "evaluateandshowattent": 165, "aussi": 165, "grand": 165, "son": 165, "pere": 165, "fatigu": 165, "pour": 165, "conduir": 165, "desol": 165, "idiot": 165, "reellement": 165, "fier": 165, "iot": 165, "word2vec": 165, "glove": 165, "autoencod": 165, "seq2seq_translation_tutori": 165, "ghassen": 166, "hamrouni": 166, "geometr": 166, "invari": [166, 190], "urllib": 166, "build_open": 166, "addhead": 166, "mozilla": 166, "install_open": 166, "boil": 166, "affine_grid": 166, "grid_sampl": 166, "conv2_drop": [166, 221], "regressor": 166, "fc_loc": 166, "size_averag": 166, "convert_image_np": 166, "visualize_stn": 166, "transformed_input_tensor": 166, "in_grid": 166, "out_grid": 166, "axarr": 166, "spatial_transformer_tutori": 166, "speech_recognition_pipeline_tutori": 167, "tensorboard_trace_handl": 168, "batch_data": [168, 171], "torch_tb_profil": 168, "safari": 168, "pytorch_profil": 168, "breakdown": 168, "dropdown": 168, "callstack": 168, "multiprocessor": 168, "occup": 168, "tooltip": 168, "toolbar": 168, "keyboard": [168, 262, 271], "mous": [168, 262, 271], "resnet18_4work": 168, "76m": [168, 182], "132m": 168, "torchtbprofil": 168, "memory_demo_1_10": 168, "gpu0": 168, "distributed_bert": 168, "rocm": 168, "docker": [168, 257], "profiler_tutori": 168, "test_cifar10": 168, "vi": [168, 262, 271], "kfd": 168, "sys_ptrac": 168, "seccomp": 168, "unconfin": 168, "shm": [168, 212], "8g": 168, "apt": [168, 171, 208], "libjpeg": 168, "rocm5": 168, "scp": 168, "tensorboard_profiler_tutori": 168, "plot_classes_pr": 169, "four_fashion_mnist_imag": 169, "datapoint": 169, "night": [169, 263, 272], "thoroughli": 169, "clearer": 169, "images_to_prob": 169, "preds_tensor": 169, "el": 169, "add_figur": 169, "global_step": [169, 245], "scroll": [169, 260, 264, 269, 273], "test_siz": 169, "class_prob": 169, "class_probs_batch": 169, "test_prob": 169, "test_label": 169, "add_pr_curve_tensorboard": 169, "class_index": 169, "tensorboard_truth": 169, "tensorboard_prob": 169, "add_pr_curv": 169, "poke": 169, "tacotron2_pipeline_tutori": 170, "wsi": 171, "tissu": 171, "biopsi": 171, "scanner": 171, "pathologist": 171, "cancer": 171, "microscop": 171, "tumor": 171, "000x100": 171, "25x0": 171, "micron": 171, "pyramid": 171, "magnif": 171, "sketch": 171, "histoencod": 171, "jopo666": 171, "openjpeg": 171, "openslid": 171, "pixman": 171, "qq": 171, "libopenjp2": 171, "libpixman": 171, "echo": [171, 208, 262, 271], "brew": 171, "hashandl": 171, "nopython": 171, "shutil": 171, "zipfil": 171, "mpl": 171, "cm": 171, "accuracy_scor": 171, "confusion_matrix": 171, "patch_predictor": 171, "iopatchpredictorconfig": 171, "misc": 171, "download_data": 171, "grab_files_from_dir": 171, "overlay_prediction_mask": 171, "wsicor": 171, "wsiread": 171, "rcparam": 171, "dpi": 171, "facecolor": 171, "dark": 171, "on_gpu": 171, "suppress": 171, "overli": 171, "suppress_console_output": 171, "redirect_stderr": 171, "stringio": 171, "abnorm": [171, 226], "global_save_dir": 171, "mainten": 171, "rmdir": 171, "dir_path": 171, "is_dir": 171, "rmtree": 171, "kather": 171, "100k": 171, "wsi_path": 171, "sample_wsi": 171, "sv": 171, "patches_path": 171, "kather100k": 171, "weights_path": 171, "dc": 171, "warwick": 171, "uk": 171, "tcga": 171, "3l": 171, "aa1b": 171, "01z": 171, "dx1": 171, "8923a151": 171, "a690": 171, "40b7": 171, "9e5a": 171, "fcbedfc2394f": 171, "extractal": 171, "pc": 171, "patch_list": 171, "dataset_path": 171, "image_ext": 171, "tif": 171, "label_dict": 171, "glass": 171, "mucosa": 171, "deb": 171, "debri": 171, "tum": 171, "colorect": 171, "adenocarcinoma": 171, "epithelium": 171, "adi": 171, "adipos": 171, "muc": 171, "mucu": 171, "stroma": 171, "lym": 171, "lymphocyt": 171, "dataset_class_path": 171, "patch_list_single_class": 171, "file_typ": 171, "299": 171, "211": [171, 219, 238], "176": 171, "178": 171, "209": 171, "232": [171, 231], "modelabc": 171, "tia": 171, "toolbox": 171, "readthedoc": 171, "_autosummari": 171, "models_abc": 171, "preproc_func": 171, "predictor": [171, 178], "pretrained_weight": 171, "cnnmodel": 171, "conf": [171, 221, 260, 267, 269, 276], "df_cm": 171, "215": [171, 177], "993000": 171, "000000": 171, "00000": 171, "988636": 171, "011364": 171, "991304": 171, "008696": 171, "996503": 171, "003497": 171, "004808": 171, "990385": 171, "988764": 171, "011236": 171, "996296": 171, "003704": 171, "004785": 171, "985646": 171, "004310": 171, "99569": 171, "input_resolut": 171, "patch_input_shap": 171, "stride_shap": 171, "wsi_ioconfig": 171, "mpp": 171, "return_prob": 171, "ioconfig": 171, "merge_predict": 171, "wsi_output": 171, "wsi_predict": 171, "overlai": 171, "overlay_patch_predict": 171, "overview_resolut": 171, "overview_unit": 171, "wsi_overview": 171, "slide_thumbnail": 171, "label_color_dict": 171, "get_cmap": 171, "set1": 171, "pred_map": 171, "label_info": 171, "return_ax": 171, "histolog": 171, "pohjonen": 171, "joona": 171, "helsinki": 171, "umap": 171, "semantic_segmentor": 171, "deepfeatureextractor": 171, "iosegmentorconfig": 171, "histoencwrapp": 171, "histoenc": 171, "feat_extract": 171, "extract_featur": 171, "num_block": 171, "avg_pool": 171, "infer_batch": 171, "img_patches_devic": 171, "create_encod": 171, "prostate_medium": 171, "662": 171, "446": 171, "605": 171, "169": [171, 219], "155": [171, 173], "output_resolut": 171, "patch_output_shap": 171, "auto_generate_mask": 171, "otsu": 171, "num_loader_work": 171, "num_postproc_work": 171, "wsi_featur": 171, "umap_reduc": 171, "n_neighbor": 171, "n_compon": 171, "manhattan": 171, "random_st": 171, "fit_transform": 171, "npy": 171, "5mpp": 171, "4mpp": 171, "william": [172, 173, 174], "wen": [172, 173, 174], "modern": [172, 187, 194], "h100": 172, "elsewher": 172, "gpu_ok": 172, "device_cap": 172, "get_device_cap": [172, 210, 211, 255], "torchinductor": [172, 186, 199], "torchtriton": 172, "cu117": 172, "opt_foo1": 172, "opt_foo2": 172, "opt_mod": 172, "generate_data": 172, "init_model": 172, "model_opt": 172, "eager_tim": 172, "compile_tim": 172, "eager_m": 172, "compile_m": 172, "train_opt": 172, "dashboard": [172, 245], "struggl": 172, "fn1": 172, "fn2": 172, "test_fn": 172, "out1": [172, 234], "out2": [172, 234], "inp1": [172, 173, 174], "inp2": [172, 173, 174], "traced_f1": 172, "print_exc": [172, 173, 174], "fx_f1": 172, "concrete_arg": 172, "compile_f1": 172, "f2": 172, "script_f2": 172, "compile_f2": 172, "f3": 172, "dct": 172, "traced_f3": 172, "disallow": 172, "compile_f3": 172, "unoptim": 172, "custom_backend": 172, "example_input": [172, 179, 181, 182, 183, 197, 198, 199, 200, 247], "print_tabular": 172, "opt_model": 172, "opt_bar": 172, "resum": [172, 198, 214, 241], "explain_output": 172, "torch_compile_tutori": 172, "zhengxu": [173, 174], "angela": [173, 174], "exportedprogram": [173, 174, 197], "synonym": [173, 174], "dynamic_shap": [173, 174], "exportedgraph": [173, 174], "exported_mod": [173, 174], "exported_program": 173, "2178": 173, "4397": 173, "4774": 173, "0943": [173, 185], "4656": 173, "8333": 173, "5912": 173, "4689": 173, "2122": 173, "1996": 173, "4628": 173, "7495": 173, "3900": 173, "4515": 173, "8187": 173, "8938": 173, "5753": 173, "7709": 173, "8081": 173, "8002": 173, "9441": 173, "5711": 173, "0921": [173, 201], "3438": 173, "3268": 173, "4640": 173, "2434": 173, "7253": 173, "6886": 173, "6982": 173, "5100": [173, 246], "2279": 173, "2951": 173, "1055": 173, "2088": 173, "5022": 173, "1468": [173, 231], "5220": 173, "1592": 173, "9096": 173, "4248": 173, "2142": 173, "relubackward0": 173, "graph_modul": [173, 174], "f32": 173, "arg2_1": 173, "arg3_1": 173, "torch_export_nightly_tutori": 173, "exportgraphsignatur": 173, "inputspec": 173, "inputkind": 173, "tensorargu": 173, "user_input": 173, "outputspec": 173, "outputkind": 173, "user_output": 173, "graph_signatur": [173, 174], "range_constraint": [173, 174], "equality_constraint": 173, "inputs_to_paramet": 173, "inputs_to_buff": 173, "buffers_to_mut": 173, "backward_signatur": 173, "assertion_dep_token": 173, "bad1": [173, 174], "usererror": 173, "control_flow": [173, 174], "cond": [173, 174], "bad2": [173, 174], "ban": 173, "aot_export": 173, "bad3": [173, 174], "call_id": 173, "tensorvari": 173, "bad4": [173, 174], "builtinvari": 173, "constantvari": 173, "bad1_fix": 173, "true_fn": [173, 174], "false_fn": [173, 174], "exported_bad1_fix": [173, 174], "8415": 173, "5403": 173, "predic": [173, 174], "operand": [173, 174], "mymodule2": [173, 174], "mod2": [173, 174], "exported_mod2": [173, 174], "dynamic_shapes_example1": 173, "inp1_dim0": [173, 174], "inp1_dim1": [173, 174], "dynamic_shapes1": [173, 174], "exported_dynamic_shapes_example1": [173, 174], "0828": 173, "8190": 173, "0037": 173, "0221": 173, "0898": 173, "8182": 173, "9165": 173, "3572": 173, "7422": 173, "4423": 173, "2497": 173, "1912": 173, "0522": 173, "4442": 173, "4188": 173, "8161": 173, "inp1_dim1_bad": [173, 174], "dynamic_shapes1_bad": [173, 174], "inp3": [173, 174], "dynamic_shapes_example2": 173, "inp2_dim0": [173, 174], "inner_dim": [173, 174], "inp3_dim1": [173, 174], "dynamic_shapes2": [173, 174], "exported_dynamic_shapes_example2": [173, 174], "5352": 173, "3836": 173, "8961": 173, "3412": 173, "3891": 173, "4326": 173, "1697": [173, 258], "inp4": [173, 174], "inp5": [173, 174], "dynamic_shapes_example3": [173, 174], "dynamic_shapes3": [173, 174], "inp4_dim": [173, 174], "inp5_dim": [173, 174], "violat": 173, "inp4_dim0": [173, 174], "inp5_dim0": [173, 174], "inp5_dim1": [173, 174], "torch_log": [173, 174, 251], "inp4_dim1": [173, 174], "suggested_fix": [173, 174], "shared_dim": [173, 174], "dynamic_shapes3_fix": [173, 174], "exported_dynamic_shapes_example3": [173, 174], "1510": 173, "1174": 173, "5075": 173, "3566": 173, "2102": 173, "2033": 173, "3611": 173, "9041": 173, "2987": 173, "5751": 173, "1508": 173, "4470": 173, "2460": 173, "9288": 173, "1764": 173, "5879": 173, "5107": 173, "0845": 173, "3962": 173, "4359": 173, "2877": 173, "2839": 173, "3742": 173, "5569": 173, "0485": 173, "1028": 173, "4692": 173, "3837": 173, "8744": 173, "4191": 173, "9387": 173, "8480": 173, "9857": 173, "7783": 173, "2220": 173, "5934": 173, "9793": 173, "1118": 173, "9817": 173, "6156": 173, "2070": 173, "6976": 173, "8177": 173, "4002": 173, "3291": 173, "0860": 173, "7406": 173, "6509": 173, "1847": 173, "6311": 173, "8144": 173, "0439": 173, "9141": 173, "8778": 173, "5971": 173, "8781": 173, "1364": 173, "3096": 173, "0822": 173, "0587": 173, "3681": 173, "_log": [173, 174, 211, 255], "set_log": [173, 174, 211, 255], "657": 173, "symbolic_convert": 173, "374": 173, "658": 173, "symbolic_shap": 173, "create_env": 173, "663": 173, "create_symbol": 173, "s0": 173, "665": 173, "s1": [173, 192], "9223372036854775806": 173, "677": [173, 184], "680": 173, "734": [173, 238], "_meta_registr": 173, "1891": 173, "meta_mm": 173, "738": 173, "return_valu": 173, "output_graph": 173, "dynamo_normalization_capturing_compil": 173, "747": [173, 210], "produce_guard": 173, "839": 173, "eval_fram": 173, "847": 173, "rangeconstraint": 173, "min_val": 173, "max_val": 173, "inputdim": 173, "my_custom_librari": [173, 174], "compositeexplicitautograd": [173, 174], "custom_op_meta": [173, 174], "custom_op_exampl": 173, "exported_custom_op_exampl": [173, 174], "print_read": [173, 174], "5947": 173, "8062": 173, "6231": 173, "6615": 173, "5412": 173, "evidenc": [173, 174], "_schema": [173, 174], "is_mut": [173, 174], "run_decomposit": [173, 174], "decomposition_t": [173, 174], "_op": [173, 174], "operatorbas": [173, 174], "core_ir_ep": [173, 174], "num_us": 173, "placehold": 173, "get_decomposit": [173, 174], "_decomp": [173, 174], "decomp_t": [173, 174], "cond_pred": [173, 174], "stronger": 174, "safeti": 174, "bad2_nonstrict": 174, "bad3_nonstrict": 174, "bad4_nonstrict": 174, "bad1fix": 174, "dynamicshapesexample1": 174, "dynamicshapesexample2": 174, "deriveddimexample1": 174, "dimx": 174, "dimi": 174, "derived_dynamic_shapes1": 174, "derived_dim_example1": 174, "deriveddimexample2": 174, "dz": 174, "dy": 174, "derived_dynamic_shapes2": 174, "derived_dim_example2": 174, "dynamicshapesexample3": 174, "customopexampl": 174, "aotinductor": 174, "tensorrt": [174, 179], "so_path": 174, "aot_compil": 174, "compiler_aot_inductor": 174, "aot_load": 174, "torch_export_tutori": 174, "dlrm": [175, 247], "dmp": 175, "datastructur": 175, "k80": 175, "appripri": 175, "product_t": 175, "user_t": 175, "101": 175, "202": 175, "303": 175, "product_eb": 175, "jag": [175, 193], "404": 175, "505": 175, "606": 175, "keyedtensor": 175, "3x64": 175, "pooled_embed": 175, "criteo": 175, "terabyt": 175, "jean": [176, 177], "saroufim": [176, 177], "ashok": [176, 177], "emani": [176, 177], "tl": [176, 185, 254], "dr": [176, 185], "numa": [176, 177], "upi": 176, "fma": [176, 177], "hyperthread": 176, "contend": 176, "ultra": 176, "cpu_launcher_en": [176, 177], "toepliz": 176, "toggl": [176, 258], "use_logical_cor": 176, "vtune": [176, 251], "8180m": 176, "omp_num_thread": [176, 247], "982": 176, "__kmp_fork_barri": 176, "589": 176, "neglig": 176, "887": 176, "530": 176, "lscpu": 176, "112": [176, 185, 204, 238], "llc": [176, 177], "asid": 176, "get_num_thread": [176, 231], "node_id": [176, 177], "base_handl": 176, "56x4": 176, "affinit": [176, 177], "amplifi": 176, "slot": 176, "uop": [176, 177], "__sched_yield": 176, "disassoci": 176, "exacerb": 176, "core_51": 176, "8180": 176, "tid": 176, "97097": 176, "cpu_81": 176, "cpu_14": 176, "cpu_5": 176, "cpu_70": 176, "cpu_100": 176, "cpu_24": 176, "num_physical_cor": 176, "94290": 176, "cpu_78": 176, "cpu_108": 176, "microarchitectur": 176, "onednn": [176, 177, 199, 207, 219, 220, 226], "immens": [176, 177], "ning": [176, 177], "jing": [176, 177], "xu": [176, 177, 187, 188], "20x": 177, "toplev": 177, "pmu": 177, "mispredict": 177, "hierarch": 177, "retir": 177, "specul": 177, "cancel": [177, 231, 247], "untun": 177, "subsystem": 177, "l3": 177, "dram": 177, "starv": 177, "wll": 177, "uncomplet": 177, "oneapi": [177, 226], "deconvolut": [177, 229], "emit_itt": [177, 226], "intel_extension_for_pytorch": [177, 220, 253], "ipex_en": 177, "submetr": 177, "spinlock": 177, "arena": 177, "enable_tcmalloc": 177, "enable_jemalloc": 177, "use_default_alloc": 177, "range_push": [177, 226], "step_": 177, "range_pop": [177, 226], "step_x": 177, "step_99": 177, "308": 177, "261": 177, "843": 177, "8960": 177, "cpu_launcher_arg": 177, "688": 177, "251": 177, "401": 177, "392": [177, 210], "bf16": [177, 184, 199, 207, 219], "ipex": [177, 220, 251, 253], "8x": 177, "851": 177, "310": [177, 231], "7x": [177, 184], "803": 177, "248": 177, "eltwis": 177, "elementwis": [177, 247, 255], "nhwc": [177, 194, 220, 223], "disable_auto_channels_last": 177, "reorder": [177, 207, 219, 226, 247], "731": [177, 256], "634": 177, "fudan": 178, "databas": 178, "pedestrian": 178, "keypoint": 178, "tv_tensor": 178, "boundingbox": 178, "x0": 178, "y0": 178, "image_id": 178, "iscrowd": 178, "compliant": 178, "pycocotool": 178, "gautamchitni": 178, "cocoapi": 178, "cocodataset": 178, "pythonapi": 178, "get_height_and_width": 178, "ci": 178, "upenn": 178, "jshi": 178, "ped_html": 178, "pennfudanp": 178, "pedmask": 178, "fudanped00001_mask": 178, "fudanped00002_mask": 178, "fudanped00003_mask": 178, "fudanped00004_mask": 178, "pngimag": 178, "fudanped00001": 178, "fudanped00002": 178, "fudanped00003": 178, "fudanped00004": 178, "fudanped00046": 178, "fudanped00046_mask": 178, "122": [178, 238], "tvtensor": 178, "masks_to_box": 178, "pennfudandataset": 178, "listdir": 178, "mask_path": 178, "obj_id": 178, "num_obj": 178, "crowd": 178, "xyxi": 178, "canvas_s": 178, "get_siz": 178, "zoo": 178, "faster_rcnn": 178, "fastrcnnpredictor": 178, "fasterrcnn_resnet50_fpn": 178, "roi_head": 178, "box_predictor": 178, "cls_score": 178, "fasterrcnn": 178, "rpn": 178, "anchorgener": 178, "anchor": 178, "anchor_gener": 178, "aspect_ratio": 178, "featmap_nam": 178, "roi_pool": 178, "multiscaleroialign": 178, "sampling_ratio": 178, "rcnn": 178, "rpn_anchor_gener": 178, "box_roi_pool": 178, "mask_rcnn": 178, "maskrcnnpredictor": 178, "get_model_instance_segment": 178, "maskrcnn_resnet50_fpn": 178, "in_features_mask": 178, "mask_predictor": 178, "conv5_mask": 178, "coco_util": 178, "coco_ev": 178, "get_transform": 178, "todtyp": 178, "topuretensor": 178, "print_freq": 178, "draw_bounding_box": 178, "draw_segmentation_mask": 178, "eval_transform": 178, "rgba": 178, "pred_label": 178, "pred_box": 178, "output_imag": 178, "train2017": 178, "prepare_fx": [179, 181, 182, 183], "convert_fx": [179, 181, 182, 183], "default_weight_observ": 179, "get_default_qconfig_map": 179, "minmaxobserv": [179, 200], "backend_config": 179, "backendpatternconfig": 179, "dtypewithconstraint": 179, "observationtyp": 179, "quantize_fx": [179, 181, 182], "fp32_linear": 179, "quant1": 179, "dequant1": 179, "quant2": 179, "dequant2": 179, "bracket": [179, 262, 271], "fp32_conv_relu": 179, "quint8_with_constraint": 179, "quant_min_lower_bound": 179, "quant_max_upper_bound": 179, "scale_min_lower_bound": 179, "weighted_int8_dtype_config": 179, "input_dtyp": 179, "output_dtyp": 179, "weight_dtyp": 179, "bias_dtyp": 179, "fuse_conv2d_relu": 179, "convrelu2d": [179, 182], "linear_config": 179, "set_pattern": 179, "set_observation_typ": 179, "output_use_different_observer_as_input": 179, "add_dtype_config": 179, "set_root_modul": 179, "set_qat_modul": 179, "set_reference_quantized_modul": 179, "conv_relu_config": 179, "set_fused_modul": 179, "set_fuser_method": 179, "fused_conv_relu_config": 179, "my_backend": 179, "set_backend_pattern_config": 179, "quant_max": [179, 200], "activation_observ": 179, "with_arg": [179, 200], "quant_min": [179, 200], "qconfig_map": [179, 181, 182, 183], "set_object_typ": [179, 181, 182, 197], "use_bn": 179, "quantizedlinear": 179, "012136868201196194": 179, "zero_point": [179, 185, 200], "qscheme": [179, 200], "per_tensor_affin": [179, 200], "quantizedconvrelu2d": 179, "0029353597201406956": 179, "linear_input_scale_0": 179, "linear_input_zero_point_0": 179, "quantize_per_tensor": [179, 185, 197, 221], "dequantize_2": 179, "015307803638279438": 179, "dequantize_1": 179, "get_fbgemm_backend_config": 179, "get_qnnpack_backend_config": 179, "get_native_backend_config": 179, "rfc": [179, 190, 262, 271], "0019": [179, 185], "tldr": [181, 182], "default_dynamic_qconfig": [181, 185], "qconfigmap": [181, 183, 197, 200], "release": 181, "set_glob": [181, 182, 183, 197, 198, 199], "prepared_model": [181, 182, 197, 198, 199], "metamind": 181, "asset": [181, 206, 208, 224], "lstm_model": 181, "float_qparams_weight_only_qconfig": 181, "model_to_quant": [181, 182, 197], "forunct": 181, "fx_graph_mode_ptq_dynam": 181, "charl": 182, "hernandez": 182, "traceabl": 182, "identitc": [182, 197], "resnet18_pretrained_float": [182, 197, 198], "fuse_fx": 182, "recursivescriptmodul": [182, 185, 197, 198], "qconfig_opt": [182, 197], "set_module_name_regex": 182, "set_module_nam": [182, 197], "set_module_name_object_type_ord": 182, "object_typ": 182, "module_name_regex": 182, "module_nam": 182, "serila": [182, 197], "fx_graph_mode_model_file_path": 182, "resnet18_fx_graph_mode_quant": 182, "erro": 182, "convrelu": 182, "moduleattributeerror": 182, "_modul": 182, "conv1_weight_after_fus": 182, "conv1_weight_after_qu": 182, "resnet18_script": [182, 197], "eager_quantized_model": 182, "eager_mode_model_fil": 182, "resnet18_eager_mode_quant": 182, "aibench": 182, "192": 182, "48m": 182, "63m": 182, "non_traceable_code_1": 183, "traceable_cod": 183, "non_traceable_code_2": 183, "fp32traceabl": 183, "traceable_submodul": 183, "traceable_code_1": 183, "traceable_code_2": 183, "model_fp32": 183, "non_traceable_cod": 183, "fp32nontrac": 183, "non_traceable_submodul": 183, "prepare_custom_config_dict": 183, "non_traceable_module_nam": 183, "non_traceable_module_class": 183, "mnontrac": 183, "model_prepar": 183, "transpose_for_scor": 183, "new_x_shap": 183, "num_attention_head": 183, "attention_head_s": 183, "custommodul": 183, "observednontrac": 183, "from_float": 183, "from_observ": 183, "staticquantnontrac": 183, "float_to_observed_custom_module_class": 183, "convert_custom_config_dict": 183, "observed_to_quantized_custom_module_class": 183, "model_quant": [183, 224, 225, 228, 252], "thee": 183, "dynamicquantnontrac": 183, "weightonlyquantmnontrac": 183, "test_custom_module_class": 183, "test_quantize_fx": 183, "hdcharl": 184, "pg509": 184, "330": 184, "myenv": 184, "cu121": 184, "vit_h": 184, "segment_anyth": 184, "sam_vit_h_4b8939": 184, "sam_checkpoint_base_path": 184, "change_linear_weights_to_int8_dqtensor": 184, "sam_model_registri": 184, "batchsiz": 184, "only_one_block": 184, "adaptive_autorang": 184, "min_run_tim": [184, 231, 246], "max_run_tim": 184, "1e9": 184, "get_sam_model": 184, "sam": 184, "image_encod": 184, "fp32_re": 184, "16m": 184, "33gb": 184, "instant": 184, "protect": [184, 208, 222, 223], "bf16_re": 184, "43m": 184, "17gb": 184, "autotun": [184, 247, 254], "comp_r": 184, "95m": 184, "24gb": 184, "int4": 184, "change_linear_weights_to_int8_woqtensor": 184, "change_linear_weights_to_int4_woqtensor": 184, "apply_dynamic_qu": 184, "apply_weight_only_int8_qu": 184, "change_linear_weight": 184, "quant_r": 184, "04m": 184, "58gb": 184, "force_fuse_int_mm_with_mul": 184, "78m": 184, "37gb": 184, "unquant": [184, 200], "epilogu": 184, "enlarg": 184, "epilogue_fus": 184, "coordinate_descent_tun": 184, "coordinate_descent_check_all_direct": 184, "39gb": 184, "10x": [184, 207], "729": 184, "65m": 184, "96gb": 184, "28m": 184, "93gb": 184, "gpu_quantization_torchao_tutori": 184, "supriya": 185, "rao": 185, "per_channel_dynamic_qconfig": 185, "quantize_dynamic_jit": 185, "ts_model": 185, "installaion": 185, "necesessari": 185, "lenght": 185, "qconfig_glob": 185, "qconfig_sub": 185, "qconfig_fc": 185, "242141": 185, "354759": 185, "188": [185, 231], "157": 185, "4s": 185, "quantized_model_debug": 185, "prepare_dynamic_jit": 185, "convert_dynamic_jit": 185, "406429": 185, "897": 185, "113": 185, "4_scale_0": 185, "114": 185, "4_zero_point_0": 185, "4_axis_0": 185, "4_scalar_type_0": 185, "quantize_per_channel": 185, "1640": 185, "_choose_qparams_per_tensor": 185, "98304": 185, "linear_dynam": 185, "_c": [185, 187, 244, 247], "0157": 185, "0257": 185, "0269": 185, "0158": 185, "0764": 185, "0548": 185, "0325": 185, "0423": 185, "0528": 185, "1382": 185, "0069": 185, "0106": 185, "0113": 185, "0275": 185, "0253": 185, "0457": 185, "0090": 185, "0512": 185, "0555": 185, "0277": 185, "0543": 185, "0539": 185, "0619": 185, "1040": 185, "0598": [185, 201], "0465": 185, "0009": 185, "0949": 185, "0097": 185, "0183": 185, "0085": 185, "clonebackward": 185, "0011": 185, "0010": 185, "0034": 185, "0013": 185, "0012": 185, "0015": 185, "0016": 185, "0036": 185, "0014": 185, "0008": 185, "0023": 185, "0018": 185, "0031": 185, "0022": 185, "0024": 185, "016605": 185, "182": 185, "878029": 185, "jit_model_path_float": 185, "jit_model_path_eag": 185, "jit_model_path_graph": 185, "chunyuan": 186, "bao": 186, "cpp_wrapper": [186, 199], "opt_fn": 186, "assert_size_strid": 186, "empty_strid": [186, 206, 238], "cpp_fused_add_lift_fresh_0": 186, "c_void_p": 186, "constant0": 186, "inductor_entry_cpp": 186, "19l": 186, "cppwrappercodecach": 186, "cpp_wrapper_src": 186, "c2buojsvlqbywxe3itb43hldieh4jqulk72iswa2awalwev7hjn2": 186, "_wrap_func": 186, "args_tensor": 186, "constants_tensor": 186, "_deviceguard": 186, "lift_fresh": 186, "stream0": 186, "get_cuda_stream": 186, "triton_poi_fused_add_lift_fresh_0": 186, "run_intermediate_hook": 186, "cudaguard": 186, "device_guard": 186, "loadkernel": 186, "torchinductor_us": 186, "cmm6xjgijjffxjku4akv55eyzibirvw6bti6uqmfnruujm5cvvmw": 186, "cubin": 186, "triton_poi_fused_add_lift_fresh_0_0d1d2d3": 186, "cudeviceptr": 186, "var_0": 186, "reinterpret_cast": [186, 208], "var_1": 186, "var_2": 186, "var_3": 186, "kernel_args_var_0": 186, "cudastream_t": 186, "getcurrentcudastream": 186, "launchkernel": 186, "czbpeilh4qqmbyejdgsbpdfuk2ss5jigl2qjb7xs4gearrjvuwem": 186, "tao": [187, 188], "solidifi": [187, 194], "coremltool": 187, "0b5": 187, "to_backend": 187, "_coreml": 187, "compilespec": 187, "coremlcomputeunit": 187, "mobilenetv2_spec": 187, "allow_low_precis": 187, "compile_spec": 187, "_jit_to_backend": 187, "coreml": 187, "mobilenetv2_coreml": 187, "cpuandgpu": 187, "mil": 187, "385": 187, "1496": 187, "anaconda3": 187, "name_sanitization_util": 187, "userwarn": [187, 189, 190, 191, 192], "647": 187, "var_647": 187, "new_nam": 187, "138": 187, "495": [187, 231], "1977": 187, "backend_detail": 187, "codegen_backend_modul": 187, "desktop": [187, 188, 208], "cocoapod": [187, 188, 204, 222, 225], "podfil": [187, 222, 225], "pod": [187, 204, 222, 225, 227, 251], "lite": [187, 204, 222], "client": [188, 223], "prepack": [188, 208, 252], "pytorch_root": [188, 206], "use_pytorch_metal_export": 188, "ON": [188, 195, 218, 223], "41237a4": [188, 206], "optimized_model": [188, 199], "export_opnam": [188, 222], "mobilenetv2_met": 188, "optimized_mobil": 188, "adaptive_avg_pool2d": 188, "copy_to_host": 188, "metal_prepack": 188, "conv2d_run": 188, "conect": 188, "slighli": 188, "malamut": 188, "malemut": 188, "alaskan": 188, "eskimo": 188, "huski": 188, "ios_arch": [188, 223], "use_pytorch_met": 188, "build_io": [188, 204, 222, 223], "a9": 188, "nsarrai": 188, "nsnumber": 188, "inferencemod": 188, "metalperformanceshad": 188, "1369": 189, "clr": 189, "sparse_coo_tensor": [189, 192], "state_sum": 189, "addcmul_": 189, "addcdiv_": 189, "_make_spars": 189, "grad_indic": 189, "coalesc": [189, 230], "_indic": 189, "grad_valu": 189, "_valu": 189, "sparse_mask": [189, 192], "std_valu": 189, "sqrt_": 189, "state_sum2": 189, "masked_grad": 189, "get_data": [189, 191, 192], "std2": 189, "masked_tensor": [189, 190, 191, 192], "to_spars": [189, 192], "param2": [189, 202], "glanc": [189, 244], "dodg": 189, "make_spars": 189, "diverg": [189, 191, 231, 247], "brittl": 189, "argu": 189, "densif": 189, "csc": [189, 192], "bsr": [189, 192], "bsc": 189, "conflat": 189, "disentangl": 189, "purposefulli": 189, "to_dens": [189, 192], "cleaner": [189, 191, 196, 197], "relianc": 189, "unreli": [189, 191], "maskedarrai": [189, 196], "maskedtensor_adagrad": 189, "maskedtensor_overview": [190, 191, 192], "unspecifi": [190, 191, 192, 196], "intersect": 190, "logical_or": 190, "npm0": 190, "ma": 190, "masked_arrai": 190, "npm1": 190, "mt0": 190, "mt1": [190, 192], "mt2": [190, 192], "get_mask": [190, 191], "mt": [190, 191, 192], "amin": [190, 192], "amax": 190, "data0": 190, "data1": 190, "mask0": 190, "mask1": 190, "intent": [190, 197, 200, 208, 214, 262, 271], "necessit": 190, "maskedtensor_advanced_semant": 190, "as_masked_tensor": 191, "afterthought": 191, "born": 191, "recur": 191, "inabl": 191, "10729": 191, "troubl": 191, "mx": 191, "52248": 191, "frustrat": 191, "4132": 191, "67180": 191, "longstand": 191, "bgrad1": 191, "isnan": 191, "unsaf": 191, "61474": 191, "nanmax": 191, "nanmin": 191, "lend": 191, "argmin": 191, "substructur": 192, "sparse_coo": 192, "sparse_csr": 192, "nse": 192, "sparse_tensor_data": 192, "sparse_tensor_mask": 192, "dense_masked_tensor": 192, "to_sparse_coo": 192, "to_sparse_csr": 192, "nuanc": 192, "sparse_coo_mt": 192, "crow_indic": 192, "col_indic": 192, "nnz": 192, "mt_sparse_csr": 192, "mt_sparse_coo": 192, "mt_dens": 192, "is_spars": 192, "is_sparse_coo": 192, "is_sparse_csr": 192, "surfac": 192, "vast": 192, "mask_valu": 192, "sparse_csr_tensor": 192, "synergi": 192, "invest": 192, "maskedtensor_spars": 192, "rag": 193, "invalu": 193, "nestedtensor": [193, 196], "padded_out_tensor": 193, "to_padded_tensor": 193, "poss": 193, "is_nest": 193, "irregularli": 193, "nt_reshap": 193, "nt_transpos": 193, "nt_mm": 193, "nt3": 193, "nt4": 193, "nt5": 193, "embrac": 193, "padded_sent": 193, "nested_sent": 193, "semnat": 193, "ux": [193, 197, 199], "padded_sentences_for_softmax": 193, "e_q": 193, "e_k": 193, "e_v": 193, "e_tot": 193, "query_proj": 193, "key_proj": 193, "value_proj": 193, "e_out": 193, "out_proj": 193, "e_head": 193, "sdpa": 193, "l_t": 193, "l_": 193, "attn_output": 193, "todo": [193, 260, 269], "unflatten": 193, "zipf": 193, "zipf_sentence_length": 193, "unigram": 193, "858": [193, 218], "sentence_length": 193, "ibatch": 193, "gen_batch": 193, "jagged_to_pad": 193, "jt": 193, "padding_v": 193, "unbind": [193, 205], "padded_queri": 193, "padded_kei": 193, "padded_valu": 193, "output_nest": 193, "time_nest": 193, "output_pad": 193, "time_pad": 193, "entry_length": 193, "compiled_mha": 193, "compiled_output_nest": 193, "compiled_time_nest": 193, "compiled_output_pad": 193, "compiled_time_pad": 193, "_nnapi": 194, "convert_model_to_nnapi": 194, "bundled_input": [194, 204, 209], "make_mobilenetv2_nnapi": 194, "output_dir_path": 194, "quantize_mod": 194, "quantize_cor": 194, "quantize_ifac": 194, "input_float": 194, "nnapi_nhwc": 194, "nnapi_model": 194, "bundlewrapp": 194, "augment_model_with_bundled_input": 194, "bundle_large_tensor": [194, 204], "quant_": 194, "quant_ful": 194, "speed_benchmark_torch": [194, 218, 223], "pthreadpool_s": 194, "use_bundled_input": 194, "use_caching_alloc": 194, "200gb": 194, "googlesourc": [194, 206], "envsetup": 194, "aosp_x86_64": 194, "j16": 194, "lib64": 194, "libneuralnetwork": 194, "ctype": 194, "cdll": 194, "loadlibrari": [194, 208], "get_all_bundled_input": [194, 209], "_numeric_suit": 195, "ns": 195, "default_eval_fn": 195, "qmodel": 195, "img_data": 195, "compare_weight": 195, "wt_compare_dict": 195, "nkei": 195, "sqnr": 195, "relationship": 195, "nomin": 195, "compute_error": 195, "pn": 195, "log10": 195, "hist": 195, "compare_model_output": 195, "act_compare_dict": 195, "white_list": 195, "outputlogg": 195, "default_numeric_suite_compare_model_output_white_list": 195, "prepare_model_output": 195, "get_matching_activ": 195, "myoutputlogg": 195, "logger_cl": 195, "prepare_model_with_stub": 195, "shadowlogg": 195, "compare_model_stub": 195, "quantizablebasicblock": 195, "module_swap_list": 195, "ob_dict": 195, "get_logger_dict": 195, "myshadowlogg": 195, "is_quant": 195, "db": [195, 197], "numeric_suite_tutori": 195, "pypi": [196, 221], "pt2": [196, 199, 210, 211, 215], "optimizi": 196, "nnapi": 196, "autovector": [196, 205], "maskedtensor": 196, "coo": 196, "csr": 196, "14k": 197, "prepare_pt2": [197, 199], "convert_pt2": [197, 198, 199], "capture_pre_autograd_graph": [197, 198, 199], "shoud": [197, 198, 199], "quantize_pt2": [197, 198, 199], "xnnpackquant": [197, 198, 200], "get_symmetric_quantization_config": [197, 198], "backendconfig": [197, 200], "fake_qu": 197, "embedding_byt": 197, "executorchquant": 197, "prone": [197, 215], "composed_quant": 197, "quantization_cap": 197, "minmax": 197, "exported_model": [197, 198, 199], "dynamic_dim": [197, 198], "xnnpack_quant": [197, 198], "themodel": 197, "fp32_op": 197, "qauntiz": 197, "quantized_linear": 197, "x_int8": 197, "x_scale": 197, "x_zero_point": 197, "weight_int8": 197, "weight_scal": [197, 200], "weight_zero_point": 197, "bias_fp32": 197, "output_scal": 197, "output_zero_point": 197, "x_fp32": 197, "quantized_decompos": 197, "dequantize_per_tensor": 197, "x_i8": 197, "x_quant_min": 197, "x_quant_max": 197, "weight_fp32": 197, "weight_i8": 197, "weight_quant_min": 197, "weight_quant_max": 197, "weight_permut": 197, "permute_copi": 197, "out_fp32": 197, "out_i8": 197, "out_scal": 197, "out_zero_point": 197, "out_quant_min": 197, "out_quant_max": 197, "float32_op": 197, "use_reference_represent": 197, "x_int16": 197, "weight_int16": 197, "acc_int32": 197, "out_dtyp": 197, "bias_scal": 197, "bias_int32": 197, "out_int8": 197, "qmin": 197, "qmax": 197, "pt2e_quantized_model_file_path": 197, "resnet18_pt2e_quant": 197, "quantized_ep": 197, "loaded_quantized_ep": 197, "ptq": [198, 199], "prepare_qat_pt2": [198, 199], "move_exported_model_to_ev": [198, 199], "move_exported_model_to_train": 198, "subgraph": 198, "_native_batch_norm_legit": 198, "cudnn_batch_norm": 198, "num_observer_update_epoch": 198, "num_batch_norm_update_epoch": 198, "num_epochs_between_ev": 198, "subseq": 198, "new_arg": 198, "prepared_model_copi": 198, "checkpoint_": 198, "lesli": [199, 200], "fang": [199, 200], "weiwen": [199, 200], "xia": [199, 200], "x86inductorquant": 199, "spr": 199, "x86_inductor_quant": 199, "xiq": 199, "traced_b": 199, "aten_graph": 199, "get_default_x86_inductor_quantization_config": 199, "is_dynam": [199, 200], "converted_model": 199, "absenc": [199, 229], "mirror": 199, "device_typ": [199, 230, 253], "qconvolut": 199, "qlinear": 199, "conting": 199, "qmaxpool2d": 199, "torchinductor_freez": 199, "example_x86inductorquantizer_pytorch_2_1": 199, "torchbench": [199, 219], "example_x86inductorquantizer_qat": 199, "kimish": 200, "patel": 200, "quantiat": 200, "qnnpackquant": 200, "quantizationspec": 200, "quantizationannot": 200, "bitwidth": 200, "histogramobserv": 200, "dataclass": 200, "input_qspec_map": 200, "output_qspec": 200, "_annot": 200, "matcher": 200, "get_source_partit": 200, "add_partit": 200, "add_nod": 200, "output_nod": 200, "act_quantization_spec": 200, "observer_or_fake_quant_ctr": 200, "input_act_qspec": 200, "output_act_qspec": 200, "input_act0": 200, "input_act1": 200, "quantization_annot": 200, "sharedquantizationspec": 200, "average_pool": 200, "edgeornod": 200, "conv1_out": 200, "conv2_out": 200, "qspec1": 200, "cat_input0": 200, "cat_input1": 200, "share_qparams_with_input_act0_qspec": 200, "fixedqparamsquantizationspec": 200, "act_qspec": 200, "sigmoid_nod": 200, "input_act": 200, "derivedquantizationspec": 200, "derive_qparams_fn": 200, "observerorfakequant": 200, "observerbas": 200, "fakequantizebas": 200, "obejct": 200, "obs_or_fq": 200, "fq": 200, "act_obs_or_fq": 200, "weight_obs_or_fq": 200, "act_scal": 200, "act_zp": 200, "calculate_qparam": 200, "weight_zp": 200, "bias_qspec": 200, "derived_from": 200, "per_tensor_symmetr": 200, "weight_quantization_spec": 200, "backendquant": 200, "quantizationconfig": 200, "get_input_act_qspec": 200, "get_output_act_qspec": 200, "get_weight_qspec": 200, "get_bias_qspec": 200, "relu_nod": 200, "maybe_conv_nod": 200, "conv1d": [200, 207, 247], "recognz": 200, "subgraphmatch": 200, "conv_relu_pattern": 200, "name_node_map": 200, "input_nod": 200, "weight_nod": 200, "bias_nod": 200, "exact_match": 201, "53358561967833": 201, "9280493093186": 201, "927572380751371": 201, "607915310189128": 201, "18846387788653": 201, "91255673766136": 201, "parameter": 201, "elemen": 201, "paramter": 201, "bertoutput": 201, "parametrizedlinear": 201, "fakespars": 201, "layernorm": 201, "elementwise_affin": 201, "59602649006622": 201, "51610004515979": 201, "0237": 201, "0130": 201, "0462": 201, "0272": 201, "0436": 201, "0492": 201, "0844": 201, "0340": 201, "0302": 201, "0350": 201, "0303": 201, "0175": 201, "0529": 201, "0327": 201, "0213": 201, "0258": 201, "0239": 201, "0380": 201, "0562": 201, "0432": 201, "0262": 201, "0227": 201, "0244": 201, "0784": 201, "0761": 201, "0225": 201, "0395": 201, "0684": 201, "0344": 201, "43897824030275": 201, "48718950090766": 201, "621004460379481": 201, "368514601141214": 201, "702805917710066": 201, "244": [201, 226], "19364519417286": 201, "87x": 201, "skip_init": 202, "param1": 202, "some_buff": 202, "to_empti": [202, 244], "intial": 202, "fnet": 203, "___torch_mangle_3": 203, "fnet2": 203, "0107": 203, "0048": 203, "torchscript_freez": 203, "lai": [204, 222], "cccclai": 204, "dhruv": 204, "matani": 204, "dhruvbird": 204, "scripted_modul": [204, 209, 222], "input_image_1": 204, "input_tensor_1": 204, "input_batch_1": 204, "input_image_2": 204, "input_tensor_2": 204, "input_batch_2": 204, "step2": 204, "bundled_model_input": 204, "bundled_model": [204, 209], "bundle_input": [204, 209], "deeplabv3_scripted_with_bundled_input": 204, "macosx_deployment_target": [204, 206], "max_job": 204, "tracing_bas": 204, "model_trac": 204, "model_input_path": 204, "build_yaml_path": 204, "armeabi": 204, "v7a": 204, "v8a": [204, 206, 218, 223], "selected_op_list": [204, 222], "build_pytorch_android": [204, 206, 222], "cmd": 204, "build_lite_interpret": 204, "chenlai": 204, "aar": [204, 206, 208], "xarg": 204, "ls": 204, "lah": 204, "rw": 204, "staff": 204, "13m": 204, "feb": 204, "pytorch_android": [204, 206, 208, 224], "36k": 204, "pytorch_android_torchvis": [204, 222, 224], "gradl": [204, 206, 222, 224, 227], "androidx": [204, 208, 222], "appcompat": [204, 208, 222], "constraintlayout": [204, 222], "testimplement": [204, 222], "junit": [204, 222], "androidtestimplement": [204, 222], "ext": [204, 220, 222, 262, 263, 271, 272], "espresso": [204, 222], "v7": [204, 208], "fbjni": [204, 208, 222], "allproject": [204, 208], "jcenter": [204, 208], "flatdir": 204, "ios_platform": [204, 222], "deintegr": 204, "all_load": 204, "bitcod": 204, "deeplabv3": [204, 222], "deeplabv3_on_android": 204, "42368": 205, "unsuccessfulli": 205, "rummag": 205, "batched_dot": [205, 231], "feature_s": 205, "shenanigin": 205, "feature_vec": 205, "8304": 205, "23475": 205, "basis_vector": 205, "get_vjp": 205, "jacobian_vmap": 205, "performantli": 205, "7786": 205, "grad_sampl": 205, "batch_of_sampl": 205, "vmap_recip": 205, "ivan": [206, 208], "kobzarev": [206, 208], "use_vulkan": 206, "vulkan_wrapp": 206, "use_vulkan_wrapp": 206, "libvulkan": 206, "vulkansdk": 206, "lunarg": 206, "vulkan_sdk": 206, "vulkan_sdk_root": 206, "install_vulkan": 206, "use_vulkan_shaderc_runtim": 206, "android_abi": [206, 208, 218, 223], "build_android": [206, 218, 223], "script_model": 206, "mobilenet2": 206, "32bit": 206, "script_model_vulkan": 206, "optimization_blocklist": 206, "mobileoptimizertyp": 206, "vulkan_automatic_gpu_transf": 206, "is_vulkan_avail": 206, "tensor_vulkan": 206, "tensor_output_vulkan": 206, "tensor_output": 206, "_adaptive_avg_pool2d": 206, "_cat": 206, "hardtanh_": 206, "transpose_": 206, "upsample_nearest2d": 206, "allocatefloatbuff": [206, 223], "fromblob": [206, 223], "mmodul": [206, 222, 223], "test_app": 206, "testapp": [206, 223], "l133": 206, "apploc": 206, "installmbvulkanlocalbasedebug": 206, "mbq": 206, "swiftshad": 206, "tmul": 207, "gen": 207, "3rd": [207, 220], "avx": [207, 220], "vnni": [207, 220], "024": 207, "conv3d": [207, 247], "conv_transpose1d": 207, "conv_transpose3d": 207, "baddbmm": 207, "addbmm": 207, "onednn_verbos": 207, "mkldnn": [207, 219], "verbose_on": 207, "6dbeffbae1f23cbbeae17adb7b5b13f1f37c080": 207, "nthr": 207, "isa": [207, 247], "prim_templ": 207, "prop_kind": 207, "memory_descriptor": 207, "auxiliari": 207, "problem_desc": 207, "exec_tim": 207, "exec": 207, "undef": 207, "src_f32": 207, "f0": 207, "dst_f32": 207, "scratchpad": 207, "2561": 207, "avx512_core_amx_bf16": 207, "forward_train": 207, "src_bf16": 207, "acdb": 207, "wei_bf16": 207, "abcd16b16a2b": 207, "bia_f32": 207, "dst_bf16": 207, "alg": 207, "convolution_direct": 207, "mb7_ic2oc1_ih224oh111kh3sh2dh1ph1_iw224ow111kw3sw2dw1pw1": 207, "628906": 207, "brg": 207, "avx512_core_amx_int8": 207, "src_s8": 207, "wei_s8": 207, "ba16a64b4a": 207, "dst_s8": 207, "1x30522": 207, "30522x768": 207, "1x768": 207, "66382": 207, "r19c": 208, "android_ndk": 208, "3859397": 208, "android_sdk": 208, "android_hom": 208, "gradle_hom": 208, "jdk": [208, 227], "java_hom": 208, "openjdk": 208, "opencv_android_sdk": 208, "registeroper": 208, "cento": 208, "yum": 208, "devel": 208, "libopencv": 208, "nativeapp": 208, "useandroidx": 208, "enablejetifi": 208, "buildscript": 208, "classpath": 208, "maven": [208, 222], "oss": [208, 222], "sonatyp": [208, 222], "extractfornativebuild": 208, "compilesdkvers": 208, "buildtoolsvers": 208, "defaultconfig": 208, "applicationid": 208, "minsdkvers": 208, "targetsdkvers": 208, "versioncod": 208, "versionnam": 208, "externalnativebuild": 208, "dandroid_stl": 208, "_share": 208, "buildtyp": 208, "minifyen": 208, "sourceset": 208, "jnilib": 208, "srcdir": 208, "extractaarfornativebuild": 208, "dolast": 208, "absolutefil": 208, "ziptre": 208, "builddir": 208, "jni": 208, "whentaskad": 208, "dependson": 208, "nexu": 208, "libpytorch_jni": 208, "libfbjni": 208, "stl": 208, "pytorch_nativeapp": 208, "build_dir": 208, "cmake_source_dir": 208, "pytorch_testapp_cpp_dir": 208, "cmake_current_list_dir": 208, "pytorch_testapp_sourc": 208, "pytorch_include_dir": 208, "pytorch_link_dir": 208, "target_compile_opt": 208, "fexcept": 208, "build_subdir": 208, "find_librari": 208, "pytorch_librari": 208, "pytorch_jni": 208, "no_cmake_find_root_path": 208, "fbjni_librari": 208, "endif": 208, "opencv_include_dir": 208, "target_include_directori": 208, "opencv_lib_dir": 208, "opencv_librari": 208, "opencv_java4": 208, "libopencv_java4": 208, "logcat": 208, "torschscript": 208, "androidmanifest": 208, "xml": 208, "xmln": 208, "apk": 208, "allowbackup": 208, "pytorchnativeapp": 208, "supportsrtl": 208, "theme": 208, "darkactionbar": 208, "appcompatact": 208, "fileoutputstream": 208, "inputstream": 208, "outputstream": 208, "assetnam": 208, "getfilesdir": 208, "getabsolutepath": 208, "getasset": 208, "savedinstancest": 208, "modelfileabsolutefilepath": 208, "nativecli": 208, "loadandforwardmodel": 208, "assertfilepath": 208, "nativep": 208, "libpytorch_nativeapp": 208, "modelpath": 208, "cassert": 208, "cmath": 208, "unistd": 208, "alogi": 208, "__android_log_print": 208, "android_log_info": 208, "__va_args__": 208, "alog": 208, "android_log_error": 208, "ostringstream": 208, "c_str": 208, "jitcallguard": 208, "no_autograd_guard": 208, "non_var_guard": 208, "graphoptimizerenabledguard": 208, "no_optimizer_guard": 208, "jnienv": 208, "jclass": 208, "jstring": 208, "jmodelpath": 208, "getstringutfchar": 208, "t_out": 208, "releasestringutfchar": 208, "jniexport": 208, "jint": 208, "jni_onload": 208, "javavm": 208, "vm": [208, 263, 272], "getenv": [208, 231], "jni_version_1_6": 208, "jni_ok": 208, "jni_err": 208, "findclass": 208, "jninativemethod": 208, "ljava": 208, "rc": 208, "registern": 208, "intermix": 208, "assembledebug": 208, "installdebug": 208, "icon": [208, 260, 262, 269, 271], "adb": [208, 218, 223], "grep": 208, "26968": 208, "9484": 208, "1757": 208, "5832": 208, "9144": 208, "8867": 208, "0933": 208, "4004": 208, "3389": 208, "5200": [208, 231], "7625": 208, "5724": 208, "2073": 208, "4613": 208, "2730": 208, "6789": 208, "2247": 208, "2790": 208, "0067": 208, "9266": 208, "6034": 208, "1941": 208, "7021": 208, "5368": 208, "3803": 208, "0188": 208, "2021": [208, 221], "7412": 208, "2257": 208, "5044": 208, "6592": 208, "0826": 208, "0084": 208, "8733": 208, "5435": 208, "1087": 208, "1066": 208, "9926": 208, "1047": 208, "5311": 208, "9178": 208, "5451": 208, "0473": 208, "7571": 208, "3909": 208, "4039": 208, "5085": 208, "2776": 208, "4080": 208, "9203": 208, "3655": 208, "4395": 208, "4467": 208, "9837": 208, "3335": 208, "0445": 208, "8039": 208, "2512": 208, "3122": 208, "6543": 208, "5819": 208, "5680": 208, "6442": 208, "3090": 208, "6197": 208, "0773": 208, "5967": 208, "1105": 208, "0274": 208, "0330": 208, "0124": 208, "8644": 208, "0493": 208, "7633": 208, "9657": 208, "3469": 208, "3159": 208, "0683": 208, "4529": 208, "4559": 208, "7038": 208, "8396": 208, "9716": 208, "5279": 208, "1780": 208, "3849": 208, "4368": 208, "1480": 208, "jacob": 209, "szwejbka": 209, "example_dict": 209, "all_info": 209, "get_bundled_inputs_functions_and_info": 209, "func_nam": 209, "input_func_nam": 209, "get_inputs_function_nam": 209, "func_to_run": 209, "model_funct": 209, "decompress": 209, "ie": 209, "bundle_randn": 209, "deflat": 209, "create_exampl": 209, "deflated_input": 209, "inflatablearg": 209, "randn_lik": 209, "bundle_optional_dict_of_randn": 209, "fmt_fn": 209, "lazo": [210, 211, 255], "eager_runtim": 210, "compiled_runtim": 210, "2437149845064u": 210, "07384741178u": 210, "linearlr": 211, "sched": 211, "total_it": 211, "compiling_optimizer_lr_schedul": 211, "set_device_map": 212, "worker0": 212, "payload": [212, 244], "infiniband": 212, "cma": 212, "comm_mod": 212, "pend": [212, 223, 245], "current_stream": 212, "34x": 212, "3145179748535156": 212, "06867480278015137": 212, "image_classifi": 213, "kitten": 213, "index_to_nam": 213, "infil": 213, "timg": 213, "models_": 213, "render_predict": 213, "prediction_idx": 213, "stridx": 213, "img_class_map": 213, "mapping_file_path": 213, "isfil": 213, "curl": [213, 262, 271], "multipart": 213, "recevi": 213, "285": 213, "iri": [214, 215], "rodrigo": 214, "kumpera": 214, "chien": 214, "chin": 214, "luca": 214, "pasqualin": 214, "adddition": 214, "get_state_dict": 214, "run_fsdp_checkpoint_save_exampl": 214, "sharded_state_dict": 214, "checkpoint_id": 214, "reshard": 214, "set_state_dict": 214, "run_fsdp_checkpoint_load_exampl": 214, "optim_state_dict": 214, "run_checkpoint_load_exampl": 214, "effortlessli": 215, "homogen": 215, "num_node_devic": 215, "shard_rank_list": 215, "shard_group": 215, "current_shard_group": 215, "current_replicate_group": 215, "shard_factor": 215, "replicate_group_rank": 215, "replicate_group": 215, "2d_setup": 215, "mesh_dim_nam": 215, "thru": 215, "get_group": 215, "mesh_dim": 215, "2d_setup_with_device_mesh": 215, "meshshap": 215, "hybrid_shard": 215, "sequanc": 215, "quasi": 216, "hyperbol": 216, "qhm": 216, "qhm_updat": 216, "dp_list": 216, "momentum_buffer_list": 216, "nu": [216, 262, 271], "weight_decay_typ": 216, "d_p": 216, "momentum_buff": 216, "polymorph": 216, "functionalqhm": 216, "params_with_grad": 216, "preserve_format": 216, "functional_optim_map": 216, "remote_params_list": 216, "dist_optim": 216, "annotatedconvbnrelumodel": [218, 223], "prepare_sav": 218, "torchscript_model": [218, 223, 224, 225, 252], "torchscript_model_optim": [218, 223, 224, 225], "model_fus": 218, "bnrelu2d": 218, "build_pytorch_mobil": [218, 222, 223], "dbuild_binari": [218, 223], "input_typ": [218, 223], "6189": 218, "575": 218, "6216": 218, "sunita": 219, "nadamp": 219, "graviton3": 219, "sve": 219, "simd": 219, "graviton2": 219, "bla": 219, "acl": 219, "c7g": 219, "bfloa16": 219, "r7g": 219, "m7g": 219, "4vcpu": 219, "myneuralnetwork": 219, "11008": 219, "mymodel_infer": 219, "813": 219, "255m": 219, "177": 219, "032m": 219, "160u": 219, "162": [219, 231], "054m": 219, "540": 219, "180u": 219, "738m": 219, "201": 219, "955m": 219, "985": 219, "282m": 219, "421m": 219, "043m": 219, "810u": 219, "356m": 219, "179": 219, "388m": 219, "896": 219, "940u": 219, "mmla": 219, "dnnl_default_fpmath_mod": 219, "943": 219, "052": 219, "507m": 219, "167": 219, "653m": 219, "838": 219, "265u": 219, "107": 219, "593m": 219, "358": 219, "643u": 219, "167m": 219, "262": 219, "911m": 219, "060": 219, "533m": 219, "414m": 219, "892m": 219, "307u": 219, "281m": 219, "934m": 219, "670u": 219, "fastmath": 219, "821": 219, "914": 219, "713m": 219, "244m": 219, "711": 219, "220u": 219, "322m": 219, "307": 219, "740u": 219, "094": 219, "495m": 219, "921": 219, "736m": 219, "131m": 219, "441m": 219, "803u": 219, "942m": 219, "144": 219, "186m": 219, "720": 219, "930u": 219, "848": 219, "944": 219, "148m": 219, "141": [219, 231], "309m": 219, "706": 219, "545u": 219, "916m": 219, "720u": 219, "431m": 219, "06": 219, "471m": 219, "951": 219, "170m": 219, "027m": 219, "243m": 219, "143u": 219, "928m": 219, "143": 219, "237m": 219, "185u": 219, "47x": 219, "outweigh": 219, "till": [219, 228], "torch_mkldnn_matmul_min_dim": 219, "958": 219, "612m": 219, "124m": 219, "620u": 219, "951m": 219, "170u": 219, "423m": 219, "034": 219, "691m": 219, "988": 219, "628m": 219, "520m": 219, "945m": 219, "817u": 219, "382m": 219, "136": 219, "910u": 219, "781": 219, "604m": 219, "295": 219, "437m": 219, "477m": 219, "516m": 219, "558": 219, "387u": 219, "708m": 219, "499m": 219, "788": 219, "627m": 219, "982m": 219, "385m": 219, "617u": 219, "932m": 219, "297": 219, "369m": 219, "487m": 219, "038m": 219, "060m": 219, "300u": 219, "013m": 219, "106": 219, "710u": 219, "521m": 219, "750m": 219, "216": 219, "475m": 219, "033m": 219, "110u": 219, "285m": 219, "345m": 219, "725u": 219, "margin": 219, "thp_mem_alloc_en": 219, "321": 219, "069m": 219, "568m": 219, "613m": 219, "602m": 219, "682": 219, "007u": 219, "777m": 219, "082m": 219, "329": 219, "097m": 219, "547m": 219, "325": 219, "115m": 219, "626m": 219, "08x": 219, "avx512": 220, "amx": [220, 221], "xmx": 220, "xpu": 220, "claus": [220, 221, 258], "roialign": 220, "bertmodel": 220, "check_trac": 220, "cache_en": [220, 247], "memoryformat": 220, "channelslast": [220, 223], "intel_ext_pt_cpu": 220, "libpytorch_path": 220, "ldd": 220, "workspac": 220, "cmake_have_libc_pthread": 220, "0x00007f3cf98e0000": 220, "libc10": 220, "0x00007f3cf985a000": 220, "libintel": 220, "0x00007f3cf70fc000": 220, "libtorch_cpu": [220, 246], "0x00007f3ce16ac000": 220, "libdnnl_graph": 220, "0x00007f3cde954000": 220, "mitig": [221, 247], "fc1_drop": 221, "pytorch_fx": 221, "accuracy_criterion": 221, "neural_compressor": 221, "calib_dataload": 221, "q_model": 221, "top1metr": 221, "quant_aware_train": 221, "training_func": 221, "q_func": 221, "dummy_dataset": 221, "dummydataset": 221, "linearrelu": 221, "best_configur": 221, "best_model_weight": 221, "int8_model": 221, "martin": 222, "pytorchstreamread": 222, "regener": 222, "model_psth": 222, "_load_for_lite_interpret": [222, 223], "optimized_scripted_modul": 222, "pytorch_android_lit": 222, "litemoduleload": 222, "getapplicationcontext": 222, "prebuilt": [222, 251], "use_framework": 222, "libtorch_lit": 222, "nullabl": 222, "instancetyp": 222, "initwithfileatpath": 222, "nsstring": 222, "_load_for_mobil": [222, 223], "utf8str": 222, "nslog": 222, "architechtur": 222, "dsp": 223, "calibration_data": 223, "588kb": 223, "nio": 223, "suboptim": 223, "analysisresult": 223, "analyzeimag": 223, "imageproxi": 223, "rotationdegre": 223, "modulefileabsolutefilepath": 223, "minputtensorbuff": 223, "minputtensor": 223, "imageyuv420centercroptofloatbuff": 223, "getimag": 223, "flatbuff": 223, "_use_flatbuff": 223, "jit_model": 223, "ff": 223, "5387594579999999": 223, "038842832999999466": 223, "nake": 223, "rf": 223, "speedbenchark_torch": 223, "speedbenchmark": 223, "121318": 223, "24281": 223, "trace_model": 223, "rubi": 223, "iphonex": 223, "2121": 223, "722447": 223, "762": 223, "mobilenetv2_quant": [224, 225], "hackathon": [224, 225], "xcworkspac": 225, "your_project_nam": 225, "unexpectedli": 226, "path_of_launch": 226, "iteration_n": 226, "brown": 226, "percerntag": 226, "occupi": 226, "jitter": [226, 231], "enrich": 226, "ittsampl": 226, "292820": 226, "iteration_": 226, "basefold": 226, "bash_sourc": 226, "torchscipt": [227, 251], "ota": 228, "incept": 228, "print_model_s": 228, "mdl": 228, "model_dynamic_quant": 228, "model_static_quant": 228, "98mb": 228, "tra": 228, "model_qat": 228, "gradcam": 229, "freepik": 229, "puppi": 229, "dog_58409": 229, "6024": 229, "center_crop": 229, "283": 229, "labrador": 229, "occlud": 229, "attribution_dog": 229, "persian": 229, "attribution_cat": 229, "guidedbackprop": 229, "deeplift": 229, "gradientshap": 229, "forward_func": 229, "pictori": 229, "textual": 229, "vis_typ": 229, "vis_sign": 229, "distractor": 229, "visualize_text": 229, "imdb_torchtext_interpret": 229, "gilbert": 229, "tanner": 229, "gilberttann": 229, "captum_recip": [229, 235], "carilli": 230, "ture": 230, "kepler": 230, "maxwel": 230, "pascal": 230, "modest": 230, "gc": 230, "empty_cach": 230, "reset_max_memory_alloc": 230, "end_timer_and_print": 230, "local_msg": 230, "make_model": 230, "in_siz": 230, "out_siz": 230, "513": 230, "modestli": 230, "underflow": 230, "scaler": 230, "unscal": 230, "use_amp": 230, "unscale_": 230, "max_norm": 230, "bitwis": 230, "rough": 230, "suspect": 230, "docstr": [230, 262, 263, 271, 272], "subregion": 230, "backtrac": 230, "torch_show_cpp_stacktrac": 230, "amp_recip": [230, 235], "tediou": 231, "mistak": 231, "batched_dot_mul_sum": 231, "batched_dot_bmm": 231, "mul_sum": 231, "0x7fb10400d0f0": 231, "379": 231, "0x7fb103d67048": 231, "sub_label": 231, "0x7fb103d54080": 231, "118": 231, "0x7fb16935d2e8": 231, "2775": 231, "0x7fb10400d080": 231, "reliabl": 231, "m0": 231, "274": 231, "748": 231, "432": 231, "22657": 231, "11899": 231, "609": 231, "23098": 231, "27246": 231, "267073": 231, "118823": 231, "189": 231, "2782": 231, "7471": 231, "11874": 231, "173": 231, "7264": 231, "27824": 231, "100060": 231, "121499": 231, "2773": 231, "12833": 231, "6295": 231, "27062": 231, "71804": 231, "120365": 231, "103": 231, "2804": 231, "6764": 231, "11871": 231, "6640": 231, "27592": 231, "73003": 231, "120083": 231, "trim_significant_figur": 231, "callgrindstat": [231, 246], "trip": 231, "ab_test_result": 231, "dot_fn": 231, "ab_result": 231, "36000": 231, "40000": 231, "round_tripped_result": 231, "stark": 231, "fuzzer": 231, "fuzzedparamet": 231, "fuzzedtensor": 231, "parameteralia": 231, "10000000": 231, "k0": 231, "k1": 231, "discontigu": 231, "example_fuzz": 231, "minval": 231, "maxval": 231, "min_el": 231, "max_el": 231, "probability_contigu": 231, "tensor_param": 231, "725": 231, "383": 231, "5039": 231, "1200": [231, 257], "2140": 231, "1296": 231, "41000": 231, "1598": 231, "519": 231, "763": 231, "1082": 231, "op_fuzz": 231, "binaryopfuzz": 231, "473": 231, "12642115": 231, "8192": 231, "4800": 231, "20400": 231, "110000": 231, "400000": 231, "493": 231, "1100": [231, 246], "2440": 231, "870": 231, "2030": 231, "23600": 231, "24000": [231, 246], "62374": 231, "90000": 231, "240372": 231, "16000": 231, "40156": 231, "2670": 231, "opac": 231, "complementari": 231, "insensit": 231, "environment": 231, "batched_dot_src": 231, "batched_dot_mul_sum_v0": 231, "batched_dot_mul_sum_v1": 231, "cpp_lib": 231, "extra_cflag": 231, "extra_include_path": 231, "module_import_str": 231, "67631": 231, "importlib": 231, "spec_from_file_loc": 231, "module_from_spec": 231, "exec_modul": 231, "textwrap": 231, "pretty_print": 231, "machineri": 231, "t_baselin": 231, "stats_v0": 231, "collect_callgrind": 231, "stats_v1": 231, "as_standard": [231, 246], "denois": 231, "ing": 231, "wrap_pybind_function_impl_": 231, "linewidth": 231, "valgrind_wrapp": [231, 246], "timer_interfac": [231, 246], "0x7fb0f06e7630": 231, "2392671": 231, "4367": 231, "rel_with_deb_info": [231, 246], "0x7fb10400d208": 231, "2378978": 231, "functioncount": [231, 246], "0x7fb1000ab358": 231, "0x000000000020d9e0": 231, "0x000000000020db10": 231, "integer_sequ": 231, "0ul": 231, "1ul": 231, "undefinedtensorimpl": 231, "reset_": 231, "5935": 231, "0x000000000022c0e0": 231, "13693": 231, "changing_default_devic": 232, "\u6df1\u5ea6\u5b66\u4e60\u4f7f\u7528\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc": 233, "\u8fd9\u662f\u7531\u8bb8\u591a\u4e92\u8fde\u5355\u5143\u5c42\u7ec4\u6210\u7684\u8ba1\u7b97\u7cfb\u7edf": 233, "\u901a\u8fc7\u5c06\u6570\u636e\u4f20\u9012\u5230\u8fd9\u4e9b\u4e92\u8fde\u5355\u5143": 233, "\u795e\u7ecf\u7f51\u7edc\u80fd\u591f\u5b66\u4e60\u5982\u4f55\u8fd1\u4f3c\u5c06\u8f93\u5165\u8f6c\u6362\u4e3a\u8f93\u51fa\u6240\u9700\u7684\u8ba1\u7b97": 233, "\u53ef\u4ee5\u4f7f\u7528": [233, 246], "\u5305\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": 233, "\u63d0\u4f9b\u4e86\u4f18\u96c5\u8bbe\u8ba1\u7684\u6a21\u5757\u548c\u7c7b\u6765\u5e2e\u52a9\u60a8\u521b\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 233, "\u4e2d\u6709\u5c42": 233, "\u4ee5\u53ca\u4e00\u4e2a\u8fd4\u56de": 233, "\u6765\u5b9a\u4e49\u4e00\u4e2a\u7528\u4e8e": 233, "hhttp": 233, "\u7684\u795e\u7ecf\u7f51\u7edc": 233, "\u5982\u679c\u8fd8\u6ca1\u6709\u5b89\u88c5": [233, 240, 241, 242, 249], "\u7684\u8bdd": 233, "\u6211\u4eec\u9700\u8981\u5148\u5b89\u88c5\u5b83": [233, 242, 243, 248, 249], "\u5bfc\u5165\u52a0\u8f7d\u6570\u636e\u6240\u9700\u7684\u6240\u6709\u5fc5\u8981\u5e93": [233, 236, 240, 241, 242, 243, 248, 249, 250], "\u53ca\u5176\u5b50\u6a21\u5757": [233, 240, 241, 242, 243, 248, 249], "\u6211\u4eec\u7684\u7f51\u7edc\u5c06\u8bc6\u522b\u56fe\u50cf": 233, "\u6211\u4eec\u5c06\u4f7f\u7528pytorch\u5185\u7f6e\u7684\u5377\u79ef\u8fc7\u7a0b": 233, "\u5377\u79ef\u5c06\u6bcf\u4e2a\u56fe\u50cf\u5143\u7d20\u4e0e\u5176\u5c40\u90e8\u90bb\u5c45\u76f8\u52a0": 233, "\u5e76\u7531\u4e00\u4e2a\u5c0f\u77e9\u9635": 233, "\u5185\u6838": 233, "\u52a0\u6743": 233, "\u8be5\u5185\u6838\u53ef\u5e2e\u52a9\u6211\u4eec\u4ece\u8f93\u5165\u56fe\u50cf\u4e2d\u63d0\u53d6\u67d0\u4e9b\u7279\u5f81": 233, "\u5982\u8fb9\u7f18\u68c0\u6d4b": 233, "\u9510\u5229\u5ea6": 233, "\u6a21\u7cca\u5ea6\u7b49": 233, "\u5b9a\u4e49\u6a21\u578b\u7684": 233, "\u7c7b\u6709\u4e24\u4e2a\u8981\u6c42": 233, "\u7b2c\u4e00\u662f\u7f16\u5199\u4e00\u4e2a\u5f15\u7528": 233, "\u5728\u8fd9\u4e2a\u51fd\u6570\u4e2d": 233, "\u4f60\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u5168\u8fde\u63a5\u5c42": 233, "\u4f7f\u7528\u5377\u79ef": 233, "\u6211\u4eec\u5c06\u5b9a\u4e49\u6211\u4eec\u7684\u6a21\u578b\u4ee5\u63a5\u53d71\u4e2a\u8f93\u5165\u56fe\u50cf\u901a\u9053": 233, "\u5e76\u8f93\u51fa\u4e0e\u6211\u4eec\u7684\u76ee\u6807\u76f8\u5339\u914d\u768410\u4e2a\u6807\u7b7e": 233, "\u8868\u793a0\u52309\u7684\u6570\u5b57": 233, "\u8fd9\u4e2a\u7b97\u6cd5\u7531\u4f60\u81ea\u5df1\u521b\u5efa": 233, "\u6211\u4eec\u5c06\u9075\u5faa\u6807\u51c6\u7684mnist\u7b97\u6cd5": 233, "\u7b2c\u4e00\u4e2a2d\u5377\u79ef\u5c42": 233, "\u63a5\u53d71\u4e2a\u8f93\u5165\u901a\u9053": 233, "\u56fe\u50cf": 233, "\u8f93\u51fa32\u4e2a\u5377\u79ef\u7279\u5f81": 233, "\u4f7f\u75283x3\u7684\u65b9\u5f62\u6838": 233, "\u7b2c\u4e8c\u4e2a2d\u5377\u79ef\u5c42": 233, "\u63a5\u53d732\u4e2a\u8f93\u5165\u5c42": 233, "\u8f93\u51fa64\u4e2a\u5377\u79ef\u7279\u5f81": 233, "\u8bbe\u8ba1\u4e3a\u786e\u4fdd\u76f8\u90bb\u50cf\u7d20\u8981\u4e48\u5168\u4e3a0": 233, "\u8981\u4e48\u5168\u4e3a\u6fc0\u6d3b": 233, "\u5177\u6709\u4e00\u5b9a\u8f93\u5165\u6982\u7387": 233, "\u7b2c\u4e00\u4e2a\u5168\u8fde\u63a5\u5c42": 233, "\u7b2c\u4e8c\u4e2a\u5168\u8fde\u63a5\u5c42": 233, "\u8f93\u51fa\u6211\u4eec\u768410\u4e2a\u6807\u7b7e": 233, "my_nn": 233, "\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u795e\u7ecf\u7f51\u7edc\u7684\u5b9a\u4e49": 233, "\u73b0\u5728\u6211\u4eec\u5fc5\u987b\u5b9a\u4e49\u6570\u636e\u5982\u4f55\u901a\u8fc7\u5b83": 233, "\u5f53\u4f60\u4f7f\u7528pytorch\u6784\u5efa\u6a21\u578b\u65f6": 233, "\u4f60\u53ea\u9700\u8981\u5b9a\u4e49": 233, "\u5b83\u5c06\u6570\u636e\u4f20\u9012\u5230\u8ba1\u7b97\u56fe": 233, "\u5373\u6211\u4eec\u7684\u795e\u7ecf\u7f51\u7edc": 233, "\u8fd9\u5c06\u4ee3\u8868\u6211\u4eec\u7684\u524d\u5411\u7b97\u6cd5": 233, "\u51fd\u6570\u4e2d\u4f7f\u7528\u4efb\u4f55\u5f20\u91cf\u64cd\u4f5c": 233, "x\u8868\u793a\u6211\u4eec\u7684\u6570\u636e": 233, "\u5c06\u6570\u636e\u4f20\u9012\u7ed9conv1": 233, "\u5bf9x\u4f7f\u7528\u6574\u6d41\u7ebf\u6027\u6fc0\u6d3b\u51fd\u6570": 233, "\u5bf9x\u8fd0\u884c\u6700\u5927\u6c60\u5316": 233, "\u5c06\u6570\u636e\u4f20\u9012\u7ed9dropout1": 233, "\u5c55\u5e73x": 233, "start_dim": 233, "\u5c06\u6570\u636e\u4f20\u9012\u7ed9": 233, "\u5bf9x\u5e94\u7528softmax": 233, "\u4e3a\u4e86\u786e\u4fdd\u6211\u4eec\u5f97\u5230\u671f\u671b\u7684\u8f93\u51fa": 233, "\u8ba9\u6211\u4eec\u901a\u8fc7\u4e00\u4e9b\u968f\u673a\u6570\u636e\u6d4b\u8bd5\u6211\u4eec\u7684\u6a21\u578b": 233, "\u7b49\u540c\u4e8e\u4e00\u4e2a\u968f\u673a\u768428x28\u56fe\u50cf": 233, "random_data": 233, "\u8fd9\u4e2a\u7ed3\u679c\u5f20\u91cf\u4e2d\u7684\u6bcf\u4e2a\u6570\u5b57\u90fd\u7b49\u540c\u4e8e\u968f\u673a\u5f20\u91cf\u6240\u5173\u8054\u7684\u6807\u7b7e\u7684\u9884\u6d4b": 233, "\u795d\u8d3a\u4f60": [233, 241, 242, 249, 250], "\u4f60\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u5b9a\u4e49\u4e86\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 233, "\u67e5\u770b\u8fd9\u4e9b\u5176\u4ed6\u6559\u7a0b\u4ee5\u7ee7\u7eed\u5b66\u4e60": [233, 242], "\u662f\u4ec0\u4e48": [233, 235, 236, 251], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u7528\u4e8e\u63a8\u7406": 233, "defining_a_neural_network": [233, 235], "postprocess": 234, "quanitz": 234, "lstm_for_demonstr": 234, "out_dim": 234, "29592": 234, "model_dimens": 234, "sequence_length": 234, "lstm_depth": 234, "_lstm": 234, "float_lstm": 234, "quantized_lstm": 234, "kb": [234, 238], "mileag": 234, "mag1": 234, "hidden2": 234, "mag2": 234, "mag3": 234, "documentaion": 234, "dynamic_quant": [234, 235], "loading_data_recip": [235, 236], "what_is_state_dict": [235, 249], "saving_and_loading_models_for_infer": [235, 242], "custom_dataset_transforms_load": 235, "save_load_across_devic": [235, 240], "saving_and_loading_a_general_checkpoint": [235, 241], "saving_multiple_models_in_one_fil": [235, 243], "warmstarting_model_using_parameters_from_a_different_model": [235, 248], "zeroing_out_gradi": [235, 250], "mobile_perf": 235, "\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8": [235, 251], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": [235, 251], "\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 235, "\u521b\u5efa\u795e\u7ecf\u7f51\u7edc": [235, 251], "\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": [235, 251], "timer\u5feb\u901f\u5165\u95e8": 235, "sphx_glr_recipes_recipes_zeroing_out_gradi": 235, "\u4e2d\u6e05\u96f6\u68af\u5ea6": [235, 250], "\u63d0\u4f9b\u4e86\u5e7f\u6cdb\u7684\u795e\u7ecf\u7f51\u7edc\u6784\u5efa\u6a21\u5757": 236, "\u5e76\u62e5\u6709\u7b80\u5355": 236, "\u76f4\u89c2\u4e14\u7a33\u5b9a\u7684": 236, "pytorch\u5305\u542b\u7528\u4e8e\u51c6\u5907\u548c\u52a0\u8f7d\u5e38\u89c1\u6570\u636e\u96c6\u7684\u5de5\u5177\u5305": 236, "\u4e3a\u8bad\u7ec3\u6a21\u578b\u63d0\u4f9b\u6570\u636e": 236, "\u6570\u636e\u52a0\u8f7d\u5de5\u5177\u7684\u6838\u5fc3\u7c7b\u4e3a": 236, "\u5b83\u8868\u793a\u6570\u636e\u96c6\u4e0a\u7684\u4e00\u4e2a": 236, "\u53ef\u8fed\u4ee3\u5bf9\u8c61": 236, "\u63d0\u4f9b\u4e86\u5185\u7f6e\u7684\u9ad8\u8d28\u91cf\u6570\u636e\u96c6": 236, "\u53ef\u901a\u8fc7": 236, "\u4f7f\u7528\u8fd9\u4e9b\u6570\u636e\u96c6\u53ef\u901a\u8fc7": 236, "\u672a\u6765\u4f1a\u6301\u7eed\u65b0\u589e": 236, "yesno": 236, "\u6211\u4eec\u5c06\u6f14\u793a\u5982\u4f55\u6709\u6548\u5730\u5c06\u6570\u636e\u4ece": 236, "\u52a0\u8f7d\u5230": 236, "\u5b89\u88c5": 236, "\u6211\u4eec\u9700\u8981\u5b89\u88c5": 236, "\u4ee5\u8bbf\u95ee\u8be5\u6570\u636e\u96c6": 236, "\u5982\u679c\u5728googl": 236, "\u8bf7\u53d6\u6d88\u6ce8\u91ca\u4ee5\u4e0b\u884c": 236, "\u6839\u636e\u4f7f\u7528\u7684\u5185\u7f6e\u6570\u636e\u96c6": 236, "\u60a8\u8fd8\u53ef\u4ee5\u5b89\u88c5\u5e76\u5bfc\u5165": 236, "\u6570\u636e\u96c6\u5305\u542b\u4e00\u4e2a\u4eba\u8bf4\u5e0c\u4f2f\u6765\u8bed": 236, "\u5426": 236, "\u768460\u4e2a\u5f55\u97f3": 236, "\u6bcf\u4e2a\u5f55\u97f3\u957f\u5ea6\u4e3a8\u4e2a\u5355\u8bcd": 236, "\u66f4\u591a\u4fe1\u606f": 236, "\u521b\u5efa\u4e86\u4e00\u4e2a": 236, "openslr": 236, "waves_yesno": 236, "folder_in_arch": 236, "\u6570\u636e\u96c6\u4e2d\u7684\u6bcf\u4e2a\u6761\u76ee\u90fd\u662f\u4e00\u4e2a\u5143\u7ec4": 236, "\u5f62\u5f0f\u4e3a": 236, "\u6ce2\u5f62": 236, "\u91c7\u6837\u7387": 236, "\u60a8\u5fc5\u987b\u4e3a": 236, "\u6570\u636e\u96c6\u8bbe\u7f6e\u4e00\u4e2a": 236, "\u76ee\u5f55": 236, "\u7528\u4e8e\u5b58\u653e\u8bad\u7ec3\u548c\u6d4b\u8bd5\u6570\u636e\u96c6": 236, "\u5176\u4ed6\u53c2\u6570\u662f\u53ef\u9009\u7684": 236, "\u663e\u793a\u4e86\u5b83\u4eec\u7684\u9ed8\u8ba4\u503c": 236, "\u4ee5\u4e0b\u662f\u5176\u4ed6\u53c2\u6570\u7684\u4e00\u4e9b\u6709\u7528\u4fe1\u606f": 236, "\u5982\u679c\u4e3atrue": 236, "\u5219\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u6570\u636e\u96c6\u5e76\u5c06\u5176\u653e\u5728root\u76ee\u5f55\u4e2d": 236, "\u5982\u679c\u6570\u636e\u96c6\u5df2\u4e0b\u8f7d": 236, "\u5219\u4e0d\u4f1a\u91cd\u65b0\u4e0b\u8f7d": 236, "\u8ba9\u6211\u4eec\u8bbf\u95ee": 236, "\u4e2d\u7684\u4e00\u4e2a\u6570\u636e\u70b9\u662f\u4e00\u4e2a\u5143\u7ec4": 236, "\u5176\u4e2d\u6807\u7b7e\u662f\u4e00\u4e2a\u6574\u6570\u5217\u8868": 236, "1\u8868\u793aye": 236, "0\u8868\u793ano": 236, "yesno_data": 236, "\u9009\u62e9\u6570\u636e\u70b9\u7f16\u53f73": 236, "\u7684\u793a\u4f8b": 236, "waveform": 236, "sample_r": 236, "nlabel": 236, "\u5728\u5b9e\u8df5\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u6570\u636e\u65f6": 236, "\u6700\u597d\u5c06\u6570\u636e\u5212\u5206\u4e3a": 236, "\u6570\u636e\u96c6\u548c": 236, "\u8fd9\u53ef\u786e\u4fdd\u60a8\u6709\u672a\u4f7f\u7528\u7684\u6570\u636e\u6765\u6d4b\u8bd5\u6a21\u578b\u7684\u6027\u80fd": 236, "\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u8bbf\u95ee\u6570\u636e\u96c6": 236, "\u6211\u4eec\u5fc5\u987b\u901a\u8fc7": 236, "\u4f20\u9012\u5b83": 236, "\u5c06\u6570\u636e\u96c6\u548c\u91c7\u6837\u5668\u7ec4\u5408\u5728\u4e00\u8d77": 236, "\u8fd4\u56de\u6570\u636e\u96c6\u4e0a\u7684\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 236, "\u6211\u4eec\u7684\u6570\u636e\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528": 236, "\u8fdb\u884c\u8fed\u4ee3": 236, "\u5728\u5f00\u59cb\u8bad\u7ec3\u6a21\u578b\u65f6": 236, "\u8fd9\u5c06\u662f\u5fc5\u9700\u7684": 236, "\u60a8\u4f1a\u6ce8\u610f\u5230": 236, "\u5bf9\u8c61\u4e2d\u7684\u6bcf\u4e2a\u6570\u636e\u6761\u76ee\u90fd\u8f6c\u6362\u4e3a\u4e00\u4e2a\u5f20\u91cf": 236, "\u5176\u4e2d\u5305\u542b\u8868\u793a\u6ce2\u5f62": 236, "\u91c7\u6837\u7387\u548c\u6807\u7b7e\u7684\u5f20\u91cf": 236, "\u60a8\u53ef\u4ee5\u9009\u62e9\u53ef\u89c6\u5316\u6570\u636e": 236, "\u4ee5\u8fdb\u4e00\u6b65\u4e86\u89e3": 236, "\u795d\u8d3a\u60a8": [236, 240, 243, 248], "\u60a8\u5df2\u6210\u529f\u5728pytorch\u4e2d\u52a0\u8f7d\u6570\u636e": 236, "\u67e5\u770b\u8fd9\u4e9b\u5176\u4ed6\u6559\u7a0b": [236, 248, 249, 250], "\u7ee7\u7eed\u60a8\u7684\u5b66\u4e60": [236, 248], "\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc": 236, "pytorch\u4e2d\u7684state_dict": 236, "mikayla": [237, 244], "gawarecki": [237, 244], "somemodul": 237, "meta_m": 237, "undesir": 237, "upfront": 237, "my_special_routin": 237, "fancier": 237, "my_processing_funct": 237, "processed_t": 237, "new_m": 237, "param_in_model": 237, "param_in_state_dict": 237, "set_swap_module_params_on_convers": [237, 244], "swap_tensor": 237, "module_load_state_dict_tip": 237, "\u672c\u6559\u7a0b\u89e3\u91ca\u4e86\u5982\u4f55\u4f7f\u7528pytorch": 238, "\u5e76\u6d4b\u91cf\u6a21\u578b\u7b97\u5b50\u7684\u65f6\u95f4\u548c\u5185\u5b58\u6d88\u8017": 238, "\u5f53\u7528\u6237\u9700\u8981\u786e\u5b9a\u6a21\u578b\u4e2d\u6700\u8017\u8d39\u8d44\u6e90\u7684\u7b97\u5b50\u65f6": 238, "pytorch\u5305\u542b\u4e00\u4e2a\u7b80\u5355\u7684profil": 238, "api\u975e\u5e38\u6709\u7528": 238, "\u6211\u4eec\u5c06\u4f7f\u7528\u4e00\u4e2a\u7b80\u5355\u7684": 238, "\u6a21\u578b\u6765\u6f14\u793a\u5982\u4f55\u4f7f\u7528profiler\u5206\u6790\u6a21\u578b\u6027\u80fd": 238, "\u8981\u5b89\u88c5": 238, "\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4": 238, "\u5bfc\u5165\u6240\u6709\u5fc5\u9700\u7684\u5e93": 238, "\u5b9e\u4f8b\u5316\u4e00\u4e2a\u7b80\u5355\u7684resnet\u6a21\u578b": 238, "\u4f7f\u7528profiler\u5206\u6790\u5185\u5b58\u6d88\u8017": 238, "\u4f7f\u7528profiler\u5206\u6790\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a": 238, "\u8ba9\u6211\u4eec\u521b\u5efa\u4e00\u4e2a": 238, "\u6a21\u578b\u5b9e\u4f8b": 238, "\u5e76\u4e3a\u5b83\u51c6\u5907\u4e00\u4e2a\u8f93\u5165": 238, "profiler\u901a\u8fc7\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u542f\u7528": 238, "\u5e76\u63a5\u53d7\u591a\u4e2a\u53c2\u6570": 238, "\u5176\u4e2d\u4e00\u4e9b\u6700\u6709\u7528\u7684\u53c2\u6570\u5982\u4e0b": 238, "\u8981\u5206\u6790\u7684\u6d3b\u52a8\u5217\u8868": 238, "pytorch\u7b97\u5b50": 238, "torchscript\u51fd\u6570\u548c\u7528\u6237\u5b9a\u4e49\u7684\u4ee3\u7801\u6807\u7b7e": 238, "\u89c1\u4e0b\u9762\u7684": 238, "\u8bbe\u5907\u4e0a\u7684cuda\u5185\u6838": 238, "\u662f\u5426\u8bb0\u5f55\u7b97\u5b50\u8f93\u5165\u7684\u5f62\u72b6": 238, "\u662f\u5426\u62a5\u544a\u6a21\u578b\u5f20\u91cf\u6240\u6d88\u8017\u7684\u5185\u5b58\u91cf": 238, "\u662f\u5426\u6d4b\u91cfcuda\u5185\u6838\u7684\u6267\u884c\u65f6\u95f4": 238, "\u5f53\u4f7f\u7528cuda\u65f6": 238, "profiler\u8fd8\u4f1a\u663e\u793a\u4e3b\u673a\u4e0a\u53d1\u751f\u7684\u8fd0\u884c\u65f6cuda\u4e8b\u4ef6": 238, "\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u4f7f\u7528profiler\u5206\u6790\u6267\u884c\u65f6\u95f4": 238, "model_infer": 238, "\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u4e3a\u4efb\u610f\u4ee3\u7801\u8303\u56f4\u6dfb\u52a0\u7528\u6237\u63d0\u4f9b\u7684\u540d\u79f0\u6807\u7b7e": 238, "\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\u4f7f\u7528": 238, "\u4f5c\u4e3a\u6807\u7b7e": 238, "profiler\u5141\u8bb8\u68c0\u67e5\u5728\u4f7f\u7528profiler\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u5305\u88c5\u7684\u4ee3\u7801\u8303\u56f4\u5185\u6267\u884c\u671f\u95f4\u8c03\u7528\u4e86\u54ea\u4e9b\u7b97\u5b50": 238, "\u5982\u679c\u540c\u65f6\u5b58\u5728\u591a\u4e2a\u6d3b\u52a8\u7684profiler\u8303\u56f4": 238, "\u4f8b\u5982\u5728\u5e76\u884cpytorch\u7ebf\u7a0b\u4e2d": 238, "\u6bcf\u4e2aprofiling\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u53ea\u8ddf\u8e2a\u5176\u5bf9\u5e94\u8303\u56f4\u7684\u7b97\u5b50": 238, "profiler\u8fd8\u4f1a\u81ea\u52a8\u5206\u6790\u4f7f\u7528": 238, "_fork": 238, "\u542f\u52a8\u7684\u5f02\u6b65\u4efb\u52a1": 238, "\u4ee5\u53ca\u5728\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u4f7f\u7528": 238, "\u8c03\u7528\u542f\u52a8\u7684\u53cd\u5411\u4f20\u64ad\u7b97\u5b50": 238, "\u8ba9\u6211\u4eec\u6253\u5370\u51fa\u4e0a\u8ff0\u6267\u884c\u7684\u7edf\u8ba1\u4fe1\u606f": 238, "cpu_time_tot": 238, "\u8f93\u51fa\u5c06\u5982\u4e0b\u6240\u793a": 238, "\u7701\u7565\u4e86\u4e00\u4e9b\u5217": 238, "509m": 238, "503m": 238, "931m": 238, "597m": 238, "700m": 238, "585m": 238, "_convolut": 238, "450m": 238, "mkldnn_convolut": 238, "838m": 238, "114m": 238, "556m": 238, "693m": 238, "_batch_norm_impl_index": 238, "482m": 238, "724": 238, "100u": 238, "native_batch_norm": 238, "229m": 238, "109m": 238, "705": 238, "450u": 238, "332": 238, "631m": 238, "286u": 238, "668m": 238, "292m": 238, "988u": 238, "549m": 238, "group_by_input_shap": 238, "\u8fd9\u91cc\u6211\u4eec\u53ef\u4ee5\u770b\u5230": 238, "\u5982\u9884\u671f\u7684\u90a3\u6837": 238, "\u5927\u90e8\u5206\u65f6\u95f4\u90fd\u82b1\u5728\u4e86\u5377\u79ef\u4e0a": 238, "\u5bf9\u4e8e\u4f7f\u7528": 238, "\u652f\u6301\u7f16\u8bd1\u7684pytorch": 238, "\u7279\u522b\u662f\u5728": 238, "\u6ce8\u610f\u81ea\u8eabcpu\u65f6\u95f4\u548ccpu\u65f6\u95f4\u4e4b\u95f4\u7684\u533a\u522b": 238, "\u7b97\u5b50\u53ef\u4ee5\u8c03\u7528\u5176\u4ed6\u7b97\u5b50": 238, "\u81ea\u8eabcpu\u65f6\u95f4\u4e0d\u5305\u62ec\u5728\u5b50\u7b97\u5b50\u8c03\u7528\u4e2d\u82b1\u8d39\u7684\u65f6\u95f4": 238, "\u800c\u603bcpu\u65f6\u95f4\u5305\u62ec\u4e86\u5b83": 238, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u5c06": 238, "\u8c03\u7528\u6765\u9009\u62e9\u6309\u81ea\u8eabcpu\u65f6\u95f4\u6392\u5e8f": 238, "\u8981\u83b7\u5f97\u66f4\u7ec6\u7c92\u5ea6\u7684\u7ed3\u679c\u5e76\u5305\u542b\u7b97\u5b50\u8f93\u5165\u5f62\u72b6": 238, "\u8bf7\u4f20\u9012": 238, "\u8fd9\u9700\u8981\u4f7f\u7528": 238, "\u8fd0\u884cprofil": 238, "\u8f93\u51fa\u53ef\u80fd\u5982\u4e0b\u6240\u793a": 238, "008m": 238, "956m": 238, "909m": 238, "834m": 238, "332m": 238, "303m": 238, "273m": 238, "233m": 238, "751m": 238, "\u51fa\u73b0\u4e86\u4e24\u6b21": 238, "\u5177\u6709\u4e0d\u540c\u7684\u8f93\u5165\u5f62\u72b6": 238, "profiler\u4e5f\u53ef\u7528\u4e8e\u5206\u6790\u5728gpu\u4e0a\u6267\u884c\u7684\u6a21\u578b\u7684\u6027\u80fd": 238, "\u7b2c\u4e00\u6b21\u4f7f\u7528cuda\u5206\u6790\u53ef\u80fd\u4f1a\u5e26\u6765\u989d\u5916\u7684\u5f00\u9500": 238, "\u7ed3\u679c\u8f93\u51fa": 238, "666m": 238, "484m": 238, "_convolution_nogroup": 238, "thnn_conv2d": 238, "thnn_conv2d_forward": 238, "im2col_kernel": 238, "844m": 238, "sgemm_32x32x32_nn": 238, "206m": 238, "sgemm_32x32x32_nn_vec": 238, "093m": 238, "015m": 238, "\u6ce8\u610f\u5728\u8f93\u51fa\u4e2d\u51fa\u73b0\u4e86\u8bbe\u5907\u4e0a\u7684\u5185\u6838": 238, "profiler\u8fd8\u53ef\u4ee5\u663e\u793a\u5728\u6267\u884c\u6a21\u578b\u7b97\u5b50\u671f\u95f4\u5206\u914d": 238, "\u6216\u91ca\u653e": 238, "\u7684\u5185\u5b58\u91cf": 238, "\u7531\u6a21\u578b\u5f20\u91cf\u4f7f\u7528": 238, "\u5728\u4e0b\u9762\u7684\u8f93\u51fa\u4e2d": 238, "\u5185\u5b58\u5bf9\u5e94\u4e8e\u7b97\u5b50\u5206\u914d": 238, "\u91ca\u653e": 238, "\u7684\u5185\u5b58": 238, "\u4e0d\u5305\u62ec\u5bf9\u5176\u4ed6\u7b97\u5b50\u7684\u5b50\u8c03\u7528": 238, "\u8981\u542f\u7528\u5185\u5b58\u5206\u6790\u529f\u80fd": 238, "self_cpu_memory_usag": 238, "max_pool2d_with_indic": 238, "572": 238, "resize_": 238, "064m": 238, "cpu_memory_usag": 238, "\u8f93\u51fa\u5982\u4e0b\u6240\u793a": 238, "\u53ef\u4ee5\u5c06\u5206\u6790\u7ed3\u679c\u8f93\u51fa\u4e3a": 238, "\u8ddf\u8e2a\u6587\u4ef6": 238, "\u4f60\u53ef\u4ee5\u5728chrome\u8ddf\u8e2a\u67e5\u770b\u5668": 238, "\u4e2d\u68c0\u67e5\u5206\u6790\u7684\u7b97\u5b50\u548ccuda\u5185\u6838\u5e8f\u5217": 238, "\u53ef\u7528\u4e8e\u5206\u6790": 238, "\u5806\u6808\u8ddf\u8e2a": 238, "self_cuda_time_tot": 238, "439": 238, "_conv_forward": 238, "1051": 238, "_call_impl": 238, "016m": 238, "659m": 238, "\u6ce8\u610f\u5728": 238, "\u811a\u672c\u4e2d\u7684\u4e24\u4e2a\u5377\u79ef\u548c\u4e24\u4e2a\u8c03\u7528\u4f4d\u7f6e": 238, "\u8b66\u544a": 238, "\u5806\u6808\u8ddf\u8e2a\u4f1a\u589e\u52a0\u989d\u5916\u7684\u5206\u6790\u5f00\u9500": 238, "pytorch\u5206\u6790\u5668\u63d0\u4f9b\u4e86\u4e00\u4e2a\u989d\u5916\u7684api\u6765\u5904\u7406\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a": 238, "\u4f8b\u5982\u8bad\u7ec3\u5faa\u73af": 238, "\u8ddf\u8e2a\u6240\u6709\u6267\u884c\u53ef\u80fd\u4f1a\u5f88\u6162": 238, "\u5e76\u5bfc\u81f4\u975e\u5e38\u5927\u7684\u8ddf\u8e2a\u6587\u4ef6": 238, "\u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u60c5\u51b5": 238, "\u53ef\u4ee5\u4f7f\u7528\u53ef\u9009\u53c2\u6570": 238, "\u6307\u5b9a\u4e00\u4e2a\u51fd\u6570": 238, "\u8be5\u51fd\u6570\u4ee5\u6574\u6570\u53c2\u6570": 238, "\u6b65\u9aa4\u7f16\u53f7": 238, "\u4f5c\u4e3a\u8f93\u5165": 238, "\u5e76\u8fd4\u56de\u5206\u6790\u5668\u7684\u64cd\u4f5c": 238, "\u4f7f\u7528\u6b64\u53c2\u6570\u7684\u6700\u4f73\u65b9\u5f0f\u662f\u4f7f\u7528": 238, "\u5e2e\u52a9\u51fd\u6570": 238, "\u5b83\u53ef\u4ee5\u4e3a\u60a8\u751f\u6210\u4e00\u4e2a\u8ba1\u5212": 238, "\u8be5\u51fd\u6570\u4ee5\u5206\u6790\u5668\u7684\u5f15\u7528\u4f5c\u4e3a\u8f93\u5165": 238, "\u5e76\u5728\u6bcf\u6b21\u65b0\u7684\u8ddf\u8e2a\u51c6\u5907\u5c31\u7eea\u65f6\u7531\u5206\u6790\u5668\u8c03\u7528": 238, "\u4e3a\u4e86\u8bf4\u660e\u8be5api\u7684\u5de5\u4f5c\u539f\u7406": 238, "\u8ba9\u6211\u4eec\u9996\u5148\u8003\u8651\u4ee5\u4e0b\u4f7f\u7528": 238, "\u5e2e\u52a9\u51fd\u6570\u7684\u793a\u4f8b": 238, "\u5206\u6790\u5668\u5047\u8bbe\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a\u7531\u4ece\u96f6\u5f00\u59cb\u7f16\u53f7\u7684\u6b65\u9aa4\u7ec4\u6210": 238, "\u4e0a\u9762\u7684\u793a\u4f8b\u4e3a\u5206\u6790\u5668\u5b9a\u4e49\u4e86\u4ee5\u4e0b\u64cd\u4f5c\u5e8f\u5217": 238, "\u544a\u8bc9\u5206\u6790\u5668\u5b83\u5e94\u8be5\u5ffd\u7565\u524d10\u4e2a\u6b65\u9aa4": 238, "\u7684\u9ed8\u8ba4\u503c\u4e3a\u96f6": 238, "\u5728\u7b2c\u4e00\u4e2a": 238, "\u6b65\u9aa4\u4e4b\u540e": 238, "\u5206\u6790\u5668\u5f00\u59cb\u6267\u884c\u5206\u6790\u5668\u5468\u671f": 238, "\u6bcf\u4e2a\u5468\u671f\u7531\u4e09\u4e2a\u9636\u6bb5\u7ec4\u6210": 238, "\u7a7a\u95f2": 238, "\u5728\u6b64\u9636\u6bb5\u5206\u6790\u5668\u4e0d\u6d3b\u52a8": 238, "\u9884\u70ed": 238, "\u5728\u6b64\u9636\u6bb5\u5206\u6790\u5668\u5f00\u59cb\u8ddf\u8e2a": 238, "\u4f46\u7ed3\u679c\u88ab\u4e22\u5f03": 238, "\u6b64\u9636\u6bb5\u7528\u4e8e\u4e22\u5f03\u5206\u6790\u5668\u5728\u8ddf\u8e2a\u5f00\u59cb\u65f6\u83b7\u5f97\u7684\u6837\u672c": 238, "\u56e0\u4e3a\u5b83\u4eec\u901a\u5e38\u7531\u989d\u5916\u7684\u5f00\u9500\u626d\u66f2": 238, "\u4e3b\u52a8\u8ddf\u8e2a": 238, "\u5728\u6b64\u9636\u6bb5\u5206\u6790\u5668\u8ddf\u8e2a\u548c\u8bb0\u5f55\u6570\u636e": 238, "\u53ef\u9009\u7684": 238, "\u53c2\u6570\u6307\u5b9a\u5468\u671f\u7684\u4e0a\u9650": 238, "\u96f6\u503c": 238, "\u5206\u6790\u5668\u5c06\u5c3d\u53ef\u80fd\u957f\u65f6\u95f4\u5730\u6267\u884c\u5468\u671f": 238, "\u5206\u6790\u5668\u5c06\u8df3\u8fc7\u524d15\u4e2a\u6b65\u9aa4": 238, "\u5728\u4e0b\u4e00\u6b65\u8fdb\u884c\u9884\u70ed": 238, "\u5728\u63a5\u4e0b\u6765\u76843\u4e2a\u6b65\u9aa4\u4e2d\u4e3b\u52a8\u8bb0\u5f55": 238, "\u518d\u8df3\u8fc7\u53e6\u59165\u4e2a\u6b65\u9aa4": 238, "\u5728\u53e6\u59163\u4e2a\u6b65\u9aa4\u4e2d\u4e3b\u52a8\u8bb0\u5f55": 238, "\u7531\u4e8e\u6307\u5b9a\u4e86": 238, "\u53c2\u6570\u503c": 238, "\u5206\u6790\u5668\u5c06\u5728\u524d\u4e24\u4e2a\u5468\u671f\u4e4b\u540e\u505c\u6b62\u8bb0\u5f55": 238, "\u5728\u6bcf\u4e2a\u5468\u671f\u7ed3\u675f\u65f6": 238, "\u5206\u6790\u5668\u8c03\u7528\u6307\u5b9a\u7684": 238, "\u51fd\u6570\u5e76\u5c06\u81ea\u8eab\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012": 238, "\u6b64\u51fd\u6570\u7528\u4e8e\u5904\u7406\u65b0\u7684\u8ddf\u8e2a": 238, "\u901a\u8fc7\u83b7\u53d6\u8868\u8f93\u51fa\u6216\u5c06\u8f93\u51fa\u4fdd\u5b58\u5230\u78c1\u76d8\u4e0a\u7684\u8ddf\u8e2a\u6587\u4ef6": 238, "\u8981\u5411\u5206\u6790\u5668\u53d1\u9001\u4e0b\u4e00\u6b65\u5df2\u7ecf\u5f00\u59cb\u7684\u4fe1\u53f7": 238, "\u8bf7\u8c03\u7528": [238, 243], "\u5f53\u524d\u5206\u6790\u5668\u6b65\u9aa4\u5b58\u50a8\u5728": 238, "\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86\u5982\u4f55\u4f7f\u7528\u4e0a\u8ff0\u6240\u6709\u6982\u5ff5": 238, "trace_": 238, "\u67e5\u770b\u4ee5\u4e0b\u6559\u7a0b\u4ee5\u7ee7\u7eed\u5b66\u4e60": 238, "\u57fa\u51c6\u6d4b\u8bd5": 238, "\u5206\u6790\u5668": 238, "\u53ef\u89c6\u5316\u6a21\u578b": 238, "\u6570\u636e\u548c\u8bad\u7ec3": 238, "profiler_recip": 238, "t_larg": 239, "fw_hook": 239, "reasoning_about_shap": 239, "\u60a8\u53ef\u80fd\u9700\u8981\u5728\u4e0d\u540c\u7684\u8bbe\u5907\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u795e\u7ecf\u7f51\u7edc\u6a21\u578b": 240, "\u4f7f\u7528pytorch\u5728\u4e0d\u540c\u8bbe\u5907\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u662f\u76f8\u5bf9\u76f4\u63a5\u7684": 240, "\u6211\u4eec\u5c06\u5c1d\u8bd5\u5728cpu\u548cgpu\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 240, "\u4e3a\u4e86\u8ba9\u672c\u6559\u7a0b\u4e2d\u7684\u6bcf\u4e2a\u4ee3\u7801\u5757\u90fd\u80fd\u6b63\u786e\u8fd0\u884c": 240, "\u60a8\u5fc5\u987b\u5148\u5c06\u8fd0\u884c\u73af\u5883\u5207\u6362\u5230": 240, "\u6216\u66f4\u9ad8": 240, "\u5b8c\u6210\u540e": 240, "\u6211\u4eec\u9700\u8981\u5b89\u88c5\u5b83": [240, 241], "\u4fdd\u5b58\u548c\u52a0\u8f7d": 240, "\u4e3a\u4e86\u6f14\u793a": [240, 242, 243, 249], "\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u8bad\u7ec3\u56fe\u50cf\u7684\u795e\u7ecf\u7f51\u7edc": [240, 241, 242, 243, 248, 249], "\u8981\u4e86\u89e3\u66f4\u591a\u4fe1\u606f": [240, 241, 242, 243, 248, 249, 250], "\u8bf7\u53c2\u9605\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u7684\u6559\u7a0b": [240, 242, 243, 248, 249], "\u5f53\u5728cpu\u4e0a\u52a0\u8f7d\u4f7f\u7528gpu\u8bad\u7ec3\u7684\u6a21\u578b\u65f6": 240, "\u8bf7\u5c06": 240, "\u51fd\u6570\u7684": 240, "\u6307\u5b9a\u4fdd\u5b58\u8def\u5f84": [240, 243, 248], "\u5f20\u91cf\u5e95\u5c42\u7684\u5b58\u50a8\u5c06\u4f7f\u7528": 240, "\u53c2\u6570\u52a8\u6001\u91cd\u65b0\u6620\u5c04\u5230cpu\u8bbe\u5907": 240, "\u5f53\u5728gpu\u4e0a\u52a0\u8f7d\u4f7f\u7528gpu\u8bad\u7ec3\u548c\u4fdd\u5b58\u7684\u6a21\u578b\u65f6": 240, "\u53ea\u9700\u4f7f\u7528": 240, "\u5c06\u521d\u59cb\u5316\u7684\u6a21\u578b\u8f6c\u6362\u4e3acuda\u4f18\u5316\u6a21\u578b": 240, "\u8bf7\u786e\u4fdd\u5bf9\u6240\u6709\u6a21\u578b\u8f93\u5165\u4f7f\u7528": 240, "\u4e3a\u6a21\u578b\u51c6\u5907\u6570\u636e": 240, "\u4f1a\u8fd4\u56de": 240, "\u5728gpu\u4e0a\u7684\u65b0\u526f\u672c": 240, "\u5b83\u4e0d\u4f1a\u8986\u76d6": 240, "\u8bf7\u8bb0\u4f4f\u624b\u52a8\u8986\u76d6\u5f20\u91cf": 240, "\u5f53\u5728gpu\u4e0a\u52a0\u8f7d\u4f7f\u7528cpu\u8bad\u7ec3\u548c\u4fdd\u5b58\u7684\u6a21\u578b\u65f6": 240, "\u8bf7\u5728": 240, "\u51fd\u6570\u4e2d\u5c06": [240, 248], "\u53c2\u6570\u8bbe\u7f6e\u4e3a": [240, 248], "\u5c06\u6a21\u578b\u52a0\u8f7d\u5230\u7ed9\u5b9a\u7684gpu\u8bbe\u5907": 240, "\u5c06\u6a21\u578b\u7684\u53c2\u6570\u5f20\u91cf\u8f6c\u6362\u4e3acuda\u5f20\u91cf": 240, "\u8fd8\u8981\u786e\u4fdd\u5bf9\u6240\u6709\u6a21\u578b\u8f93\u5165\u4f7f\u7528": 240, "\u4e3acuda\u4f18\u5316\u7684\u6a21\u578b\u51c6\u5907\u6570\u636e": 240, "\u9009\u62e9\u60a8\u60f3\u7528\u7684gpu\u8bbe\u5907\u7f16\u53f7": 240, "\u662f\u4e00\u4e2a\u6a21\u578b\u5305\u88c5\u5668": 240, "\u53ef\u4ee5\u542f\u7528\u5e76\u884cgpu\u5229\u7528": 240, "\u8981\u901a\u7528\u5730\u4fdd\u5b58": 240, "\u8bf7\u4fdd\u5b58": 240, "\u8fd9\u6837": 240, "\u60a8\u5c31\u53ef\u4ee5\u7075\u6d3b\u5730\u5c06\u6a21\u578b\u52a0\u8f7d\u5230\u4efb\u4f55\u8bbe\u5907": 240, "\u52a0\u8f7d\u5230\u4efb\u4f55\u60a8\u60f3\u8981\u7684\u8bbe\u5907": 240, "\u60a8\u5df2\u6210\u529f\u5728pytorch\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 240, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9\u6a21\u578b\u7528\u4e8e\u63a8\u7406\u6216\u6062\u590d\u8bad\u7ec3\u53ef\u4ee5\u5e2e\u52a9\u4f60\u4ece\u4e0a\u6b21\u79bb\u5f00\u7684\u5730\u65b9\u7ee7\u7eed": 241, "\u5f53\u4fdd\u5b58\u901a\u7528\u68c0\u67e5\u70b9\u65f6": 241, "\u4f60\u5fc5\u987b\u4fdd\u5b58\u4e0d\u4ec5\u4ec5\u662f\u6a21\u578b\u7684": 241, "\u540c\u65f6\u4e5f\u5f88\u91cd\u8981\u4fdd\u5b58\u4f18\u5316\u5668\u7684": 241, "\u56e0\u4e3a\u5b83\u5305\u542b\u4e86\u5728\u6a21\u578b\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u66f4\u65b0\u7684\u7f13\u51b2\u533a\u548c\u53c2\u6570": 241, "\u6839\u636e\u4f60\u81ea\u5df1\u7684\u7b97\u6cd5": 241, "\u4f60\u53ef\u80fd\u8fd8\u9700\u8981\u4fdd\u5b58\u4f60\u79bb\u5f00\u65f6\u7684": 241, "\u6700\u65b0\u8bb0\u5f55\u7684\u8bad\u7ec3\u635f\u5931": 241, "\u5916\u90e8\u7684": 241, "\u5c42\u7b49\u7b49": 241, "\u8981\u4fdd\u5b58\u591a\u4e2a\u68c0\u67e5\u70b9": 241, "\u4f60\u5fc5\u987b\u5c06\u5b83\u4eec\u7ec4\u7ec7\u5728\u4e00\u4e2a\u5b57\u5178\u4e2d": 241, "\u6765\u5e8f\u5217\u5316\u8fd9\u4e2a\u5b57\u5178": 241, "\u4e00\u4e2a\u5e38\u89c1\u7684": 241, "\u7ea6\u5b9a\u662f\u4f7f\u7528": 241, "\u6587\u4ef6\u6269\u5c55\u540d\u6765\u4fdd\u5b58\u8fd9\u4e9b\u68c0\u67e5\u70b9": 241, "\u8981\u52a0\u8f7d\u8fd9\u4e9b\u9879\u76ee": 241, "\u9996\u5148\u521d\u59cb\u5316\u6a21\u578b\u548c\u4f18\u5316\u5668": [241, 243], "\u5728\u672c\u5730\u52a0\u8f7d\u5b57\u5178": [241, 243], "\u4ece\u8fd9\u91cc\u5f00\u59cb": [241, 243], "\u4f60\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u5730\u67e5\u8be2\u5b57\u5178\u6765\u8f7b\u677e\u8bbf\u95ee\u4fdd\u5b58\u7684\u9879\u76ee": 241, "\u5c31\u50cf\u4f60\u671f\u671b\u7684\u90a3\u6837": 241, "\u6211\u4eec\u5c06\u63a2\u7d22\u5982\u4f55\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u68c0\u67e5\u70b9": 241, "\u5bf9\u4e8e\u8fd9\u4e2a\u793a\u4f8b": 241, "\u4e3a\u4e86\u793a\u4f8b": 241, "\u8bf7\u53c2\u9605\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u7684\u793a\u4f8b": 241, "\u6536\u96c6\u6240\u6709\u76f8\u5173\u4fe1\u606f\u5e76\u6784\u5efa\u5b57\u5178": [241, 243], "\u9644\u52a0\u4fe1\u606f": 241, "\u7136\u540e\u5728\u672c\u5730\u52a0\u8f7d\u5b57\u5178": [241, 243], "\u6216\u8005": [241, 246], "\u4f60\u5fc5\u987b\u8c03\u7528model": 241, "\u6765\u5c06dropout\u548c\u6279\u5f52\u4e00\u5316\u5c42\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 241, "\u7136\u540e\u624d\u80fd\u8fd0\u884c\u63a8\u7406": 241, "\u5c06\u4f1a\u5f97\u5230\u4e0d\u4e00\u81f4\u7684\u63a8\u7406\u7ed3\u679c": 241, "\u5982\u679c\u4f60\u5e0c\u671b\u6062\u590d\u8bad\u7ec3": 241, "\u4ee5\u786e\u4fdd\u8fd9\u4e9b\u5c42\u5904\u4e8e\u8bad\u7ec3\u6a21\u5f0f": [241, 243], "\u4f60\u5df2\u7ecf\u6210\u529f\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e86\u4e00\u4e2a\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u6709\u4e24\u79cd\u65b9\u6cd5": 242, "\u7b2c\u4e00\u79cd\u662f\u4fdd\u5b58\u548c\u52a0\u8f7d": 242, "\u7b2c\u4e8c\u79cd\u662f\u4fdd\u5b58\u548c\u52a0\u8f7d\u6574\u4e2a\u6a21\u578b": 242, "\u51fd\u6570\u4fdd\u5b58\u6a21\u578b\u7684": 242, "\u4e3a\u540e\u7eed\u6062\u590d\u6a21\u578b\u63d0\u4f9b\u8f83\u5927\u7684\u7075\u6d3b\u6027": 242, "\u4fdd\u5b58\u6a21\u578b\u7684\u63a8\u8350\u4f7f\u7528\u6b64\u65b9\u6cd5": 242, "\u56e0\u4e3a\u53ea\u9700\u8981\u4fdd\u5b58\u8bad\u7ec3\u597d\u7684\u6a21\u578b\u7684\u5b66\u4e60\u53c2\u6570": 242, "\u5f53\u4fdd\u5b58\u548c\u52a0\u8f7d\u6574\u4e2a\u6a21\u578b\u65f6": 242, "\u4f60\u4f7f\u7528python": 242, "\u6a21\u5757\u4fdd\u5b58\u6574\u4e2a\u6a21\u5757": 242, "\u4f7f\u7528\u8fd9\u79cd\u65b9\u6cd5\u8bed\u6cd5\u6700\u76f4\u89c2": 242, "\u4ee3\u7801\u91cf\u6700\u5c11": 242, "\u4f46\u8fd9\u79cd\u65b9\u6cd5\u7684\u7f3a\u70b9\u662f\u5e8f\u5217\u5316\u7684\u6570\u636e\u4e0e\u4fdd\u5b58\u6a21\u578b\u65f6\u4f7f\u7528\u7684\u7279\u5b9a\u7c7b\u548c\u76ee\u5f55\u7ed3\u6784\u7ed1\u5b9a\u5728\u4e00\u8d77": 242, "\u539f\u56e0\u662fpickle\u4e0d\u4fdd\u5b58\u6a21\u578b\u7c7b\u672c\u8eab": 242, "\u800c\u662f\u4fdd\u5b58\u5305\u542b\u8be5\u7c7b\u7684\u6587\u4ef6\u7684\u8def\u5f84": 242, "\u8be5\u8def\u5f84\u5728\u52a0\u8f7d\u65f6\u4f7f\u7528": 242, "\u5f53\u5728\u5176\u4ed6\u9879\u76ee\u4e2d\u4f7f\u7528\u6216\u91cd\u6784\u540e": 242, "\u4ee3\u7801\u53ef\u80fd\u4f1a\u51fa\u73b0\u5404\u79cd\u5f02\u5e38\u5bfc\u81f4\u7a0b\u5e8f\u4e2d\u65ad": 242, "\u6211\u4eec\u5c06\u5c55\u793a\u4e24\u79cd\u65b9\u5f0f\u5982\u4f55\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 242, "\u8ba9\u6211\u4eec\u53ea\u4f7f\u7528": 242, "\u6765\u4fdd\u5b58\u548c\u52a0\u8f7d\u6211\u4eec\u7684\u6a21\u578b": 242, "\u8def\u5f84": 242, "state_dict_model": 242, "\u901a\u5e38\u4f7f\u7528": 242, "\u6587\u4ef6\u6269\u5c55\u540d\u6765\u4fdd\u5b58\u6a21\u578b": 242, "\u51fd\u6570\u63a5\u53d7\u4e00\u4e2a\u5b57\u5178\u5bf9\u8c61": 242, "\u800c\u4e0d\u662f\u4fdd\u5b58\u5bf9\u8c61\u7684\u8def\u5f84": 242, "\u8fd9\u610f\u5473\u7740\u4f60\u5fc5\u987b\u5148\u53cd\u5e8f\u5217\u5316\u4fdd\u5b58\u7684state_dict": 242, "\u7136\u540e\u518d\u4f20\u9012\u7ed9": 242, "\u4e0d\u80fd\u4f7f\u7528": 242, "\u6765\u52a0\u8f7d": 242, "\u8fd8\u8981\u8bb0\u4f4f": 242, "\u5728\u8fd0\u884c\u63a8\u7406\u4e4b\u524d": [242, 243], "\u4f60\u5fc5\u987b\u8c03\u7528": 242, "\u5c06dropout\u548cbatch": 242, "\u5426\u5219\u5c06\u5bfc\u81f4\u63a8\u7406\u7ed3\u679c\u4e0d\u4e00\u81f4": [242, 243], "\u73b0\u5728\u8ba9\u6211\u4eec\u5c1d\u8bd5\u5c06\u6574\u4e2a\u6a21\u578b\u8fdb\u884c\u4fdd\u5b58\u548c\u52a0\u8f7d": 242, "entire_model": 242, "\u540c\u6837\u8981\u8bb0\u4f4f\u5728\u8fd0\u884c\u63a8\u7406\u4e4b\u524d\u8c03\u7528": 242, "\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 242, "\u4f60\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e86\u7528\u4e8e\u63a8\u7406\u7684\u6a21\u578b": 242, "pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 242, "pytorch\u4e2d\u5c06\u591a\u4e2a\u6a21\u578b\u4fdd\u5b58\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d": 242, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 243, "\u53ef\u4ee5\u5e2e\u52a9\u60a8\u91cd\u7528\u4e4b\u524d\u8bad\u7ec3\u8fc7\u7684\u6a21\u578b": 243, "\u5f53\u4fdd\u5b58\u7531\u591a\u4e2a": 243, "\u7ec4\u6210\u7684\u6a21\u578b\u65f6": 243, "\u4f8b\u5982\u751f\u6210\u5bf9\u6297\u7f51\u7edc": 243, "\u5e8f\u5217\u5230\u5e8f\u5217\u6a21\u578b\u6216\u6a21\u578b\u96c6\u5408\u65f6": 243, "\u60a8\u5fc5\u987b\u4fdd\u5b58\u6bcf\u4e2a\u6a21\u578b\u7684state_dict\u548c\u76f8\u5e94\u7684\u4f18\u5316\u5668": 243, "\u60a8\u8fd8\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u5730\u5c06\u5176\u9644\u52a0\u5230\u5b57\u5178\u4e2d\u6765\u4fdd\u5b58\u4efb\u4f55\u53ef\u80fd\u6709\u52a9\u4e8e\u6062\u590d\u8bad\u7ec3\u7684\u5176\u4ed6\u9879\u76ee": 243, "\u8981\u52a0\u8f7d\u6a21\u578b": 243, "\u60a8\u53ef\u4ee5\u50cf\u671f\u671b\u7684\u90a3\u6837\u7b80\u5355\u5730\u67e5\u8be2\u5b57\u5178\u6765\u8f7b\u677e\u8bbf\u95ee\u4fdd\u5b58\u7684\u9879\u76ee": 243, "\u6211\u4eec\u5c06\u6f14\u793a\u5982\u4f55\u4f7f\u7528pytorch\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u591a\u4e2a\u6a21\u578b": 243, "\u5982\u679c\u5c1a\u672a\u5b89\u88c5": [243, 248, 250], "\u6784\u5efa\u4e24\u4e2a\u53d8\u91cf\u7528\u4e8e\u6700\u7ec8\u4fdd\u5b58\u6a21\u578b": 243, "neta": [243, 248], "netb": [243, 248], "\u4e3a\u6211\u4eec\u521b\u5efa\u7684\u6bcf\u4e2a\u6a21\u578b\u6784\u5efa\u4f18\u5316\u5668": 243, "\u8bb0\u4f4f\u9996\u5148\u521d\u59cb\u5316\u6a21\u578b\u548c\u4f18\u5316\u5668": 243, "optimmodela": 243, "optimmodelb": 243, "\u60a8\u5fc5\u987b\u8c03\u7528": 243, "\u5c42\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 243, "\u5982\u679c\u60a8\u5e0c\u671b\u6062\u590d\u8bad\u7ec3": 243, "\u60a8\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e86\u591a\u4e2a\u6a21\u578b": 243, "hereaft": 244, "t2": 244, "__slots__": 244, "pertin": 244, "__torch_dispatch__": 244, "new_param": 244, "myquantizedlinearweight": 244, "__new__": 244, "_make_wrapper_subclass": 244, "storage_offset": 244, "_to_copi": 244, "new_elem": 244, "op_tabl": 244, "param_nam": 244, "__setattr__": 244, "module_load": 244, "__torch_function__": 244, "param_kei": 244, "custom_torch_funct": 244, "dest": 244, "disabletorchfunctionsubclass": 244, "scalar_valu": 245, "walltim": 245, "tfevent": 245, "tensorboard_with_pytorch": 245, "\u6211\u4eec\u5c06\u4ecb\u7ecd": 246, "\u7684\u4e3b\u8981api": 246, "timer\u57fa\u4e8e": 246, "\u5e76\u505a\u4e86\u4e00\u4e9bpytorch\u7279\u5b9a\u7684\u4fee\u6539": 246, "\u672c\u6559\u7a0b\u4e0d\u8981\u6c42\u8bfb\u8005\u719f\u6089\u5185\u7f6e\u7684": 246, "\u4f46\u5047\u8bbe\u8bfb\u8005\u719f\u6089\u6027\u80fd\u5de5\u4f5c\u7684\u57fa\u7840\u77e5\u8bc6": 246, "\u6709\u5173\u66f4\u5168\u9762\u7684\u6027\u80fd\u8c03\u4f18\u6559\u7a0b": 246, "\u5185\u5bb9": 246, "\u4f7f\u7528callgrind\u8fdb\u884ca": 246, "\u7528\u4e8e\u5b9a\u4e49\u4efb\u52a1": 246, "\u5c06\u5728\u5faa\u73af\u4e2d\u8fd0\u884c\u5e76\u8ba1\u65f6\u7684\u8ba1\u7b97": 246, "\u5c06\u5728\u8c03\u7528\u6d4b\u91cf\u5faa\u73af\u4e4b\u524d\u8fd0\u884c": 246, "\u7528\u4e8e\u586b\u5145": 246, "\u6240\u9700\u7684\u4efb\u4f55\u72b6\u6001": 246, "\u4ece\u5916\u90e8\u4f5c\u7528\u57df\u4f20\u9012\u53d8\u91cf": 246, "\u63a7\u5236pytorch\u4f7f\u7528\u7684\u7ebf\u7a0b\u6570": 246, "\u9ed8\u8ba4\u503c": 246, "\u6b64\u65b9\u6cd5\u5c06\u5904\u7406\u8bf8\u5982\u9009\u62e9\u5408\u9002\u7684\u91cd\u590d\u6b21\u6570": 246, "\u56fa\u5b9a\u7ebf\u7a0b\u6570\u4ee5\u53ca\u63d0\u4f9b\u7ed3\u679c\u7684\u65b9\u4fbf\u8868\u793a\u7b49\u7ec6\u8282": 246, "measurement\u5bf9\u8c61\u5b58\u50a8\u591a\u6b21\u91cd\u590d\u7684\u7ed3\u679c": 246, "\u5e76\u63d0\u4f9b\u5404\u79cd\u5b9e\u7528\u529f\u80fd": 246, "0x7f1929a38ed0": 246, "iqr": 246, "424": 246, "cpp_timer": 246, "0x7f192b019ed0": 246, "\u4e0d\u51fa\u6240\u6599": 246, "\u4ee3\u7801\u7247\u6bb5\u7684\u901f\u5ea6\u66f4\u5feb": 246, "\u53d8\u5316\u4e5f\u66f4\u5c0f": 246, "\u4e3a\u4e86\u6df1\u5165\u8c03\u67e5": 246, "\u5c01\u88c5\u4e86": 246, "\u4ee5\u6536\u96c6\u6307\u4ee4\u8ba1\u6570": 246, "\u8fd9\u4e9b\u6307\u4ee4\u8ba1\u6570\u975e\u5e38\u6709\u7528": 246, "\u56e0\u4e3a\u5b83\u4eec\u63d0\u4f9b\u4e86\u7ec6\u7c92\u5ea6\u548c\u786e\u5b9a\u6027\u7684": 246, "\u6216\u5728python\u7684\u60c5\u51b5\u4e0b\u566a\u58f0\u5f88\u4f4e\u7684": 246, "\u89c1\u89e3": 246, "\u8bf4\u660e\u4e86\u4ee3\u7801\u7247\u6bb5\u662f\u5982\u4f55\u8fd0\u884c\u7684": 246, "0x7f1929a35850": 246, "563600": 246, "\u7684\u5b57\u7b26\u4e32\u8868\u793a\u5f62\u5f0f\u7c7b\u4f3c\u4e8e": 246, "\u662f\u4e00\u4e2apython\u6982\u5ff5": 246, "\u79fb\u9664\u4e86\u5728cpython\u89e3\u91ca\u5668\u4e2d\u5df2\u77e5\u7684\u566a\u58f0\u8c03\u7528": 246, "\u4e3a\u4e86\u8fdb\u884c\u66f4\u8be6\u7ec6\u7684\u5206\u6790": 246, "\u6211\u4eec\u9700\u8981\u67e5\u770b\u7279\u5b9a\u7684\u8c03\u7528": 246, "\u8fd4\u56de\u4e00\u4e2a": 246, "\u4ee5\u4fbf\u4e8e\u6b64\u64cd\u4f5c": 246, "\u4ece\u6982\u5ff5\u4e0a\u8bb2": 246, "\u53ef\u4ee5\u88ab\u89c6\u4e3a\u4e00\u4e2a\u5e26\u6709\u4e00\u4e9b\u5b9e\u7528\u65b9\u6cd5\u7684\u6210\u5bf9\u5143\u7ec4": 246, "\u5176\u4e2d\u6bcf\u4e00\u5bf9\u90fd\u662f": 246, "\u6307\u4ee4\u6570\u91cf": 246, "\u6587\u4ef6\u8def\u5f84\u548c\u51fd\u6570\u540d\u79f0": 246, "\u5173\u4e8e\u8def\u5f84\u7684\u8bf4\u660e": 246, "\u901a\u5e38\u6211\u4eec\u4e0d\u5173\u5fc3\u7edd\u5bf9\u8def\u5f84": 246, "\u4e00\u4e2a\u4e58\u6cd5\u8c03\u7528\u7684\u5b8c\u6574\u8def\u5f84\u548c\u51fd\u6570\u540d\u662f\u8fd9\u6837\u7684": 246, "tensormethod": 246, "ab_ref": 246, "\u800c\u5b9e\u9645\u4e0a": 246, "\u6211\u4eec\u611f\u5174\u8da3\u7684\u6240\u6709\u4fe1\u606f\u90fd\u53ef\u4ee5\u8868\u793a\u4e3a": 246, "\u4f1a\u5c3d\u6700\u5927\u52aa\u529b\u53bb\u9664\u6587\u4ef6\u8def\u5f84\u4e2d\u4f4e\u4fe1\u53f7\u90e8\u5206": 246, "\u4ee5\u53ca\u5171\u4eab\u5bf9\u8c61": 246, "\u901a\u5e38\u5efa\u8bae\u4f7f\u7528": 246, "inclusive_stat": 246, "0x7f192a6dfd90": 246, "47264": 246, "_int_fre": 246, "25963": 246, "_int_malloc": 246, "19900": 246, "tensorit": 246, "tensoriteratorconfig": 246, "18000": 246, "__tls_get_addr": 246, "13500": 246, "malloc": [246, 247], "11300": 246, "smallvector": 246, "10345": 246, "_int_memalign": 246, "9200": 246, "iteratorbas": 246, "get_strid": 246, "173472": 246, "\u8fd9\u4ecd\u7136\u6709\u5f88\u591a\u5185\u5bb9\u9700\u8981\u6d88\u5316": 246, "\u8ba9\u6211\u4eec\u4f7f\u7528": 246, "\u65b9\u6cd5\u6765\u53bb\u9664\u4e00\u4e9b\u51fd\u6570\u8def\u5f84": 246, "\u5e76\u4e22\u5f03\u51fd\u6570\u8c03\u7528": 246, "\u8fd9\u6837\u505a\u65f6": 246, "\u4efb\u4f55\u51b2\u7a81": 246, "\u90fd\u5c06\u6620\u5c04\u5230": 246, "\u7684\u8ba1\u6570\u5c06\u88ab\u7d2f\u52a0": 246, "group_by_fil": 246, "fn_name": 246, "fn_dir": 246, "fn_file": 246, "0x7f192995d750": 246, "118200": 246, "tensoriter": 246, "65000": 246, "20900": 246, "15900": 246, "15100": 246, "cpualloc": 246, "12500": 246, "352327": 246, "\u6307\u4ee4\u8ba1\u6570\u6700\u6709\u7528\u7684\u7279\u6027\u4e4b\u4e00\u662f\u5141\u8bb8\u5bf9\u8ba1\u7b97\u8fdb\u884c\u7ec6\u7c92\u5ea6\u6bd4\u8f83": 246, "\u8fd9\u5728\u5206\u6790\u6027\u80fd\u65f6\u81f3\u5173\u91cd\u8981": 246, "\u4e3a\u4e86\u770b\u5230\u8fd9\u4e00\u70b9": 246, "\u8ba9\u6211\u4eec\u5c06\u4e24\u4e2a\u5927\u5c0f\u4e3a128\u7684\u5f20\u91cf\u76f8\u4e58\u4e0e\u4e00\u4e2a": 246, "\u7684\u4e58\u6cd5\u8fdb\u884c\u6bd4\u8f83": 246, "\u540e\u8005\u5c06\u5bf9\u7b2c\u4e8c\u4e2a\u5f20\u91cf\u8fdb\u884c\u5e7f\u64ad": 246, "a0": 246, "b0": 246, "a1": 246, "a127": 246, "broadcasting_stat": 246, "\u6211\u4eec\u7ecf\u5e38\u9700\u8981\u5bf9\u4e24\u79cd\u4e0d\u540c\u7684\u73af\u5883\u8fdb\u884ca": 246, "\u4f8b\u5982\u6d4b\u8bd5\u4e00\u4e2apr": 246, "\u6216\u5c1d\u8bd5\u4e0d\u540c\u7684\u7f16\u8bd1\u6807\u5fd7": 246, "\u8fd9\u5f88\u7b80\u5355": 246, "\u90fd\u662f\u53efpickle\u5316\u7684": 246, "\u53ea\u9700\u5728\u6bcf\u4e2a\u73af\u5883\u4e2d\u4fdd\u5b58\u6d4b\u91cf\u7ed3\u679c": 246, "\u7136\u540e\u5728\u5355\u4e2a\u8fdb\u7a0b\u4e2d\u52a0\u8f7d\u5b83\u4eec\u8fdb\u884c\u5206\u6790": 246, "extract_fn_nam": 246, "17600": 246, "tensoriteratorbas": 246, "compute_strid": 246, "12700": 246, "allocate_or_resize_output": 246, "10200": 246, "smallvectorimpl": 246, "7400": 246, "infer_s": 246, "6200": 246, "invert_perm": 246, "6064": 246, "reorder_dimens": 246, "4300": 246, "compatible_strid": 246, "check_tensor_options_and_extract_memory_format": 246, "__memcmp_avx2_movb": 246, "empty_cpu": 246, "1300": 246, "2400": 246, "6100": 246, "compute_fast_setup_typ": 246, "22600": 246, "fast_set_up": 246, "58091": 246, "\u6240\u4ee5\u5e7f\u64ad\u7248\u672c\u6bcf\u6b21\u8c03\u7528\u9700\u8981\u989d\u5916580\u6761\u6307\u4ee4": 246, "\u56de\u60f3\u4e00\u4e0b\u6211\u4eec\u6536\u96c6\u4e86100\u6b21\u8fd0\u884c\u7684\u6837\u672c": 246, "\u7ea6\u536010": 246, "\u6709\u76f8\u5f53\u591a\u7684": 246, "\u6240\u4ee5\u8ba9\u6211\u4eec\u6df1\u5165\u7814\u7a76\u8fd9\u4e9b\u8c03\u7528": 246, "\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u505a\u5230\u8fd9\u4e00\u70b9": 246, "0x7f19299544d0": 246, "compute_shap": 246, "2300": 246, "coalesce_dimens": 246, "\u8fd9\u8bf4\u660e\u4e86\u6b63\u5728\u53d1\u751f\u7684\u60c5\u51b5": 246, "\u8bbe\u7f6e\u4e2d\u6709\u4e00\u6761\u5feb\u901f\u8def\u5f84": 246, "\u4f46\u5728": 246, "\u7684\u60c5\u51b5\u4e0b": 246, "\u6211\u4eec\u9519\u8fc7\u4e86\u5b83": 246, "\u4e0d\u5f97\u4e0d\u8fdb\u884c\u66f4\u901a\u7528\u7684\u5206\u6790": 246, "\u8fd9\u66f4\u52a0\u6602\u8d35": 246, "\u88ab\u8fc7\u6ee4\u5668\u7701\u7565\u7684\u6700\u663e\u8457\u7684\u8c03\u7528\u662f": 246, "\u8fd9\u4e5f\u662f\u66f4\u901a\u7528\u8bbe\u7f6e\u7684\u4e00\u90e8\u5206": 246, "\u603b\u4e4b": 246, "\u6765\u6536\u96c6\u5899\u4e0a\u65f6\u95f4": 246, "\u5982\u679c\u8ba1\u65f6\u53d8\u5316\u8fc7\u9ad8": 246, "\u8bf7\u589e\u52a0": 246, "\u6216\u8005\u5982\u679c\u65b9\u4fbf\u7684\u8bdd": 246, "\u8f6c\u79fb\u5230": 246, "\u5bf9\u4e8e\u7ec6\u7c92\u5ea6\u5206\u6790": 246, "\u6765\u6d4b\u91cf\u6307\u4ee4\u8ba1\u6570": 246, "__add__": 246, "__sub__": 246, "\u6765\u5207\u5206\u548c\u5904\u7406\u5b83\u4eec": 246, "\u9690\u542b\u7684": 246, "\u4e0d\u5305\u542b": 246, "\u5c06\u81ea\u52a8\u586b\u5145\u5b83": 246, "\u8fd9\u610f\u5473\u7740": 246, "\u5c06\u6b63\u5e38\u5de5\u4f5c": 246, "\u4e0d\u8fc7\u5176\u4ed6\u5bfc\u5165\u5e94\u8be5\u653e\u5728": 246, "\u4e3a\u4e86\u63d0\u4f9b\u6709\u5173\u6267\u884c\u7684": 246, "\u5185\u90e8\u4fe1\u606f\u7684\u5b8c\u6574\u4fe1\u606f": 246, "\u9700\u8981\u8bbf\u95ee": 246, "\u8c03\u8bd5\u7b26\u53f7": 246, "\u8fd9\u662f\u901a\u8fc7\u5728\u6784\u5efa": 246, "\u65f6\u8bbe\u7f6e": 246, "\u6765\u5b9e\u73b0\u7684": 246, "\u5426\u5219\u51fd\u6570\u8c03\u7528\u5c06\u662f\u4e0d\u900f\u660e\u7684": 246, "\u751f\u6210\u7684": 246, "\u5c06\u5728\u7f3a\u5c11\u8c03\u8bd5\u7b26\u53f7\u65f6\u53d1\u51fa\u8b66\u544a": 246, "timer_quick_start": 246, "szymon": 247, "migacz": 247, "inexpens": 247, "fused_gelu": 247, "erf": 247, "41421": 247, "conjunct": 247, "carefulli": 247, "anomali": 247, "detect_anomali": 247, "set_detect_anomali": 247, "emit_nvtx": 247, "nth": 247, "cpunodebind": 247, "membind": 247, "pytorch_script": 247, "thrash": 247, "gomp_cpu_affin": 247, "omp_proc_bind": 247, "omp_schedul": 247, "libgomp": 247, "sleep": 247, "jemalloc": 247, "tcmalloc": 247, "emphas": 247, "neighbor": 247, "enable_onednn_fus": 247, "optimize_for_infer": 247, "avx512_bf16": 247, "_jit_set_autocast_mod": 247, "ccl": 247, "alltoal": 247, "cuda_tensor": 247, "guidelin": 247, "slide": 247, "no_sync": 247, "tuning_guid": 247, "\u5728\u8f6c\u79fb\u5b66\u4e60\u6216\u8bad\u7ec3\u65b0\u7684\u590d\u6742\u6a21\u578b\u65f6": 248, "\u52a0\u8f7d\u90e8\u5206\u6a21\u578b\u662f\u5f88\u5e38\u89c1\u7684\u573a\u666f": 248, "\u5229\u7528\u5df2\u7ecf\u8bad\u7ec3\u597d\u7684\u53c2\u6570": 248, "\u5373\u4f7f\u53ea\u6709\u5c11\u6570\u53ef\u7528": 248, "\u4e5f\u5c06\u6709\u52a9\u4e8e\u52a0\u5feb\u8bad\u7ec3\u8fc7\u7a0b\u7684\u542f\u52a8": 248, "\u5e76\u6709\u671b\u4f7f\u60a8\u7684\u6a21\u578b\u6bd4\u4ece\u5934\u5f00\u59cb\u8bad\u7ec3\u6536\u655b\u5f97\u66f4\u5feb": 248, "\u65e0\u8bba\u60a8\u662f\u52a0\u8f7d\u7f3a\u5c11\u67d0\u4e9b\u952e\u7684\u90e8\u5206": 248, "\u8fd8\u662f\u52a0\u8f7d\u6bd4\u9884\u671f\u7684\u6a21\u578b\u66f4\u591a\u952e\u7684": 248, "\u60a8\u90fd\u53ef\u4ee5\u901a\u8fc7": 248, "\u4ee5\u5ffd\u7565\u4e0d\u5339\u914d\u7684\u952e": 248, "\u6211\u4eec\u5c06\u5c1d\u8bd5\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8": 248, "\u6211\u4eec\u5c06\u521b\u5efa\u4e24\u4e2a\u795e\u7ecf\u7f51\u7edc": 248, "\u5c06\u7c7b\u578b": 248, "\u7684\u4e00\u4e2a\u53c2\u6570\u52a0\u8f7d\u5230\u7c7b\u578b": 248, "\u5982\u679c\u60a8\u60f3\u5c06\u4e00\u4e2a\u5c42\u7684\u53c2\u6570\u52a0\u8f7d\u5230\u53e6\u4e00\u4e2a\u5c42": 248, "\u4f46\u662f\u67d0\u4e9b\u952e\u4e0d\u5339\u914d": 248, "\u53ea\u9700\u5c06\u8981\u52a0\u8f7d\u7684": 248, "\u4e2d\u7684\u53c2\u6570\u952e\u540d\u79f0\u66f4\u6539\u4e3a\u4e0e\u8981\u52a0\u8f7d\u5230\u7684\u6a21\u578b\u4e2d\u7684\u952e\u540d\u79f0\u76f8\u5339\u914d\u5373\u53ef": 248, "\u60a8\u53ef\u4ee5\u770b\u5230\u6240\u6709\u952e\u90fd\u5339\u914d\u6210\u529f": 248, "\u60a8\u5df2\u6210\u529f\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u4e86\u70ed\u542f\u52a8": 248, "\u4f7f\u7528pytorch\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 248, "\u5728pytorch\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": [248, 250], "\u6a21\u578b\u7684\u53ef\u5b66\u4e60\u53c2\u6570": 249, "\u5373\u6743\u91cd\u548c\u504f\u7f6e": 249, "\u5305\u542b\u5728\u6a21\u578b\u7684\u53c2\u6570\u4e2d": 249, "\u901a\u8fc7": 249, "\u8bbf\u95ee": 249, "\u53ea\u662f\u4e00\u4e2a": 249, "\u5b57\u5178\u5bf9\u8c61": 249, "\u5b83\u5c06\u6bcf\u4e00\u5c42\u6620\u5c04\u5230\u5176\u53c2\u6570\u5f20\u91cf": 249, "\u5982\u679c\u4f7f\u7528": 249, "\u4fdd\u5b58\u6216\u52a0\u8f7d\u6a21\u578b": 249, "\u5c31\u662f\u4e00\u4e2a\u4e0d\u53ef\u6216\u7f3a\u7684\u5b9e\u4f53": 249, "\u5bf9\u8c61\u662f": 249, "\u5b57\u5178": 249, "\u5b83\u4eec\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u88ab\u4fdd\u5b58": 249, "\u66f4\u65b0": 249, "\u4fee\u6539\u548c\u6062\u590d": 249, "\u6a21\u578b\u548c\u4f18\u5316\u5668\u66f4\u597d\u7684\u505a\u5230\u4e86\u6a21\u5757\u5316": 249, "\u53ea\u6709\u5177\u6709\u53ef\u5b66\u4e60\u53c2\u6570\u7684\u5c42": 249, "\u5377\u79ef\u5c42": 249, "\u7ebf\u6027\u5c42\u7b49": 249, "\u548c\u5df2\u6ce8\u518c\u7684\u7f13\u51b2\u533a": 249, "\u5728\u6a21\u578b\u7684": 249, "\u4e2d\u6709\u6761\u76ee": 249, "\u4f18\u5316\u5668\u5bf9\u8c61": 249, "\u4e5f\u6709\u4e00\u4e2a": 249, "\u5b83\u5305\u542b\u4e86\u4f18\u5316\u5668\u72b6\u6001\u7684\u4fe1\u606f": 249, "\u4ee5\u53ca\u4f7f\u7528\u7684\u8d85\u53c2\u6570": 249, "\u6211\u4eec\u5c06\u770b\u5230\u5982\u4f55\u5728\u4e00\u4e2a\u7b80\u5355\u7684\u6a21\u578b\u4e2d": 249, "\u662f\u5982\u4f55\u4f7f\u7528\u7684": 249, "\u5b9a\u4e49\u548c\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc": 249, "\u5bfc\u5165\u52a0\u8f7d\u6570\u636e\u6240\u9700\u7684\u5fc5\u8981\u5e93": 249, "\u73b0\u5728\u6211\u4eec\u5df2\u7ecf\u6784\u5efa\u4e86\u6a21\u578b\u548c\u4f18\u5316\u5668": 249, "\u6211\u4eec\u53ef\u4ee5\u4e86\u89e3\u5b83\u4eec\u5404\u81ea\u7684": 249, "\u5c5e\u6027\u4e2d\u4fdd\u5b58\u4e86\u4ec0\u4e48": 249, "\u8fd9\u4e9b\u4fe1\u606f\u5bf9\u4e8e\u5c06\u6765\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u548c\u4f18\u5316\u5668\u5f88\u6709\u7528": 249, "\u4f60\u5df2\u7ecf\u6210\u529f\u4f7f\u7528\u4e86": 249, "\u7ee7\u7eed\u4f60\u7684\u5b66\u4e60": 249, "\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u7528\u4e8e\u63a8\u7406": 249, "\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 249, "\u6a21\u578b\u80fd\u591f\u901a\u8fc7\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u6765\u63d0\u9ad8\u5b83\u4eec\u7684\u7cbe\u5ea6": 250, "\u7b80\u800c\u8a00\u4e4b": 250, "\u68af\u5ea6\u4e0b\u964d\u662f\u901a\u8fc7\u8c03\u6574\u6a21\u578b\u4e2d\u7684\u6743\u91cd\u548c\u504f\u7f6e\u6765\u6700\u5c0f\u5316\u635f\u5931": 250, "\u6216\u8bef\u5dee": 250, "\u7684\u8fc7\u7a0b": 250, "\u662fpytorch\u7684\u4e2d\u5fc3\u7c7b": 250, "\u5f53\u4f60\u521b\u5efa\u4e00\u4e2a\u5f20\u91cf\u65f6": 250, "\u5982\u679c\u5c06\u5176\u5c5e\u6027": 250, "\u8bbe\u7f6e\u4e3a": 250, "\u8be5\u5bf9\u8c61\u4f1a\u8ddf\u8e2a\u5bf9\u5b83\u7684\u6240\u6709\u64cd\u4f5c": 250, "\u8fd9\u53d1\u751f\u5728\u540e\u7eed\u7684\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d": 250, "\u8be5\u5f20\u91cf\u7684\u68af\u5ea6\u5c06\u7d2f\u79ef\u5230": 250, "\u6240\u6709\u68af\u5ea6\u7684\u7d2f\u79ef": 250, "\u6216\u6c42\u548c": 250, "\u662f\u5728\u5bf9\u635f\u5931\u5f20\u91cf\u8c03\u7528": 250, "\u65f6\u8ba1\u7b97\u7684": 250, "\u53ef\u80fd\u9700\u8981\u6e05\u96f6\u5f20\u91cf\u7684\u68af\u5ea6": 250, "\u5f53\u4f60\u5f00\u59cb\u8bad\u7ec3\u5faa\u73af\u65f6": 250, "\u4f60\u5e94\u8be5\u6e05\u96f6\u68af\u5ea6": 250, "\u4ee5\u4fbf\u6b63\u786e\u6267\u884c\u6b64\u8ddf\u8e2a": 250, "\u6211\u4eec\u5c06\u5b66\u4e60\u5982\u4f55\u4f7f\u7528pytorch\u5e93\u6e05\u96f6\u68af\u5ea6": 250, "\u6211\u4eec\u5c06\u901a\u8fc7\u5728pytorch\u5185\u7f6e\u7684": 250, "\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u6765\u6f14\u793a\u5982\u4f55\u505a\u5230\u8fd9\u4e00\u70b9": 250, "\u7531\u4e8e\u6211\u4eec\u5c06\u5728\u672c\u6559\u7a0b\u4e2d\u8bad\u7ec3\u6570\u636e": 250, "\u5982\u679c\u4f60\u5728\u53ef\u8fd0\u884c\u7684\u7b14\u8bb0\u672c\u4e2d": 250, "\u6700\u597d\u5c06\u8fd0\u884c\u65f6\u5207\u6362\u5230gpu\u6216tpu": 250, "\u6211\u4eec\u9700\u8981\u5b89\u88c5\u5b83\u4eec": 250, "\u6b65\u9aa41\u52304\u8bbe\u7f6e\u4e86\u6211\u4eec\u7528\u4e8e\u8bad\u7ec3\u7684\u6570\u636e\u548c\u795e\u7ecf\u7f51\u7edc": 250, "\u6e05\u96f6\u68af\u5ea6\u7684\u8fc7\u7a0b\u53d1\u751f\u5728\u6b65\u9aa45": 250, "\u5982\u679c\u4f60\u5df2\u7ecf\u6784\u5efa\u4e86\u6570\u636e\u548c\u795e\u7ecf\u7f51\u7edc": 250, "\u53ef\u4ee5\u8df3\u8fc7\u524d\u56db\u6b65": 250, "\u76f4\u63a5\u8fdb\u5165\u7b2c5\u6b65": 250, "\u5b9a\u4e49\u635f\u5931\u51fd\u6570": 250, "\u6765\u8bbf\u95ee\u6570\u636e\u96c6": 250, "pytorch\u63d0\u4f9b\u4e86\u5404\u79cd\u5185\u7f6e\u6570\u636e\u96c6": 250, "\u8bf7\u53c2\u9605\u52a0\u8f7d\u6570\u636e\u6559\u7a0b": 250, "\u6211\u4eec\u5c06\u4f7f\u7528\u5377\u79ef\u795e\u7ecf\u7f51\u7edc": 250, "\u8bf7\u53c2\u9605\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u6559\u7a0b": 250, "\u8ba9\u6211\u4eec\u4f7f\u7528\u5206\u7c7b\u4ea4\u53c9\u71b5\u635f\u5931\u548c\u5e26\u52a8\u91cf\u7684sgd": 250, "\u6211\u4eec\u53ea\u9700\u8981\u904d\u5386\u6570\u636e\u8fed\u4ee3\u5668": 250, "\u5e76\u5c06\u8f93\u5165\u9988\u9001\u5230\u7f51\u7edc\u4e2d\u5e76\u4f18\u5316": 250, "\u5bf9\u4e8e\u6bcf\u4e2a\u6570\u636e\u5b9e\u4f53": 250, "\u6211\u4eec\u90fd\u4f1a\u6e05\u96f6\u68af\u5ea6": 250, "\u8fd9\u662f\u4e3a\u4e86\u786e\u4fdd\u5728\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u65f6": 250, "\u6211\u4eec\u4e0d\u4f1a\u8ddf\u8e2a\u4efb\u4f55\u4e0d\u5fc5\u8981\u7684\u4fe1\u606f": 250, "data\u662f\u4e00\u4e2a\u5305\u542b": 250, "\u7684\u5217\u8868": 250, "\u6e05\u96f6\u53c2\u6570\u68af\u5ea6": 250, "\u6bcf2000\u4e2a\u5c0f\u6279\u6b21\u6253\u5370\u4e00\u6b21": 250, "\u4f60\u4e5f\u53ef\u4ee5\u4f7f\u7528": 250, "\u53ea\u8981\u4f60\u7684\u6240\u6709\u6a21\u578b\u53c2\u6570\u90fd\u5728\u8be5\u4f18\u5316\u5668\u4e2d": 250, "\u548c\u4f7f\u7528": 250, "\u662f\u4e00\u6837\u7684": 250, "\u8bf7\u6839\u636e\u5177\u4f53\u60c5\u51b5\u51b3\u5b9a\u4f7f\u7528\u54ea\u4e00\u79cd\u65b9\u5f0f": 250, "\u4f60\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u6e05\u96f6\u4e86\u68af\u5ea6": 250, "\u7ee7\u7eed\u4f60\u7684\u5b66\u4e60\u4e4b\u65c5": 250, "\u5728pytorch\u4e2d\u52a0\u8f7d\u6570\u636e": 250, "bite": 251, "\u4e0e\u5165\u95e8\u6559\u7a0b\u4e0d\u540c": 251, "\u6b64\u7cfb\u5217\u901a\u8fc7\u7b80\u6d01\u5b9e\u7528\u7684\u793a\u4f8b": 251, "\u5c55\u793a\u4e86\u5982\u4f55\u4f7f\u7528pytorch\u7684\u7279\u6027": 251, "\u6765\u51c6\u5907\u548c\u52a0\u8f7d\u5e38\u89c1\u7684\u6570\u636e\u96c6": 251, "\u5b66\u4e60\u5982\u4f55\u4f7f\u7528torch": 251, "\u4e3amnist\u6570\u636e\u96c6\u521b\u5efa\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 251, "\u5bf9\u8c61\u548c": 251, "\u5b57\u5178\u5728": 251, "\u4e2d\u4fdd\u5b58\u6216\u52a0\u8f7d\u6a21\u578b": 251, "\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u7528\u4e8e\u63a8\u7406\u7684\u4e24\u79cd\u65b9\u5f0f": 251, "state_dict\u548c\u5b8c\u6574\u6a21\u578b": 251, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e00\u4e2a\u901a\u7528\u7684\u68c0\u67e5\u70b9\u6a21\u578b": 251, "\u53ef\u4ee5\u5e2e\u52a9\u60a8\u4ece\u4e0a\u6b21\u505c\u6b62\u7684\u5730\u65b9\u7ee7\u7eed\u63a8\u7406\u6216\u8bad\u7ec3": 251, "\u63a2\u7d22\u5982\u4f55\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u68c0\u67e5\u70b9": 251, "\u5b66\u4e60\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 251, "\u6709\u52a9\u4e8e\u91cd\u7528\u60a8\u4e4b\u524d\u8bad\u7ec3\u8fc7\u7684\u6a21\u578b": 251, "\u4e86\u89e3\u5982\u4f55\u901a\u8fc7\u90e8\u5206\u52a0\u8f7d\u6a21\u578b\u6216\u52a0\u8f7d\u90e8\u5206\u6a21\u578b\u65b9\u5f0f\u6765\u70ed\u542f\u52a8\u8bad\u7ec3\u8fc7\u7a0b": 251, "\u8fd9\u53ef\u4ee5\u5e2e\u52a9\u60a8\u7684\u6a21\u578b\u6bd4\u4ece\u5934\u5f00\u59cb\u8bad\u7ec3\u6536\u655b\u5f97\u66f4\u5feb": 251, "\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 251, "\u4e86\u89e3\u5982\u4f55\u4f7f\u7528pytorch\u5728\u4e0d\u540c\u8bbe\u5907": 251, "cpu\u548cgpu": 251, "\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 251, "\u6e05\u96f6\u68af\u5ea6": 251, "\u4e86\u89e3\u4f55\u65f6\u5e94\u8be5\u6e05\u96f6\u68af\u5ea6": 251, "\u4ee5\u53ca\u8fd9\u6837\u505a\u5982\u4f55\u6709\u52a9\u4e8e\u63d0\u9ad8\u6a21\u578b\u7684\u7cbe\u5ea6": 251, "\u5b66\u4e60\u5982\u4f55\u6d4b\u91cf\u4ee3\u7801\u7247\u6bb5\u7684\u8fd0\u884c\u65f6\u95f4\u548c\u6536\u96c6\u6307\u4ee4": 251, "\u6765\u6d4b\u91cf\u7b97\u5b50\u7684\u65f6\u95f4\u548c\u5185\u5b58\u6d88\u8017": 251, "itt": 251, "andriod": 251, "graviton": 251, "compressor": 251, "tensorpip": 251, "dcp": 251, "diffus": 251, "vertex": 251, "tracerwarn": 252, "_0": 252, "WITH": 252, "encoder_input": 252, "decoder_input1": 252, "decoder_input2": 252, "decoder_input3": 252, "scripted_encod": 252, "scripted_decod": 252, "optimized_torchscript_model": 252, "hoist": 252, "blocklist": 252, "compile_model": 253, "resnet50_weight": 253, "weights_prepack": 253, "oguz": 254, "ulgen": 254, "_triton": 254, "has_triton": 254, "add_kernel": 254, "out_ptr": 254, "n_element": 254, "block_siz": 254, "constexpr": 254, "pid": 254, "program_id": 254, "block_start": 254, "add_fn": 254, "cdiv": 254, "nx": 254, "ny": 254, "ni": 254, "num_stag": 254, "num_warp": 254, "add_kernel_autotun": 254, "torch_compile_user_defined_triton_kernel_tutori": 254, "repl": 256, "r18": 256, "r18_script": 256, "unscripted_output": 256, "scripted_output": 256, "unscripted_top5": 256, "scripted_top5": 256, "463": 256, "ts": 256, "msg_without_backtrac": 256, "output_sm": 256, "softmaxfuncopt": 256, "top5_tensor": 256, "ndone": 256, "418": 256, "845": 256, "644": 256, "cpulongtyp": 256, "exposit": 256, "streamlin": 257, "billabl": 257, "model_artifact": 257, "mar": 257, "your_model_nam": 257, "bucket_nam": 257, "bucket_uri": 257, "gsutil": 257, "aiplatform": 257, "vertexai": 257, "pytorch_prediction_image_uri": 257, "model_display_nam": 257, "stable_diffusion_1_5": 257, "model_descript": 257, "your_project": 257, "central1": 257, "staging_bucket": 257, "display_nam": 257, "serving_container_image_uri": 257, "artifact_uri": 257, "tesla": 257, "p100": 257, "n1": 257, "endpoint_display_nam": 257, "deployed_model_display_nam": 257, "machine_typ": 257, "accelerator_typ": 257, "nvidia_tesla_p100": 257, "accelerator_count": 257, "traffic_percentag": 257, "deploy_request_timeout": 257, "examplepup": 257, "basebal": 257, "jersei": 257, "base64": 257, "b64decod": 257, "vendor": 257, "deepspe": 258, "marian": 258, "oftentim": 258, "exp_avg": 258, "exp_avg_sq": 258, "peer": 258, "print_peak_memori": 258, "use_zero": 258, "optimizer_class": 258, "0mb": 258, "992": 258, "1361": 258, "3453": 258, "6123046875": 258, "pytorch_sphinx_them": [260, 267, 269, 276], "html_theme_opt": [260, 269], "canonical_url": [260, 269], "analytics_id": [260, 269], "logo_onli": [260, 269], "display_vers": [260, 269], "prev_next_buttons_loc": [260, 269], "style_external_link": [260, 269], "vcs_pageview_mod": [260, 269], "collapse_navig": [260, 269], "sticky_navig": [260, 264, 269, 273], "navigation_depth": [260, 269], "includehidden": [260, 269], "titles_onli": [260, 269], "canon": [260, 269], "trail": [260, 269], "slash": [260, 269], "sidebar": [260, 266, 269, 275], "display_github": [260, 269], "display_gitlab": [260, 269], "gitlab": [260, 269], "bitbucket": [260, 269], "toctre": [260, 269], "unlimit": [260, 269], "github_url": [260, 269], "bitbucket_url": [260, 269], "gitlab_url": [260, 269], "visitor": [260, 269], "revert": [260, 269], "misbuild": [260, 269], "sticki": [260, 266, 269, 275], "nav": [260, 266, 269, 275], "django": [261, 270], "payment": [261, 270], "dotpai": [261, 270], "dotpayprovid": [261, 270], "seller_id": [261, 270], "pl": [261, 270], "gatewai": [261, 270], "purchas": [261, 270], "seller": [261, 270], "data_item_1": [261, 270], "data_item_2": [261, 270], "data_item_3": [261, 270], "lorem": [261, 263, 265, 270, 272, 274], "ipsum": [261, 263, 265, 270, 272, 274], "dolor": [261, 263, 265, 270, 272, 274], "amet": [261, 263, 265, 270, 272, 274], "consectetur": [261, 263, 265, 270, 272, 274], "adipisc": [261, 263, 265, 270, 272, 274], "fusc": [261, 265, 270, 274], "congu": [261, 265, 270, 274], "eu": [261, 265, 270, 274], "hendrerit": [261, 265, 270, 274], "matti": [261, 263, 270, 272], "emphasi": [262, 271], "hyperlink": [262, 271], "uri": [262, 271], "anonym": [262, 271], "exceedingli": [262, 271], "ugli": [262, 271], "autodoc": [262, 263, 271, 272], "test_py_modul": [262, 266, 271, 275], "2822": [262, 271], "subscript": [262, 271], "superscript": [262, 271], "interfer": [262, 271], "mmb": [262, 271], "menuselect": [262, 271], "whitespac": [262, 271], "hyphen": [262, 271], "restructuredtext": [262, 263, 271, 272], "literal_block": [262, 271], "spaces_and_linebreak": [262, 271], "markup_process": [262, 271], "eric": [262, 271], "orchestra": [262, 271], "leader": [262, 271], "philosoph": [262, 271], "ipso": [262, 271], "facto": [262, 271], "ancient": [262, 271], "sing": [262, 271], "elk": [262, 271], "brontosaurus": [262, 271], "thicker": [262, 271], "ann": [262, 271], "begun": [262, 271], "someurl": [262, 271], "pane": [262, 271], "shell_command": [262, 271], "window_nam": [262, 271], "session_nam": [262, 271], "some_funct": [262, 271], "THE": [262, 271], "heaven": [262, 271], "hexagram": [262, 271], "unbroken": [262, 271], "unrestrict": [262, 271], "conceiv": [262, 271], "men": [262, 271], "deiti": [262, 271], "holi": [262, 271], "sage": [262, 271], "ruler": [262, 271], "awaken": [262, 271], "sphinx_rtd_them": [262, 263, 271, 272], "tt": [262, 271], "descnam": [262, 271], "descclassnam": [262, 271], "myclass": [262, 271], "dothismethod": [262, 271], "flox": [262, 271], "unreferenc": [262, 271], "nonexist": [262, 271], "bold": [262, 271], "ital": [262, 271], "heck": [262, 271], "backlink": [262, 271], "indirect": [262, 271], "docutil": [262, 263, 271, 272], "sourceforg": [262, 263, 271, 272], "clickabl": [262, 271], "revis": [262, 263, 271, 272], "structuredtext": [262, 271], "nickel": [262, 271], "mad": [262, 271], "scientist": [262, 271], "bread": [262, 271], "wash": [262, 271], "ear": [262, 271], "closet": [262, 271], "bathroom": [262, 271], "trash": [262, 271], "mother": [262, 271], "rho_": [262, 271], "thing1": [262, 271], "thing2": [262, 271], "thing3": [262, 271], "prose": [262, 271], "provok": [262, 271], "mental": [262, 271], "exert": [262, 271], "advis": [262, 271], "subtitl": [262, 271], "border": [262, 271], "disconnect": [262, 271], "arab": [263, 272], "iii": [263, 272], "iv": [263, 272], "goodger": [263, 272], "a1b": [263, 272], "2c3": [263, 272], "myself": [263, 272], "humankind": [263, 272], "tue": [263, 272], "jan": [263, 272], "7302": [263, 272], "redistribut": [263, 272], "reattribut": [263, 272], "sell": [263, 272], "bui": [263, 272], "rent": [263, 272], "leas": [263, 272], "excerpt": [263, 272], "stapl": [263, 272], "mutil": [263, 272], "anyon": [263, 272], "bibliograph": [263, 272], "markup": [263, 266, 272, 275], "literal": [263, 272], "yahoo": [263, 272], "oh": [263, 272], "heh": [263, 272], "beat": [263, 272], "hehe": [263, 272], "cackl": [263, 272], "lone": [263, 272], "guangzhou": [263, 272], "destini": [263, 272], "dream": [263, 272], "sixth": [263, 272], "donec": [263, 265, 272, 274], "porttitor": [263, 265, 272, 274], "odio": [263, 265, 272, 274], "posuer": [263, 265, 272, 274], "vita": [263, 265, 272, 274], "ornar": [263, 265, 272, 274], "libero": [263, 265, 272, 274], "loborti": [263, 265, 272, 274], "justo": [263, 265, 272, 274], "vestibulum": [263, 265, 272, 274], "nibh": [263, 265, 272, 274], "aliquet": [263, 265, 272, 274], "sed": [263, 265, 272, 274], "feugiat": [263, 265, 272, 274], "sagitti": [263, 265, 272, 274], "nequ": [263, 265, 272, 274], "qui": [263, 265, 272, 274], "eleifend": [263, 272], "dui": [263, 265, 272, 274], "rutrum": [263, 265, 272, 274], "lectu": [263, 265, 272, 274], "suscipit": [263, 265, 272, 274], "nam": [263, 265, 272, 274], "mauri": [263, 265, 272, 274], "arcu": [263, 265, 272, 274], "interdum": [265, 274], "nec": [265, 274], "finibu": [265, 274], "dictum": [265, 274], "velit": [265, 274], "ut": [265, 274], "efficitur": [265, 274], "aliquam": [265, 274], "erat": [265, 274], "diam": [265, 274], "gravida": [265, 274], "imperdiet": [265, 274], "tellu": [265, 274], "nisl": [265, 274], "praesent": [265, 274], "eget": [265, 274], "elementum": [265, 274], "rhoncu": [265, 274], "tincidunt": [265, 274], "suspendiss": [265, 274], "volutpat": [265, 274], "scelerisqu": [265, 274], "tristiqu": [265, 274], "aenean": [265, 274], "condimentum": [265, 274], "risu": [265, 274], "accumsan": [265, 274], "laoreet": [265, 274], "maximu": [265, 274], "sapien": [265, 274], "ligula": [265, 274], "fringilla": [265, 274], "commodo": [265, 274], "proin": [265, 274], "pharetra": [265, 274], "etiam": [265, 274], "turpi": [265, 274], "luctu": [265, 274], "vel": [265, 274], "malesuada": [265, 274], "dignissim": [265, 274], "nunc": [265, 274], "augu": [265, 274], "sem": [265, 274], "cursu": [265, 274], "nulla": [265, 274], "pellentesqu": [265, 274], "morbi": [265, 274], "senectu": [265, 274], "netu": [265, 274], "egesta": [265, 274], "placerat": [265, 274], "tortor": [265, 274], "iaculi": [265, 274], "venenati": [265, 274], "cra": [265, 274], "puru": [265, 274], "ero": [265, 274], "vehicula": [265, 274], "auctor": [265, 274], "phasellu": [265, 274], "viverra": [265, 274], "conval": [265, 274], "faucibu": [265, 274], "vulput": [265, 274], "feli": [265, 274], "sodal": [265, 274], "maecena": [265, 274], "semper": [265, 274], "enim": [265, 274], "blandit": [265, 274], "sollicitudin": [265, 274], "urna": [265, 274], "orci": [265, 274], "lacu": [265, 274], "quisqu": [265, 274], "facilisi": [265, 274], "curabitur": [265, 274], "variu": [265, 274], "bibendum": [265, 274], "massa": [265, 274], "magna": [265, 274], "tempu": [265, 274], "metu": [265, 274], "nisi": [265, 274], "pretium": [265, 274], "leo": [265, 274], "euismod": [265, 274], "ultric": [265, 274], "dapibu": [265, 274], "lacinia": [265, 274], "vivamu": [265, 274], "molesti": [265, 274], "hac": [265, 274], "habitass": [265, 274], "platea": [265, 274], "dictumst": [265, 274], "changelog": [266, 275], "submenu": [266, 275], "symlink": [267, 276], "subtre": [267, 276], "_theme": [267, 276], "html_theme": [267, 276], "html_theme_path": [267, 276]}, "objects": {"": [[270, 0, 1, "", "Data_item_1"], [270, 0, 1, "", "Data_item_2"], [270, 0, 1, "", "Data_item_3"]], "payments.dotpay": [[270, 1, 1, "", "DotpayProvider"]]}, "objtypes": {"0": "py:data", "1": "py:class"}, "objnames": {"0": ["py", "data", "Python data"], "1": ["py", "class", "Python class"]}, "titleterms": {"onnx": [0, 20, 105, 106, 107, 108, 110], "live": 0, "tutori": [0, 42, 49, 50, 54, 57, 114, 120, 122, 153, 156, 157, 173, 174, 179, 186, 195, 220, 221], "what": [0, 6, 10, 11, 15, 17, 44, 52, 56, 57, 60, 112, 119, 130, 138, 147, 154, 201, 205, 211, 212, 213, 215, 216, 226, 234, 256, 258], "overview": [0, 1, 17, 60, 108, 114, 136, 144, 164, 175, 191, 221], "prepar": [0, 49, 60, 113, 115, 127, 128, 139, 165, 168, 179, 182, 187, 188, 189, 190, 191, 194, 197, 198, 206, 208, 223, 224, 225], "environ": [0, 1, 14, 23, 53, 60, 136, 146, 159, 171, 184, 187, 194], "download": [0, 137, 171, 181, 185, 262, 267, 271, 276], "train": [0, 1, 3, 6, 7, 11, 14, 19, 24, 44, 49, 52, 53, 55, 61, 87, 99, 110, 112, 115, 117, 120, 122, 124, 125, 127, 128, 131, 132, 134, 135, 136, 152, 157, 159, 160, 165, 166, 169, 181, 182, 197, 198, 199, 220, 221, 228, 247, 253], "pytorch": [0, 3, 4, 5, 6, 10, 12, 15, 19, 20, 24, 25, 43, 46, 50, 54, 57, 61, 63, 64, 65, 67, 68, 69, 72, 81, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 105, 108, 109, 110, 111, 121, 135, 137, 147, 158, 168, 171, 176, 177, 179, 180, 188, 195, 196, 197, 198, 199, 200, 206, 207, 208, 209, 217, 219, 220, 221, 223, 224, 225, 226, 227, 231, 233, 235, 236, 238, 239, 240, 241, 242, 243, 245, 247, 248, 249, 251, 253, 257], "style": [0, 12], "transfer": [0, 12, 157], "model": [0, 1, 4, 6, 7, 9, 12, 17, 18, 19, 20, 21, 25, 45, 49, 55, 58, 59, 60, 73, 74, 79, 85, 97, 102, 103, 105, 112, 113, 115, 117, 122, 124, 125, 131, 133, 134, 136, 137, 138, 143, 146, 147, 149, 150, 156, 157, 165, 166, 168, 169, 171, 175, 178, 179, 181, 182, 185, 187, 188, 194, 195, 197, 198, 203, 206, 208, 209, 210, 211, 218, 220, 221, 223, 224, 225, 226, 229, 234, 240, 247, 252, 256, 257], "convert": [0, 4, 25, 58, 59, 60, 80, 147, 179, 182, 187, 194, 197, 198], "coreml": 0, "run": [0, 6, 7, 20, 22, 45, 49, 50, 53, 54, 55, 58, 59, 60, 73, 85, 97, 115, 126, 127, 133, 168, 171, 174, 185, 194, 210, 211, 213, 245, 256], "io": [0, 59, 187, 188, 204, 222, 223, 225], "app": [0, 58, 59, 126, 187, 206, 208, 213, 224, 225], "conclus": [0, 1, 2, 3, 5, 6, 9, 14, 15, 17, 19, 21, 22, 23, 49, 75, 82, 97, 105, 108, 114, 124, 136, 137, 143, 144, 146, 152, 159, 164, 172, 173, 174, 176, 177, 181, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 203, 204, 207, 211, 214, 215, 219, 222, 237, 244, 254, 255], "torchrl": [1, 14, 159], "object": [1, 58, 59, 99, 126, 178], "code": [1, 2, 14, 22, 54, 183, 186, 189, 206, 208, 226, 262, 271], "ddpg": 1, "loss": [1, 12, 37, 44, 47, 49, 52, 97, 98, 110, 124, 128, 136, 159, 230], "prerequisit": [1, 58, 59, 97, 115, 157, 177, 186, 199, 200, 254], "import": [1, 12, 45, 55, 87, 110, 137, 171, 197, 198, 213, 256], "setup": [1, 17, 18, 23, 87, 116, 135, 136, 137, 150, 168, 169, 175, 179, 185, 187, 195, 201, 208, 210, 211, 213, 223, 231, 255], "lossmodul": 1, "The": [1, 6, 87, 125, 134, 155, 165, 213, 226, 262, 271], "__init__": [1, 34], "method": [1, 15, 22, 135, 150, 177, 178, 192, 244, 252], "valu": [1, 136, 153, 159, 252], "estim": [1, 146], "actor": 1, "put": [1, 146, 175, 178], "thing": [1, 14], "togeth": [1, 14, 124, 146, 152, 175, 178, 230], "forward": [1, 5, 6, 21, 78, 109, 141, 145, 178, 223], "call": 1, "transform": [1, 7, 14, 41, 42, 51, 118, 119, 122, 124, 137, 145, 154, 159, 164, 166], "parallel": [1, 7, 21, 45, 56, 61, 120, 122, 123, 124, 133, 134, 149, 247], "execut": [1, 4, 14, 18, 105, 161, 168, 247], "normal": [1, 44, 159], "observ": [1, 183], "stat": 1, "build": [1, 4, 5, 10, 22, 23, 58, 59, 99, 116, 142, 143, 155, 157, 204, 206, 208, 213, 218, 222, 256, 260, 269], "explor": [1, 4, 18], "data": [1, 6, 7, 9, 19, 44, 45, 49, 50, 52, 55, 56, 60, 61, 87, 110, 115, 117, 122, 123, 124, 127, 128, 133, 157, 159, 165, 166, 168, 171, 181, 191, 195, 247, 261, 270], "collector": [1, 136, 159], "evalu": [1, 7, 49, 60, 115, 117, 125, 126, 127, 137, 157, 165, 182, 185, 197, 230], "your": [1, 4, 5, 10, 60, 151, 178, 183, 184, 213, 223, 256], "record": [1, 168], "replai": [1, 136, 159, 160], "buffer": [1, 136, 159, 247], "storag": [1, 257], "batch": [1, 7, 8, 14, 115, 116, 129, 142, 145, 161, 219, 247], "size": [1, 137, 185, 197, 234], "modul": [1, 4, 6, 15, 25, 60, 67, 85, 93, 104, 111, 134, 136, 137, 141, 149, 153, 156, 195, 202, 218, 237, 244], "construct": [1, 18, 55, 191, 192], "target": [1, 7, 146, 247, 262, 271], "network": [1, 6, 44, 47, 52, 87, 99, 102, 110, 118, 127, 128, 136, 146, 159, 160, 166, 230], "updat": [1, 47, 146, 161, 202], "optim": [1, 44, 52, 69, 99, 104, 110, 111, 119, 126, 152, 163, 177, 210, 211, 216, 219, 223, 224, 225, 247, 252, 258], "time": [1, 82, 109, 137, 223], "polici": [1, 14, 122, 136, 159], "experi": [1, 14, 15, 126, 179], "result": [1, 3, 45, 52, 73, 105, 109, 115, 126, 127, 130, 159, 165, 166, 168, 185, 201, 226, 229, 231], "next": [1, 44, 52, 73, 159], "step": [1, 4, 58, 59, 75, 114, 134, 152, 155, 159, 168, 218, 224, 225, 231, 234], "autograd": [2, 8, 10, 43, 63, 64, 76, 89, 111, 125, 141, 163], "c": [2, 3, 4, 5, 6, 8, 10, 22, 23, 186, 206, 208, 220, 246, 256], "frontend": [2, 6, 85, 86], "basic": [2, 6, 21, 25, 35, 133, 134, 141, 149, 155, 161, 172, 173, 174, 203, 219, 254], "oper": [2, 5, 8, 10, 22, 23, 48, 101, 108, 177, 179, 191, 192, 193, 200, 207, 208, 223, 247], "comput": [2, 14, 43, 82, 101, 103, 145, 150, 157, 229, 247], "higher": 2, "order": [2, 247], "gradient": [2, 12, 32, 73, 76, 154, 191, 230, 247], "us": [2, 3, 5, 6, 7, 11, 12, 13, 20, 22, 23, 24, 25, 43, 50, 53, 60, 105, 109, 112, 113, 116, 119, 123, 129, 131, 133, 134, 136, 138, 141, 154, 155, 161, 162, 163, 164, 168, 169, 188, 191, 200, 206, 208, 212, 214, 215, 221, 222, 223, 226, 228, 229, 237, 245, 247, 252, 254, 255, 258], "custom": [2, 5, 10, 14, 15, 22, 23, 51, 67, 108, 117, 120, 129, 130, 141, 155, 156, 157, 173, 174, 178, 208, 216, 222, 257], "function": [2, 7, 12, 15, 19, 37, 44, 47, 52, 64, 73, 78, 85, 87, 97, 98, 99, 110, 115, 129, 130, 137, 141, 145, 150, 154, 156, 157, 159, 182, 197, 198, 231, 247], "translat": [2, 113], "from": [2, 19, 22, 43, 50, 105, 112, 131, 171, 175, 176, 177, 178, 188, 237], "python": [2, 5, 22, 23, 58, 59, 85, 155, 206, 252, 255], "cuda": [3, 5, 50, 80, 82, 212], "graph": [3, 43, 60, 101, 105, 108, 172, 173, 174, 177, 181, 182, 183, 185, 199, 247], "api": [3, 4, 6, 89, 110, 139, 141, 147, 152, 155, 185, 186, 200, 206, 226, 247, 255], "get": [3, 4, 10, 58, 59, 82, 103, 123, 133, 144, 151, 163, 193, 213, 214, 215, 220, 221, 224, 225], "start": [3, 7, 82, 123, 133, 151, 163, 193, 214, 215, 220, 221], "\u5728": [4, 158], "\u4e2d\u52a0\u8f7d": 4, "torchscript": [4, 21, 22, 23, 25, 60, 110, 112, 172, 203, 208, 216, 220, 247, 252, 256], "\u6a21\u578b": [4, 92, 96, 119, 238], "1": [4, 9, 19, 44, 58, 59, 78, 85, 105, 134, 137, 150, 155, 157, 168, 169, 176, 178, 179, 181, 182, 185, 195, 199, 200, 213, 218, 223, 224, 225, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 250, 252, 264, 273], "torch": [4, 43, 61, 80, 81, 93, 101, 104, 112, 133, 156, 164, 172, 173, 174, 176, 191, 197, 198, 205, 210, 223, 230, 231, 237, 240, 244, 254, 255], "script": [4, 23, 25, 53, 85, 119, 151, 185, 224, 225, 252], "via": [4, 15, 267, 276], "trace": [4, 23, 25, 82, 83, 85, 143, 172, 177, 183, 185, 204, 226, 252], "annot": [4, 200], "2": [4, 9, 17, 19, 44, 45, 58, 59, 78, 85, 105, 134, 137, 150, 155, 157, 168, 169, 176, 177, 178, 179, 181, 182, 185, 195, 197, 198, 199, 200, 201, 213, 218, 223, 224, 225, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 252, 264, 265, 273, 274], "serial": [4, 15, 22, 137, 156], "file": [4, 49, 105, 112, 131, 165, 208, 213], "3": [4, 9, 19, 44, 45, 58, 59, 85, 105, 134, 137, 155, 168, 169, 176, 179, 181, 182, 185, 195, 199, 200, 218, 223, 224, 225, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 252, 264, 273], "load": [4, 6, 7, 9, 12, 22, 25, 44, 49, 53, 58, 59, 60, 97, 112, 117, 131, 133, 137, 157, 165, 166, 197, 198, 214, 223, 231, 237, 247, 256], "A": [4, 23, 43, 46, 98, 129, 200, 226, 230, 248, 262, 271], "minim": [4, 97], "applic": [4, 6, 135, 155, 208, 244], "depend": [4, 105, 107, 164], "libtorch": [4, 188], "4": [4, 9, 17, 19, 44, 58, 59, 85, 105, 134, 137, 155, 158, 168, 169, 179, 182, 185, 200, 201, 218, 223, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 264, 273], "5": [4, 19, 44, 58, 59, 105, 168, 169, 179, 182, 185, 200, 223, 231, 234, 236, 238, 240, 241, 242, 246, 250, 264, 273], "help": [4, 168], "extens": [5, 10, 13, 120, 155, 177, 207, 211, 220, 244, 253], "motiv": [5, 6, 85, 182, 189, 197, 200], "exampl": [5, 13, 21, 22, 58, 59, 73, 78, 79, 85, 99, 102, 103, 112, 125, 186, 200, 218, 220, 253, 262, 264, 271, 273], "write": [5, 6, 14, 51, 135, 169, 178, 183, 189, 200, 216], "setuptool": [5, 23], "op": [5, 8, 108, 173, 174], "pass": [5, 11, 109, 142, 152], "backward": [5, 10, 21, 78, 122, 129, 130, 152], "bind": [5, 22], "perform": [5, 109, 138, 143, 144, 147, 154, 164, 168, 176, 177, 197, 219, 221, 223, 247], "comparison": [5, 129, 133, 154, 172, 182], "gpu": [5, 6, 44, 45, 55, 79, 87, 95, 104, 110, 112, 168, 184, 188, 220, 247], "devic": [5, 12, 15, 112, 122, 206, 212, 232, 237, 247], "jit": [5, 10, 23, 110, 158], "compil": [5, 23, 144, 164, 172, 210, 211, 254, 255], "mix": [5, 25, 122, 131, 230, 247], "accessor": 5, "integr": [5, 15, 187, 194], "defin": [6, 7, 8, 9, 19, 22, 44, 47, 49, 60, 64, 97, 115, 126, 134, 137, 159, 171, 178, 179, 181, 182, 197, 198, 218, 231, 252, 254], "neural": [6, 12, 44, 47, 87, 110, 146, 150, 221], "regist": [6, 8, 10, 15, 23], "paramet": [6, 13, 45, 60, 93, 112, 156, 159, 161, 162, 200, 202, 231, 247, 261, 270], "submodul": [6, 183], "travers": 6, "hierarchi": [6, 226], "mode": [6, 18, 19, 141, 145, 181, 182, 183, 185, 197, 220], "ownership": 6, "dcgan": [6, 52], "wa": 6, "gan": [6, 52], "agan": 6, "gener": [6, 7, 15, 52, 110, 112, 113, 115, 126, 218, 231, 247, 261, 270], "discrimin": [6, 52, 98], "loop": [6, 14, 134, 136, 159, 160, 198], "move": [6, 22], "checkpoint": [6, 55, 112, 122, 133, 146, 198, 214, 237, 247], "recov": 6, "state": [6, 258], "inspect": [6, 153, 156, 169, 230], "imag": [6, 12, 20, 44, 58, 59, 105, 117, 119, 139, 157, 171, 213, 257, 262, 263, 271, 272], "distribut": [7, 11, 16, 18, 53, 55, 56, 61, 82, 110, 120, 133, 134, 135, 162, 163, 175, 214, 216, 247], "pipelin": [7, 115, 134, 149], "multipl": [7, 44, 112, 156], "process": [7, 53, 55, 58, 59, 115, 133, 134, 155, 161, 213], "input": [7, 11, 52, 55, 58, 59, 60, 73, 127, 130, 149, 175, 195, 209, 231, 247, 252], "sequenc": [7, 102, 124], "scale": [7, 124, 132, 164], "pipe": 7, "initi": [7, 48, 52, 53, 115, 133, 135, 146, 153, 193, 202], "test": [7, 9, 10, 14, 44, 73, 87, 115, 129, 142, 178, 206, 218], "dataset": [7, 19, 45, 51, 104, 110, 113, 115, 137, 178, 182, 185, 197, 198], "output": [7, 58, 59, 113, 130, 221], "dispatch": [8, 10, 164], "schema": 8, "backend": [8, 10, 15, 135, 144, 155, 179, 197, 198, 199, 206, 247, 253], "implement": [8, 22, 23, 52, 73, 98, 129, 153, 155, 161, 162, 164, 189, 191, 202], "For": 8, "do": [8, 44, 130, 147, 234], "need": [8, 183], "In": 8, "place": [8, 80], "view": [8, 168], "ad": [8, 87, 169, 208, 230], "support": [8, 10, 87, 108, 157, 164, 192, 202, 213, 216], "go": [8, 44, 52, 73, 171], "beyond": 8, "autocast": [8, 230], "tracer": 8, "beta": [9, 17, 19, 108, 137, 141, 142, 143, 147, 157, 164, 194, 209, 210, 211, 219, 222, 255], "dynam": [9, 21, 98, 137, 173, 174, 181, 185, 195, 228, 234], "quantiz": [9, 19, 119, 137, 157, 179, 181, 182, 183, 184, 185, 195, 197, 198, 199, 200, 221, 223, 224, 225, 228, 234], "an": [9, 10, 14, 20, 44, 58, 59, 60, 102, 103, 115, 125, 136, 159, 211, 237, 257, 266, 275], "lstm": [9, 21, 98, 102, 136], "word": [9, 99, 103], "languag": [9, 103], "introduct": [9, 12, 24, 43, 52, 58, 59, 61, 91, 101, 137, 153, 168, 171, 172, 175, 185, 186, 187, 188, 189, 192, 194, 195, 199, 200, 202, 204, 206, 207, 209, 218, 222, 223, 224, 225, 227, 228, 231, 234, 252], "text": [9, 49, 262, 271], "pretrain": [9, 60, 178, 224, 225, 228], "extend": [10, 22, 23, 108, 156], "new": [10, 15, 58, 59, 64, 98, 115, 129, 227], "s": [10, 60, 101, 146, 177, 190], "kei": 10, "full": [10, 87, 213], "list": [10, 263, 272], "kernel": [10, 15, 82, 150, 219, 254], "against": 10, "nativ": [10, 208], "compat": [10, 188], "known": 10, "issu": 10, "addit": [10, 42, 114, 168, 234], "note": [10, 60, 98, 200, 229], "futur": [10, 15], "work": [10, 11, 15, 122, 123, 124, 147, 214], "stai": 10, "touch": 10, "uneven": 11, "join": 11, "context": [11, 260, 269], "manag": 11, "requir": [11, 17, 105, 125, 156, 201, 212, 213, 216, 226, 256, 258], "distributeddataparallel": [11, 61, 133, 247], "zeroredundancyoptim": [11, 258], "keyword": 11, "argument": [11, 252], "how": [11, 15, 122, 123, 124, 152, 182, 197, 198, 200, 212, 214, 215, 216, 222, 226, 245, 256, 258, 260, 269], "doe": [11, 17, 125, 201], "joinabl": 11, "joinhook": 11, "make": [11, 98, 116, 183, 208], "toi": [11, 200], "class": [11, 14, 22, 51, 97, 153], "underli": 12, "principl": [12, 176, 177, 192], "packag": [12, 78], "select": [12, 136, 204], "content": [12, 111, 219, 260, 261, 262, 263, 264, 265, 269, 270, 271, 272, 273, 274], "descent": 12, "creat": [13, 45, 49, 99, 101, 126, 127, 128, 143, 150, 156, 247, 257], "numpi": [13, 40, 48, 71, 80, 95, 111, 190], "scipi": 13, "less": 13, "parametr": [13, 153, 156], "pendulum": 14, "\u4f7f\u7528": [14, 42, 55, 90, 93, 96, 104, 118, 159, 238, 246], "\u7f16\u5199\u73af\u5883\u548ctransform": 14, "effect": 14, "action": [14, 136], "_step": 14, "reset": 14, "simul": 14, "_reset": 14, "metadata": [14, 15], "env": 14, "_spec": 14, "spec": 14, "shape": [14, 173, 174, 239], "reproduc": 14, "seed": 14, "wrap": [14, 122, 178], "envbas": 14, "our": [14, 18, 129, 135, 142, 152, 175], "rollout": 14, "simpl": [14, 45, 105, 143, 165, 230], "facilit": 15, "privateuse1": 15, "guard": 15, "deseri": [15, 22], "other": [15, 18, 168], "improv": [15, 109, 168, 219], "user": [15, 81, 127, 183, 206, 254], "renam": 15, "name": [15, 127], "properti": 15, "relat": [15, 171, 177, 244], "combin": [16, 124, 133], "dataparallel": [16, 45, 56, 61, 79, 87, 112, 133, 240], "rpc": [16, 61, 120, 134, 161, 162, 163, 180, 212, 217], "framework": [16, 162, 163], "acceler": [17, 151, 201], "bert": [17, 137, 185, 201], "semi": [17, 24, 201], "structur": [17, 201, 265, 274], "sparsiti": [17, 192, 201], "problem": [17, 200, 201], "solv": [17, 201], "intro": [17, 201], "establish": 17, "baselin": [17, 182], "prune": [17, 156, 201], "spars": [17, 189, 192, 201], "infer": [17, 58, 59, 112, 117, 119, 137, 176, 213, 219, 220, 230, 247, 252, 253, 256], "torchrec": [18, 175], "shard": [18, 122, 123, 124, 134, 258], "instal": [18, 75, 82, 105, 137, 157, 175, 221, 245, 267, 276], "embed": [18, 103], "distributedmodelparallel": [18, 175], "multiprocess": 18, "tabl": [18, 111, 260, 261, 262, 263, 264, 265, 269, 270, 271, 272, 273, 274], "wise": 18, "static": [19, 98, 182, 195, 228], "eager": [19, 182, 185], "architectur": 19, "helper": [19, 137, 182, 192, 197, 198], "loader": [19, 87], "imagenet": 19, "post": [19, 181, 182, 197, 199, 213, 228], "awar": [19, 198, 199, 221, 228], "speedup": [19, 172, 230], "option": [20, 43, 45, 114, 178, 206, 213, 260, 261, 263, 269, 270, 272], "\u6a21\u578b\u5bfc\u51fa\u5230": 20, "\u5e76\u4f7f\u7528": 20, "runtim": [20, 105, 108, 247], "\u8fd0\u884c": 20, "syntax": [21, 85, 203], "appli": [21, 124, 137, 149, 199], "ensembl": [21, 138], "bidirect": 21, "layer": [21, 90, 124, 129, 247], "asid": 21, "visual": [21, 105, 117, 152, 157, 165, 166, 226, 229], "project": [22, 260, 269], "With": [22, 168, 208], "cmake": [22, 23, 208], "save": [22, 25, 53, 55, 60, 105, 112, 122, 125, 130, 131, 133, 146, 152, 197, 198, 214, 230, 231, 240], "To": [22, 213], "ivalu": 22, "take": 22, "return": [22, 125], "bound": [22, 177], "appendix": [23, 192], "more": [23, 58, 59, 119, 125, 144, 145, 161, 168, 175, 187, 188, 194, 209, 218, 222, 224, 225, 227, 228, 231, 234, 245, 252, 257], "wai": [23, 154, 262, 271], "supervis": 24, "learn": [24, 35, 46, 58, 59, 85, 98, 99, 100, 110, 117, 119, 120, 137, 146, 157, 161, 163, 168, 176, 187, 188, 194, 209, 218, 222, 224, 225, 227, 228, 231, 234, 245, 252], "usb": 24, "built": [24, 179, 188], "upon": 24, "freematch": 24, "softmatch": 24, "cifar": [24, 97], "10": [24, 97, 152, 182, 264, 273], "onli": [24, 183, 220, 221], "40": 24, "label": [24, 171], "specif": [24, 171, 197, 198, 247], "imbalanc": 24, "algorithm": [24, 160], "\u4ecb\u7ecd": [25, 82, 88, 90, 94, 95, 107, 233, 249, 250], "author": [25, 105], "further": [25, 32, 43, 53, 55, 56, 105, 107, 108, 109, 114, 117, 131, 132, 136, 179, 189, 191, 192], "read": [25, 32, 43, 53, 55, 56, 105, 107, 108, 109, 114, 131, 132, 136, 171, 177, 179, 189, 191, 192, 226], "\u97f3\u9891\u6570\u636e\u589e\u5f3a": 26, "\u97f3\u9891\u6570\u636e\u96c6": 27, "\u97f3\u9891\u7279\u5f81\u589e\u5f3a": 28, "\u97f3\u9891\u7279\u5f81\u63d0\u53d6": 29, "\u97f3\u9891": 30, "i": [30, 44], "o": 30, "audio": 31, "\u91cd\u91c7\u6837": 31, "\u81ea\u52a8\u5fae\u5206": 32, "\u5f20\u91cf": [32, 40, 72, 92, 111], "\u51fd\u6570\u548c\u8ba1\u7b97\u56fe": 32, "\u8ba1\u7b97\u68af\u5ea6": 32, "\u7981\u7528\u68af\u5ea6\u8ddf\u8e2a": 32, "\u66f4\u591a\u5173\u4e8e\u8ba1\u7b97\u56fe": 32, "\u53ef\u9009\u9605\u8bfb": 32, "\u5f20\u91cf\u68af\u5ea6": 32, "tensor": [32, 48, 63, 72, 76, 80, 95, 101, 110, 111, 120, 124, 125, 127, 152, 164, 192, 193, 200, 211, 223, 244, 247, 252], "\u548c\u96c5\u53ef\u6bd4\u4e58\u79ef": 32, "jacobian": [32, 145, 150], "product": [32, 145, 150, 164], "\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": [33, 250], "\u83b7\u53d6\u8bad\u7ec3\u8bbe\u5907": 33, "\u5b9a\u4e49\u7c7b": 33, "\u6a21\u578b\u5c42": 33, "nn": [33, 61, 67, 68, 78, 85, 93, 104, 111, 112, 156, 175, 237, 240, 244], "flatten": 33, "linear": [33, 99, 104], "relu": [33, 179], "sequenti": [33, 104], "softmax": [33, 99, 191], "\u6a21\u578b\u53c2\u6570": 33, "\u5ef6\u4f38\u9605\u8bfb": [33, 34, 37, 41], "\u6570\u636e\u96c6\u4e0e\u6570\u636e\u52a0\u8f7d\u5668": 34, "\u52a0\u8f7d\u6570\u636e\u96c6": 34, "\u8fed\u4ee3\u548c\u53ef\u89c6\u5316\u6570\u636e\u96c6": 34, "\u521b\u5efa\u81ea\u5b9a\u4e49\u6570\u636e\u96c6": 34, "__len__": 34, "__getitem__": 34, "\u4f7f\u7528\u6570\u636e\u52a0\u8f7d\u5668\u4e3a\u8bad\u7ec3\u51c6\u5907\u6570\u636e": 34, "\u901a\u8fc7": [34, 242], "dataload": [34, 51, 104, 110], "\u8fdb\u884c\u8fed\u4ee3": 34, "\u57fa\u7840\u77e5\u8bc6": 36, "\u8fd0\u884c\u6559\u7a0b\u4ee3\u7801": [36, 88], "\u5982\u4f55\u4f7f\u7528\u672c\u6307\u5357": 36, "\u4f18\u5316\u6a21\u578b\u53c2\u6570": [37, 38], "\u524d\u7f6e\u4ee3\u7801": 37, "\u8d85\u53c2\u6570": 37, "\u4f18\u5316\u5faa\u73af": 37, "\u635f\u5931\u51fd\u6570": [37, 93, 96], "\u4f18\u5316\u5668": [37, 96], "\u5b8c\u6574\u5b9e\u73b0": 37, "\u5feb\u901f\u5165\u95e8": 38, "\u5904\u7406\u6570\u636e": 38, "\u521b\u5efa\u6a21\u578b": 38, "\u4fdd\u5b58\u6a21\u578b": [38, 248], "\u52a0\u8f7d\u6a21\u578b": 38, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": [39, 242], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u6743\u91cd": 39, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u5e26\u6709\u7ed3\u6784\u7684\u6a21\u578b": 39, "\u76f8\u5173\u6559\u7a0b": 39, "\u521d\u59cb\u5316\u5f20\u91cf": 40, "\u5f20\u91cf\u7684\u5c5e\u6027": 40, "\u5f20\u91cf\u64cd\u4f5c": 40, "\u4e0enumpy\u8f6c\u6362": 40, "\u5f20\u91cf\u8f6c\u4e3anumpi": 40, "arrai": [40, 48, 80], "array\u8f6c\u4e3a\u5f20\u91cf": 40, "totensor": 41, "lambda": 41, "better": 42, "\u8fdb\u884c\u5feb\u901f": 42, "\u63a8\u65ad": 42, "featur": [42, 102, 117, 122, 157, 168, 171, 220, 221], "thi": [42, 57, 122, 152, 263, 266, 272, 275], "inform": [42, 85, 144], "summari": [42, 45, 113, 122, 164, 227], "gentl": 43, "background": 43, "usag": [43, 110, 129, 141, 149, 152, 172, 173, 174, 176, 206, 219, 221, 253, 254], "differenti": [43, 101, 141], "vector": [43, 138, 145, 150], "calculu": 43, "exclus": 43, "dag": 43, "classifi": [44, 99, 105, 119, 157, 171], "about": [44, 137, 239], "cifar10": 44, "convolut": [44, 129, 136, 142, 247], "where": [44, 52, 73, 171, 191], "dummi": 45, "8": [45, 182, 231, 246, 264, 273], "deep": [46, 98, 99, 100, 110, 176], "60": 46, "minut": 46, "blitz": 46, "backprop": 47, "weight": [47, 52, 65, 195], "attribut": [48, 229, 252], "bridg": [48, 80, 95], "chatbot": 49, "preprocess": [49, 146], "format": [49, 105, 112, 147, 177, 223, 247], "trim": 49, "seq2seq": [49, 60, 118, 165], "encod": [49, 60, 103, 165], "decod": [49, 60, 165], "procedur": 49, "mask": [49, 191], "singl": [49, 149], "iter": [49, 51, 115, 156], "greedi": [49, 60], "my": 49, "googl": [50, 257], "colab": 50, "version": [50, 150], "drive": 50, "enabl": [50, 186, 247], "compos": [51, 145, 254], "through": [51, 85, 179, 199], "afterword": 51, "torchvis": [51, 74, 178], "\u6559\u7a0b": [52, 75, 86, 97, 121, 159, 160, 166], "adversari": [52, 73], "fault": 53, "toler": 53, "torchrun": [53, 133], "why": [53, 56, 124, 125, 191, 193, 215], "grace": 53, "restart": 53, "group": [53, 55, 155], "provid": 53, "variabl": [53, 247], "snapshot": [53, 152], "trainer": 53, "constructor": [53, 247], "resum": [53, 112, 230], "\u5206\u5e03\u5f0f\u5e76\u884c": 54, "video": 54, "section": [54, 265, 274], "ddp": [55, 56, 120, 131, 133, 247], "\u8fdb\u884c\u591a": 55, "\u8bad\u7ec3": 55, "job": 55, "you": [56, 124, 229], "should": [56, 124], "prefer": [56, 223], "over": 56, "dp": 56, "\u6df1\u5ea6\u5b66\u4e60": 57, "60\u5206\u949f\u5165\u95e8": 57, "goal": 57, "segment": [58, 59, 178], "deeplabv3": [58, 59], "android": [58, 204, 206, 208, 218, 222, 223, 224], "deploy": [58, 59, 221, 256], "reus": [58, 59, 223], "complet": [58, 59], "ui": [58, 59], "refactor": [58, 59, 183], "recap": [58, 59, 122], "deploi": [60, 213, 257], "acknowledg": [60, 126, 176, 177], "handl": 60, "attent": [60, 164, 165], "search": [60, 87], "chang": [60, 232], "host": [60, 194], "own": [60, 135, 183, 213], "greedysearchdecod": 60, "print": [60, 109], "\u5206\u5e03\u5f0f\u6982\u8ff0": 61, "fullyshardeddataparallel": 61, "elast": 61, "base": [61, 113, 157, 180, 204, 217, 260, 269], "develop": 61, "control": [65, 164, 173, 174, 247], "flow": [65, 173, 174, 200], "share": [65, 200], "warm": 71, "up": [71, 126, 149, 171, 178, 179, 184, 210, 211, 219, 234], "\u5bf9\u6297\u6837\u672c\u751f\u6210": 73, "threat": 73, "fast": [73, 219], "sign": 73, "attack": 73, "under": 73, "fgsm": 73, "accuraci": [73, 87, 137, 144, 197, 221, 234], "vs": [73, 145, 190], "epsilon": 73, "sampl": [73, 128, 154, 226], "finetun": [74, 117, 157, 178], "torchmultimod": 75, "\u5fae\u8c03": 75, "flava": 75, "track": [76, 130, 169], "histori": 76, "convnet": [78, 117], "hook": [78, 125, 152], "recurr": [78, 136], "net": 78, "multi": [79, 87, 126, 176], "part": [79, 85, 102, 157, 177], "cpu": [79, 112, 122, 125, 143, 144, 176, 177, 207, 220, 247], "inplac": 80, "out": [80, 129, 142], "zero": 80, "index": [80, 191, 261, 270], "No": 80, "camel": 80, "case": [80, 133, 209, 247], "former": 81, "holist": [82, 83], "analysi": [82, 83, 177], "hta": 82, "tempor": 82, "breakdown": 82, "idl": 82, "durat": 82, "commun": [82, 87, 135, 212], "overlap": 82, "augment": [82, 102, 247], "counter": 82, "memori": [82, 102, 109, 125, 129, 147, 152, 160, 176, 177, 219, 223, 247], "bandwidth": 82, "queue": 82, "length": [82, 247], "launch": [82, 134, 226], "statist": 82, "\u5dee\u5f02\u5206\u6790": 83, "hybrid": [85, 86], "pure": 85, "top": [85, 177], "level": [85, 102, 260, 262, 263, 269, 271, 272], "rai": 87, "tune": [87, 122, 137, 177, 219, 247], "\u8d85\u53c2\u6570\u8c03\u4f18": 87, "configur": [87, 126, 137, 177, 185, 197, 198, 226, 260, 269], "set": [87, 126, 137, 171, 176, 179, 182, 184, 185, 197, 210, 211, 234, 247], "space": 87, "youtub": [88, 91], "\u81ea\u52a8\u5fae\u5206\u57fa\u7840": 89, "\u6211\u4eec\u4e3a\u4ec0\u4e48\u9700\u8981": 89, "\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50": 89, "\u81ea\u52a8\u6c42\u5bfc\u5728\u8bad\u7ec3\u4e2d": 89, "\u5173\u95ed\u548c\u6253\u5f00\u81ea\u52a8\u6c42\u5bfc": 89, "\u548c\u539f\u4f4d\u64cd\u4f5c": 89, "\u5206\u6790\u5668": 89, "\u9ad8\u7ea7\u4e3b\u9898": 89, "\u66f4\u591a": 89, "\u7ec6\u8282\u548c\u9ad8\u7ea7": 89, "\u9ad8\u7ea7": 89, "captum": [90, 229], "\u8fdb\u884c\u6a21\u578b\u7406\u89e3": 90, "\u5b89\u88c5": [90, 158], "\u7b2c\u4e00\u4e2a\u793a\u4f8b": 90, "\u4f7f\u7528\u96c6\u6210\u68af\u5ea6\u8fdb\u884c\u7279\u5f81\u5f52\u56e0": 90, "\u4f7f\u7528\u906e\u6321\u8fdb\u884c\u7279\u5f81\u5f52\u56e0": 90, "\u4f7f\u7528\u5c42\u68af\u5ea6\u7c7b\u6fc0\u6d3b\u6620\u5c04": 90, "gradcam": 90, "\u8fdb\u884c\u5c42\u5f52\u56e0": 90, "\u4f7f\u7528captum": 90, "insights\u8fdb\u884c\u53ef\u89c6\u5316": 90, "\u7b80\u4ecb": [92, 95, 96, 236, 238, 240, 241, 242, 243, 248], "\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668": [92, 96], "\u8bad\u7ec3\u4f60\u7684": 92, "\u6784\u5efa\u6a21\u578b": 93, "\u548c": [93, 104, 158, 171, 248], "\u5e38\u89c1\u5c42\u7c7b\u578b": 93, "\u7ebf\u6027\u5c42": 93, "\u5377\u79ef\u5c42": 93, "\u5faa\u73af\u5c42": 93, "\u8f6c\u6362\u5668": 93, "\u5176\u4ed6\u5c42\u548c\u51fd\u6570": 93, "\u6570\u636e\u64cd\u4f5c\u5c42": 93, "\u6fc0\u6d3b\u51fd\u6570": 93, "tensorboard": [94, 168, 169, 245], "\u652f\u6301": 94, "\u5f00\u59cb\u4e4b\u524d": 94, "\u5728tensorboard\u4e2d\u663e\u793a\u56fe\u50cf": 94, "\u7ed8\u5236\u6807\u91cf\u4ee5\u53ef\u89c6\u5316\u8bad\u7ec3": 94, "\u53ef\u89c6\u5316\u60a8\u7684\u6a21\u578b": 94, "\u4f7f\u7528\u5d4c\u5165\u53ef\u89c6\u5316\u60a8\u7684\u6570\u636e\u96c6": 94, "\u5176\u4ed6\u8d44\u6e90": [94, 96], "\u521b\u5efa\u5f20\u91cf": 95, "\u968f\u673a\u5f20\u91cf\u548c\u79cd\u5b50": 95, "\u5f20\u91cf\u5f62\u72b6": 95, "\u5f20\u91cf\u6570\u636e\u7c7b\u578b": 95, "\u4f7f\u7528pytorch\u5f20\u91cf\u8fdb\u884c\u6570\u5b66\u548c\u903b\u8f91\u8fd0\u7b97": 95, "\u5f20\u91cf\u5e7f\u64ad": 95, "\u66f4\u591a\u5f20\u91cf\u6570\u5b66\u8fd0\u7b97": 95, "\u672c\u5730\u4fee\u6539\u5f20\u91cf": 95, "\u590d\u5236\u5f20\u91cf": 95, "\u79fb\u52a8\u5230": 95, "\u64cd\u4f5c\u5f20\u91cf\u5f62\u72b6": 95, "\u6539\u53d8\u7ef4\u5ea6\u6570\u91cf": 95, "\u8bad\u7ec3\u6a21\u578b": 96, "\u8bad\u7ec3\u5faa\u73af": 96, "\u6bcf\u5468\u671f\u6d3b\u52a8": 96, "knowledg": 97, "distil": 97, "util": [97, 110, 156, 160, 207, 223, 231, 244, 247], "cross": 97, "entropi": 97, "cosin": 97, "intermedi": [97, 130, 247], "regressor": 97, "advanc": [98, 122, 135, 168, 177, 190, 207, 230, 254], "decis": 98, "bi": 98, "crf": 98, "versu": 98, "toolkit": 98, "condit": 98, "random": [98, 115], "field": [98, 263, 272], "discuss": 98, "exercis": [98, 102, 103, 114, 127, 128, 165, 177], "tag": [98, 102], "block": [99, 231, 262, 271], "affin": 99, "map": 99, "non": [99, 174, 183, 211, 218, 247], "probabl": 99, "compon": [99, 144], "logist": 99, "regress": 99, "bag": [99, 103], "nlp": 100, "librari": [101, 171, 188, 208, 224, 225, 247], "reshap": 101, "automat": [101, 141, 230], "long": [102, 264, 266, 273, 275], "short": [102, 226], "term": 102, "speech": 102, "tagger": 102, "charact": 102, "lexic": 103, "semant": [103, 189, 190], "dens": [103, 164], "n": 103, "gram": 103, "continu": 103, "\u5177\u4f53\u662f\u4ec0\u4e48": 104, "mnist": 104, "\u6570\u636e\u96c6\u8bbe\u7f6e": 104, "\u4ece\u96f6\u5f00\u59cb\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u4e0d\u4f7f\u7528": 104, "\u91cd\u6784": 104, "\u6dfb\u52a0\u9a8c\u8bc1\u96c6": 104, "\u521b\u5efa": 104, "fit": [104, 152], "get_data": 104, "cnn": 104, "\u5305\u88c5": 104, "\u603b\u7ed3": [104, 158, 246], "export": [105, 112, 173, 174, 197, 198, 199, 200, 256], "netron": 105, "6": [105, 168, 169, 179, 182, 223, 231, 238, 240, 246, 264, 273], "7": [105, 168, 179, 182, 231, 238, 246, 264, 273], "compar": [105, 119, 185, 195, 218, 231], "ones": 105, "registri": 108, "unsupport": 108, "aten": [108, 200], "exist": [108, 147, 149], "without": [108, 206, 218], "registr": 108, "fx": [108, 142, 143, 172, 181, 182, 183, 199], "\u6a21\u578b\u5206\u6790": 109, "debug": [109, 144, 182, 185, 197, 247], "profil": [109, 143, 144, 168, 177, 180, 217, 226, 238], "cheat": 110, "sheet": 110, "vision": [110, 157, 247], "creation": 110, "dimension": 110, "algebra": 110, "activ": 110, "rate": 110, "schedul": [110, 126, 211], "datasampl": 110, "also": [110, 210, 254], "see": [110, 210, 254], "\u8ddf\u7740\u793a\u4f8b\u5b66\u4e60": 111, "\u70ed\u8eab": 111, "\u81ea\u52a8\u6c42\u5bfc": 111, "\u5f20\u91cf\u548c\u81ea\u52a8\u6c42\u5bfc": 111, "\u5b9a\u4e49\u65b0\u7684\u81ea\u52a8\u6c42\u5bfc\u51fd\u6570": 111, "\u81ea\u5b9a\u4e49": 111, "\u6a21\u5757": 111, "\u63a7\u5236\u6d41": 111, "\u6743\u91cd\u5171\u4eab": 111, "\u793a\u4f8b": [111, 251], "state_dict": [112, 242, 249], "recommend": [112, 127, 200], "entir": 112, "One": [112, 134], "warmstart": 112, "differ": [112, 178], "across": 112, "t5": [113, 122], "summar": 113, "sentiment": 113, "classif": 113, "generationutil": 113, "templat": 114, "torchtext": [115, 116], "\u6587\u672c\u5206\u7c7b": 115, "access": [115, 176, 191, 247], "raw": 115, "instanc": [115, 178], "split": 115, "\u9884\u5904\u7406\u81ea\u5b9a\u4e49\u6587\u672c\u6570\u636e\u96c6": 116, "vocabulari": 116, "numeric": 116, "sentenc": 116, "bucket": 116, "pad": 116, "\u8ba1\u7b97\u673a\u89c6\u89c9\u8fc1\u79fb\u5b66\u4e60\u6559\u7a0b": 117, "few": [117, 157], "predict": [117, 139, 157, 171], "fix": [117, 200, 252], "extractor": [117, 157], "\u6570\u636e\u83b7\u53d6\u548c\u5904\u7406": 118, "\u7684": 118, "\u6570\u636e\u6574\u7406": 118, "\u5f15\u7528": 118, "\u4f18\u5316\u89c6\u89c9": 119, "deit": 119, "lite": [119, 188], "interpret": [119, 143, 204, 222, 229], "speed": [119, 133, 149, 219], "fsdp": [120, 122, 123], "tp": [120, 124], "devicemesh": [120, 215], "\u6b22\u8fce\u6765\u5230": 121, "\u66f4\u591a\u8d44\u6e90": 121, "fulli": [122, 123, 124], "fine": [122, 137], "hf": 122, "precis": [122, 131, 230, 247], "intial": 122, "strategi": [122, 126], "prefetch": 122, "stream": 122, "rank0": 122, "larg": 124, "when": [124, 130, 131, 191, 252], "layernorm": 124, "rmsnorm": 124, "typic": 125, "than": [125, 176], "concept": 125, "pack": 125, "unpack": 125, "some": 125, "unconvent": 125, "int": 125, "tupl": 125, "str": 125, "disk": 125, "na": 126, "ax": 126, "torchx": 126, "runner": 126, "searchspac": 126, "metric": 126, "optimizationconfig": 126, "choos": 126, "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406": [127, 128, 165], "\u5b57\u7b26\u7ea7": [127, 128], "rnn": [127, 128, 163], "\u8fdb\u884c\u59d3\u540d\u5206\u7c7b": 127, "turn": 127, "plot": [127, 128, 165], "\u751f\u6210\u59d3\u540d": 128, "fuse": [129, 142, 152, 164, 218, 223, 247], "norm": [129, 142, 247], "formula": 129, "batchnorm": 129, "doubl": 130, "real": 131, "world": 131, "cloud": [131, 257], "enough": 131, "multinod": 132, "local": [132, 176], "global": [132, 137, 156, 185], "rank": 132, "heteregen": 132, "troubleshoot": [132, 230], "between": [133, 191], "skew": 133, "partit": 134, "resnet50": 134, "stitch": 134, "Into": 134, "point": [135, 195, 244], "collect": [135, 159, 231], "ring": 135, "allreduc": 135, "topic": [135, 230, 262, 271], "dqn": [136, 160], "mlp": 136, "q": [136, 160], "huggingfac": 137, "necessari": 137, "token": 137, "check": [137, 185, 197], "refer": [137, 179, 195, 262, 271], "vmap": [138, 205], "\u5b9a\u4e49": 139, "\u4f9d\u8d56": 139, "\u7b80\u5355\u7684": 139, "web": 139, "server": [139, 161, 162], "\u63a8\u7406": 139, "wav2vec2": [140, 167], "\u5f3a\u5236\u5bf9\u9f50": 140, "fuser": 142, "fusion": [142, 179], "benchmark": [142, 185, 194, 210, 218, 223, 231], "resnet18": [142, 143, 200], "captur": [143, 152, 199], "symbol": [143, 183], "investig": 143, "inductor": [144, 186, 199], "log": [144, 146, 245], "determin": 144, "error": [144, 230, 252], "hessian": 145, "hvp": 145, "vhp": 145, "revers": 145, "jacrev": 145, "jacfwd": 145, "functorch": 145, "\u8bad\u7ec3\u4e00\u4e2a\u9a6c\u91cc\u5965\u6e38\u620f\u7684": 146, "rl": 146, "agent": 146, "definit": [146, 263, 272], "act": 146, "cach": [146, 153], "recal": 146, "td": 146, "all": [146, 152, 175, 230, 247, 252], "let": 146, "plai": 146, "channel": [147, 177, 223], "last": [147, 177, 223], "gain": 147, "machin": 149, "best": 149, "practic": [149, 168], "tangent": 150, "ntk": 150, "contract": 150, "nvfuser": 151, "dure": [152, 247], "disclaim": 152, "techniqu": 152, "register_post_accumulate_grad_hook": 152, "everyth": [152, 178], "line": [152, 185, 262, 271], "hand": 153, "ar": 153, "first": [153, 176, 177], "citizen": 153, "concaten": 153, "remov": [153, 156], "per": 154, "grad": [154, 191, 247], "effici": [154, 176, 189, 222, 247], "cpp": 155, "subclass": [155, 164, 244], "expos": 155, "re": 156, "0": [157, 191], "nightli": [157, 173], "raspberri": 158, "pi": 158, "\u4e0a\u8fdb\u884c\u5b9e\u65f6\u63a8\u7406": 158, "30": 158, "fp": 158, "\u51c6\u5907\u73af\u5883": 158, "\u8bbe\u7f6e": 158, "opencv": 158, "\u89c6\u9891\u6355\u83b7": 158, "\u56fe\u7247\u5904\u7406": 158, "\u9009\u62e9\u6a21\u578b": 158, "mobilenetv2": [158, 187, 194], "\u91cf\u5316\u548c": 158, "\u6027\u80fd\u4f18\u5316": 158, "\u540e\u7eed": 158, "\u5f3a\u5316\u5b66\u4e60": [159, 160], "ppo": 159, "hyperparamet": [159, 160], "asynchron": [161, 247], "cartpol": 161, "solver": 161, "reinforc": 163, "rref": 163, "high": 164, "dot": 164, "sdpa": 164, "explicit": 164, "hardwar": 164, "causal": 164, "self": 164, "nestedtensor": 164, "attn_bia": 164, "\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u673a\u5236\u8fdb\u884c\u7ffb\u8bd1": 165, "spatial": 166, "depict": 166, "stn": 166, "\u8fdb\u884c\u8bed\u97f3\u8bc6\u522b": 167, "event": 168, "analyz": 168, "amd": 168, "\u53ef\u89c6\u5316\u6a21\u578b": 169, "\u6570\u636e\u548c\u8bad\u7ec3": 169, "projector": 169, "assess": 169, "tacotron2": 170, "\u6587\u672c\u8f6c\u8bed\u97f3": 170, "tiatoolbox": 171, "\u8fdb\u884c\u5168\u5207\u7247\u56fe\u50cf\u5206\u7c7b": 171, "clean": 171, "befor": [171, 229], "patch": 171, "patchpredictor": 171, "whole": 171, "slide": 171, "extract": 171, "patholog": 171, "here": 171, "demonstr": 172, "torchdynamo": 172, "break": [173, 174], "constraint": [173, 174, 179], "decomposit": [173, 174], "exportdb": [173, 174], "strict": 174, "program": 174, "embeddingbag": 175, "embeddingbagcollect": 175, "queri": 175, "vanilla": 175, "offset": 175, "repres": 175, "minibatch": 175, "keyedjaggedtensor": 175, "kjt": 175, "resourc": [175, 213, 234, 256, 257], "grok": [176, 177], "intel": [176, 177, 207, 220, 221, 226, 247, 253], "avoid": [176, 247], "logic": 176, "core": [176, 187], "alwai": 176, "faster": 176, "remot": 176, "pin": 176, "worker": 176, "default": [176, 230, 232], "torchserv": [176, 177, 257], "set_num_thread": 176, "number": [176, 262, 263, 271, 272], "physic": 176, "launcher": [176, 177], "down": [177, 263, 272], "microarchitectur": 177, "tma": 177, "back": 177, "end": 177, "vtune": [177, 226], "instrument": [177, 226], "technolog": [177, 226], "itt": [177, 226], "leverag": [177, 207], "alloc": [177, 219, 247], "tcmalloc": 177, "jemalloc": 177, "ptmalloc": 177, "boost": 177, "\u5bf9\u8c61\u68c0\u6d4b\u5fae\u8c03\u6559\u7a0b": 178, "pennfudan": 178, "modifi": [178, 230], "add": [178, 224, 225], "backbon": 178, "detect": 178, "prototyp": [179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 196, 197, 198, 201, 204], "backendconfig": 179, "deriv": [179, 200], "pattern": [179, 200], "each": 179, "dtypeconfig": 179, "conv": 179, "qconfigmap": [179, 182], "satisfi": 179, "faulti": 179, "workload": [180, 207, 217, 226, 247], "eval": [182, 197], "specifi": [182, 185], "calibr": [182, 197], "9": [182, 264, 273], "float": [182, 195], "guid": [183, 247], "skip": [183, 202, 247], "traceabl": 183, "torchao": 184, "glue": 185, "qconfig_dict": 185, "one": [185, 263, 272], "wrapper": [186, 206], "ml": 187, "maco": 187, "metal": 188, "sourc": [188, 208], "adagrad": 189, "maskedtensor": [189, 190, 191, 192], "simpler": 189, "origin": 189, "maskedarrai": 190, "reduct": [190, 192], "slice": 191, "distinguish": 191, "nan": [191, 230], "anoth": 191, "x": 191, "yield": 191, "nansum": 191, "nanmean": 191, "safe": 191, "miss": 191, "coo": 192, "csr": 192, "unari": 192, "binari": 192, "nest": 193, "nnapi": 194, "numer": 195, "suit": 195, "correspond": 195, "locat": 195, "its": 195, "equival": 195, "same": 195, "recip": [196, 218, 223, 224, 225, 227, 228, 235, 252], "lower": [197, 199], "qat": 198, "x86": 199, "common": [200, 209, 252], "param": 200, "ir": 200, "pt2e": 200, "match": [200, 247], "directli": [200, 247], "subgraphmatcherwithnamenodemap": 200, "detail": 202, "freez": 203, "mobil": [204, 222, 223, 224, 225, 227, 252], "so": 205, "vulkan": 206, "workflow": [206, 228], "desktop": 206, "sdk": 206, "java": [206, 208], "upload": [206, 257], "matrix": 207, "amx": 207, "guidelin": 207, "can": [207, 263, 272], "confirm": 207, "being": 207, "prebuilt": [208, 257], "gradl": 208, "manifest": [208, 230], "bundl": 209, "uncommon": 209, "inflat": 209, "arg": [209, 261, 270], "lr": 211, "happen": 211, "direct": [212, 262, 271], "tensorpip": 212, "flask": 213, "both": 213, "quickli": 213, "bring": 213, "servic": 213, "pre": [213, 218, 224, 225, 227, 228, 252], "dcp": 214, "hsdp": 215, "requisit": [218, 224, 225, 227, 228, 252], "two": 218, "fuse_modul": [218, 223], "tool": 218, "aw": 219, "graviton": 219, "processor": 219, "bfloat16": [219, 220], "math": [219, 262, 271], "openbla": 219, "smaller": 219, "dimens": 219, "overhead": 219, "linux": 219, "transpar": 219, "huge": 219, "page": [219, 260, 269], "thp": 219, "float32": 220, "imper": 220, "float16": 220, "zoo": 220, "eas": 221, "compressor": 221, "driven": 221, "mobile_optim": 223, "mobilenet": [224, 225, 228], "v2": [224, 225, 228], "showcas": 226, "begin": 229, "final": 229, "gradscal": 230, "e": 230, "g": 230, "clip": 230, "amp": [230, 247], "minor": 230, "inf": 230, "type": [230, 252], "mismatch": 230, "mai": 230, "cudnn_status_bad_param": 230, "timeit": 231, "timer": [231, 246], "autorang": 231, "fuzz": 231, "instruct": 231, "count": 231, "callgrind": [231, 246], "\u521b\u5efa\u795e\u7ecf\u7f51\u7edc": 233, "\u73af\u5883\u8bbe\u7f6e": [233, 238, 240, 241, 242, 243, 248, 249, 250], "\u5177\u4f53\u6b65\u9aa4": [233, 238, 240, 241, 242, 243, 248, 249, 250], "\u5bfc\u5165\u52a0\u8f7d\u6570\u636e\u6240\u9700\u7684\u5fc5\u8981\u5e93": [233, 236, 240, 241, 242, 243, 248, 250], "\u5b9a\u4e49\u548c\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc": [233, 241, 242, 243], "\u6307\u5b9a\u6570\u636e\u5982\u4f55\u901a\u8fc7\u4f60\u7684\u6a21\u578b": 233, "\u53ef\u9009": [233, 236], "\u901a\u8fc7\u4f60\u7684\u6a21\u578b\u4f20\u9012\u6570\u636e\u8fdb\u884c\u6d4b\u8bd5": 233, "\u5b66\u4e60\u66f4\u591a": [233, 236, 248, 249], "look": 234, "latenc": 234, "\u52a0\u8f7d\u6570\u636e": 236, "\u4f7f\u7528\u6b65\u9aa4": 236, "\u8bbf\u95ee\u6570\u636e\u96c6\u4e2d\u7684\u6570\u636e": 236, "\u904d\u5386\u6570\u636e": 236, "\u53ef\u89c6\u5316\u6570\u636e": 236, "tip": 237, "mmap": 237, "true": [237, 247], "meta": [237, 262, 271], "load_state_dict": [237, 244], "assign": 237, "\u5bfc\u5165\u4f9d\u8d56\u7684\u5e93": 238, "\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684": 238, "resnet": 238, "\u4f7f\u7528profiler\u5206\u6790\u6267\u884c\u65f6\u95f4": 238, "\u5206\u6790\u5185\u5b58\u6d88\u8017": 238, "\u4f7f\u7528\u8ddf\u8e2a\u529f\u80fd": 238, "\u68c0\u67e5\u5806\u6808\u8ddf\u8e2a": 238, "\u4f7f\u7528\u5206\u6790\u5668\u5206\u6790\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a": 238, "\u4e86\u89e3\u66f4\u591a": 238, "reason": 239, "\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 240, "\u5b9a\u4e49\u5e76\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc": [240, 248, 249], "\u5728gpu\u4e0a\u4fdd\u5b58": 240, "cpu\u4e0a\u52a0\u8f7d": 240, "gpu\u4e0a\u52a0\u8f7d": 240, "\u5728cpu\u4e0a\u4fdd\u5b58": 240, "\u5728gpu\u4e0a\u52a0\u8f7d": 240, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u521d\u59cb\u5316\u4f18\u5316\u5668": [241, 242, 243, 249], "\u4fdd\u5b58\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6574\u4e2a\u6a21\u578b": 242, "\u7ee7\u7eed\u5b66\u4e60": [242, 250], "\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 243, "\u4fdd\u5b58\u591a\u4e2a\u6a21\u578b": 243, "\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 243, "swap_tensor": 244, "scalar": 245, "timer\u5feb\u901f\u5165\u95e8": 246, "\u5b9a\u4e49timer": 246, "wall\u65f6\u95f4": 246, "blocked_autorang": 246, "\u4ee3\u7801\u7247\u6bb5": 246, "\u6307\u4ee4\u8ba1\u6570": 246, "collect_callgrind": 246, "\u6df1\u5165\u63a2\u8ba8": 246, "\u8fdb\u884ca": 246, "b\u6d4b\u8bd5": 246, "\u811a\u6ce8": 246, "disabl": 247, "calcul": 247, "valid": 247, "bia": 247, "follow": 247, "none": 247, "instead": 247, "zero_grad": 247, "pointwis": 247, "channels_last": 247, "uniform": 247, "numa": 247, "openmp": 247, "libiomp": 247, "switch": 247, "onednn": 247, "cudnn": 247, "auto": 247, "tuner": 247, "unnecessari": 247, "synchron": 247, "prealloc": 247, "reduc": 247, "accumul": 247, "find_unused_paramet": 247, "balanc": 247, "\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8": 248, "b": 248, "\u52a0\u8f7d\u5230\u6a21\u578b": 248, "\u4e2d": 249, "\u662f\u4ec0\u4e48": 249, "\u4e2d\u7684": 249, "\u8bbf\u95ee\u6a21\u578b\u548c\u4f18\u5316\u5668\u7684": 249, "\u52a0\u8f7d\u548c\u6807\u51c6\u5316\u6570\u636e\u96c6": 250, "\u5b9a\u4e49\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668": 250, "\u5728\u8bad\u7ec3\u7f51\u7edc\u65f6\u6e05\u96f6\u68af\u5ea6": 250, "convers": 252, "runtimeerror": 252, "lookup": 252, "cannot": 252, "rang": 252, "must": 252, "found": 252, "fp32": 253, "bf16": 253, "triton": 254, "limit": 254, "torch_log": 255, "engin": 256, "stabl": 257, "diffus": 257, "vertex": 257, "ai": 257, "endpoint": 257, "handler": 257, "artifact": 257, "gc": 257, "contain": 257, "onto": 257, "changelog": [259, 268], "wide": [260, 269], "html": [260, 269], "theme": [260, 266, 269, 275], "toc": [260, 269], "test_py_modul": [261, 270], "paragraph": [262, 265, 271, 274], "markup": [262, 271], "inlin": [262, 271], "liter": [262, 271], "quot": [262, 271], "doctest": [262, 271], "emphas": [262, 271], "sidebar": [262, 271], "ch": [262, 271], "ien": [262, 271], "creativ": [262, 271], "footnot": [262, 271], "citat": [262, 271], "glossari": [262, 271], "center": [262, 271], "figur": [262, 271], "admonit": [262, 271], "And": [262, 271], "rubric": [262, 271], "titl": [262, 271], "replac": [262, 271], "compound": [262, 271], "link": [262, 271], "enumer": [263, 272], "bullet": [263, 272], "second": [263, 272], "But": [263, 272], "deeper": [263, 272], "rabbit": [263, 272], "hole": [263, 272], "hlist": [263, 272], "grid": [263, 272], "giant": [263, 272], "have": [263, 272], "caption": [263, 266, 272, 275], "like": [263, 272], "sticki": [264, 273], "nav": [264, 273], "menu": [264, 266, 273, 275], "11": [264, 273], "12": [264, 273], "13": [264, 273], "14": [264, 273], "15": [264, 273], "16": [264, 273], "17": [264, 273], "18": [264, 273], "19": [264, 273], "20": [264, 273], "submenu": [264, 273], "subsubmenu": [264, 273], "element": [265, 274], "document": [265, 266, 274, 275], "subsect": [265, 274], "subsubsect": [265, 274], "demo": [266, 275], "incred": [266, 275], "git": [267, 276]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["advanced/ONNXLive", "advanced/coding_ddpg", "advanced/cpp_autograd", "advanced/cpp_cuda_graphs", "advanced/cpp_export", "advanced/cpp_extension", "advanced/cpp_frontend", "advanced/ddp_pipeline", "advanced/dispatcher", "advanced/dynamic_quantization_tutorial", "advanced/extend_dispatcher", "advanced/generic_join", "advanced/neural_style_tutorial", "advanced/numpy_extensions_tutorial", "advanced/pendulum", "advanced/privateuseone", "advanced/rpc_ddp_tutorial", "advanced/semi_structured_sparse", "advanced/sharding", "advanced/static_quantization_tutorial", "advanced/super_resolution_with_onnxruntime", "advanced/torch-script-parallelism", "advanced/torch_script_custom_classes", "advanced/torch_script_custom_ops", "advanced/usb_semisup_learn", "beginner/Intro_to_TorchScript_tutorial", "beginner/audio_data_augmentation_tutorial", "beginner/audio_datasets_tutorial", "beginner/audio_feature_augmentation_tutorial", "beginner/audio_feature_extractions_tutorial", "beginner/audio_io_tutorial", "beginner/audio_resampling_tutorial", "beginner/basics/autogradqs_tutorial", "beginner/basics/buildmodel_tutorial", "beginner/basics/data_tutorial", "beginner/basics/index", "beginner/basics/intro", "beginner/basics/optimization_tutorial", "beginner/basics/quickstart_tutorial", "beginner/basics/saveloadrun_tutorial", "beginner/basics/tensorqs_tutorial", "beginner/basics/transforms_tutorial", "beginner/bettertransformer_tutorial", "beginner/blitz/autograd_tutorial", "beginner/blitz/cifar10_tutorial", "beginner/blitz/data_parallel_tutorial", "beginner/blitz/index", "beginner/blitz/neural_networks_tutorial", "beginner/blitz/tensor_tutorial", "beginner/chatbot_tutorial", "beginner/colab", "beginner/data_loading_tutorial", "beginner/dcgan_faces_tutorial", "beginner/ddp_series_fault_tolerance", "beginner/ddp_series_intro", "beginner/ddp_series_multigpu", "beginner/ddp_series_theory", "beginner/deep_learning_60min_blitz", "beginner/deeplabv3_on_android", "beginner/deeplabv3_on_ios", "beginner/deploy_seq2seq_hybrid_frontend_tutorial", "beginner/dist_overview", "beginner/examples_autograd/index", "beginner/examples_autograd/polynomial_autograd", "beginner/examples_autograd/polynomial_custom_function", "beginner/examples_nn/dynamic_net", "beginner/examples_nn/index", "beginner/examples_nn/polynomial_module", "beginner/examples_nn/polynomial_nn", "beginner/examples_nn/polynomial_optim", "beginner/examples_tensor/index", "beginner/examples_tensor/polynomial_numpy", "beginner/examples_tensor/polynomial_tensor", "beginner/fgsm_tutorial", "beginner/finetuning_torchvision_models_tutorial", "beginner/flava_finetuning_tutorial", "beginner/former_torchies/autograd_tutorial_old", "beginner/former_torchies/index", "beginner/former_torchies/nnft_tutorial", "beginner/former_torchies/parallelism_tutorial", "beginner/former_torchies/tensor_tutorial_old", "beginner/former_torchies_tutorial", "beginner/hta_intro_tutorial", "beginner/hta_trace_diff_tutorial", "beginner/hybrid_frontend/index", "beginner/hybrid_frontend/learning_hybrid_frontend_through_example_tutorial", "beginner/hybrid_frontend_tutorial", "beginner/hyperparameter_tuning_tutorial", "beginner/introyt", "beginner/introyt/autogradyt_tutorial", "beginner/introyt/captumyt", "beginner/introyt/index", "beginner/introyt/introyt1_tutorial", "beginner/introyt/modelsyt_tutorial", "beginner/introyt/tensorboardyt_tutorial", "beginner/introyt/tensors_deeper_tutorial", "beginner/introyt/trainingyt", "beginner/knowledge_distillation_tutorial", "beginner/nlp/advanced_tutorial", "beginner/nlp/deep_learning_tutorial", "beginner/nlp/index", "beginner/nlp/pytorch_tutorial", "beginner/nlp/sequence_models_tutorial", "beginner/nlp/word_embeddings_tutorial", "beginner/nn_tutorial", "beginner/onnx/export_simple_model_to_onnx_tutorial", "beginner/onnx/index", "beginner/onnx/intro_onnx", "beginner/onnx/onnx_registry_tutorial", "beginner/profiler", "beginner/ptcheat", "beginner/pytorch_with_examples", "beginner/saving_loading_models", "beginner/t5_tutorial", "beginner/template_tutorial", "beginner/text_sentiment_ngrams_tutorial", "beginner/torchtext_custom_dataset_tutorial", "beginner/transfer_learning_tutorial", "beginner/translation_transformer", "beginner/vt_tutorial", "distributed/home", "index", "intermediate/FSDP_adavnced_tutorial", "intermediate/FSDP_tutorial", "intermediate/TP_tutorial", "intermediate/autograd_saved_tensors_hooks_tutorial", "intermediate/ax_multiobjective_nas_tutorial", "intermediate/char_rnn_classification_tutorial", "intermediate/char_rnn_generation_tutorial", "intermediate/custom_function_conv_bn_tutorial", "intermediate/custom_function_double_backward_tutorial", "intermediate/ddp_series_minGPT", "intermediate/ddp_series_multinode", "intermediate/ddp_tutorial", "intermediate/dist_pipeline_parallel_tutorial", "intermediate/dist_tuto", "intermediate/dqn_with_rnn_tutorial", "intermediate/dynamic_quantization_bert_tutorial", "intermediate/ensembling", "intermediate/flask_rest_api_tutorial", "intermediate/forced_alignment_with_torchaudio_tutorial", "intermediate/forward_ad_usage", "intermediate/fx_conv_bn_fuser", "intermediate/fx_profiling_tutorial", "intermediate/inductor_debug_cpu", "intermediate/jacobians_hessians", "intermediate/mario_rl_tutorial", "intermediate/memory_format_tutorial", "intermediate/mnist_train_nas", "intermediate/model_parallel_tutorial", "intermediate/neural_tangent_kernels", "intermediate/nvfuser_intro_tutorial", "intermediate/optimizer_step_in_backward_tutorial", "intermediate/parametrizations", "intermediate/per_sample_grads", "intermediate/process_group_cpp_extension_tutorial", "intermediate/pruning_tutorial", "intermediate/quantized_transfer_learning_tutorial", "intermediate/realtime_rpi", "intermediate/reinforcement_ppo", "intermediate/reinforcement_q_learning", "intermediate/rpc_async_execution", "intermediate/rpc_param_server_tutorial", "intermediate/rpc_tutorial", "intermediate/scaled_dot_product_attention_tutorial", "intermediate/seq2seq_translation_tutorial", "intermediate/spatial_transformer_tutorial", "intermediate/speech_recognition_pipeline_tutorial", "intermediate/tensorboard_profiler_tutorial", "intermediate/tensorboard_tutorial", "intermediate/text_to_speech_with_torchaudio", "intermediate/tiatoolbox_tutorial", "intermediate/torch_compile_tutorial", "intermediate/torch_export_nightly_tutorial", "intermediate/torch_export_tutorial", "intermediate/torchrec_tutorial", "intermediate/torchserve_with_ipex", "intermediate/torchserve_with_ipex_2", "intermediate/torchvision_tutorial", "prototype/backend_config_tutorial", "prototype/distributed_rpc_profiling", "prototype/fx_graph_mode_ptq_dynamic", "prototype/fx_graph_mode_ptq_static", "prototype/fx_graph_mode_quant_guide", "prototype/gpu_quantization_torchao_tutorial", "prototype/graph_mode_dynamic_bert_tutorial", "prototype/inductor_cpp_wrapper_tutorial", "prototype/ios_coreml_workflow", "prototype/ios_gpu_workflow", "prototype/maskedtensor_adagrad", "prototype/maskedtensor_advanced_semantics", "prototype/maskedtensor_overview", "prototype/maskedtensor_sparsity", "prototype/nestedtensor", "prototype/nnapi_mobilenetv2", "prototype/numeric_suite_tutorial", "prototype/prototype_index", "prototype/pt2e_quant_ptq", "prototype/pt2e_quant_qat", "prototype/pt2e_quant_x86_inductor", "prototype/pt2e_quantizer", "prototype/semi_structured_sparse", "prototype/skip_param_init", "prototype/torchscript_freezing", "prototype/tracing_based_selective_build", "prototype/vmap_recipe", "prototype/vulkan_workflow", "recipes/amx", "recipes/android_native_app_with_custom_op", "recipes/bundled_inputs", "recipes/compiling_optimizer", "recipes/compiling_optimizer_lr_scheduler", "recipes/cuda_rpc", "recipes/deployment_with_flask", "recipes/distributed_checkpoint_recipe", "recipes/distributed_device_mesh", "recipes/distributed_optim_torchscript", "recipes/distributed_rpc_profiling", "recipes/fuse", "recipes/inference_tuning_on_aws_graviton", "recipes/intel_extension_for_pytorch", "recipes/intel_neural_compressor_for_pytorch", "recipes/mobile_interpreter", "recipes/mobile_perf", "recipes/model_preparation_android", "recipes/model_preparation_ios", "recipes/profile_with_itt", "recipes/ptmobile_recipes_summary", "recipes/quantization", "recipes/recipes/Captum_Recipe", "recipes/recipes/amp_recipe", "recipes/recipes/benchmark", "recipes/recipes/changing_default_device", "recipes/recipes/defining_a_neural_network", "recipes/recipes/dynamic_quantization", "recipes/recipes/index", "recipes/recipes/loading_data_recipe", "recipes/recipes/module_load_state_dict_tips", "recipes/recipes/profiler_recipe", "recipes/recipes/reasoning_about_shapes", "recipes/recipes/save_load_across_devices", "recipes/recipes/saving_and_loading_a_general_checkpoint", "recipes/recipes/saving_and_loading_models_for_inference", "recipes/recipes/saving_multiple_models_in_one_file", "recipes/recipes/swap_tensors", "recipes/recipes/tensorboard_with_pytorch", "recipes/recipes/timer_quick_start", "recipes/recipes/tuning_guide", "recipes/recipes/warmstarting_model_using_parameters_from_a_different_model", "recipes/recipes/what_is_state_dict", "recipes/recipes/zeroing_out_gradients", "recipes/recipes_index", "recipes/script_optimized", "recipes/torch_compile_backend_ipex", "recipes/torch_compile_user_defined_triton_kernel_tutorial", "recipes/torch_logs", "recipes/torchscript_inference", "recipes/torchserve_vertexai_tutorial", "recipes/zero_redundancy_optimizer", "src/pytorch-sphinx-theme/docs/changelog", "src/pytorch-sphinx-theme/docs/configuring", "src/pytorch-sphinx-theme/docs/demo/api", "src/pytorch-sphinx-theme/docs/demo/demo", "src/pytorch-sphinx-theme/docs/demo/lists_tables", "src/pytorch-sphinx-theme/docs/demo/long", "src/pytorch-sphinx-theme/docs/demo/structure", "src/pytorch-sphinx-theme/docs/index", "src/pytorch-sphinx-theme/docs/installing", "src/pytorch_sphinx_theme/docs/changelog", "src/pytorch_sphinx_theme/docs/configuring", "src/pytorch_sphinx_theme/docs/demo/api", "src/pytorch_sphinx_theme/docs/demo/demo", "src/pytorch_sphinx_theme/docs/demo/lists_tables", "src/pytorch_sphinx_theme/docs/demo/long", "src/pytorch_sphinx_theme/docs/demo/structure", "src/pytorch_sphinx_theme/docs/index", "src/pytorch_sphinx_theme/docs/installing"], "filenames": ["advanced/ONNXLive.rst", "advanced/coding_ddpg.rst", "advanced/cpp_autograd.rst", "advanced/cpp_cuda_graphs.rst", "advanced/cpp_export.rst", "advanced/cpp_extension.rst", "advanced/cpp_frontend.rst", "advanced/ddp_pipeline.rst", "advanced/dispatcher.rst", "advanced/dynamic_quantization_tutorial.rst", "advanced/extend_dispatcher.rst", "advanced/generic_join.rst", "advanced/neural_style_tutorial.rst", "advanced/numpy_extensions_tutorial.rst", "advanced/pendulum.rst", "advanced/privateuseone.rst", "advanced/rpc_ddp_tutorial.rst", "advanced/semi_structured_sparse.rst", "advanced/sharding.rst", "advanced/static_quantization_tutorial.rst", "advanced/super_resolution_with_onnxruntime.rst", "advanced/torch-script-parallelism.rst", "advanced/torch_script_custom_classes.rst", "advanced/torch_script_custom_ops.rst", "advanced/usb_semisup_learn.rst", "beginner/Intro_to_TorchScript_tutorial.rst", "beginner/audio_data_augmentation_tutorial.rst", "beginner/audio_datasets_tutorial.rst", "beginner/audio_feature_augmentation_tutorial.rst", "beginner/audio_feature_extractions_tutorial.rst", "beginner/audio_io_tutorial.rst", "beginner/audio_resampling_tutorial.rst", "beginner/basics/autogradqs_tutorial.rst", "beginner/basics/buildmodel_tutorial.rst", "beginner/basics/data_tutorial.rst", "beginner/basics/index.rst", "beginner/basics/intro.rst", "beginner/basics/optimization_tutorial.rst", "beginner/basics/quickstart_tutorial.rst", "beginner/basics/saveloadrun_tutorial.rst", "beginner/basics/tensorqs_tutorial.rst", "beginner/basics/transforms_tutorial.rst", "beginner/bettertransformer_tutorial.rst", "beginner/blitz/autograd_tutorial.rst", "beginner/blitz/cifar10_tutorial.rst", "beginner/blitz/data_parallel_tutorial.rst", "beginner/blitz/index.rst", "beginner/blitz/neural_networks_tutorial.rst", "beginner/blitz/tensor_tutorial.rst", "beginner/chatbot_tutorial.rst", "beginner/colab.rst", "beginner/data_loading_tutorial.rst", "beginner/dcgan_faces_tutorial.rst", "beginner/ddp_series_fault_tolerance.rst", "beginner/ddp_series_intro.rst", "beginner/ddp_series_multigpu.rst", "beginner/ddp_series_theory.rst", "beginner/deep_learning_60min_blitz.rst", "beginner/deeplabv3_on_android.rst", "beginner/deeplabv3_on_ios.rst", "beginner/deploy_seq2seq_hybrid_frontend_tutorial.rst", "beginner/dist_overview.rst", "beginner/examples_autograd/index.rst", "beginner/examples_autograd/polynomial_autograd.rst", "beginner/examples_autograd/polynomial_custom_function.rst", "beginner/examples_nn/dynamic_net.rst", "beginner/examples_nn/index.rst", "beginner/examples_nn/polynomial_module.rst", "beginner/examples_nn/polynomial_nn.rst", "beginner/examples_nn/polynomial_optim.rst", "beginner/examples_tensor/index.rst", "beginner/examples_tensor/polynomial_numpy.rst", "beginner/examples_tensor/polynomial_tensor.rst", "beginner/fgsm_tutorial.rst", "beginner/finetuning_torchvision_models_tutorial.rst", "beginner/flava_finetuning_tutorial.rst", "beginner/former_torchies/autograd_tutorial_old.rst", "beginner/former_torchies/index.rst", "beginner/former_torchies/nnft_tutorial.rst", "beginner/former_torchies/parallelism_tutorial.rst", "beginner/former_torchies/tensor_tutorial_old.rst", "beginner/former_torchies_tutorial.rst", "beginner/hta_intro_tutorial.rst", "beginner/hta_trace_diff_tutorial.rst", "beginner/hybrid_frontend/index.rst", "beginner/hybrid_frontend/learning_hybrid_frontend_through_example_tutorial.rst", "beginner/hybrid_frontend_tutorial.rst", "beginner/hyperparameter_tuning_tutorial.rst", "beginner/introyt.rst", "beginner/introyt/autogradyt_tutorial.rst", "beginner/introyt/captumyt.rst", "beginner/introyt/index.rst", "beginner/introyt/introyt1_tutorial.rst", "beginner/introyt/modelsyt_tutorial.rst", "beginner/introyt/tensorboardyt_tutorial.rst", "beginner/introyt/tensors_deeper_tutorial.rst", "beginner/introyt/trainingyt.rst", "beginner/knowledge_distillation_tutorial.rst", "beginner/nlp/advanced_tutorial.rst", "beginner/nlp/deep_learning_tutorial.rst", "beginner/nlp/index.rst", "beginner/nlp/pytorch_tutorial.rst", "beginner/nlp/sequence_models_tutorial.rst", "beginner/nlp/word_embeddings_tutorial.rst", "beginner/nn_tutorial.rst", "beginner/onnx/export_simple_model_to_onnx_tutorial.rst", "beginner/onnx/index.rst", "beginner/onnx/intro_onnx.rst", "beginner/onnx/onnx_registry_tutorial.rst", "beginner/profiler.rst", "beginner/ptcheat.rst", "beginner/pytorch_with_examples.rst", "beginner/saving_loading_models.rst", "beginner/t5_tutorial.rst", "beginner/template_tutorial.rst", "beginner/text_sentiment_ngrams_tutorial.rst", "beginner/torchtext_custom_dataset_tutorial.rst", "beginner/transfer_learning_tutorial.rst", "beginner/translation_transformer.rst", "beginner/vt_tutorial.rst", "distributed/home.rst", "index.rst", "intermediate/FSDP_adavnced_tutorial.rst", "intermediate/FSDP_tutorial.rst", "intermediate/TP_tutorial.rst", "intermediate/autograd_saved_tensors_hooks_tutorial.rst", "intermediate/ax_multiobjective_nas_tutorial.rst", "intermediate/char_rnn_classification_tutorial.rst", "intermediate/char_rnn_generation_tutorial.rst", "intermediate/custom_function_conv_bn_tutorial.rst", "intermediate/custom_function_double_backward_tutorial.rst", "intermediate/ddp_series_minGPT.rst", "intermediate/ddp_series_multinode.rst", "intermediate/ddp_tutorial.rst", "intermediate/dist_pipeline_parallel_tutorial.rst", "intermediate/dist_tuto.rst", "intermediate/dqn_with_rnn_tutorial.rst", "intermediate/dynamic_quantization_bert_tutorial.rst", "intermediate/ensembling.rst", "intermediate/flask_rest_api_tutorial.rst", "intermediate/forced_alignment_with_torchaudio_tutorial.rst", "intermediate/forward_ad_usage.rst", "intermediate/fx_conv_bn_fuser.rst", "intermediate/fx_profiling_tutorial.rst", "intermediate/inductor_debug_cpu.rst", "intermediate/jacobians_hessians.rst", "intermediate/mario_rl_tutorial.rst", "intermediate/memory_format_tutorial.rst", "intermediate/mnist_train_nas.rst", "intermediate/model_parallel_tutorial.rst", "intermediate/neural_tangent_kernels.rst", "intermediate/nvfuser_intro_tutorial.rst", "intermediate/optimizer_step_in_backward_tutorial.rst", "intermediate/parametrizations.rst", "intermediate/per_sample_grads.rst", "intermediate/process_group_cpp_extension_tutorial.rst", "intermediate/pruning_tutorial.rst", "intermediate/quantized_transfer_learning_tutorial.rst", "intermediate/realtime_rpi.rst", "intermediate/reinforcement_ppo.rst", "intermediate/reinforcement_q_learning.rst", "intermediate/rpc_async_execution.rst", "intermediate/rpc_param_server_tutorial.rst", "intermediate/rpc_tutorial.rst", "intermediate/scaled_dot_product_attention_tutorial.rst", "intermediate/seq2seq_translation_tutorial.rst", "intermediate/spatial_transformer_tutorial.rst", "intermediate/speech_recognition_pipeline_tutorial.rst", "intermediate/tensorboard_profiler_tutorial.rst", "intermediate/tensorboard_tutorial.rst", "intermediate/text_to_speech_with_torchaudio.rst", "intermediate/tiatoolbox_tutorial.rst", "intermediate/torch_compile_tutorial.rst", "intermediate/torch_export_nightly_tutorial.rst", "intermediate/torch_export_tutorial.rst", "intermediate/torchrec_tutorial.rst", "intermediate/torchserve_with_ipex.rst", "intermediate/torchserve_with_ipex_2.rst", "intermediate/torchvision_tutorial.rst", "prototype/backend_config_tutorial.rst", "prototype/distributed_rpc_profiling.rst", "prototype/fx_graph_mode_ptq_dynamic.rst", "prototype/fx_graph_mode_ptq_static.rst", "prototype/fx_graph_mode_quant_guide.rst", "prototype/gpu_quantization_torchao_tutorial.rst", "prototype/graph_mode_dynamic_bert_tutorial.rst", "prototype/inductor_cpp_wrapper_tutorial.rst", "prototype/ios_coreml_workflow.rst", "prototype/ios_gpu_workflow.rst", "prototype/maskedtensor_adagrad.rst", "prototype/maskedtensor_advanced_semantics.rst", "prototype/maskedtensor_overview.rst", "prototype/maskedtensor_sparsity.rst", "prototype/nestedtensor.rst", "prototype/nnapi_mobilenetv2.rst", "prototype/numeric_suite_tutorial.rst", "prototype/prototype_index.rst", "prototype/pt2e_quant_ptq.rst", "prototype/pt2e_quant_qat.rst", "prototype/pt2e_quant_x86_inductor.rst", "prototype/pt2e_quantizer.rst", "prototype/semi_structured_sparse.rst", "prototype/skip_param_init.rst", "prototype/torchscript_freezing.rst", "prototype/tracing_based_selective_build.rst", "prototype/vmap_recipe.rst", "prototype/vulkan_workflow.rst", "recipes/amx.rst", "recipes/android_native_app_with_custom_op.rst", "recipes/bundled_inputs.rst", "recipes/compiling_optimizer.rst", "recipes/compiling_optimizer_lr_scheduler.rst", "recipes/cuda_rpc.rst", "recipes/deployment_with_flask.rst", "recipes/distributed_checkpoint_recipe.rst", "recipes/distributed_device_mesh.rst", "recipes/distributed_optim_torchscript.rst", "recipes/distributed_rpc_profiling.rst", "recipes/fuse.rst", "recipes/inference_tuning_on_aws_graviton.rst", "recipes/intel_extension_for_pytorch.rst", "recipes/intel_neural_compressor_for_pytorch.rst", "recipes/mobile_interpreter.rst", "recipes/mobile_perf.rst", "recipes/model_preparation_android.rst", "recipes/model_preparation_ios.rst", "recipes/profile_with_itt.rst", "recipes/ptmobile_recipes_summary.rst", "recipes/quantization.rst", "recipes/recipes/Captum_Recipe.rst", "recipes/recipes/amp_recipe.rst", "recipes/recipes/benchmark.rst", "recipes/recipes/changing_default_device.rst", "recipes/recipes/defining_a_neural_network.rst", "recipes/recipes/dynamic_quantization.rst", "recipes/recipes/index.rst", "recipes/recipes/loading_data_recipe.rst", "recipes/recipes/module_load_state_dict_tips.rst", "recipes/recipes/profiler_recipe.rst", "recipes/recipes/reasoning_about_shapes.rst", "recipes/recipes/save_load_across_devices.rst", "recipes/recipes/saving_and_loading_a_general_checkpoint.rst", "recipes/recipes/saving_and_loading_models_for_inference.rst", "recipes/recipes/saving_multiple_models_in_one_file.rst", "recipes/recipes/swap_tensors.rst", "recipes/recipes/tensorboard_with_pytorch.rst", "recipes/recipes/timer_quick_start.rst", "recipes/recipes/tuning_guide.rst", "recipes/recipes/warmstarting_model_using_parameters_from_a_different_model.rst", "recipes/recipes/what_is_state_dict.rst", "recipes/recipes/zeroing_out_gradients.rst", "recipes/recipes_index.rst", "recipes/script_optimized.rst", "recipes/torch_compile_backend_ipex.rst", "recipes/torch_compile_user_defined_triton_kernel_tutorial.rst", "recipes/torch_logs.rst", "recipes/torchscript_inference.rst", "recipes/torchserve_vertexai_tutorial.rst", "recipes/zero_redundancy_optimizer.rst", "src/pytorch-sphinx-theme/docs/changelog.rst", "src/pytorch-sphinx-theme/docs/configuring.rst", "src/pytorch-sphinx-theme/docs/demo/api.rst", "src/pytorch-sphinx-theme/docs/demo/demo.rst", "src/pytorch-sphinx-theme/docs/demo/lists_tables.rst", "src/pytorch-sphinx-theme/docs/demo/long.rst", "src/pytorch-sphinx-theme/docs/demo/structure.rst", "src/pytorch-sphinx-theme/docs/index.rst", "src/pytorch-sphinx-theme/docs/installing.rst", "src/pytorch_sphinx_theme/docs/changelog.rst", "src/pytorch_sphinx_theme/docs/configuring.rst", "src/pytorch_sphinx_theme/docs/demo/api.rst", "src/pytorch_sphinx_theme/docs/demo/demo.rst", "src/pytorch_sphinx_theme/docs/demo/lists_tables.rst", "src/pytorch_sphinx_theme/docs/demo/long.rst", "src/pytorch_sphinx_theme/docs/demo/structure.rst", "src/pytorch_sphinx_theme/docs/index.rst", "src/pytorch_sphinx_theme/docs/installing.rst"], "titles": ["ONNX Live Tutorial", "TorchRL objectives: Coding a DDPG loss", "Autograd in C++ Frontend", "Using CUDA Graphs in PyTorch C++ API", "\u5728 C++ \u4e2d\u52a0\u8f7d TorchScript \u6a21\u578b", "Custom C++ and CUDA Extensions", "Using the PyTorch C++ Frontend", "Training Transformer models using Distributed Data Parallel and Pipeline Parallelism", "Registering a Dispatched Operator in C++", "(beta) Dynamic Quantization on an LSTM Word Language Model", "Extending dispatcher for a new backend in C++", "Distributed Training with Uneven Inputs Using the Join Context Manager", "Neural Transfer Using PyTorch", "Creating Extensions Using NumPy and SciPy", "Pendulum\uff1a\u4f7f\u7528 TorchRL \u7f16\u5199\u73af\u5883\u548ctransforms", "Facilitating New Backend Integration by PrivateUse1", "Combining Distributed DataParallel with Distributed RPC Framework", "(beta) Accelerating BERT with semi-structured (2:4) sparsity", "Exploring TorchRec sharding", "(beta) Static Quantization with Eager Mode in PyTorch", "(optional) PyTorch \u6a21\u578b\u5bfc\u51fa\u5230 ONNX \u5e76\u4f7f\u7528 ONNX Runtime \u8fd0\u884c", "Dynamic Parallelism in TorchScript", "Extending TorchScript with Custom C++ Classes", "Extending TorchScript with Custom C++ Operators", "Semi-Supervised Learning using USB built upon PyTorch", "TorchScript \u4ecb\u7ecd", "\u97f3\u9891\u6570\u636e\u589e\u5f3a", "\u97f3\u9891\u6570\u636e\u96c6", "\u97f3\u9891\u7279\u5f81\u589e\u5f3a", "\u97f3\u9891\u7279\u5f81\u63d0\u53d6", "\u97f3\u9891 I/O", "Audio \u91cd\u91c7\u6837", "\u81ea\u52a8\u5fae\u5206", "\u6784\u5efa\u795e\u7ecf\u7f51\u7edc", "\u6570\u636e\u96c6\u4e0e\u6570\u636e\u52a0\u8f7d\u5668", "Learn the Basics", "\u57fa\u7840\u77e5\u8bc6", "\u4f18\u5316\u6a21\u578b\u53c2\u6570", "\u5feb\u901f\u5165\u95e8", "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b", "\u5f20\u91cf", "Transforms", "\u4f7f\u7528 Better Transformer \u8fdb\u884c\u5feb\u901f Transformer \u63a8\u65ad", "A Gentle Introduction to torch.autograd", "Training a Classifier", "Optional: Data Parallelism", "Deep Learning with PyTorch: A 60 Minute Blitz", "Neural Networks", "Tensors", "Chatbot Tutorial", "Running Tutorials in Google Colab", "Writing Custom Datasets, DataLoaders and Transforms", "DCGAN \u6559\u7a0b", "Fault-tolerant Distributed Training with torchrun", "PyTorch \u5206\u5e03\u5f0f\u5e76\u884c - Video Tutorials", "\u4f7f\u7528 DDP \u8fdb\u884c\u591a GPU \u8bad\u7ec3", "What is Distributed Data Parallel (DDP)", "PyTorch \u6df1\u5ea6\u5b66\u4e60\uff1a60\u5206\u949f\u5165\u95e8", "Image Segmentation DeepLabV3 on Android", "Image Segmentation DeepLabV3 on iOS", "Deploying a Seq2Seq Model with TorchScript", "PyTorch \u5206\u5e03\u5f0f\u6982\u8ff0", "<no title>", "PyTorch: Tensors and autograd", "PyTorch: Defining New autograd Functions", "PyTorch: Control Flow + Weight Sharing", "<no title>", "PyTorch: Custom nn Modules", "PyTorch: nn", "PyTorch: optim", "<no title>", "Warm-up: numpy", "PyTorch\uff1a\u5f20\u91cf(Tensors)", "\u5bf9\u6297\u6837\u672c\u751f\u6210", "Finetuning Torchvision Models", "TorchMultimodal \u6559\u7a0b\uff1a\u5fae\u8c03 FLAVA", "Autograd", "<no title>", "nn package", "Multi-GPU Examples", "Tensors", "PyTorch for Former Torch Users", "Holistic Trace Analysis \u4ecb\u7ecd", "Holistic Trace Analysis \u5dee\u5f02\u5206\u6790", "<no title>", "Learning Hybrid Frontend Syntax Through Example", "Hybrid Frontend \u6559\u7a0b", "Ray Tune \u8d85\u53c2\u6570\u8c03\u4f18", "PyTorch \u4ecb\u7ecd - YouTube", "\u81ea\u52a8\u5fae\u5206\u57fa\u7840", "\u4f7f\u7528 Captum \u8fdb\u884c\u6a21\u578b\u7406\u89e3", "Introduction to PyTorch on YouTube", "PyTorch \u7b80\u4ecb", "\u4f7f\u7528 PyTorch \u6784\u5efa\u6a21\u578b", "PyTorch TensorBoard \u652f\u6301", "PyTorch Tensors \u4ecb\u7ecd", "\u4f7f\u7528 PyTorch \u8bad\u7ec3\u6a21\u578b", "Knowledge Distillation \u6559\u7a0b", "Advanced: Making Dynamic Decisions and the Bi-LSTM CRF", "Deep Learning with PyTorch", "Deep Learning for NLP with Pytorch", "Introduction to PyTorch", "Sequence Models and Long Short-Term Memory Networks", "Word Embeddings: Encoding Lexical Semantics", "torch.nn \u5177\u4f53\u662f\u4ec0\u4e48?", "Export a PyTorch model to ONNX", "ONNX", "ONNX \u4ecb\u7ecd", "Extending the ONNX Registry", "PyTorch \u6a21\u578b\u5206\u6790", "PyTorch Cheat Sheet", "\u8ddf\u7740\u793a\u4f8b\u5b66\u4e60 PyTorch", "Saving and Loading Models", "T5-Base Model for Summarization, Sentiment Classification, and Translation", "Template Tutorial", "torchtext \u6587\u672c\u5206\u7c7b", "Torchtext \u9884\u5904\u7406\u81ea\u5b9a\u4e49\u6587\u672c\u6570\u636e\u96c6", "\u8ba1\u7b97\u673a\u89c6\u89c9\u8fc1\u79fb\u5b66\u4e60\u6559\u7a0b", "\u6570\u636e\u83b7\u53d6\u548c\u5904\u7406", "\u4f18\u5316\u89c6\u89c9 Transformer \u6a21\u578b", "Distributed and Parallel Training Tutorials", "\u6b22\u8fce\u6765\u5230 PyTorch \u6559\u7a0b", "Advanced Model Training with Fully Sharded Data Parallel (FSDP)", "Getting Started with Fully Sharded Data Parallel(FSDP)", "Large Scale Transformer model training with Tensor Parallel (TP)", "Hooks for autograd saved tensors", "Multi-Objective NAS with Ax", "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u5b57\u7b26\u7ea7 RNN \u8fdb\u884c\u59d3\u540d\u5206\u7c7b", "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u5b57\u7b26\u7ea7 RNN \u751f\u6210\u59d3\u540d", "Fusing Convolution and Batch Norm using Custom Function", "Double Backward with Custom Functions", "Training \u201creal-world\u201d models with DDP", "Multinode Training", "Getting Started with Distributed Data Parallel", "Distributed Pipeline Parallelism Using RPC", "Writing Distributed Applications with PyTorch", "Recurrent DQN: Training recurrent policies", "(beta) Dynamic Quantization on BERT", "Model ensembling", "API \u5b9a\u4e49", "Wav2Vec2 \u5f3a\u5236\u5bf9\u9f50", "Forward-mode Automatic Differentiation (Beta)", "(beta) Building a Convolution/Batch Norm fuser in FX", "(beta) Building a Simple CPU Performance Profiler with FX", "Inductor CPU backend debugging and profiling", "Jacobians, Hessians, hvp, vhp, and more: composing function transforms", "\u8bad\u7ec3\u4e00\u4e2a\u9a6c\u91cc\u5965\u6e38\u620f\u7684 RL Agent", "(beta) Channels Last Memory Format in PyTorch", "<no title>", "Single-Machine Model Parallel Best Practices", "Neural Tangent Kernels", "Getting Started - Accelerate Your Scripts with nvFuser", "How to save memory by fusing the optimizer step into the backward pass", "Parametrizations Tutorial", "Per-sample-gradients", "Customize Process Group Backends Using Cpp Extensions", "Pruning Tutorial", "(beta) Quantized Transfer Learning for Computer Vision Tutorial", "\u5728 Raspberry Pi 4 \u4e0a\u8fdb\u884c\u5b9e\u65f6\u63a8\u7406 (30 fps!)", "\u4f7f\u7528 TorchRL \u5f3a\u5316\u5b66\u4e60 (PPO) \u6559\u7a0b", "\u5f3a\u5316\u5b66\u4e60 (DQN) \u6559\u7a0b", "Implementing Batch RPC Processing Using Asynchronous Executions", "Implementing a Parameter Server Using Distributed RPC Framework", "Getting Started with Distributed RPC Framework", "(Beta) Implementing High-Performance Transformers with Scaled Dot Product Attention (SDPA)", "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u673a\u5236\u8fdb\u884c\u7ffb\u8bd1", "Spatial Transformer Networks \u6559\u7a0b", "Wav2Vec2 \u8fdb\u884c\u8bed\u97f3\u8bc6\u522b", "PyTorch Profiler With TensorBoard", "TensorBoard \u53ef\u89c6\u5316\u6a21\u578b\u3001\u6570\u636e\u548c\u8bad\u7ec3", "Tacotron2 \u6587\u672c\u8f6c\u8bed\u97f3", "PyTorch \u548c TIAToolbox \u8fdb\u884c\u5168\u5207\u7247\u56fe\u50cf\u5206\u7c7b", "Introduction to torch.compile", "torch.export Nightly Tutorial", "torch.export Tutorial", "Introduction to TorchRec", "Grokking PyTorch Intel CPU performance from first principles", "Grokking PyTorch Intel CPU performance from first principles (Part 2)", "TorchVision \u5bf9\u8c61\u68c0\u6d4b\u5fae\u8c03\u6559\u7a0b", "(prototype) PyTorch BackendConfig Tutorial", "Profiling PyTorch RPC-Based Workloads", "(prototype) FX Graph Mode Post Training Dynamic Quantization", "(prototype) FX Graph Mode Post Training Static Quantization", "(prototype) FX Graph Mode Quantization User Guide", "(prototype) GPU Quantization with TorchAO", "(prototype) Graph Mode Dynamic Quantization on BERT", "Inductor C++ Wrapper Tutorial", "(Prototype) Convert Mobilenetv2 to Core ML", "(Prototype) Use iOS GPU in PyTorch", "(Prototype) Efficiently writing \u201csparse\u201d semantics for Adagrad with MaskedTensor", "(Prototype) MaskedTensor Advanced Semantics", "(Prototype) MaskedTensor Overview", "(Prototype) MaskedTensor Sparsity", "Getting Started with Nested Tensors", "(Beta) Convert MobileNetV2 to NNAPI", "PyTorch Numeric Suite Tutorial", "PyTorch Prototype Recipes", "(prototype) PyTorch 2 Export Post Training Quantization", "(prototype) PyTorch 2 Export Quantization-Aware Training (QAT)", "PyTorch 2 Export Quantization with X86 Backend through Inductor", "How to Write a Quantizer for PyTorch 2 Export Quantization", "(prototype) Accelerating BERT with semi-structured (2:4) sparsity", "Skipping Module Parameter Initialization", "Model Freezing in TorchScript", "(prototype) Tracing-based Selective Build Mobile Interpreter in Android and iOS", "torch.vmap", "PyTorch Vulkan Backend User Workflow", "Leverage Intel\u00ae Advanced Matrix Extensions", "Making Native Android Application that uses PyTorch prebuilt libraries", "(beta) Bundling inputs to PyTorch Models", "(beta) Compiling the optimizer with torch.compile", "(beta) Running the compiled optimizer with an LR Scheduler", "Direct Device-to-Device Communication with TensorPipe CUDA RPC", "Deploying with Flask", "Getting Started with Distributed Checkpoint (DCP)", "Getting Started with DeviceMesh", "Distributed Optimizer with TorchScript support", "Profiling PyTorch RPC-Based Workloads", "Fuse Modules Recipe", "(Beta) PyTorch Inference Performance Tuning on AWS Graviton Processors", "Intel\u00ae Extension for PyTorch*", "Ease-of-use quantization for PyTorch with Intel\u00ae Neural Compressor", "(beta) Efficient mobile interpreter in Android and iOS", "Pytorch Mobile Performance Recipes", "Model Preparation for Android Recipe", "Model Preparation for iOS Recipe", "Profiling PyTorch workloads with The Instrumentation and Tracing Technology (ITT) API", "Summary of PyTorch Mobile Recipes", "Quantization Recipe", "Model Interpretability using Captum", "Automatic Mixed Precision", "PyTorch Benchmark", "Changing default device", "PyTorch \u521b\u5efa\u795e\u7ecf\u7f51\u7edc", "Dynamic Quantization", "PyTorch Recipes", "PyTorch \u52a0\u8f7d\u6570\u636e", "Tips for Loading an nn.Module from a Checkpoint", "PyTorch Profiler", "Reasoning about Shapes in PyTorch", "PyTorch \u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b", "PyTorch \u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9", "PyTorch \u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b", "PyTorch \u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b", "Extension points in nn.Module for load_state_dict and tensor subclasses", "How to use TensorBoard with PyTorch", "Timer\u5feb\u901f\u5165\u95e8", "Performance Tuning Guide", "PyTorch \u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8", "PyTorch \u4e2d state_dict \u662f\u4ec0\u4e48", "\u4ecb\u7ecd", "PyTorch \u793a\u4f8b", "Script and Optimize for Mobile Recipe", "Intel\u00ae Extension for PyTorch* Backend", "Using User-Defined Triton Kernels with torch.compile", "(beta) Using TORCH_LOGS python API with torch.compile", "TorchScript for Deployment", "Deploying a PyTorch Stable Diffusion model as a Vertex AI Endpoint", "Shard Optimizer States with ZeroRedundancyOptimizer", "Changelog", "Configuration", "5. test_py_module", "3. Paragraph Level Markup", "4. Lists & Tables", "1. Long Sticky Nav", "1. Structural Elements", "<no title>", "Installation", "Changelog", "Configuration", "5. test_py_module", "3. Paragraph Level Markup", "4. Lists & Tables", "1. Long Sticky Nav", "1. Structural Elements", "<no title>", "Installation"], "terms": {"thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 37, 40, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 85, 86, 87, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 232, 234, 237, 238, 239, 240, 241, 244, 245, 247, 252, 254, 255, 256, 257, 258, 260, 261, 262, 264, 265, 269, 270, 271, 273, 274], "show": [0, 1, 5, 10, 11, 12, 14, 17, 18, 19, 22, 24, 34, 42, 44, 51, 52, 58, 59, 61, 73, 75, 82, 83, 85, 87, 90, 104, 108, 109, 113, 115, 116, 117, 118, 119, 121, 123, 126, 127, 128, 129, 130, 133, 134, 136, 138, 139, 144, 145, 147, 149, 155, 157, 158, 159, 160, 161, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 179, 182, 185, 187, 188, 189, 194, 195, 197, 198, 201, 204, 208, 211, 212, 214, 215, 216, 220, 222, 223, 225, 226, 228, 229, 230, 231, 234, 245, 247, 257, 258, 260, 262, 269, 271], "you": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 31, 32, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 64, 65, 67, 68, 73, 75, 76, 78, 81, 82, 85, 86, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 108, 109, 111, 112, 113, 114, 117, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 178, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 219, 220, 222, 223, 224, 225, 226, 228, 230, 232, 234, 237, 240, 241, 245, 247, 252, 254, 255, 256, 257, 258, 260, 262, 263, 264, 269, 271, 272, 273], "neural": [0, 2, 5, 13, 14, 17, 20, 32, 35, 43, 46, 49, 51, 57, 60, 68, 73, 78, 79, 81, 97, 98, 99, 100, 101, 102, 103, 105, 107, 111, 116, 117, 119, 121, 126, 127, 128, 129, 136, 149, 156, 159, 160, 162, 165, 166, 169, 171, 177, 187, 194, 196, 199, 201, 207, 219, 220, 226, 234, 235, 247, 251], "ha": [0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 42, 43, 44, 47, 49, 50, 58, 59, 60, 61, 63, 68, 73, 74, 75, 76, 78, 80, 83, 85, 87, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 111, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 135, 136, 137, 138, 140, 142, 144, 145, 147, 150, 151, 152, 153, 156, 157, 158, 159, 160, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 180, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 195, 197, 198, 200, 201, 202, 203, 208, 211, 212, 213, 216, 217, 220, 221, 223, 228, 229, 232, 234, 244, 247, 252, 256, 257, 258, 262, 263, 271, 272], "been": [0, 1, 3, 4, 6, 7, 9, 14, 15, 17, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 42, 50, 58, 59, 69, 73, 74, 80, 83, 85, 87, 101, 102, 105, 113, 119, 123, 128, 129, 130, 131, 135, 136, 140, 142, 143, 144, 145, 150, 151, 152, 153, 156, 158, 159, 160, 164, 167, 168, 169, 170, 171, 173, 174, 176, 177, 180, 182, 187, 189, 192, 193, 198, 199, 200, 201, 211, 216, 217, 220, 221, 226, 244, 245, 257, 263, 272], "export": [0, 4, 8, 20, 21, 23, 47, 60, 85, 106, 107, 108, 110, 121, 132, 133, 137, 144, 164, 172, 196, 203, 204, 207, 208, 209, 219, 222, 230, 247, 251, 257], "from": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 25, 33, 34, 37, 38, 41, 42, 44, 45, 47, 48, 49, 51, 52, 53, 55, 58, 59, 60, 61, 63, 64, 67, 68, 69, 73, 75, 76, 78, 80, 82, 83, 85, 87, 90, 92, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 179, 181, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 208, 209, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 234, 235, 238, 244, 245, 246, 247, 251, 252, 254, 256, 257, 258, 260, 261, 262, 263, 269, 270, 271, 272], "appl": [0, 98, 102, 176, 184, 187, 188], "format": [0, 1, 5, 7, 9, 12, 16, 17, 19, 20, 23, 25, 51, 52, 58, 59, 60, 87, 94, 95, 96, 97, 107, 108, 110, 115, 119, 121, 122, 123, 129, 135, 137, 143, 144, 156, 157, 158, 161, 163, 166, 168, 169, 171, 173, 174, 176, 178, 181, 182, 185, 187, 188, 189, 191, 192, 194, 197, 198, 200, 201, 203, 207, 216, 220, 221, 224, 225, 228, 229, 230, 234, 236, 251, 256, 262, 263, 271, 272], "us": [0, 1, 4, 8, 9, 10, 14, 15, 16, 17, 18, 19, 21, 32, 33, 38, 42, 44, 45, 47, 48, 49, 51, 52, 54, 55, 56, 57, 58, 59, 61, 63, 64, 65, 67, 68, 69, 72, 73, 75, 76, 78, 79, 80, 81, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 107, 108, 110, 111, 114, 115, 117, 118, 120, 121, 122, 124, 125, 126, 127, 128, 130, 132, 135, 137, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 156, 157, 158, 159, 160, 165, 166, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 207, 209, 210, 211, 213, 216, 218, 219, 220, 224, 225, 227, 230, 231, 232, 234, 235, 239, 244, 246, 251, 257, 260, 261, 262, 263, 269, 270, 271, 272], "allow": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 19, 22, 23, 24, 25, 32, 43, 49, 50, 51, 52, 53, 60, 61, 79, 82, 83, 85, 87, 97, 99, 101, 102, 103, 105, 108, 113, 119, 122, 123, 124, 126, 128, 130, 135, 136, 137, 139, 142, 146, 147, 150, 152, 153, 155, 156, 157, 159, 160, 161, 163, 164, 165, 166, 171, 172, 173, 174, 175, 176, 177, 178, 185, 186, 189, 190, 193, 195, 197, 198, 199, 200, 206, 208, 212, 215, 216, 228, 230, 234, 244, 245, 260, 269], "easili": [0, 1, 5, 12, 19, 24, 45, 60, 61, 73, 95, 97, 109, 112, 118, 119, 122, 124, 126, 133, 135, 142, 143, 144, 150, 156, 159, 160, 163, 171, 172, 173, 174, 176, 177, 178, 182, 184, 202, 214, 215, 221], "deep": [0, 1, 6, 12, 13, 25, 47, 49, 52, 60, 69, 97, 101, 103, 117, 119, 120, 121, 127, 128, 129, 137, 144, 145, 146, 153, 156, 157, 160, 165, 171, 175, 177, 207, 210, 211, 218, 221, 226, 247, 260, 269], "learn": [0, 1, 4, 6, 7, 9, 13, 14, 17, 20, 21, 25, 43, 45, 47, 49, 51, 52, 53, 54, 55, 56, 57, 60, 61, 69, 73, 79, 81, 82, 84, 86, 87, 97, 101, 103, 104, 105, 107, 108, 112, 113, 114, 115, 116, 121, 122, 123, 126, 127, 128, 131, 132, 133, 135, 136, 144, 145, 148, 152, 153, 154, 156, 158, 159, 160, 162, 165, 166, 169, 171, 173, 174, 175, 177, 178, 184, 189, 190, 191, 192, 193, 196, 197, 199, 200, 201, 203, 204, 207, 208, 210, 211, 212, 213, 214, 215, 216, 219, 221, 223, 226, 229, 237, 244, 247, 251, 253, 256, 257, 258], "devic": [0, 1, 3, 6, 7, 8, 9, 10, 11, 14, 16, 18, 19, 20, 23, 24, 25, 33, 38, 40, 42, 43, 44, 45, 48, 49, 50, 52, 53, 55, 56, 58, 59, 60, 61, 63, 64, 72, 73, 79, 80, 87, 89, 95, 97, 99, 104, 105, 110, 111, 115, 117, 118, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 137, 138, 144, 146, 147, 149, 150, 152, 154, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 174, 175, 178, 179, 181, 182, 184, 185, 186, 187, 188, 193, 194, 197, 198, 199, 201, 202, 208, 210, 211, 214, 215, 218, 219, 220, 223, 228, 230, 231, 235, 239, 240, 244, 251, 252, 254, 255, 258], "case": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 14, 16, 17, 20, 22, 23, 25, 32, 43, 49, 51, 60, 61, 68, 73, 75, 82, 85, 97, 98, 99, 101, 102, 103, 108, 111, 112, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 134, 135, 136, 138, 139, 141, 144, 145, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 179, 184, 185, 189, 191, 192, 193, 194, 197, 200, 201, 202, 205, 206, 208, 216, 220, 223, 229, 230, 234, 239, 244, 252, 254], "stream": [0, 3, 15, 82, 98, 119, 134, 149, 158, 186, 208, 220], "camera": [0, 121, 158], "open": [0, 5, 9, 12, 20, 38, 49, 50, 58, 59, 60, 75, 87, 90, 103, 104, 105, 107, 115, 116, 117, 119, 122, 127, 128, 135, 137, 138, 139, 143, 146, 152, 154, 165, 166, 168, 171, 181, 185, 188, 204, 206, 208, 213, 220, 221, 222, 223, 224, 225, 226, 229, 257], "network": [0, 2, 3, 5, 7, 8, 12, 13, 14, 17, 19, 20, 21, 25, 32, 35, 43, 46, 49, 51, 57, 60, 68, 69, 73, 78, 79, 81, 92, 97, 98, 100, 101, 103, 105, 107, 111, 116, 117, 119, 121, 125, 126, 129, 132, 133, 143, 149, 150, 153, 156, 157, 162, 165, 168, 169, 171, 177, 194, 196, 199, 201, 207, 219, 220, 221, 226, 234, 235, 239, 247, 252], "exchang": [0, 49, 105, 107, 122, 135, 165, 168], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 32, 42, 43, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 61, 65, 67, 69, 73, 75, 76, 78, 80, 82, 83, 85, 86, 87, 92, 97, 98, 99, 100, 101, 105, 107, 108, 109, 110, 111, 112, 113, 116, 117, 121, 122, 123, 124, 126, 127, 128, 129, 130, 132, 133, 134, 135, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 225, 226, 227, 228, 229, 230, 232, 234, 235, 239, 244, 247, 251, 252, 254, 255, 256, 260, 262, 263, 269, 271, 272], "repres": [0, 1, 5, 7, 10, 12, 13, 18, 20, 21, 25, 43, 49, 51, 52, 60, 63, 73, 75, 82, 85, 97, 103, 105, 107, 109, 110, 115, 116, 122, 123, 124, 126, 127, 136, 139, 141, 142, 143, 146, 147, 159, 160, 163, 165, 171, 173, 174, 176, 178, 182, 189, 193, 197, 198, 204, 213, 244, 262, 271], "With": [0, 4, 8, 10, 15, 16, 17, 18, 19, 21, 42, 48, 52, 58, 59, 61, 73, 85, 101, 115, 124, 130, 135, 137, 144, 149, 150, 152, 161, 162, 163, 164, 165, 176, 177, 184, 186, 194, 197, 199, 200, 201, 204, 207, 211, 212, 215, 216, 224, 225, 226, 228, 229, 234, 237, 244, 247, 256, 258, 260, 262, 269, 271], "ai": [0, 75, 90, 99, 100, 104, 123, 126, 137, 146, 165, 175, 207, 214, 220, 229, 251], "develop": [0, 1, 3, 5, 8, 10, 12, 15, 23, 24, 58, 59, 60, 82, 85, 101, 105, 107, 113, 115, 135, 139, 147, 155, 163, 168, 179, 184, 186, 187, 188, 189, 192, 197, 198, 200, 204, 208, 214, 220, 221, 222, 227, 234, 235, 262, 263, 271, 272], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 34, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 64, 65, 67, 68, 73, 76, 78, 79, 80, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 237, 239, 244, 245, 247, 249, 252, 254, 255, 256, 257, 258, 260, 262, 269, 271], "more": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 25, 38, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 55, 56, 61, 67, 69, 73, 75, 76, 78, 79, 85, 97, 98, 99, 101, 102, 103, 105, 109, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 139, 141, 142, 143, 146, 149, 150, 152, 153, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 183, 184, 185, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 201, 203, 204, 205, 206, 207, 208, 212, 213, 214, 215, 216, 219, 220, 221, 223, 226, 229, 231, 237, 244, 247, 255, 256, 258, 260, 263, 269, 272], "move": [0, 1, 4, 5, 7, 12, 23, 26, 27, 28, 29, 30, 31, 40, 43, 47, 48, 73, 74, 99, 110, 122, 123, 124, 132, 133, 134, 136, 140, 146, 149, 152, 153, 154, 155, 157, 160, 162, 163, 164, 166, 167, 168, 170, 177, 178, 183, 188, 190, 198, 199, 206, 209, 212, 214, 219, 223, 234, 247, 252], "between": [0, 1, 5, 6, 8, 11, 12, 14, 16, 17, 19, 21, 22, 23, 40, 47, 48, 49, 58, 59, 60, 65, 73, 82, 83, 85, 87, 95, 97, 98, 99, 102, 103, 108, 121, 123, 124, 126, 135, 136, 137, 143, 146, 147, 149, 150, 156, 160, 162, 163, 164, 165, 169, 171, 172, 173, 174, 176, 177, 178, 181, 184, 185, 186, 189, 190, 192, 195, 196, 198, 199, 200, 201, 218, 229, 230, 232, 234, 247, 255, 258, 262, 263, 271, 272], "state": [0, 1, 5, 8, 9, 10, 11, 12, 14, 17, 22, 38, 44, 49, 52, 53, 55, 60, 61, 78, 79, 87, 97, 98, 102, 112, 119, 122, 123, 127, 128, 129, 131, 133, 136, 137, 138, 141, 146, 152, 154, 156, 159, 160, 161, 162, 163, 165, 168, 181, 185, 189, 192, 195, 201, 214, 216, 229, 230, 234, 237, 251], "art": [0, 5, 44, 52, 79, 103, 119, 137, 156, 185, 229], "tool": [0, 3, 6, 8, 14, 21, 25, 51, 60, 82, 87, 98, 123, 133, 135, 136, 144, 161, 164, 168, 169, 171, 177, 182, 195, 208, 209, 213, 223, 226, 237, 254, 257], "choos": [0, 1, 8, 10, 12, 15, 44, 49, 52, 55, 59, 65, 87, 99, 111, 112, 124, 128, 133, 135, 143, 146, 153, 158, 159, 160, 165, 168, 171, 177, 178, 184, 185, 197, 199, 212, 226, 227, 229, 230], "combin": [0, 5, 10, 21, 61, 75, 87, 97, 98, 101, 103, 115, 120, 121, 123, 125, 127, 128, 129, 138, 150, 156, 157, 160, 163, 165, 183, 186, 193, 197, 199, 215, 221, 234], "best": [0, 5, 6, 7, 8, 17, 23, 37, 43, 52, 58, 61, 73, 87, 98, 105, 108, 109, 112, 115, 117, 119, 121, 131, 134, 135, 137, 138, 144, 154, 157, 158, 160, 161, 163, 166, 184, 194, 199, 201, 219, 220, 221, 223, 247, 251, 254, 262, 271], "them": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 19, 23, 25, 43, 44, 47, 48, 49, 51, 53, 55, 59, 60, 61, 65, 67, 68, 73, 75, 78, 87, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 111, 112, 115, 116, 118, 121, 122, 124, 126, 127, 128, 129, 130, 134, 135, 136, 138, 139, 143, 144, 145, 149, 150, 152, 153, 154, 156, 158, 160, 161, 162, 163, 171, 176, 177, 178, 181, 184, 191, 193, 194, 195, 200, 201, 202, 208, 209, 211, 213, 218, 219, 220, 221, 225, 230, 234, 237, 244, 247, 252, 260, 269], "support": [0, 4, 6, 7, 11, 14, 15, 16, 17, 18, 19, 22, 23, 24, 42, 47, 51, 56, 60, 61, 73, 78, 80, 83, 85, 91, 97, 105, 107, 109, 113, 121, 122, 123, 126, 130, 132, 133, 135, 136, 137, 141, 144, 147, 153, 155, 156, 158, 159, 161, 162, 163, 168, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 185, 187, 188, 189, 190, 191, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 206, 207, 208, 210, 211, 212, 214, 219, 220, 221, 223, 228, 229, 247, 251, 252, 254, 255, 260, 261, 269, 270], "commun": [0, 11, 15, 18, 55, 61, 110, 113, 121, 122, 123, 124, 126, 131, 132, 133, 155, 159, 161, 162, 163, 168, 171, 176, 196, 215, 247, 251], "partner": [0, 113], "about": [0, 1, 4, 5, 6, 7, 8, 9, 10, 14, 15, 17, 19, 20, 21, 22, 23, 38, 42, 43, 49, 52, 53, 54, 55, 57, 73, 78, 87, 97, 99, 100, 101, 102, 103, 105, 107, 108, 109, 112, 113, 117, 119, 120, 121, 122, 126, 127, 128, 130, 132, 133, 135, 138, 139, 142, 143, 144, 145, 152, 154, 157, 158, 159, 160, 161, 163, 164, 165, 166, 168, 171, 172, 173, 174, 176, 178, 183, 184, 185, 187, 188, 190, 191, 192, 194, 196, 197, 198, 199, 200, 201, 203, 204, 208, 209, 215, 216, 222, 223, 228, 234, 235, 237, 244, 251, 260, 269], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 37, 42, 43, 44, 47, 48, 49, 50, 51, 52, 53, 55, 56, 58, 59, 60, 61, 67, 68, 69, 73, 75, 76, 78, 80, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 226, 228, 229, 230, 231, 234, 237, 241, 244, 245, 247, 251, 252, 254, 255, 256, 257, 258, 260, 262, 263, 264, 269, 271, 272, 273], "go": [0, 4, 11, 12, 13, 14, 16, 18, 19, 21, 22, 23, 25, 48, 49, 51, 58, 59, 60, 78, 95, 98, 101, 102, 105, 107, 108, 117, 119, 121, 122, 125, 127, 132, 135, 138, 141, 142, 143, 145, 157, 158, 160, 162, 165, 169, 177, 178, 179, 184, 187, 188, 189, 200, 204, 213, 214, 223, 228, 234, 245, 256], "walk": [0, 5, 6, 10, 15, 16, 22, 23, 24, 25, 43, 54, 58, 59, 60, 61, 100, 114, 120, 121, 125, 144, 146, 162, 176, 179, 184, 186, 187, 188, 199, 204, 222, 230, 245], "through": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 19, 21, 22, 23, 24, 25, 34, 43, 44, 47, 49, 52, 54, 55, 58, 59, 60, 61, 73, 75, 78, 84, 87, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 114, 115, 118, 119, 120, 121, 122, 124, 125, 127, 129, 130, 135, 138, 142, 143, 144, 145, 146, 147, 149, 150, 152, 154, 155, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 172, 174, 175, 176, 177, 182, 183, 184, 186, 187, 188, 189, 191, 195, 196, 197, 200, 201, 204, 205, 208, 209, 212, 214, 219, 220, 221, 222, 228, 230, 245, 262, 271], "4": [0, 1, 2, 3, 5, 6, 7, 12, 13, 14, 16, 21, 23, 24, 25, 32, 34, 36, 40, 43, 45, 48, 51, 52, 53, 54, 55, 63, 64, 65, 73, 75, 80, 87, 90, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 108, 111, 113, 115, 116, 117, 119, 121, 122, 123, 125, 126, 129, 131, 132, 135, 136, 144, 146, 147, 149, 152, 153, 156, 157, 159, 160, 161, 162, 163, 166, 171, 173, 174, 176, 178, 181, 184, 189, 190, 191, 192, 193, 196, 197, 198, 204, 207, 208, 215, 219, 222, 245, 252, 254, 260, 262, 263, 266, 269, 271, 272, 275], "main": [0, 1, 3, 4, 5, 6, 7, 11, 16, 19, 22, 23, 52, 53, 55, 58, 59, 61, 87, 97, 104, 107, 108, 113, 119, 122, 123, 127, 131, 134, 135, 137, 144, 157, 160, 161, 162, 163, 166, 173, 174, 176, 177, 178, 184, 186, 187, 197, 200, 205, 206, 208, 218, 220, 221, 222, 223, 226, 247, 256, 258, 260, 262, 264, 269, 271, 273], "step": [0, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 37, 38, 43, 44, 47, 49, 52, 60, 61, 65, 67, 69, 73, 82, 85, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 110, 111, 115, 117, 118, 119, 120, 121, 122, 123, 127, 128, 129, 131, 133, 135, 136, 137, 139, 142, 144, 146, 149, 150, 153, 157, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 184, 185, 188, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 210, 211, 214, 216, 220, 221, 222, 223, 226, 228, 230, 238, 244, 245, 247, 250, 252, 253, 257, 258], "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 34, 39, 40, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 73, 75, 76, 78, 79, 82, 83, 85, 87, 95, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 219, 222, 223, 224, 225, 226, 228, 229, 231, 234, 237, 239, 244, 245, 249, 252, 254, 255, 256, 257, 258, 260, 262, 269, 271], "work": [0, 1, 2, 4, 5, 6, 7, 9, 12, 14, 17, 18, 20, 21, 22, 23, 25, 42, 43, 49, 50, 51, 52, 55, 56, 58, 59, 60, 61, 73, 78, 85, 87, 97, 98, 100, 103, 113, 115, 116, 119, 121, 125, 127, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 141, 142, 143, 145, 149, 152, 153, 154, 155, 156, 158, 159, 161, 163, 164, 165, 168, 171, 173, 174, 176, 178, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 201, 202, 203, 205, 206, 207, 208, 213, 215, 219, 220, 223, 224, 225, 230, 234, 244, 247, 252, 253, 262, 263, 271, 272], "virtualenv": 0, "order": [0, 4, 6, 11, 12, 15, 17, 20, 22, 34, 44, 45, 49, 50, 55, 60, 63, 64, 65, 67, 68, 69, 73, 82, 87, 105, 107, 108, 109, 111, 113, 118, 121, 123, 125, 126, 128, 130, 133, 134, 135, 142, 143, 144, 145, 147, 155, 156, 162, 165, 166, 171, 172, 173, 174, 175, 178, 179, 182, 188, 191, 193, 194, 200, 201, 205, 213, 216, 222, 237, 252], "avoid": [0, 5, 16, 44, 58, 59, 87, 97, 122, 123, 124, 129, 133, 134, 135, 147, 150, 152, 159, 161, 177, 184, 189, 190, 193, 196, 201, 202, 223, 230, 234, 237, 244], "conflict": [0, 16, 144], "your": [0, 2, 6, 8, 9, 11, 12, 14, 15, 17, 18, 19, 22, 23, 25, 38, 42, 43, 44, 45, 47, 49, 50, 51, 53, 54, 55, 58, 59, 61, 67, 73, 75, 78, 82, 87, 99, 101, 102, 103, 105, 107, 108, 109, 110, 112, 113, 114, 121, 122, 123, 125, 129, 130, 131, 132, 133, 135, 136, 137, 139, 141, 143, 145, 146, 147, 149, 152, 153, 155, 156, 157, 158, 159, 162, 163, 164, 166, 168, 169, 171, 172, 173, 174, 176, 177, 185, 186, 187, 188, 194, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 209, 210, 215, 216, 218, 222, 224, 225, 229, 230, 234, 245, 246, 251, 254, 257, 260, 262, 263, 267, 269, 271, 272, 276], "local": [0, 5, 6, 7, 8, 9, 16, 18, 19, 22, 23, 49, 50, 98, 112, 114, 122, 124, 126, 133, 134, 135, 137, 152, 156, 157, 161, 162, 163, 165, 166, 177, 185, 208, 212, 216, 218, 222, 223, 230, 247, 252, 258, 260, 269], "packag": [0, 2, 5, 6, 17, 18, 22, 23, 24, 44, 47, 51, 57, 61, 68, 69, 75, 76, 77, 79, 81, 87, 97, 99, 107, 110, 111, 115, 116, 117, 119, 120, 121, 122, 123, 133, 135, 137, 143, 155, 157, 158, 160, 163, 168, 171, 177, 185, 187, 201, 208, 213, 215, 220, 223, 229, 238, 246, 251, 256, 257], "also": [0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 37, 42, 43, 47, 48, 49, 51, 52, 53, 54, 58, 59, 60, 61, 65, 67, 68, 73, 75, 76, 78, 79, 80, 82, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 108, 109, 111, 112, 113, 115, 116, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 139, 141, 142, 143, 144, 145, 149, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 188, 189, 190, 191, 192, 195, 197, 199, 200, 201, 202, 203, 205, 206, 207, 208, 211, 213, 214, 215, 216, 219, 220, 221, 222, 223, 228, 230, 232, 234, 237, 244, 245, 247, 252, 255, 256, 257, 258, 260, 262, 263, 269, 271, 272], "python": [0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 14, 15, 17, 18, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 56, 57, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 125, 126, 127, 128, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 166, 168, 172, 173, 174, 175, 177, 178, 181, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 199, 203, 204, 205, 208, 211, 213, 215, 216, 220, 221, 222, 223, 226, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 256, 262, 263, 271, 272], "3": [0, 1, 2, 3, 5, 6, 7, 13, 14, 16, 17, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 43, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 75, 76, 78, 80, 87, 89, 90, 92, 93, 95, 96, 97, 98, 99, 101, 102, 103, 104, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 122, 123, 124, 127, 129, 130, 135, 136, 138, 139, 140, 142, 143, 144, 146, 147, 149, 150, 151, 152, 153, 154, 156, 157, 158, 159, 161, 162, 163, 164, 166, 167, 170, 171, 172, 173, 174, 175, 177, 178, 183, 184, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 201, 202, 203, 204, 205, 206, 207, 208, 211, 213, 215, 219, 220, 221, 222, 226, 227, 229, 230, 237, 239, 244, 247, 253, 254, 256, 262, 263, 266, 271, 272, 275], "6": [0, 3, 6, 7, 11, 13, 19, 23, 34, 36, 43, 44, 47, 49, 58, 59, 60, 61, 63, 64, 65, 67, 68, 71, 72, 85, 87, 90, 92, 93, 94, 95, 96, 101, 102, 103, 109, 111, 112, 116, 117, 129, 130, 134, 135, 137, 144, 147, 149, 155, 156, 158, 161, 163, 171, 173, 174, 176, 177, 184, 185, 193, 197, 198, 201, 208, 213, 215, 218, 219, 221, 224, 225, 227, 228, 230, 239, 241, 242, 243, 247, 248, 249, 250, 252, 256, 266, 275], "other": [0, 1, 5, 6, 7, 8, 10, 11, 14, 17, 19, 21, 22, 23, 25, 44, 47, 48, 49, 52, 53, 55, 56, 57, 58, 59, 60, 61, 68, 69, 73, 75, 79, 80, 82, 83, 87, 95, 97, 99, 101, 102, 103, 111, 112, 113, 114, 116, 123, 124, 126, 127, 128, 129, 131, 132, 133, 135, 136, 137, 139, 141, 142, 143, 144, 145, 146, 149, 150, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 165, 169, 172, 173, 174, 176, 177, 178, 179, 182, 183, 184, 185, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 202, 204, 209, 214, 215, 218, 223, 228, 230, 234, 237, 244, 245, 247, 252, 254, 256, 257, 258, 261, 262, 270, 271], "version": [0, 1, 3, 4, 5, 6, 7, 8, 10, 12, 14, 20, 22, 23, 25, 42, 80, 105, 107, 108, 115, 116, 119, 122, 123, 125, 126, 127, 129, 135, 136, 137, 138, 141, 145, 147, 153, 155, 156, 157, 158, 159, 166, 168, 169, 171, 175, 178, 183, 184, 185, 187, 188, 189, 197, 198, 200, 203, 204, 206, 208, 218, 219, 220, 221, 222, 223, 228, 230, 234, 237, 256, 257, 260, 263, 269, 272], "should": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 32, 42, 43, 44, 49, 50, 51, 52, 53, 55, 58, 59, 60, 69, 73, 78, 82, 85, 87, 97, 98, 99, 100, 102, 103, 111, 117, 119, 121, 122, 125, 126, 127, 130, 133, 135, 136, 138, 139, 143, 146, 147, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 169, 171, 172, 173, 174, 175, 176, 177, 178, 182, 184, 187, 188, 189, 190, 191, 197, 200, 205, 206, 208, 213, 214, 218, 219, 222, 223, 226, 230, 245, 247, 252, 256, 260, 262, 265, 269, 271, 274], "well": [0, 1, 3, 4, 5, 6, 8, 10, 11, 19, 20, 22, 23, 42, 44, 48, 49, 53, 60, 67, 82, 85, 87, 97, 99, 101, 105, 110, 111, 112, 113, 117, 122, 123, 125, 126, 127, 129, 130, 135, 136, 137, 141, 142, 143, 152, 153, 157, 158, 161, 162, 163, 164, 165, 168, 169, 171, 172, 177, 178, 182, 185, 187, 188, 189, 190, 191, 193, 195, 197, 200, 202, 214, 215, 220, 222, 223, 226, 234, 237, 244, 247, 255, 262, 271], "python3": [0, 5, 18, 22, 23, 168, 187, 219, 246], "m": [0, 4, 5, 6, 7, 8, 10, 14, 15, 19, 22, 23, 32, 43, 49, 52, 89, 93, 96, 101, 104, 110, 113, 116, 117, 118, 122, 123, 127, 128, 134, 137, 142, 144, 145, 146, 147, 149, 155, 156, 157, 161, 163, 165, 173, 174, 183, 185, 192, 197, 198, 199, 202, 208, 219, 226, 231, 237, 244, 246, 247, 263, 272], "venv": 0, "sourc": [0, 1, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 20, 22, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 55, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 124, 125, 126, 127, 128, 129, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 161, 163, 164, 165, 166, 168, 171, 172, 174, 177, 178, 181, 184, 186, 187, 189, 190, 191, 192, 193, 194, 195, 196, 199, 203, 204, 205, 206, 211, 218, 220, 221, 222, 223, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 257], "bin": [0, 4, 6, 22, 23, 92, 135, 186, 194, 195, 204, 208, 218, 220, 223, 226], "activ": [0, 5, 6, 9, 10, 12, 14, 15, 17, 19, 47, 52, 82, 93, 97, 99, 104, 122, 124, 131, 135, 137, 144, 145, 152, 156, 158, 164, 168, 177, 179, 182, 185, 186, 187, 195, 199, 200, 201, 205, 207, 208, 219, 220, 221, 226, 228, 229, 234, 238, 247, 256, 262, 271], "need": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 34, 43, 44, 45, 47, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 63, 64, 67, 75, 76, 79, 82, 83, 87, 97, 98, 99, 101, 102, 103, 105, 108, 111, 112, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 177, 178, 179, 182, 184, 185, 187, 188, 189, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 212, 213, 214, 215, 216, 219, 220, 221, 222, 223, 224, 225, 226, 228, 230, 244, 245, 247, 252, 256, 262, 271], "instal": [0, 1, 5, 6, 7, 8, 17, 20, 23, 24, 50, 51, 53, 55, 57, 58, 87, 90, 94, 107, 115, 116, 118, 119, 122, 123, 124, 127, 128, 131, 132, 135, 136, 139, 141, 143, 146, 155, 158, 159, 160, 161, 165, 168, 171, 172, 178, 184, 185, 187, 188, 194, 204, 206, 208, 213, 219, 222, 223, 224, 225, 226, 227, 229, 231, 233, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 256, 266, 275], "pip": [0, 17, 20, 24, 50, 75, 82, 90, 94, 105, 107, 115, 118, 119, 137, 139, 146, 157, 158, 160, 168, 171, 172, 178, 184, 194, 206, 219, 221, 223, 229, 231, 233, 236, 238, 240, 241, 242, 243, 245, 248, 249, 250], "torchvis": [0, 4, 10, 12, 19, 20, 33, 34, 37, 38, 39, 41, 43, 44, 50, 52, 57, 58, 59, 73, 75, 87, 90, 92, 94, 96, 97, 110, 117, 119, 121, 122, 123, 129, 134, 137, 139, 142, 143, 146, 148, 149, 152, 157, 158, 161, 162, 166, 168, 169, 171, 172, 176, 177, 182, 184, 187, 188, 194, 195, 197, 198, 199, 200, 204, 206, 213, 220, 221, 223, 224, 225, 227, 228, 229, 233, 236, 238, 245, 247, 250, 253, 256], "xcode": [0, 59, 188, 204, 222, 223, 225, 227], "want": [0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 19, 21, 22, 23, 24, 32, 43, 44, 47, 49, 51, 52, 58, 59, 60, 63, 64, 67, 73, 76, 78, 79, 85, 87, 97, 98, 99, 100, 101, 102, 103, 108, 111, 112, 116, 124, 125, 126, 127, 135, 136, 137, 138, 141, 143, 145, 147, 148, 150, 153, 156, 157, 158, 159, 162, 164, 165, 166, 171, 173, 174, 175, 178, 181, 182, 183, 189, 191, 195, 196, 197, 198, 200, 205, 208, 221, 222, 223, 226, 228, 230, 234, 237, 240, 244], "iphon": [0, 187, 223], "linux": [0, 5, 6, 18, 20, 22, 23, 105, 124, 133, 135, 158, 168, 176, 177, 178, 194, 206, 208, 220], "howev": [0, 1, 5, 6, 8, 10, 12, 14, 15, 17, 20, 22, 23, 25, 45, 47, 49, 51, 52, 60, 61, 73, 76, 85, 87, 97, 98, 113, 117, 124, 125, 129, 130, 134, 135, 136, 138, 139, 143, 147, 149, 152, 155, 156, 157, 160, 161, 162, 163, 164, 165, 169, 171, 172, 173, 174, 176, 179, 183, 186, 190, 191, 193, 198, 200, 201, 204, 205, 207, 214, 219, 222, 223, 234, 237, 244, 254, 260, 261, 269, 270], "itself": [0, 5, 7, 11, 23, 32, 43, 60, 61, 82, 85, 97, 101, 102, 108, 112, 113, 124, 125, 127, 130, 135, 141, 142, 146, 159, 162, 163, 165, 195, 213, 216, 230], "mac": [0, 20, 137, 206, 225], "For": [0, 1, 2, 4, 5, 6, 7, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 61, 63, 64, 65, 68, 73, 75, 78, 79, 80, 82, 83, 87, 97, 98, 99, 100, 102, 103, 105, 108, 111, 112, 113, 114, 115, 116, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 153, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 218, 219, 220, 221, 223, 226, 227, 228, 229, 230, 234, 237, 239, 244, 245, 247, 252, 254, 255, 256, 257, 258, 260, 262, 263, 269, 271, 272], "publish": [0, 208], "http": [0, 4, 6, 7, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 40, 45, 46, 49, 58, 59, 60, 74, 75, 77, 78, 84, 90, 91, 94, 100, 104, 105, 106, 108, 113, 115, 118, 119, 120, 122, 123, 127, 128, 129, 137, 139, 140, 141, 142, 143, 147, 152, 153, 154, 155, 157, 158, 160, 165, 167, 168, 169, 170, 171, 172, 174, 178, 179, 181, 182, 184, 187, 188, 190, 192, 194, 203, 204, 205, 206, 208, 213, 218, 221, 222, 229, 230, 231, 234, 235, 236, 237, 245, 260, 262, 269, 271], "github": [0, 2, 3, 4, 6, 7, 10, 11, 16, 19, 22, 23, 24, 33, 49, 53, 54, 55, 60, 61, 78, 104, 108, 115, 118, 121, 122, 123, 124, 129, 131, 132, 133, 134, 135, 137, 138, 139, 141, 142, 143, 146, 147, 154, 155, 161, 162, 163, 168, 171, 178, 179, 182, 184, 186, 188, 204, 205, 206, 207, 208, 213, 214, 215, 218, 220, 221, 222, 229, 260, 269], "com": [0, 7, 10, 18, 19, 20, 24, 25, 33, 37, 49, 60, 75, 78, 104, 108, 115, 118, 119, 123, 127, 128, 129, 141, 142, 143, 147, 154, 155, 160, 165, 171, 178, 179, 181, 182, 184, 194, 204, 205, 206, 208, 213, 218, 222, 229, 231], "exampl": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 76, 77, 80, 82, 83, 84, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 100, 101, 104, 105, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 260, 261, 263, 266, 269, 270, 272, 275], "tree": [0, 6, 10, 12, 15, 22, 49, 60, 78, 98, 103, 113, 129, 204, 222, 260, 269], "master": [0, 4, 16, 19, 49, 60, 78, 118, 119, 123, 129, 134, 135, 142, 143, 147, 162, 163, 178, 179, 182, 188, 194, 196, 199, 204, 206, 212, 220, 222], "fast_neural_styl": 0, "If": [0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 14, 16, 17, 18, 21, 22, 23, 24, 32, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 58, 60, 61, 63, 73, 75, 76, 78, 82, 87, 95, 97, 98, 99, 100, 101, 102, 103, 112, 113, 114, 117, 118, 122, 123, 124, 125, 127, 128, 129, 133, 135, 136, 138, 139, 141, 142, 143, 144, 145, 147, 149, 152, 153, 154, 155, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 197, 198, 201, 202, 205, 206, 207, 208, 209, 213, 214, 216, 218, 220, 221, 222, 223, 225, 226, 229, 230, 232, 234, 237, 241, 244, 245, 247, 252, 257, 260, 262, 269, 271], "would": [0, 3, 4, 5, 6, 7, 8, 14, 16, 18, 19, 20, 21, 22, 23, 25, 43, 49, 53, 55, 60, 61, 73, 76, 87, 97, 98, 101, 102, 103, 108, 112, 113, 116, 117, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 136, 137, 139, 142, 143, 144, 145, 147, 149, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 165, 171, 172, 173, 174, 176, 177, 178, 182, 185, 191, 192, 196, 198, 205, 207, 209, 214, 215, 216, 223, 225, 226, 230, 244, 247], "like": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 25, 43, 44, 45, 47, 48, 49, 51, 52, 53, 58, 59, 60, 61, 65, 67, 68, 75, 78, 79, 80, 82, 85, 87, 97, 98, 99, 101, 102, 103, 105, 108, 109, 110, 111, 112, 113, 114, 116, 117, 120, 121, 123, 124, 125, 126, 127, 128, 130, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 147, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 187, 190, 191, 192, 194, 196, 197, 198, 199, 200, 201, 205, 206, 207, 208, 209, 213, 214, 215, 216, 218, 219, 220, 221, 222, 225, 226, 229, 230, 232, 234, 247, 256, 257, 261, 262, 270, 271], "differ": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 32, 47, 48, 49, 51, 52, 58, 59, 60, 61, 73, 80, 81, 82, 83, 85, 87, 92, 97, 98, 99, 103, 105, 115, 116, 119, 121, 122, 123, 124, 126, 127, 128, 129, 132, 133, 134, 135, 137, 138, 139, 141, 143, 144, 145, 147, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 179, 182, 184, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 204, 206, 208, 214, 215, 216, 218, 219, 223, 228, 231, 234, 235, 245, 247, 251, 252, 258, 260, 269], "feel": [0, 6, 10, 19, 43, 49, 78, 97, 103, 105, 107, 108, 112, 122, 142, 143, 144, 146, 147, 152, 168, 173, 174, 187], "free": [0, 6, 10, 19, 22, 23, 25, 43, 49, 60, 73, 78, 85, 97, 105, 107, 108, 112, 122, 126, 129, 135, 141, 142, 143, 146, 147, 152, 159, 161, 165, 168, 173, 174, 175, 187, 216, 229, 234, 246], "skip": [0, 1, 4, 5, 10, 14, 17, 19, 23, 42, 43, 98, 112, 116, 130, 141, 146, 161, 163, 168, 174, 182, 196, 201, 212, 230, 254, 255], "These": [0, 1, 5, 7, 8, 11, 12, 14, 17, 19, 20, 21, 25, 43, 49, 52, 55, 82, 87, 98, 100, 102, 103, 108, 109, 113, 117, 118, 135, 146, 157, 159, 160, 162, 164, 165, 171, 176, 177, 182, 184, 197, 198, 200, 201, 219, 254, 260, 262, 269, 271], "meant": [0, 6, 11, 85, 122, 191, 247, 256], "appli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 19, 23, 25, 51, 52, 58, 59, 60, 61, 64, 68, 73, 79, 82, 85, 97, 99, 108, 111, 113, 116, 119, 121, 123, 129, 130, 133, 134, 135, 138, 139, 141, 142, 145, 146, 147, 150, 152, 153, 154, 156, 159, 161, 162, 163, 165, 166, 171, 176, 177, 178, 181, 184, 185, 189, 190, 193, 198, 201, 202, 205, 207, 208, 210, 213, 214, 215, 216, 218, 220, 223, 228, 229, 244, 247, 251, 252, 253, 255], "still": [0, 1, 5, 6, 8, 10, 11, 12, 14, 15, 17, 18, 19, 20, 23, 42, 47, 52, 61, 73, 79, 80, 87, 97, 101, 105, 109, 112, 113, 119, 122, 126, 127, 128, 133, 135, 136, 141, 142, 143, 147, 149, 152, 163, 172, 174, 176, 179, 181, 182, 184, 186, 187, 188, 189, 191, 195, 197, 200, 201, 204, 208, 209, 214, 215, 219, 222, 223, 228, 247, 258], "imag": [0, 1, 19, 23, 34, 43, 47, 49, 51, 52, 57, 60, 73, 75, 82, 87, 90, 92, 94, 96, 97, 121, 124, 126, 138, 146, 147, 149, 152, 154, 156, 158, 160, 166, 168, 169, 178, 182, 184, 193, 197, 198, 199, 204, 206, 207, 208, 215, 222, 223, 224, 225, 229, 245, 251, 256], "realli": [0, 5, 8, 23, 25, 42, 44, 98, 99, 103, 108, 113, 125, 157, 169, 189, 191, 205], "optim": [0, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 32, 35, 37, 38, 43, 47, 49, 53, 55, 58, 59, 60, 61, 65, 66, 67, 73, 75, 79, 82, 85, 87, 89, 92, 94, 96, 97, 98, 102, 103, 112, 115, 117, 118, 121, 122, 123, 124, 127, 129, 131, 133, 134, 135, 136, 138, 142, 143, 144, 146, 147, 148, 149, 153, 154, 156, 157, 158, 159, 160, 161, 162, 165, 166, 168, 169, 171, 172, 174, 175, 176, 178, 182, 184, 185, 188, 189, 193, 194, 195, 196, 198, 199, 201, 203, 204, 206, 207, 214, 218, 220, 221, 222, 227, 228, 230, 237, 240, 241, 242, 243, 244, 245, 248, 249, 250, 251, 253, 254, 256], "fast": [0, 1, 5, 6, 17, 18, 21, 42, 49, 104, 123, 124, 133, 150, 159, 164, 171, 184, 196, 201, 223, 234], "enough": [0, 5, 6, 17, 21, 23, 49, 82, 101, 125, 129, 158, 201, 219, 229, 230], "video": [0, 20, 43, 44, 53, 55, 56, 75, 79, 114, 120, 121, 131, 132, 158, 168, 175, 247], "reduc": [0, 3, 6, 9, 11, 17, 19, 37, 43, 56, 58, 59, 61, 97, 109, 119, 122, 123, 124, 126, 129, 131, 133, 135, 137, 145, 146, 147, 152, 156, 158, 161, 163, 168, 171, 172, 173, 174, 176, 177, 185, 186, 194, 199, 201, 203, 204, 218, 222, 223, 227, 228, 230, 231, 234, 237, 251, 258], "resolut": [0, 20, 171], "low": [0, 1, 4, 5, 6, 7, 14, 24, 25, 49, 52, 68, 82, 99, 113, 121, 127, 146, 159, 168, 177, 220, 221], "thei": [0, 1, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 20, 21, 23, 25, 44, 48, 49, 52, 55, 58, 59, 60, 73, 80, 82, 85, 97, 99, 100, 101, 102, 103, 105, 107, 108, 109, 112, 113, 115, 122, 125, 126, 127, 128, 130, 133, 134, 135, 136, 144, 145, 147, 152, 153, 159, 160, 161, 163, 165, 171, 173, 174, 176, 177, 178, 179, 182, 185, 189, 190, 191, 192, 193, 195, 197, 198, 200, 202, 203, 207, 208, 214, 215, 220, 224, 225, 234, 237, 245, 247, 252, 260, 262, 269, 271], "let": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 43, 44, 45, 47, 49, 51, 52, 58, 59, 60, 68, 73, 75, 76, 78, 79, 80, 85, 87, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 111, 112, 116, 117, 118, 119, 124, 126, 130, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 147, 149, 150, 152, 153, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 184, 187, 188, 189, 190, 193, 200, 201, 208, 210, 214, 215, 219, 222, 223, 229, 237, 244, 245, 247, 256, 257, 260, 262, 269, 271], "s": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 57, 58, 59, 61, 68, 73, 76, 78, 79, 80, 85, 87, 92, 93, 95, 96, 97, 98, 99, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 115, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 207, 208, 209, 210, 212, 213, 214, 215, 216, 219, 222, 223, 224, 225, 228, 229, 230, 234, 237, 244, 245, 247, 249, 251, 252, 254, 256, 257, 258, 260, 262, 263, 269, 271, 272], "git": [0, 178, 184, 213, 218, 266, 275], "clone": [0, 1, 11, 12, 14, 22, 23, 54, 95, 110, 127, 130, 131, 135, 144, 145, 147, 156, 208, 209, 213, 218], "cd": [0, 4, 6, 22, 23, 168, 178, 181, 188, 194, 206, 208, 218, 225, 226], "yourself": [0, 4, 5, 6, 8, 23, 42, 60, 101, 146, 183], "repositori": [0, 6, 10, 54, 58, 59, 83, 114, 119, 122, 124, 135, 155, 163, 164, 165, 178, 204, 206, 208, 213, 222, 260, 267, 269, 276], "just": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 16, 17, 19, 20, 21, 22, 23, 25, 42, 44, 45, 47, 49, 50, 51, 52, 53, 56, 60, 65, 67, 73, 76, 78, 85, 87, 95, 97, 98, 99, 101, 102, 103, 111, 112, 113, 116, 117, 122, 123, 124, 126, 127, 128, 133, 136, 137, 144, 145, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 169, 171, 176, 178, 182, 184, 186, 188, 191, 194, 197, 198, 200, 201, 204, 208, 213, 215, 216, 220, 228, 232, 247, 262, 264, 271, 273], "inform": [0, 1, 2, 4, 5, 7, 8, 10, 14, 20, 22, 23, 25, 45, 49, 53, 64, 73, 78, 82, 87, 97, 101, 102, 103, 108, 111, 112, 113, 118, 119, 123, 125, 126, 127, 128, 133, 135, 136, 137, 141, 142, 143, 146, 157, 158, 159, 160, 162, 164, 165, 168, 169, 171, 173, 175, 176, 177, 178, 179, 182, 183, 184, 187, 192, 193, 194, 197, 202, 205, 206, 207, 213, 214, 215, 223, 226, 228, 230, 231, 247, 252, 255, 256, 262, 271], "how": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 42, 43, 44, 45, 47, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 73, 75, 78, 80, 82, 85, 86, 87, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 112, 113, 115, 116, 117, 118, 119, 120, 121, 125, 126, 127, 128, 130, 131, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 199, 201, 203, 204, 207, 208, 209, 211, 213, 218, 219, 221, 223, 224, 225, 228, 229, 230, 231, 234, 235, 237, 244, 247, 251, 252, 253, 254, 255, 257, 262, 264, 266, 271, 273, 275], "do": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 39, 42, 47, 49, 50, 51, 52, 54, 58, 59, 60, 61, 63, 64, 68, 69, 76, 78, 80, 85, 87, 97, 98, 99, 101, 102, 103, 105, 108, 111, 112, 114, 116, 118, 121, 123, 124, 125, 126, 127, 129, 132, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 148, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 163, 165, 169, 171, 173, 174, 176, 177, 178, 181, 182, 184, 185, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 208, 213, 214, 216, 218, 221, 222, 223, 224, 225, 226, 228, 230, 232, 237, 241, 244, 245, 247, 251, 256, 261, 263, 270, 272], "now": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 42, 43, 44, 45, 47, 49, 50, 51, 52, 55, 58, 59, 60, 63, 73, 76, 78, 80, 85, 87, 96, 97, 98, 99, 101, 103, 105, 107, 108, 111, 116, 117, 118, 119, 122, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 139, 142, 143, 144, 145, 146, 150, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 165, 166, 168, 169, 171, 172, 174, 175, 176, 178, 179, 181, 182, 184, 185, 187, 188, 189, 190, 193, 194, 197, 199, 200, 201, 202, 205, 208, 211, 213, 214, 216, 223, 224, 230, 232, 234, 244, 245, 249, 256, 262, 271], "ll": [0, 1, 4, 5, 6, 8, 9, 10, 17, 19, 20, 22, 23, 48, 49, 50, 60, 87, 98, 105, 127, 128, 135, 136, 138, 139, 141, 145, 150, 152, 154, 158, 159, 160, 162, 165, 169, 176, 181, 182, 183, 184, 185, 187, 188, 189, 191, 195, 197, 198, 200, 201, 210, 211, 213, 223, 231, 255], "pre": [0, 19, 98, 122, 124, 135, 137, 157, 158, 171, 178, 184, 185, 187, 188, 200, 214, 216, 222, 223, 257], "script": [0, 1, 5, 6, 7, 9, 10, 12, 13, 14, 17, 19, 20, 21, 22, 24, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 55, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 122, 123, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 166, 168, 171, 172, 173, 174, 176, 177, 178, 181, 182, 184, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 203, 204, 205, 206, 208, 209, 211, 213, 216, 218, 219, 220, 222, 223, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256], "provid": [0, 1, 4, 5, 6, 8, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 44, 49, 51, 52, 56, 58, 59, 60, 61, 73, 82, 83, 85, 87, 97, 98, 99, 105, 107, 108, 112, 113, 115, 116, 118, 120, 121, 122, 124, 125, 126, 131, 132, 133, 134, 135, 136, 137, 142, 143, 144, 145, 146, 147, 156, 158, 159, 161, 162, 164, 168, 171, 172, 173, 174, 178, 185, 187, 191, 192, 194, 195, 196, 197, 198, 200, 201, 202, 205, 207, 208, 209, 213, 214, 216, 218, 219, 220, 221, 223, 226, 227, 229, 230, 234, 237, 245, 247, 262, 271], "download_saved_model": 0, "py": [0, 1, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 19, 20, 22, 23, 24, 25, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80, 84, 85, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 162, 164, 165, 166, 168, 172, 173, 174, 178, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 195, 199, 203, 204, 205, 206, 211, 213, 215, 221, 223, 226, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 257, 260, 262, 267, 269, 271, 276], "put": [0, 2, 5, 6, 8, 12, 14, 16, 42, 45, 49, 51, 59, 75, 85, 113, 115, 121, 122, 123, 134, 135, 136, 149, 153, 158, 159, 160, 162, 163, 165, 171, 187, 199, 200, 208, 262, 271], "saved_model": [0, 96], "folder": [0, 4, 6, 19, 23, 50, 52, 82, 83, 122, 137, 169, 178, 181, 182, 185, 188, 197, 198, 204, 206, 208, 213, 218, 224, 225], "There": [0, 4, 6, 8, 10, 14, 15, 17, 22, 23, 25, 47, 73, 76, 79, 85, 97, 98, 99, 102, 103, 113, 117, 120, 128, 132, 136, 138, 143, 145, 147, 149, 150, 152, 154, 157, 158, 159, 162, 163, 165, 173, 174, 178, 179, 181, 191, 194, 197, 200, 201, 213, 228, 234, 247, 252, 255, 263, 272], "file": [0, 2, 5, 6, 7, 8, 9, 10, 15, 19, 20, 21, 22, 23, 50, 51, 52, 55, 58, 59, 60, 75, 82, 83, 87, 101, 109, 110, 114, 116, 118, 119, 122, 125, 126, 127, 128, 133, 135, 137, 139, 144, 152, 155, 158, 168, 171, 173, 174, 178, 181, 182, 185, 186, 188, 192, 193, 197, 198, 204, 206, 207, 209, 214, 215, 218, 220, 221, 222, 223, 224, 225, 230, 235, 237, 245, 256, 257, 260, 261, 263, 267, 269, 270, 272, 276], "candi": 0, "pth": [0, 5, 9, 19, 20, 23, 24, 38, 39, 44, 60, 73, 112, 171, 181, 182, 184, 197, 198, 220, 221, 237, 242, 252], "mosaic": 0, "rain_princess": 0, "udni": 0, "directori": [0, 1, 4, 5, 6, 12, 22, 23, 49, 51, 52, 75, 87, 97, 112, 114, 117, 126, 127, 128, 137, 144, 157, 165, 168, 171, 184, 185, 188, 194, 204, 208, 214, 221, 223, 226, 245, 257], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 34, 40, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 63, 68, 69, 73, 76, 78, 79, 80, 82, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 149, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 211, 213, 214, 215, 216, 219, 220, 222, 223, 224, 225, 226, 228, 230, 232, 234, 240, 241, 244, 245, 247, 249, 252, 254, 256, 257, 258, 262, 271], "The": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 42, 43, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 67, 68, 69, 73, 75, 76, 78, 79, 80, 82, 83, 85, 91, 93, 95, 97, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 228, 230, 234, 237, 244, 245, 247, 252, 253, 255, 256, 257, 258, 260, 263, 269, 272], "definit": [0, 5, 6, 8, 10, 20, 22, 25, 47, 58, 59, 60, 68, 73, 78, 85, 99, 111, 121, 143, 153, 160, 164, 181, 190, 208, 209, 218, 221, 228, 247, 252, 262, 271], "previous": [0, 4, 5, 8, 20, 32, 60, 85, 101, 115, 118, 141, 142, 156, 159, 160, 161, 168, 189, 197, 205, 223, 244], "few": [0, 5, 6, 8, 9, 10, 15, 19, 21, 22, 23, 47, 51, 56, 60, 79, 85, 97, 99, 100, 101, 102, 103, 112, 113, 115, 116, 120, 122, 125, 127, 128, 129, 133, 135, 136, 149, 153, 158, 159, 162, 165, 172, 177, 179, 184, 190, 191, 192, 197, 198, 208, 209, 211, 214, 216, 220, 221, 230, 247], "line": [0, 4, 5, 6, 8, 9, 12, 13, 17, 21, 22, 23, 49, 50, 51, 56, 58, 59, 60, 61, 82, 97, 99, 109, 115, 116, 126, 127, 128, 135, 143, 144, 149, 158, 162, 163, 165, 168, 169, 172, 173, 177, 181, 186, 188, 189, 191, 208, 214, 215, 220, 221, 222, 224, 225, 237, 245, 247, 252, 255, 256, 263, 272], "In": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 42, 43, 45, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 64, 65, 67, 68, 73, 75, 76, 78, 79, 80, 81, 82, 83, 85, 86, 87, 95, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 226, 229, 230, 234, 237, 244, 245, 247, 254, 255, 256, 257, 258, 262, 263, 265, 271, 272, 274], "instead": [0, 4, 5, 6, 8, 10, 14, 17, 19, 20, 22, 23, 25, 32, 44, 45, 49, 51, 52, 53, 58, 59, 60, 61, 64, 98, 99, 103, 107, 108, 109, 113, 116, 117, 122, 123, 125, 126, 127, 128, 129, 130, 131, 134, 135, 142, 143, 145, 146, 147, 149, 150, 152, 155, 156, 157, 158, 161, 162, 163, 165, 166, 169, 171, 172, 176, 177, 178, 179, 184, 189, 191, 192, 193, 198, 199, 200, 201, 205, 209, 214, 216, 219, 223, 239, 252, 258], "actual": [0, 1, 3, 5, 6, 8, 11, 13, 14, 15, 19, 21, 22, 23, 25, 38, 49, 51, 52, 58, 59, 60, 73, 85, 97, 98, 101, 103, 108, 112, 116, 118, 121, 125, 126, 127, 129, 133, 135, 139, 142, 143, 150, 152, 159, 165, 168, 169, 172, 173, 174, 175, 177, 182, 184, 189, 191, 197, 198, 200, 204, 205, 223, 224, 225, 234, 252], "net": [0, 3, 6, 14, 19, 24, 44, 45, 47, 49, 52, 73, 79, 81, 85, 87, 92, 94, 97, 110, 123, 125, 129, 135, 146, 150, 158, 162, 166, 168, 169, 203, 209, 221, 230, 233, 239, 240, 241, 242, 243, 249, 250, 262, 263, 271, 272], "call": [0, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 32, 42, 43, 44, 45, 47, 49, 51, 52, 53, 55, 58, 59, 60, 61, 63, 67, 68, 69, 73, 75, 76, 78, 80, 85, 95, 97, 98, 99, 101, 102, 103, 109, 111, 112, 113, 116, 118, 120, 121, 123, 124, 125, 126, 128, 133, 134, 135, 136, 137, 141, 142, 143, 144, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 176, 177, 182, 183, 185, 186, 187, 188, 194, 195, 198, 201, 204, 205, 206, 207, 208, 211, 213, 214, 216, 218, 219, 223, 224, 225, 228, 230, 232, 234, 237, 238, 241, 245, 247, 252, 262, 271], "torch": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 60, 63, 64, 65, 67, 68, 69, 72, 73, 75, 76, 78, 79, 85, 87, 89, 90, 92, 94, 95, 96, 97, 98, 99, 102, 103, 105, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 127, 128, 129, 130, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 165, 166, 168, 169, 171, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 196, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 224, 225, 226, 228, 232, 233, 234, 236, 238, 239, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 256, 257, 258], "_export": [0, 174, 197, 198, 199], "which": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 42, 43, 44, 47, 48, 49, 50, 51, 52, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 69, 73, 75, 76, 78, 79, 82, 83, 85, 87, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 202, 204, 207, 208, 211, 212, 215, 216, 221, 222, 223, 226, 227, 228, 229, 230, 231, 232, 234, 237, 244, 247, 252, 254, 255, 256, 258, 260, 262, 263, 269, 271, 272], "api": [0, 2, 5, 8, 10, 11, 14, 15, 18, 20, 21, 22, 23, 24, 25, 33, 34, 41, 48, 56, 60, 61, 82, 90, 107, 108, 109, 113, 121, 123, 124, 125, 126, 127, 133, 134, 135, 137, 143, 144, 145, 154, 157, 161, 162, 163, 168, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 187, 188, 194, 195, 196, 197, 198, 199, 203, 204, 205, 208, 212, 213, 214, 215, 216, 220, 221, 222, 223, 228, 229, 231, 232, 234, 236, 246, 251, 252, 253, 254, 256, 261, 270], "directli": [0, 4, 5, 6, 8, 11, 12, 14, 20, 22, 23, 25, 42, 48, 52, 61, 85, 87, 105, 107, 108, 113, 118, 124, 130, 131, 137, 145, 158, 159, 163, 165, 182, 184, 185, 191, 192, 193, 202, 206, 209, 212, 216, 221, 222, 228], "don": [0, 5, 6, 8, 10, 21, 42, 43, 44, 52, 53, 63, 73, 76, 87, 98, 99, 102, 108, 111, 112, 113, 117, 125, 126, 127, 129, 130, 137, 143, 145, 146, 148, 152, 157, 159, 160, 163, 164, 182, 183, 185, 187, 188, 189, 190, 191, 200, 211, 216, 222, 226, 230, 260, 262, 263, 269, 271, 272], "t": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 22, 23, 24, 25, 32, 34, 37, 38, 40, 42, 43, 44, 47, 48, 49, 50, 52, 53, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 76, 78, 87, 89, 94, 96, 97, 98, 99, 101, 102, 103, 105, 108, 110, 111, 112, 113, 115, 116, 117, 122, 123, 125, 126, 127, 129, 130, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 193, 195, 197, 198, 200, 201, 205, 206, 208, 209, 210, 211, 216, 219, 222, 226, 228, 230, 234, 236, 237, 239, 247, 249, 252, 254, 255, 260, 262, 263, 269, 271, 272], "even": [0, 1, 4, 5, 6, 8, 10, 14, 16, 21, 23, 25, 43, 44, 51, 73, 76, 78, 95, 103, 108, 112, 113, 115, 122, 123, 124, 130, 133, 139, 142, 143, 145, 153, 159, 161, 164, 171, 173, 174, 176, 184, 189, 191, 192, 195, 200, 203, 213, 219, 228, 247], "becaus": [0, 1, 2, 4, 5, 6, 8, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 32, 34, 42, 43, 44, 47, 48, 49, 51, 52, 55, 56, 58, 59, 60, 61, 63, 69, 73, 78, 79, 85, 87, 97, 98, 99, 101, 105, 108, 111, 112, 116, 117, 119, 125, 127, 129, 130, 133, 134, 136, 137, 141, 143, 145, 146, 147, 149, 150, 154, 156, 157, 161, 163, 165, 166, 168, 172, 173, 174, 176, 178, 181, 183, 184, 185, 188, 189, 191, 194, 195, 198, 200, 201, 203, 205, 208, 210, 211, 213, 219, 228, 230, 234, 244, 247, 252, 254, 255], "alreadi": [0, 1, 2, 4, 5, 6, 10, 11, 15, 22, 23, 79, 97, 98, 108, 113, 124, 126, 129, 133, 139, 147, 149, 152, 157, 158, 159, 164, 169, 173, 174, 176, 177, 191, 194, 200, 212, 216, 219, 220, 223, 228, 247, 258], "exist": [0, 2, 4, 6, 8, 9, 10, 11, 17, 22, 23, 25, 47, 49, 52, 53, 67, 73, 76, 80, 83, 85, 95, 101, 104, 121, 135, 137, 142, 156, 158, 163, 164, 165, 166, 168, 171, 172, 173, 174, 181, 185, 188, 189, 190, 192, 197, 200, 201, 203, 208, 209, 212, 216, 225, 230, 244, 247], "neural_styl": 0, "take": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 19, 20, 21, 23, 25, 34, 43, 44, 47, 48, 49, 50, 51, 52, 58, 59, 60, 61, 68, 73, 75, 78, 82, 85, 95, 97, 99, 101, 102, 103, 108, 110, 112, 113, 116, 117, 118, 124, 125, 126, 127, 128, 130, 133, 134, 135, 137, 139, 143, 145, 146, 149, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 165, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 182, 184, 189, 192, 193, 195, 197, 198, 199, 200, 201, 205, 208, 209, 213, 216, 219, 220, 221, 222, 223, 228, 231, 232, 234, 244, 247, 252, 256, 257, 260, 262, 269, 271], "look": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 23, 25, 34, 43, 44, 47, 48, 49, 50, 51, 52, 73, 78, 79, 85, 87, 98, 99, 101, 102, 103, 105, 108, 112, 113, 116, 117, 118, 123, 124, 125, 126, 130, 135, 136, 138, 147, 149, 150, 152, 156, 158, 159, 162, 163, 164, 165, 168, 169, 171, 173, 174, 175, 177, 178, 181, 182, 186, 187, 189, 192, 193, 197, 198, 199, 213, 219, 220, 223, 231, 245, 257], "essenti": [0, 6, 10, 14, 32, 49, 98, 99, 101, 135, 160, 173, 174, 202, 209, 221, 234, 252], "trace": [0, 5, 8, 10, 20, 21, 43, 49, 60, 78, 107, 109, 110, 112, 121, 137, 142, 144, 150, 164, 168, 173, 174, 187, 194, 196, 203, 209, 220, 223, 224, 225, 238, 247, 251, 255], "so": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 42, 44, 47, 49, 51, 52, 53, 58, 59, 60, 65, 68, 73, 75, 76, 78, 80, 83, 85, 87, 95, 97, 98, 99, 100, 101, 102, 103, 105, 108, 109, 111, 113, 115, 116, 117, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 134, 135, 136, 137, 139, 142, 143, 144, 145, 146, 148, 149, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 179, 182, 183, 184, 185, 187, 188, 189, 191, 192, 193, 194, 195, 197, 198, 200, 201, 202, 204, 206, 208, 209, 216, 219, 220, 222, 223, 224, 225, 226, 227, 228, 230, 231, 234, 237, 246, 247, 252, 257, 258, 261, 262, 263, 270, 271, 272], "intern": [0, 5, 8, 10, 11, 15, 22, 49, 56, 60, 68, 76, 97, 111, 113, 121, 123, 126, 135, 168, 176, 188, 189, 196, 203, 207, 208, 262, 271], "dummi": [0, 1, 8, 20, 47, 78, 85, 110, 133, 138, 145, 154, 155, 176, 185, 199, 214, 221, 252, 256], "data": [0, 2, 3, 5, 11, 12, 14, 16, 17, 18, 20, 21, 22, 23, 24, 33, 34, 37, 38, 40, 41, 43, 46, 47, 48, 51, 58, 59, 67, 68, 71, 72, 73, 75, 76, 78, 79, 82, 85, 89, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 111, 112, 113, 116, 118, 119, 120, 121, 125, 126, 129, 131, 134, 135, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 154, 158, 160, 161, 162, 163, 169, 172, 173, 174, 176, 177, 178, 182, 183, 184, 185, 188, 190, 192, 193, 196, 197, 198, 199, 200, 201, 205, 206, 207, 208, 213, 214, 215, 216, 218, 219, 220, 221, 223, 226, 229, 230, 234, 235, 236, 237, 239, 244, 245, 249, 250, 251, 252, 253, 258, 262, 266, 271, 275], "gener": [0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 22, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 53, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 114, 116, 117, 118, 119, 121, 124, 125, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160, 161, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 181, 184, 186, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 203, 204, 205, 207, 208, 209, 211, 213, 214, 219, 220, 221, 222, 223, 225, 226, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 254, 255, 260, 262, 263, 266, 269, 271, 272, 275], "graph": [0, 1, 5, 10, 14, 20, 22, 23, 25, 32, 47, 49, 63, 65, 68, 76, 78, 82, 85, 86, 98, 100, 107, 110, 111, 125, 127, 130, 142, 143, 144, 145, 147, 162, 163, 168, 169, 171, 176, 179, 186, 196, 197, 198, 200, 206, 207, 216, 218, 220, 221, 245, 252, 255, 256], "input": [0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 20, 21, 22, 23, 25, 32, 42, 43, 44, 45, 47, 48, 49, 56, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 76, 78, 79, 83, 85, 87, 89, 90, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 120, 122, 123, 124, 126, 128, 129, 131, 133, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 150, 152, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 181, 182, 183, 184, 185, 187, 188, 192, 193, 194, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 219, 220, 221, 223, 229, 230, 231, 233, 234, 238, 239, 250, 255, 256, 263, 272], "simpli": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 19, 21, 23, 43, 44, 49, 53, 58, 59, 60, 78, 85, 101, 103, 112, 113, 124, 126, 128, 130, 134, 135, 144, 145, 149, 152, 155, 156, 159, 160, 161, 162, 165, 166, 169, 172, 176, 177, 179, 187, 188, 190, 202, 205, 214, 218, 220, 223, 224, 225, 228, 234, 252], "blank": [0, 262, 271], "pixel": [0, 1, 20, 44, 73, 97, 136, 147, 166, 171, 204, 229], "size": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 21, 23, 25, 32, 33, 34, 37, 38, 43, 44, 45, 47, 49, 51, 52, 55, 58, 59, 60, 75, 78, 80, 82, 87, 92, 93, 97, 98, 101, 102, 103, 104, 110, 112, 113, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 135, 136, 138, 139, 141, 144, 145, 146, 147, 148, 149, 150, 152, 154, 155, 157, 158, 159, 160, 161, 162, 164, 165, 166, 168, 171, 172, 173, 174, 175, 177, 178, 181, 182, 183, 184, 188, 189, 192, 193, 194, 196, 198, 201, 203, 204, 208, 209, 213, 214, 216, 218, 220, 222, 223, 227, 228, 229, 230, 231, 237, 239, 245, 247, 249, 251, 252, 258, 260, 269], "import": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 52, 53, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 81, 82, 85, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 257, 258, 260, 262, 269, 271], "To": [0, 1, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 19, 20, 23, 42, 47, 49, 50, 51, 57, 58, 59, 60, 61, 64, 65, 79, 82, 83, 85, 87, 97, 98, 99, 101, 102, 103, 107, 108, 111, 112, 114, 115, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 135, 136, 137, 139, 141, 144, 149, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 168, 169, 171, 174, 175, 176, 177, 182, 184, 185, 186, 187, 188, 189, 191, 192, 196, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 215, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 237, 238, 240, 244, 245, 247, 252, 253, 255, 257, 260, 269], "get": [0, 1, 2, 5, 6, 7, 8, 11, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 38, 43, 44, 45, 49, 50, 51, 52, 55, 56, 60, 61, 63, 73, 75, 78, 83, 87, 92, 97, 98, 99, 100, 101, 102, 104, 105, 109, 111, 112, 116, 117, 119, 120, 121, 122, 124, 126, 127, 128, 129, 134, 135, 136, 137, 138, 139, 142, 143, 145, 146, 148, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 168, 169, 171, 173, 174, 175, 176, 177, 178, 181, 182, 184, 185, 189, 191, 194, 195, 197, 198, 199, 200, 201, 204, 206, 207, 208, 209, 212, 216, 218, 219, 222, 223, 226, 228, 229, 231, 234, 238, 247, 251, 256, 257, 258], "good": [0, 1, 2, 4, 5, 6, 20, 21, 44, 50, 52, 59, 97, 99, 103, 105, 113, 116, 123, 126, 135, 136, 144, 150, 158, 159, 160, 164, 169, 171, 176, 177, 178, 195, 200, 226, 228, 247, 262, 271], "perform": [0, 1, 3, 4, 6, 8, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 23, 25, 42, 43, 44, 45, 49, 52, 56, 60, 61, 64, 65, 67, 73, 82, 85, 87, 97, 98, 99, 103, 108, 111, 112, 113, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 135, 136, 137, 139, 141, 142, 145, 146, 149, 150, 155, 157, 158, 159, 160, 161, 163, 166, 169, 171, 172, 178, 182, 184, 185, 186, 189, 190, 193, 194, 195, 198, 199, 201, 202, 207, 210, 212, 213, 215, 216, 218, 220, 226, 227, 228, 230, 232, 234, 235, 237, 251, 252, 253, 254, 255, 256], "250x540": 0, "larger": [0, 3, 8, 12, 73, 82, 97, 112, 119, 122, 123, 124, 126, 131, 142, 149, 157, 160, 163, 165, 168, 171, 184, 193, 203, 213, 214, 219, 260, 269], "care": [0, 1, 5, 14, 21, 61, 73, 87, 97, 113, 118, 130, 135, 149, 159, 163, 189, 197, 232, 234], "less": [0, 3, 5, 6, 8, 19, 56, 60, 82, 97, 98, 113, 116, 117, 119, 122, 126, 136, 141, 152, 159, 160, 161, 168, 169, 172, 173, 174, 176, 184, 197, 215, 234, 237], "fp": [0, 49, 87, 121, 150], "qualiti": [0, 24, 113, 146, 165], "imagemagick": 0, "creat": [0, 1, 2, 4, 5, 6, 7, 9, 10, 12, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 38, 39, 42, 43, 44, 47, 48, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 80, 82, 85, 95, 97, 98, 100, 102, 103, 105, 108, 110, 111, 114, 116, 117, 118, 119, 121, 122, 124, 130, 133, 134, 135, 136, 137, 139, 141, 142, 146, 147, 148, 149, 152, 153, 154, 155, 157, 158, 159, 160, 162, 163, 165, 168, 169, 171, 172, 175, 178, 181, 182, 184, 185, 187, 188, 189, 192, 193, 194, 195, 197, 199, 200, 202, 204, 206, 208, 209, 210, 211, 213, 214, 215, 219, 222, 223, 225, 226, 230, 234, 239, 244, 245, 252, 256, 258, 262, 271], "xc": 0, "white": [0, 12, 17, 73, 113, 169, 171, 201, 262, 271], "png24": 0, "jpg": [0, 12, 20, 34, 51, 52, 58, 59, 90, 117, 139, 146, 204, 213, 229, 257], "eval": [0, 1, 7, 9, 12, 17, 19, 20, 24, 37, 38, 39, 42, 49, 58, 59, 60, 73, 90, 96, 97, 104, 112, 113, 115, 117, 118, 119, 122, 123, 125, 129, 137, 139, 142, 143, 157, 159, 162, 164, 165, 166, 171, 172, 173, 176, 177, 178, 181, 183, 184, 185, 187, 194, 195, 198, 199, 201, 204, 206, 208, 213, 220, 221, 222, 223, 228, 229, 241, 242, 243, 247, 253, 256], "content": [0, 2, 5, 9, 14, 23, 25, 50, 56, 61, 104, 112, 125, 133, 135, 158, 159, 163, 165, 172, 173, 174, 176, 177, 181, 188, 208, 213, 222, 229, 266, 275], "output": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22, 23, 25, 32, 42, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 79, 82, 83, 85, 87, 90, 92, 94, 96, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 184, 185, 187, 193, 194, 195, 197, 198, 199, 200, 201, 203, 204, 206, 207, 208, 209, 210, 211, 212, 213, 218, 219, 220, 222, 223, 228, 229, 230, 231, 233, 234, 238, 239, 245, 247, 250, 252, 253, 254, 255, 256, 257, 258, 260, 262, 263, 269, 271, 272], "out": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 20, 21, 22, 23, 24, 25, 32, 40, 43, 44, 45, 47, 48, 49, 51, 52, 58, 59, 60, 61, 73, 75, 76, 78, 83, 85, 87, 89, 95, 97, 98, 99, 100, 102, 103, 104, 107, 109, 113, 117, 118, 119, 121, 124, 125, 126, 127, 130, 131, 134, 135, 136, 138, 139, 141, 143, 144, 145, 147, 149, 152, 153, 155, 156, 157, 158, 159, 161, 162, 163, 165, 168, 169, 171, 173, 174, 176, 177, 181, 182, 183, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 201, 205, 206, 207, 208, 213, 220, 221, 222, 229, 234, 235, 239, 244, 247, 252, 254, 262, 271], "cuda": [0, 1, 4, 6, 7, 8, 10, 11, 12, 15, 16, 17, 18, 19, 20, 23, 24, 33, 38, 40, 42, 43, 44, 45, 48, 49, 52, 53, 54, 55, 63, 64, 72, 73, 79, 83, 87, 89, 95, 97, 99, 104, 109, 110, 111, 112, 115, 117, 118, 121, 122, 123, 124, 129, 131, 132, 133, 134, 135, 136, 138, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 172, 174, 175, 178, 184, 186, 193, 198, 201, 210, 211, 214, 215, 230, 231, 232, 237, 238, 240, 247, 251, 254, 255, 258], "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 55, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 197, 198, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 268, 270, 271], "export_onnx": 0, "end": [0, 4, 5, 6, 7, 8, 14, 17, 19, 22, 23, 25, 32, 43, 49, 52, 54, 58, 59, 60, 75, 82, 85, 89, 97, 102, 113, 115, 116, 121, 122, 124, 126, 127, 128, 129, 134, 135, 136, 137, 144, 146, 148, 152, 157, 158, 160, 161, 163, 165, 166, 168, 169, 172, 173, 174, 175, 176, 183, 184, 185, 189, 193, 198, 200, 201, 203, 208, 213, 220, 221, 222, 228, 230, 234, 239, 244, 247, 258, 262, 271], "up": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14, 17, 18, 19, 21, 22, 42, 49, 52, 55, 60, 61, 70, 76, 78, 82, 85, 97, 98, 99, 101, 102, 103, 105, 109, 113, 119, 121, 122, 123, 124, 127, 128, 129, 131, 132, 133, 135, 136, 138, 143, 144, 150, 152, 154, 157, 158, 159, 160, 161, 162, 165, 166, 168, 169, 172, 175, 176, 177, 182, 185, 186, 187, 193, 196, 197, 198, 200, 201, 203, 204, 207, 212, 213, 215, 216, 220, 223, 224, 225, 231, 247, 251, 255, 258, 262, 271], "correspond": [0, 1, 2, 3, 5, 6, 8, 10, 12, 14, 15, 43, 49, 55, 60, 75, 82, 99, 102, 109, 112, 116, 118, 123, 125, 126, 133, 144, 152, 156, 159, 162, 165, 166, 168, 169, 171, 172, 175, 178, 185, 187, 192, 200, 209, 221, 229, 230, 237, 247, 251], "come": [0, 1, 5, 6, 10, 17, 19, 20, 22, 23, 51, 52, 60, 73, 85, 87, 97, 98, 112, 123, 124, 126, 135, 136, 144, 152, 153, 155, 159, 164, 172, 175, 182, 184, 185, 198, 199, 201, 221, 258, 261, 270], "abov": [0, 1, 3, 4, 5, 6, 8, 10, 11, 14, 15, 16, 19, 20, 22, 23, 43, 44, 49, 51, 52, 58, 59, 61, 65, 67, 68, 73, 82, 95, 97, 98, 99, 101, 102, 103, 108, 110, 111, 113, 116, 122, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 139, 141, 144, 145, 146, 147, 149, 150, 152, 153, 154, 156, 157, 159, 161, 162, 163, 164, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 184, 187, 188, 189, 190, 191, 192, 195, 197, 198, 200, 215, 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 234, 237, 244, 245, 252, 261, 262, 270, 271], "ad": [0, 2, 5, 6, 10, 15, 18, 22, 23, 24, 25, 32, 37, 49, 50, 53, 58, 59, 60, 61, 73, 83, 85, 95, 99, 101, 110, 112, 113, 115, 122, 123, 128, 133, 136, 139, 141, 145, 146, 150, 152, 155, 156, 160, 164, 165, 173, 174, 177, 178, 187, 188, 198, 209, 213, 220, 221, 223, 224, 225, 234, 244, 252], "our": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 16, 17, 19, 20, 21, 22, 23, 25, 40, 43, 44, 45, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 61, 64, 65, 67, 68, 69, 75, 78, 79, 87, 97, 98, 99, 102, 103, 104, 105, 108, 109, 111, 116, 117, 118, 122, 123, 126, 127, 128, 130, 131, 132, 136, 137, 139, 141, 143, 144, 145, 146, 147, 149, 150, 153, 154, 156, 157, 159, 160, 161, 162, 164, 165, 166, 169, 171, 172, 173, 174, 176, 178, 179, 182, 184, 187, 188, 189, 190, 191, 192, 194, 195, 197, 198, 201, 203, 205, 208, 209, 211, 213, 214, 216, 219, 222, 223, 229, 234, 249, 251, 258], "path": [0, 4, 5, 6, 9, 18, 19, 22, 23, 34, 42, 44, 49, 50, 51, 52, 53, 59, 60, 73, 82, 87, 96, 97, 98, 104, 108, 112, 116, 117, 122, 123, 125, 126, 127, 128, 137, 139, 142, 144, 146, 148, 155, 157, 171, 172, 176, 178, 181, 182, 184, 185, 188, 189, 194, 195, 197, 198, 199, 200, 204, 206, 207, 208, 213, 214, 222, 223, 224, 225, 226, 228, 231, 234, 240, 241, 242, 243, 244, 246, 247, 248, 256, 257], "unfortun": [0, 8, 23, 25, 135], "won": [0, 3, 5, 10, 43, 115, 123, 129, 130, 141, 150, 154, 159, 228, 230, 252], "mark": [0, 49, 58, 59, 75, 124, 146, 147, 160, 161, 176, 177, 182, 183, 191, 226, 260, 269], "while": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 16, 17, 19, 21, 23, 49, 52, 55, 60, 78, 82, 89, 105, 108, 109, 113, 116, 119, 120, 122, 125, 126, 131, 133, 135, 136, 137, 139, 144, 145, 146, 147, 149, 152, 156, 157, 158, 159, 162, 163, 164, 165, 166, 172, 173, 174, 176, 177, 179, 182, 184, 185, 189, 190, 191, 192, 193, 197, 200, 201, 208, 223, 228, 230, 237, 244, 247, 254], "onli": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 22, 23, 42, 43, 44, 45, 47, 49, 53, 55, 56, 60, 61, 73, 78, 80, 82, 87, 95, 97, 98, 99, 103, 107, 108, 109, 112, 113, 114, 116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 146, 147, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 215, 216, 218, 222, 223, 224, 225, 226, 228, 230, 231, 244, 247, 252, 254, 258, 262, 271], "when": [0, 1, 5, 6, 8, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 23, 25, 32, 42, 43, 44, 45, 47, 48, 49, 50, 52, 53, 55, 58, 59, 60, 61, 65, 68, 73, 75, 78, 79, 82, 85, 87, 97, 98, 101, 103, 108, 109, 110, 111, 112, 115, 118, 119, 121, 122, 123, 125, 126, 128, 129, 132, 133, 134, 135, 136, 137, 139, 141, 143, 144, 146, 147, 149, 150, 152, 153, 155, 156, 157, 159, 160, 161, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 177, 178, 182, 183, 184, 188, 189, 192, 193, 195, 197, 198, 199, 200, 201, 202, 203, 206, 207, 208, 209, 211, 212, 213, 214, 215, 219, 226, 227, 230, 234, 237, 239, 244, 247, 254, 258, 260, 262, 264, 269, 271, 273], "applic": [0, 2, 3, 11, 12, 14, 15, 23, 49, 58, 59, 60, 61, 75, 97, 105, 117, 120, 121, 123, 125, 126, 129, 133, 137, 139, 143, 149, 152, 156, 157, 161, 163, 171, 176, 184, 191, 194, 206, 212, 219, 221, 222, 223, 226, 247, 251], "netron": [0, 108], "see": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 19, 20, 21, 23, 24, 25, 42, 44, 45, 47, 48, 49, 50, 51, 52, 55, 58, 59, 60, 65, 73, 75, 78, 80, 82, 83, 85, 87, 97, 98, 99, 100, 101, 102, 103, 105, 108, 109, 111, 112, 113, 116, 119, 122, 123, 124, 126, 127, 128, 129, 130, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 187, 188, 189, 191, 192, 194, 196, 197, 200, 201, 202, 203, 205, 206, 207, 208, 211, 213, 214, 215, 216, 218, 219, 222, 224, 225, 226, 228, 229, 230, 234, 244, 245, 247, 252, 255, 256, 257, 262, 271], "name": [0, 1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 33, 49, 50, 51, 52, 59, 60, 78, 79, 82, 98, 103, 105, 108, 109, 110, 112, 122, 124, 125, 126, 128, 133, 134, 136, 137, 139, 141, 142, 143, 144, 147, 153, 155, 156, 159, 160, 161, 162, 164, 165, 168, 171, 172, 173, 174, 175, 178, 182, 185, 187, 195, 197, 198, 200, 201, 203, 204, 206, 208, 209, 213, 214, 215, 219, 220, 221, 222, 228, 231, 237, 238, 239, 246, 255, 256, 257, 262, 263, 271, 272], "186": [0, 184, 219], "numer": [0, 17, 19, 20, 49, 97, 98, 105, 113, 126, 129, 159, 182, 185, 196, 197, 198, 199, 201, 230, 247, 252, 263, 272], "id": [0, 9, 17, 49, 82, 95, 113, 126, 133, 137, 139, 153, 161, 162, 163, 171, 173, 174, 175, 178, 181, 201, 214, 244, 260, 261, 265, 269, 270, 274], "assign": [0, 6, 22, 45, 47, 53, 65, 67, 97, 98, 99, 102, 103, 111, 135, 153, 159, 176, 215, 226, 230, 244, 247, 261, 270], "small": [0, 1, 3, 5, 6, 9, 12, 17, 18, 20, 21, 23, 24, 25, 42, 43, 44, 47, 57, 73, 78, 79, 80, 97, 99, 100, 102, 103, 105, 116, 117, 122, 123, 126, 128, 129, 143, 149, 152, 153, 157, 158, 159, 160, 163, 165, 166, 171, 178, 184, 189, 201, 209, 219, 230, 247, 255], "onnx_to_coreml": 0, "touch": [0, 2, 4, 6, 14, 22, 23, 207], "command": [0, 4, 5, 6, 14, 23, 50, 75, 107, 114, 119, 126, 127, 132, 133, 134, 137, 139, 155, 159, 161, 162, 163, 165, 168, 169, 171, 176, 178, 188, 208, 213, 215, 218, 219, 220, 222, 223, 245, 247, 255, 256, 262, 263, 271, 272], "edit": [0, 3, 6, 9, 11, 12, 16, 19, 20, 48, 50, 61, 113, 123, 124, 133, 134, 135, 137, 143, 144, 155, 157, 158, 161, 162, 163, 182, 184, 214, 215, 225, 260, 269], "favorit": [0, 42, 59, 135, 143], "editor": [0, 225], "add": [0, 2, 4, 6, 7, 8, 9, 10, 12, 14, 15, 17, 19, 21, 22, 23, 40, 44, 47, 48, 49, 50, 58, 59, 60, 61, 73, 78, 80, 85, 87, 98, 99, 102, 108, 113, 114, 116, 118, 121, 122, 123, 124, 126, 127, 128, 129, 135, 136, 139, 142, 143, 144, 145, 146, 152, 154, 155, 158, 159, 161, 162, 163, 165, 168, 173, 174, 176, 177, 181, 182, 184, 186, 187, 188, 189, 191, 199, 200, 201, 204, 206, 208, 216, 218, 222, 227, 231, 238, 251, 252, 255, 260, 262, 267, 269, 271, 276], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 42, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 73, 75, 81, 82, 83, 85, 86, 87, 97, 98, 99, 101, 102, 103, 105, 107, 108, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 129, 131, 132, 133, 135, 136, 137, 139, 142, 143, 144, 145, 146, 147, 149, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 187, 188, 190, 192, 193, 194, 195, 197, 198, 199, 200, 201, 202, 204, 205, 206, 208, 209, 213, 214, 215, 216, 218, 219, 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 237, 239, 244, 245, 252, 253, 254, 256, 257, 260, 262, 263, 267, 269, 271, 272, 276], "code": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 181, 182, 184, 185, 187, 188, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 201, 203, 205, 207, 211, 212, 214, 215, 216, 218, 220, 221, 222, 223, 224, 225, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 256, 258, 261, 263, 270, 272], "sy": [0, 3, 7, 18, 19, 53, 55, 90, 133, 137, 148, 155, 182, 185, 194, 197, 198, 210, 211], "onnx_pb": 0, "onnx_coreml": 0, "model_in": 0, "argv": [0, 4, 22, 23, 53, 55, 220, 256], "1": [0, 1, 2, 3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 45, 47, 48, 49, 51, 52, 53, 55, 60, 61, 63, 64, 68, 69, 73, 75, 76, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 171, 172, 173, 174, 175, 177, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 214, 215, 216, 219, 220, 221, 222, 226, 227, 229, 230, 237, 239, 244, 245, 247, 249, 253, 256, 257, 258, 259, 260, 262, 263, 266, 268, 269, 271, 272, 275], "model_out": 0, "2": [0, 1, 2, 3, 5, 6, 7, 11, 12, 14, 15, 16, 18, 20, 21, 23, 24, 32, 33, 34, 36, 40, 42, 43, 47, 48, 49, 51, 52, 53, 55, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 80, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 135, 136, 138, 139, 141, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 171, 172, 173, 174, 175, 183, 184, 186, 189, 190, 191, 192, 193, 196, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 219, 220, 221, 222, 229, 230, 232, 237, 239, 244, 247, 254, 255, 256, 258, 260, 262, 263, 266, 269, 271, 272, 275], "model_fil": [0, 19, 182, 197, 198, 204], "rb": [0, 49, 87, 104, 116, 136, 139, 223], "model_proto": [0, 108], "modelproto": [0, 20], "parsefromstr": 0, "read": [0, 1, 2, 5, 6, 9, 14, 19, 22, 23, 38, 47, 49, 51, 73, 101, 102, 112, 113, 116, 117, 120, 122, 125, 126, 127, 128, 135, 137, 139, 142, 144, 149, 152, 158, 159, 162, 165, 166, 169, 172, 185, 187, 188, 195, 204, 208, 222, 223, 227, 230, 260, 262, 269, 271], "coreml_model": 0, "image_input_nam": 0, "image_output_nam": 0, "save": [0, 2, 4, 6, 7, 9, 11, 12, 19, 20, 23, 35, 38, 39, 44, 48, 49, 50, 52, 58, 59, 73, 87, 96, 97, 108, 115, 117, 119, 121, 123, 124, 126, 127, 129, 137, 139, 144, 145, 148, 156, 157, 160, 161, 162, 163, 165, 168, 171, 181, 182, 185, 187, 188, 194, 195, 204, 206, 208, 218, 220, 221, 222, 223, 224, 225, 228, 231, 234, 235, 237, 241, 242, 243, 245, 247, 248, 251, 252, 256], "mlmodel": [0, 187], "i": [0, 1, 5, 6, 7, 8, 9, 11, 12, 14, 17, 18, 19, 22, 23, 25, 32, 34, 39, 42, 43, 49, 51, 52, 58, 59, 60, 61, 69, 73, 75, 76, 85, 87, 89, 90, 92, 94, 96, 98, 99, 101, 102, 103, 104, 111, 112, 113, 116, 117, 118, 122, 124, 127, 128, 132, 134, 135, 136, 138, 142, 146, 147, 152, 153, 154, 156, 159, 161, 162, 163, 165, 169, 171, 172, 173, 174, 175, 176, 177, 181, 189, 191, 192, 193, 201, 202, 203, 208, 209, 212, 215, 216, 221, 226, 231, 234, 237, 250, 262, 263, 271, 272], "e": [0, 4, 5, 6, 7, 8, 10, 11, 18, 22, 23, 25, 32, 39, 42, 43, 44, 49, 51, 52, 58, 60, 61, 65, 69, 73, 75, 76, 79, 85, 87, 89, 95, 97, 100, 103, 108, 110, 111, 112, 117, 121, 123, 124, 126, 127, 128, 130, 132, 133, 134, 135, 138, 142, 146, 147, 153, 154, 155, 156, 159, 161, 163, 165, 168, 172, 173, 174, 175, 176, 179, 182, 184, 185, 190, 191, 192, 193, 196, 200, 202, 205, 206, 208, 212, 215, 216, 220, 247, 256], "one": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 18, 19, 21, 22, 23, 25, 45, 47, 48, 49, 51, 52, 55, 56, 60, 61, 73, 76, 80, 85, 87, 93, 95, 97, 98, 100, 101, 102, 103, 108, 112, 113, 114, 116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 149, 152, 153, 154, 156, 158, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 173, 174, 175, 177, 178, 179, 183, 184, 189, 190, 191, 193, 194, 195, 198, 200, 201, 205, 208, 213, 214, 215, 216, 224, 228, 234, 235, 237, 247, 252, 254, 258, 262, 271], "re": [0, 1, 4, 5, 6, 7, 9, 10, 14, 16, 19, 21, 22, 23, 24, 44, 48, 49, 50, 60, 73, 78, 97, 98, 117, 125, 127, 128, 136, 138, 139, 141, 143, 145, 150, 152, 154, 158, 159, 160, 161, 162, 165, 173, 174, 175, 176, 178, 182, 184, 187, 189, 194, 197, 198, 202, 205, 208, 213, 214, 223, 230, 234, 237, 246, 247, 262, 271], "current": [0, 1, 5, 6, 8, 10, 11, 12, 14, 15, 19, 22, 23, 37, 38, 49, 52, 60, 82, 107, 113, 117, 122, 123, 125, 126, 127, 128, 135, 136, 141, 142, 146, 147, 149, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 168, 173, 174, 179, 182, 185, 187, 188, 189, 191, 192, 193, 194, 195, 197, 198, 214, 216, 218, 219, 224, 228, 247, 254, 260, 269], "readm": [0, 119, 179], "md": [0, 119, 179], "contain": [0, 1, 2, 4, 6, 8, 9, 10, 12, 14, 15, 17, 20, 21, 22, 23, 25, 34, 42, 47, 49, 50, 55, 58, 60, 64, 67, 68, 69, 75, 76, 78, 82, 85, 95, 101, 102, 111, 112, 116, 117, 122, 123, 125, 126, 127, 131, 133, 134, 136, 139, 142, 149, 153, 156, 157, 159, 160, 161, 163, 164, 165, 166, 168, 169, 171, 173, 174, 175, 178, 179, 181, 182, 187, 192, 195, 198, 200, 201, 202, 206, 208, 212, 213, 221, 222, 223, 226, 230, 237, 244, 247, 262, 263, 271, 272], "abl": [0, 1, 3, 4, 5, 6, 14, 15, 17, 23, 49, 60, 85, 97, 98, 100, 103, 112, 117, 126, 129, 130, 131, 132, 135, 136, 138, 139, 144, 146, 147, 152, 154, 157, 159, 162, 169, 172, 173, 174, 178, 182, 185, 188, 191, 197, 200, 201, 207, 208, 223, 234, 244], "phone": [0, 97, 105, 188, 223], "onnxliv": 0, "xcodeproj": [0, 223], "project": [0, 4, 5, 6, 23, 52, 58, 59, 60, 112, 116, 124, 139, 155, 160, 164, 165, 169, 187, 188, 193, 204, 208, 220, 221, 222, 223, 224, 225, 226, 227, 251, 256, 257, 258, 261, 266, 270, 275], "recommend": [0, 4, 6, 8, 10, 15, 18, 19, 20, 23, 61, 82, 108, 115, 116, 119, 121, 128, 133, 137, 157, 158, 165, 168, 172, 175, 176, 177, 178, 181, 182, 185, 191, 196, 199, 207, 219, 220, 226, 227, 228, 230, 237, 245, 247, 256, 262, 271], "9": [0, 1, 3, 5, 6, 17, 18, 19, 23, 34, 43, 44, 49, 65, 87, 92, 94, 95, 96, 103, 104, 109, 111, 112, 115, 116, 117, 118, 144, 146, 153, 157, 158, 160, 161, 168, 169, 171, 172, 173, 176, 177, 178, 201, 204, 206, 208, 219, 220, 221, 222, 229, 231, 238, 241, 242, 243, 249, 250, 253, 266, 275], "x": [0, 1, 2, 5, 6, 7, 12, 14, 17, 18, 19, 20, 21, 22, 23, 25, 32, 33, 37, 38, 40, 43, 44, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 76, 78, 79, 80, 85, 87, 89, 92, 93, 94, 95, 96, 97, 98, 99, 101, 104, 105, 108, 110, 111, 112, 113, 114, 115, 116, 117, 123, 124, 125, 127, 128, 129, 130, 133, 134, 135, 138, 139, 141, 142, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 166, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 183, 184, 186, 193, 195, 197, 198, 199, 201, 203, 205, 208, 209, 212, 213, 214, 215, 218, 219, 220, 221, 223, 226, 228, 231, 233, 237, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 252, 254, 255, 263, 272], "might": [0, 1, 5, 8, 10, 15, 16, 25, 44, 50, 51, 52, 53, 60, 79, 97, 98, 102, 103, 105, 108, 109, 113, 127, 130, 131, 132, 133, 135, 142, 143, 145, 149, 153, 157, 163, 164, 165, 168, 172, 178, 182, 184, 185, 188, 189, 197, 200, 204, 206, 223, 232, 244, 252, 260, 269], "issu": [0, 2, 4, 5, 6, 8, 9, 19, 20, 22, 23, 51, 58, 113, 118, 122, 132, 137, 138, 142, 143, 144, 147, 154, 158, 168, 174, 184, 185, 186, 187, 188, 189, 191, 193, 195, 199, 204, 205, 207, 213, 222, 226, 230, 232, 244], "older": [0, 56, 109, 138, 154, 160, 175, 184], "some": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 22, 23, 25, 42, 43, 44, 47, 48, 49, 50, 51, 52, 58, 59, 60, 61, 63, 68, 73, 76, 78, 80, 82, 87, 92, 97, 98, 99, 100, 101, 102, 103, 108, 109, 110, 112, 113, 116, 121, 122, 123, 126, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 148, 149, 150, 152, 154, 156, 157, 159, 160, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 182, 183, 184, 187, 188, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 202, 203, 205, 209, 213, 214, 216, 220, 221, 223, 230, 234, 237, 238, 239, 247, 252, 254, 261, 262, 270, 271], "replac": [0, 3, 6, 12, 19, 24, 43, 55, 57, 58, 59, 78, 99, 108, 109, 117, 118, 119, 123, 135, 137, 139, 141, 142, 147, 156, 157, 163, 165, 168, 173, 174, 177, 178, 184, 191, 194, 218, 220, 222, 231, 234, 252], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 34, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53, 55, 56, 58, 59, 60, 61, 63, 68, 69, 73, 76, 78, 80, 82, 85, 87, 90, 98, 99, 100, 101, 102, 103, 105, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 147, 148, 149, 150, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 184, 185, 187, 188, 189, 190, 192, 193, 196, 197, 199, 200, 201, 202, 204, 205, 206, 208, 212, 213, 220, 221, 223, 226, 228, 229, 231, 234, 237, 239, 244, 245, 246, 251, 255, 256, 258, 262, 263, 271, 272], "set": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 37, 42, 43, 44, 47, 48, 49, 50, 52, 53, 55, 58, 59, 60, 61, 63, 64, 68, 73, 76, 79, 82, 83, 86, 97, 98, 99, 102, 103, 104, 105, 110, 111, 112, 113, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 131, 132, 133, 135, 136, 139, 144, 146, 148, 149, 152, 153, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 177, 178, 181, 187, 188, 189, 191, 193, 194, 198, 199, 201, 204, 206, 207, 208, 213, 214, 215, 219, 220, 221, 223, 224, 225, 226, 228, 232, 237, 241, 244, 255, 260, 264, 267, 269, 273, 276], "tap": 0, "screen": [0, 58, 59, 146, 160, 226, 260, 269], "switch": [0, 5, 8, 15, 19, 95, 112, 139, 152, 194, 206, 219, 230, 232], "hope": [0, 5, 25, 49, 146, 152, 165, 172, 219, 263, 272], "gave": [0, 103, 213], "framework": [0, 6, 7, 10, 24, 25, 52, 60, 61, 99, 100, 120, 121, 134, 149, 161, 164, 171, 176, 177, 183, 188, 207, 212, 216, 221, 222, 257], "experi": [0, 6, 10, 97, 98, 122, 135, 137, 146, 149, 155, 157, 159, 160, 164, 165, 166, 171, 172, 175, 176, 177, 184, 185, 189, 196, 205, 212, 228, 230, 255], "test": [0, 3, 8, 13, 19, 20, 22, 23, 24, 37, 38, 42, 49, 58, 59, 60, 83, 85, 92, 97, 99, 100, 105, 108, 113, 114, 119, 122, 123, 135, 136, 138, 139, 141, 144, 147, 158, 159, 162, 165, 166, 169, 172, 173, 174, 181, 182, 183, 184, 196, 197, 199, 204, 205, 213, 219, 220, 221, 222, 223, 234, 256, 262, 263, 271, 272], "own": [0, 5, 6, 7, 8, 10, 11, 14, 16, 17, 18, 23, 25, 49, 52, 58, 59, 64, 73, 87, 103, 108, 109, 111, 113, 121, 122, 123, 128, 129, 133, 139, 144, 149, 152, 153, 156, 158, 159, 162, 163, 165, 171, 172, 176, 178, 179, 184, 194, 195, 197, 198, 200, 201, 209, 216, 244, 262, 271], "pleas": [0, 2, 4, 5, 6, 7, 9, 10, 19, 20, 22, 23, 44, 45, 47, 51, 61, 75, 87, 108, 113, 115, 118, 122, 123, 124, 133, 137, 138, 141, 142, 143, 144, 147, 149, 152, 154, 155, 157, 161, 162, 163, 168, 171, 172, 173, 174, 175, 176, 178, 179, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 204, 205, 209, 214, 215, 219, 220, 221, 222, 226, 230, 232, 234, 247, 252, 257, 262, 271], "know": [0, 1, 5, 6, 8, 11, 18, 19, 22, 23, 43, 49, 73, 95, 99, 101, 103, 108, 113, 125, 127, 128, 130, 135, 136, 138, 144, 146, 147, 149, 150, 154, 159, 160, 161, 165, 169, 173, 174, 176, 177, 178, 179, 182, 190, 195, 221, 260, 262, 269, 271], "hit": [0, 5, 9, 19, 61, 73, 113, 124, 168], "ani": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 22, 23, 43, 45, 47, 49, 51, 52, 53, 55, 60, 65, 67, 76, 97, 98, 100, 101, 103, 105, 107, 108, 110, 111, 112, 113, 115, 120, 123, 124, 125, 127, 130, 131, 135, 137, 138, 141, 142, 143, 146, 147, 149, 152, 153, 154, 158, 159, 160, 162, 163, 166, 168, 171, 173, 174, 176, 177, 181, 183, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 198, 201, 202, 204, 207, 208, 209, 210, 211, 214, 215, 216, 218, 222, 225, 226, 228, 230, 237, 239, 240, 244, 252, 255, 260, 262, 269, 271], "give": [0, 1, 2, 5, 6, 11, 14, 17, 23, 25, 45, 47, 49, 50, 52, 58, 59, 60, 61, 73, 75, 79, 97, 98, 99, 101, 102, 103, 112, 118, 128, 131, 138, 142, 143, 144, 145, 146, 154, 158, 162, 165, 168, 171, 172, 173, 174, 176, 177, 182, 190, 193, 201, 216, 219, 223, 234, 256, 260, 262, 269, 271], "feedback": [0, 6, 9, 19, 122, 137, 142, 143, 146, 147, 176, 177, 185, 187, 188, 195, 196, 197, 204, 222], "d": [0, 2, 5, 6, 7, 8, 12, 19, 22, 52, 61, 63, 64, 65, 67, 71, 72, 76, 87, 89, 92, 95, 99, 103, 111, 113, 115, 122, 124, 126, 127, 128, 129, 133, 135, 137, 145, 146, 149, 152, 165, 168, 171, 175, 185, 192, 193, 198, 205, 208, 215, 220, 250, 262, 263, 271, 272], "hear": [0, 142, 143], "think": [0, 6, 22, 23, 44, 52, 68, 78, 98, 99, 101, 102, 103, 113, 143, 145, 159, 162, 164, 192, 205, 234, 262, 271], "click": [1, 7, 9, 12, 13, 14, 17, 20, 21, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 172, 174, 178, 181, 184, 188, 189, 190, 191, 192, 193, 195, 203, 204, 205, 208, 211, 225, 226, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "here": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160, 162, 163, 164, 165, 166, 168, 169, 172, 173, 174, 175, 176, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 203, 204, 205, 208, 209, 211, 214, 216, 218, 219, 220, 221, 222, 223, 225, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 254, 255, 260, 262, 263, 269, 271, 272], "download": [1, 4, 6, 7, 9, 12, 13, 14, 17, 19, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 162, 164, 165, 166, 168, 169, 172, 174, 178, 182, 184, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 203, 204, 205, 206, 208, 211, 220, 221, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 253, 254, 255, 266, 275], "full": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 19, 20, 22, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 131, 134, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 159, 160, 161, 164, 165, 166, 168, 172, 174, 178, 181, 182, 184, 189, 190, 191, 192, 193, 194, 195, 198, 203, 204, 205, 208, 209, 211, 222, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256], "author": [1, 5, 7, 9, 11, 12, 13, 14, 16, 17, 19, 24, 36, 42, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 73, 81, 82, 83, 85, 86, 97, 98, 99, 101, 102, 103, 104, 107, 108, 109, 111, 112, 113, 114, 116, 117, 122, 123, 124, 126, 127, 128, 131, 132, 133, 134, 135, 136, 137, 139, 142, 143, 144, 146, 147, 149, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 172, 173, 174, 176, 177, 179, 181, 182, 183, 184, 185, 186, 187, 188, 197, 198, 199, 200, 201, 204, 205, 206, 208, 209, 210, 211, 214, 215, 219, 222, 230, 237, 244, 247, 254, 255, 263, 272], "vincent": [1, 14, 136, 159], "moen": [1, 14, 136, 159], "separ": [1, 5, 6, 7, 8, 20, 22, 23, 25, 49, 52, 85, 97, 109, 124, 126, 138, 144, 146, 153, 157, 162, 165, 171, 178, 179, 181, 182, 189, 193, 197, 200, 216, 247, 255], "rl": [1, 61, 121, 159, 160, 161], "algorithm": [1, 5, 6, 10, 11, 12, 49, 52, 56, 69, 82, 87, 98, 99, 100, 101, 111, 118, 122, 124, 126, 129, 135, 136, 146, 155, 159, 162, 166, 210, 211, 216, 229, 247], "variou": [1, 8, 15, 47, 48, 49, 50, 60, 83, 85, 102, 109, 112, 116, 126, 143, 145, 156, 159, 162, 163, 171, 184, 191, 193, 207, 234], "piec": [1, 5, 8, 14, 59, 85, 158, 159, 163, 171, 175, 177, 178, 179, 188, 213], "assembl": [1, 8, 49, 134], "collect": [1, 4, 6, 11, 14, 15, 17, 18, 19, 21, 42, 43, 44, 45, 49, 55, 60, 61, 73, 75, 79, 97, 99, 103, 121, 122, 123, 124, 133, 134, 136, 143, 146, 149, 155, 160, 163, 175, 177, 201, 214, 215, 226, 230, 247], "final": [1, 6, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 42, 43, 47, 49, 52, 58, 60, 73, 75, 85, 87, 97, 102, 105, 107, 108, 109, 112, 113, 117, 118, 119, 122, 123, 124, 126, 127, 128, 129, 130, 134, 135, 139, 143, 144, 145, 146, 150, 152, 154, 156, 157, 159, 160, 161, 162, 163, 165, 168, 169, 175, 176, 177, 179, 184, 185, 187, 188, 189, 192, 197, 198, 199, 200, 201, 203, 204, 208, 213, 216, 221], "function": [1, 3, 4, 5, 6, 8, 9, 10, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 25, 32, 38, 42, 43, 48, 49, 51, 53, 55, 59, 60, 61, 62, 65, 67, 68, 69, 75, 76, 79, 80, 82, 83, 89, 90, 92, 93, 94, 95, 96, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 134, 135, 136, 138, 142, 143, 144, 146, 147, 148, 149, 152, 153, 155, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 185, 186, 187, 189, 190, 191, 192, 193, 194, 195, 200, 201, 202, 203, 205, 206, 208, 209, 210, 211, 213, 216, 219, 220, 221, 223, 226, 230, 231, 232, 233, 234, 239, 244, 246, 249, 250, 252, 254, 255, 256, 258], "trainabl": [1, 6, 68, 97, 99, 157], "paramet": [1, 4, 5, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 22, 24, 25, 32, 33, 35, 37, 38, 43, 44, 47, 48, 49, 51, 52, 61, 65, 67, 68, 69, 73, 75, 85, 87, 89, 92, 94, 96, 97, 98, 99, 101, 102, 103, 104, 109, 110, 111, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 141, 142, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 157, 160, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 182, 184, 189, 195, 196, 197, 201, 203, 210, 211, 212, 214, 216, 219, 220, 221, 226, 228, 230, 234, 235, 237, 239, 241, 242, 243, 244, 245, 249, 250, 252, 253, 254, 258, 266, 275], "tutori": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 43, 44, 45, 46, 51, 52, 53, 55, 56, 58, 59, 60, 61, 73, 74, 75, 77, 79, 81, 82, 84, 86, 87, 91, 97, 98, 100, 101, 104, 105, 106, 107, 108, 112, 113, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 154, 155, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 175, 177, 178, 180, 181, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 217, 219, 222, 223, 228, 229, 230, 234, 235, 237, 244, 245, 247, 251, 252, 255, 256, 257, 258], "guid": [1, 17, 58, 59, 61, 82, 85, 123, 135, 147, 158, 168, 173, 174, 176, 184, 196, 201, 213, 226, 229, 235, 251, 261, 270], "ground": [1, 14, 44, 73, 178], "aim": [1, 6, 61, 75, 97, 100, 152, 160, 163, 192, 221], "focus": [1, 3, 20, 97, 100, 149, 155, 165, 221], "rel": [1, 5, 6, 7, 117, 119, 125, 126, 137, 145, 149, 150, 163, 165, 176, 186, 197, 221, 234], "straightforward": [1, 5, 6, 16, 17, 49, 60, 97, 98, 144, 200, 234], "determinist": [1, 11, 14, 136, 148, 160, 247], "gradient": [1, 6, 7, 10, 11, 13, 14, 16, 25, 37, 42, 43, 44, 47, 49, 52, 56, 61, 63, 64, 65, 67, 68, 69, 71, 72, 78, 87, 97, 98, 99, 101, 102, 103, 104, 110, 111, 115, 117, 121, 122, 123, 124, 125, 127, 129, 130, 131, 133, 135, 141, 145, 146, 149, 152, 156, 157, 159, 160, 161, 162, 163, 169, 171, 189, 205, 214, 216, 229, 235, 258], "simpl": [1, 3, 4, 5, 6, 8, 12, 15, 16, 17, 19, 21, 22, 23, 24, 25, 47, 49, 51, 54, 56, 61, 67, 73, 79, 85, 87, 97, 107, 112, 116, 120, 121, 123, 125, 126, 130, 135, 138, 139, 144, 145, 150, 154, 156, 159, 161, 162, 163, 164, 166, 168, 172, 182, 185, 199, 201, 205, 207, 210, 211, 213, 214, 215, 220, 221, 228, 234, 237, 245, 251, 252, 254, 255, 258, 262, 263, 271, 272], "continu": [1, 5, 17, 20, 21, 49, 53, 60, 73, 85, 87, 97, 102, 113, 116, 121, 124, 128, 131, 135, 142, 143, 146, 157, 159, 163, 165, 168, 176, 187, 188, 189, 191, 192, 198, 199, 200, 201, 204, 222, 234, 247, 252, 262, 271], "control": [1, 4, 8, 10, 14, 21, 23, 25, 34, 43, 60, 61, 66, 83, 85, 97, 110, 111, 113, 114, 122, 125, 126, 134, 135, 141, 153, 159, 160, 161, 172, 183, 197, 208, 226, 252], "It": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 42, 43, 44, 45, 47, 49, 51, 52, 60, 61, 73, 74, 75, 76, 82, 87, 95, 97, 98, 99, 100, 101, 103, 108, 112, 113, 115, 117, 122, 123, 124, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 138, 140, 141, 143, 144, 145, 146, 149, 150, 152, 153, 154, 156, 157, 160, 161, 163, 165, 166, 167, 168, 170, 171, 173, 174, 177, 178, 179, 193, 200, 201, 202, 203, 204, 205, 208, 212, 213, 214, 215, 216, 222, 223, 224, 225, 228, 232, 245, 247, 253, 254, 256, 260, 262, 269, 271], "consist": [1, 3, 6, 7, 14, 15, 16, 22, 24, 25, 43, 75, 97, 99, 118, 124, 131, 142, 143, 146, 150, 152, 159, 164, 165, 168, 173, 174, 177, 179, 191, 192, 199, 200, 208, 211, 247, 262, 271], "parametr": [1, 2, 17, 121, 159, 201], "action": [1, 19, 58, 59, 101, 113, 122, 123, 146, 156, 159, 160, 161, 162, 163, 168, 182, 189, 190, 191, 192, 197, 198, 204, 208, 251, 262, 271], "pair": [1, 6, 14, 47, 49, 52, 116, 118, 128, 129, 137, 150, 154, 159, 160, 165, 168, 178, 179, 194, 199, 211, 226, 262, 271], "maxim": [1, 14, 52, 73, 82, 97, 99, 126, 146, 160, 172, 176, 194, 247], "given": [1, 6, 8, 10, 12, 14, 17, 20, 21, 22, 23, 25, 32, 43, 48, 49, 51, 52, 60, 61, 73, 76, 78, 82, 85, 97, 98, 100, 101, 103, 112, 116, 122, 127, 128, 133, 135, 138, 141, 142, 145, 146, 147, 154, 156, 159, 160, 162, 163, 165, 172, 173, 174, 177, 178, 192, 195, 200, 201, 216, 219, 231, 239, 247, 258], "certain": [1, 4, 5, 6, 10, 11, 15, 49, 55, 60, 101, 113, 120, 122, 124, 125, 129, 141, 145, 147, 159, 164, 188, 189, 192, 193, 194, 198, 229, 244, 254], "what": [1, 2, 3, 5, 8, 14, 18, 19, 20, 21, 22, 23, 25, 43, 45, 46, 53, 54, 55, 58, 59, 61, 73, 78, 86, 87, 98, 99, 101, 102, 103, 114, 121, 124, 125, 126, 128, 131, 132, 135, 136, 142, 146, 150, 152, 156, 159, 160, 161, 164, 169, 171, 173, 178, 187, 191, 195, 197, 200, 210, 222, 230, 232, 235, 237, 249, 252, 262, 271], "write": [1, 4, 8, 9, 10, 21, 22, 23, 44, 49, 58, 59, 60, 61, 64, 75, 98, 99, 100, 101, 104, 116, 117, 121, 125, 126, 130, 131, 133, 136, 137, 139, 141, 142, 144, 146, 147, 149, 150, 153, 155, 159, 162, 163, 165, 168, 171, 172, 185, 188, 192, 196, 197, 198, 205, 206, 208, 223, 224, 225, 230, 232, 239, 257, 262, 271], "custom": [1, 4, 6, 8, 11, 17, 49, 52, 64, 65, 66, 79, 90, 109, 111, 121, 126, 136, 146, 159, 162, 171, 172, 177, 179, 183, 188, 195, 197, 199, 200, 201, 202, 204, 220, 221, 226, 230, 235, 244, 247, 251, 253], "its": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 25, 43, 47, 49, 51, 52, 53, 55, 60, 61, 68, 69, 73, 75, 80, 82, 95, 97, 99, 101, 102, 103, 105, 107, 109, 111, 112, 113, 115, 122, 123, 124, 125, 126, 127, 128, 135, 136, 137, 138, 139, 141, 143, 144, 146, 147, 149, 152, 153, 156, 159, 160, 161, 162, 163, 165, 168, 169, 172, 173, 174, 175, 176, 184, 188, 191, 192, 193, 197, 200, 201, 202, 204, 206, 207, 208, 209, 214, 215, 218, 220, 222, 226, 228, 230, 237, 244, 247, 258, 262, 271], "includ": [1, 2, 3, 4, 5, 6, 8, 14, 15, 16, 22, 23, 24, 25, 42, 48, 49, 53, 55, 58, 59, 60, 61, 69, 73, 75, 82, 85, 87, 97, 98, 105, 107, 109, 113, 115, 124, 126, 127, 128, 130, 131, 133, 135, 136, 144, 146, 147, 155, 156, 159, 162, 165, 168, 169, 172, 173, 174, 175, 176, 177, 178, 182, 184, 188, 189, 191, 194, 199, 200, 204, 206, 208, 212, 214, 216, 219, 220, 221, 222, 224, 225, 226, 228, 229, 230, 231, 234, 238, 244, 247, 254, 256, 257, 260, 262, 269, 271], "design": [1, 5, 6, 14, 17, 24, 25, 52, 56, 61, 73, 85, 103, 128, 133, 136, 159, 160, 161, 163, 164, 168, 169, 177, 179, 189, 190, 191, 195, 197, 200, 201, 205, 207, 219, 234, 247, 253, 254, 257], "effici": [1, 5, 7, 10, 12, 15, 17, 20, 23, 25, 42, 49, 51, 73, 82, 95, 97, 101, 103, 115, 119, 122, 123, 124, 126, 127, 135, 136, 145, 150, 156, 159, 163, 164, 168, 171, 175, 177, 186, 187, 192, 193, 194, 201, 204, 237, 253, 254], "store": [1, 4, 5, 6, 16, 17, 19, 20, 22, 23, 40, 43, 48, 51, 53, 60, 68, 87, 95, 98, 99, 101, 103, 105, 111, 125, 126, 128, 135, 136, 141, 143, 144, 146, 147, 153, 155, 156, 159, 160, 161, 162, 163, 165, 182, 184, 192, 197, 198, 201, 204, 216, 234, 247, 252, 254, 257], "trajectori": [1, 14, 61, 136, 159], "transit": [1, 14, 60, 85, 86, 98, 136, 160, 200], "assum": [1, 2, 4, 6, 8, 10, 12, 14, 15, 19, 21, 22, 43, 44, 51, 54, 60, 73, 97, 98, 100, 102, 116, 124, 125, 127, 128, 135, 136, 139, 153, 156, 159, 162, 164, 165, 173, 174, 175, 178, 191, 192, 193, 199, 200, 223, 237, 244], "complet": [1, 4, 5, 6, 15, 21, 25, 49, 76, 78, 85, 87, 98, 99, 101, 113, 117, 119, 122, 124, 126, 130, 135, 156, 157, 158, 159, 160, 162, 165, 171, 172, 177, 178, 184, 191, 192, 225, 228, 229, 234, 247, 252, 256], "ppo": [1, 121], "compon": [1, 5, 6, 8, 10, 14, 20, 25, 52, 61, 85, 97, 101, 112, 113, 115, 119, 121, 126, 136, 142, 146, 159, 163, 166, 168, 172, 173, 174, 177, 193, 207, 256], "depend": [1, 5, 6, 7, 8, 11, 14, 21, 22, 23, 42, 47, 50, 52, 60, 73, 82, 85, 97, 98, 102, 110, 118, 119, 121, 124, 126, 129, 130, 135, 136, 137, 139, 141, 142, 143, 145, 146, 149, 155, 158, 159, 162, 168, 172, 173, 174, 181, 182, 183, 184, 188, 191, 196, 197, 198, 204, 206, 207, 208, 210, 213, 219, 222, 224, 225, 232, 234, 239, 244, 247, 252, 256], "tensordict": [1, 14, 136, 146, 159], "nn": [1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 32, 37, 38, 39, 42, 43, 44, 45, 47, 49, 52, 55, 60, 65, 66, 69, 73, 75, 77, 79, 87, 89, 90, 92, 94, 96, 97, 98, 99, 102, 103, 105, 107, 108, 109, 110, 115, 117, 118, 119, 121, 122, 123, 124, 125, 127, 128, 129, 133, 134, 136, 137, 138, 141, 142, 143, 145, 146, 147, 148, 149, 150, 153, 154, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 179, 181, 182, 183, 185, 190, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 223, 226, 228, 230, 232, 233, 234, 235, 238, 239, 241, 242, 243, 245, 247, 248, 249, 250, 251, 252, 253, 256, 258], "tensordictmodul": [1, 14, 136, 159], "although": [1, 12, 16, 43, 49, 60, 61, 98, 99, 103, 105, 108, 115, 119, 125, 146, 149, 153, 157, 162, 172, 173, 174, 176, 182, 203, 219, 247, 262, 271], "suffici": [1, 6, 49, 52, 97, 98, 117, 131, 133, 152], "transpar": [1, 12, 42, 99, 136, 162, 206, 220], "understood": [1, 4, 113], "without": [1, 4, 5, 6, 8, 9, 10, 14, 17, 20, 23, 32, 42, 49, 53, 55, 60, 73, 78, 97, 98, 107, 112, 113, 116, 123, 124, 125, 128, 129, 135, 137, 138, 141, 143, 145, 146, 147, 152, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 168, 171, 176, 177, 189, 191, 192, 193, 194, 199, 200, 201, 203, 208, 209, 211, 215, 220, 227, 228, 230, 234, 237, 239, 244, 247, 251, 252, 258, 260, 262, 269, 271], "understand": [1, 2, 4, 6, 15, 23, 43, 44, 52, 57, 58, 59, 82, 85, 91, 98, 99, 101, 108, 117, 121, 125, 126, 127, 128, 130, 135, 137, 141, 143, 144, 149, 157, 165, 171, 173, 174, 176, 190, 195, 199, 200, 208, 215, 226, 229, 245, 249, 254], "class": [1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 19, 20, 21, 23, 24, 25, 33, 34, 37, 38, 42, 44, 45, 47, 49, 52, 53, 58, 59, 60, 64, 65, 67, 73, 75, 76, 78, 79, 83, 85, 87, 89, 90, 92, 93, 94, 96, 98, 99, 100, 102, 103, 104, 105, 108, 109, 110, 111, 112, 115, 117, 118, 119, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 149, 150, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 189, 190, 191, 193, 194, 195, 197, 198, 199, 200, 202, 203, 208, 209, 212, 213, 214, 215, 216, 218, 219, 221, 223, 226, 229, 233, 234, 237, 239, 240, 241, 242, 243, 244, 248, 249, 250, 252, 261, 262, 263, 270, 271, 272], "sota": [1, 75, 113, 119], "implement": [1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 17, 20, 24, 42, 43, 45, 47, 49, 51, 55, 57, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 76, 79, 85, 103, 108, 111, 115, 120, 121, 124, 125, 126, 127, 130, 133, 134, 135, 136, 138, 139, 141, 144, 145, 146, 147, 149, 150, 154, 156, 159, 160, 163, 168, 173, 174, 178, 179, 186, 190, 192, 193, 194, 196, 197, 200, 201, 204, 206, 207, 208, 216, 219, 220, 221, 222, 224, 231, 237, 244, 247, 253, 254, 257, 261, 270], "rather": [1, 13, 23, 25, 49, 52, 69, 73, 85, 97, 103, 112, 121, 128, 129, 143, 144, 149, 153, 154, 159, 171, 184, 188, 189, 207, 223, 234, 247], "high": [1, 2, 5, 6, 14, 15, 19, 23, 25, 42, 44, 49, 52, 53, 55, 57, 60, 82, 85, 99, 103, 105, 109, 112, 121, 122, 123, 124, 126, 127, 129, 135, 139, 146, 149, 159, 168, 169, 171, 176, 177, 186, 192, 195, 196, 197, 199, 212, 216, 234, 247, 252, 254, 256, 258, 260, 269], "level": [1, 2, 5, 6, 17, 19, 20, 23, 25, 44, 49, 53, 55, 57, 68, 79, 100, 105, 115, 122, 123, 124, 126, 127, 128, 131, 133, 135, 137, 141, 142, 143, 144, 147, 149, 164, 165, 168, 171, 173, 174, 176, 177, 182, 185, 195, 196, 197, 199, 201, 209, 212, 215, 216, 221, 223, 227, 234, 258, 266, 275], "illustr": [1, 19, 44, 47, 56, 116, 117, 124, 125, 126, 138, 160, 169, 171, 178, 191, 192, 195, 215, 226, 229, 230, 244, 247], "librari": [1, 3, 4, 5, 6, 8, 12, 14, 18, 20, 22, 23, 25, 42, 44, 50, 51, 57, 61, 75, 87, 107, 108, 113, 115, 118, 121, 126, 129, 130, 137, 139, 143, 155, 158, 159, 163, 168, 173, 174, 177, 194, 204, 206, 207, 215, 219, 220, 222, 223, 226, 227, 228, 249, 251], "featur": [1, 4, 6, 10, 11, 12, 14, 17, 19, 22, 23, 34, 49, 50, 51, 52, 58, 59, 60, 61, 82, 83, 85, 90, 94, 95, 97, 98, 103, 108, 113, 121, 123, 125, 136, 137, 144, 145, 146, 149, 152, 155, 158, 159, 163, 164, 169, 172, 173, 174, 175, 176, 177, 178, 185, 186, 187, 188, 192, 193, 196, 199, 201, 204, 205, 206, 207, 208, 212, 216, 219, 226, 229, 234, 237, 244, 247, 251, 252, 254], "context": [1, 2, 5, 8, 14, 16, 17, 43, 49, 60, 61, 64, 73, 103, 109, 111, 120, 124, 134, 141, 153, 159, 162, 163, 164, 165, 168, 177, 186, 199, 201, 206, 208, 212, 230, 232, 237, 239, 247], "bash": [1, 18, 20, 146, 160, 226], "pip3": [1, 18, 50, 122, 136, 159, 160, 168, 175, 184, 187, 188], "mujoco": [1, 136, 159], "glfw": 1, "tqdm": [1, 14, 17, 122, 136, 137, 159, 185, 201], "avail": [1, 2, 3, 5, 6, 10, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 40, 42, 43, 44, 48, 50, 51, 52, 53, 58, 59, 73, 80, 87, 97, 101, 105, 113, 115, 119, 122, 125, 135, 136, 139, 141, 146, 147, 156, 157, 158, 159, 160, 163, 164, 165, 168, 171, 175, 176, 177, 178, 181, 182, 187, 188, 196, 197, 198, 199, 201, 205, 212, 213, 214, 220, 222, 223, 224, 225, 226, 227, 228, 229, 232, 247, 255, 256, 260, 269], "is_fork": [1, 136, 159], "multiprocess": [1, 6, 7, 11, 14, 34, 51, 53, 55, 56, 110, 122, 123, 133, 134, 135, 136, 159, 162, 163, 212, 214, 216, 258], "get_start_method": [1, 136, 159], "fork": [1, 21, 136, 159, 160], "is_avail": [1, 5, 6, 12, 20, 33, 38, 40, 42, 44, 45, 48, 49, 52, 63, 73, 80, 87, 89, 95, 97, 104, 110, 111, 115, 117, 118, 129, 136, 146, 147, 155, 156, 157, 159, 160, 162, 164, 165, 166, 172, 178, 193, 230], "els": [1, 4, 5, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 23, 25, 33, 38, 42, 44, 45, 47, 49, 51, 52, 58, 59, 60, 63, 73, 87, 94, 95, 96, 97, 103, 104, 105, 108, 110, 111, 115, 116, 117, 118, 122, 127, 128, 129, 134, 135, 136, 137, 142, 146, 147, 150, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 178, 181, 182, 185, 186, 193, 195, 197, 198, 201, 208, 209, 212, 215, 216, 218, 222, 230, 231, 244, 246, 252, 254, 255, 256, 258, 262, 263, 271, 272], "cpu": [1, 3, 5, 6, 8, 9, 10, 11, 12, 14, 15, 18, 19, 20, 23, 33, 38, 42, 43, 44, 45, 48, 49, 52, 60, 63, 64, 72, 73, 80, 82, 83, 87, 89, 90, 95, 97, 99, 104, 105, 108, 109, 110, 111, 115, 117, 118, 121, 123, 124, 129, 133, 134, 135, 136, 137, 146, 147, 150, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 171, 175, 178, 181, 182, 185, 186, 187, 188, 193, 194, 195, 197, 198, 199, 202, 206, 212, 216, 219, 223, 226, 229, 230, 232, 234, 237, 238, 240, 244, 251, 252, 253], "collector_devic": 1, "chang": [1, 2, 5, 6, 10, 11, 12, 14, 19, 21, 22, 23, 24, 40, 43, 48, 50, 51, 52, 53, 55, 58, 59, 61, 76, 78, 79, 80, 82, 83, 85, 87, 95, 97, 98, 100, 101, 102, 105, 108, 112, 116, 121, 123, 124, 126, 131, 132, 135, 136, 137, 139, 141, 144, 145, 146, 149, 152, 153, 155, 156, 157, 161, 168, 171, 172, 173, 174, 177, 181, 182, 184, 186, 187, 188, 191, 193, 197, 198, 200, 204, 206, 207, 208, 211, 212, 214, 216, 220, 221, 222, 229, 230, 234, 235, 244, 245, 247, 252, 253, 255, 260, 269], "seri": [1, 6, 15, 23, 52, 53, 54, 55, 56, 82, 91, 120, 121, 127, 128, 131, 132, 139, 143, 156, 159, 191, 219], "reusabl": [1, 6, 25], "swappabl": 1, "signatur": [1, 5, 8, 10, 14, 15, 23, 108, 135, 153, 162, 173, 174, 252], "characterist": [1, 14, 43, 143, 145, 146, 158, 164], "copi": [1, 5, 6, 12, 18, 22, 23, 44, 45, 50, 55, 58, 61, 73, 82, 97, 109, 110, 112, 114, 117, 123, 125, 129, 133, 135, 136, 137, 138, 141, 142, 143, 146, 149, 153, 157, 162, 168, 171, 181, 182, 183, 188, 194, 198, 199, 204, 206, 208, 212, 213, 218, 219, 234, 237, 247, 257, 263, 272], "loss_modul": [1, 159], "whatev": [1, 8, 22, 23, 99, 101, 112, 195, 226], "convent": [1, 14, 52, 60, 112, 126, 136, 171, 216], "receiv": [1, 4, 6, 14, 16, 55, 64, 87, 101, 111, 135, 159, 161, 162, 163, 172, 230, 247], "necessari": [1, 4, 5, 6, 7, 8, 10, 12, 15, 16, 18, 19, 23, 24, 44, 52, 53, 55, 60, 85, 87, 98, 112, 113, 122, 123, 124, 129, 133, 146, 149, 159, 161, 162, 163, 168, 173, 174, 177, 179, 182, 185, 191, 193, 195, 197, 198, 199, 230, 247, 249], "return": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 33, 34, 37, 38, 40, 44, 45, 47, 49, 51, 52, 59, 60, 64, 65, 67, 68, 73, 75, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 96, 97, 98, 99, 101, 102, 103, 104, 105, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 122, 123, 124, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 189, 191, 193, 194, 195, 197, 198, 199, 200, 201, 203, 205, 206, 208, 209, 210, 212, 213, 214, 215, 218, 219, 220, 221, 222, 223, 226, 229, 230, 231, 233, 234, 237, 239, 240, 241, 242, 243, 244, 246, 247, 248, 249, 250, 252, 254, 255, 256, 257], "replay_buff": [1, 159], "sampl": [1, 6, 8, 44, 47, 48, 49, 51, 52, 55, 60, 61, 75, 78, 79, 87, 92, 97, 99, 105, 110, 115, 116, 117, 118, 121, 123, 127, 129, 135, 136, 137, 139, 145, 146, 152, 153, 157, 159, 160, 161, 163, 171, 173, 174, 178, 182, 185, 193, 194, 197, 199, 205, 209, 210, 225, 229, 247, 262, 271], "loss_dict": 1, "instanc": [1, 4, 5, 6, 7, 11, 12, 14, 21, 22, 23, 25, 45, 53, 54, 55, 58, 59, 60, 78, 82, 87, 97, 98, 99, 102, 103, 122, 123, 125, 126, 131, 132, 133, 134, 136, 144, 146, 157, 159, 161, 162, 163, 165, 172, 182, 183, 197, 199, 200, 202, 219, 220, 226, 230, 234, 245, 247, 252, 256, 257, 258], "written": [1, 4, 5, 6, 8, 10, 14, 22, 23, 25, 85, 100, 130, 136, 143, 150, 153, 154, 157, 164, 168, 171, 184, 189, 213, 220, 245, 254], "under": [1, 4, 5, 8, 14, 18, 19, 23, 47, 49, 50, 52, 54, 56, 97, 99, 109, 113, 115, 124, 125, 135, 137, 139, 145, 146, 153, 156, 163, 168, 169, 177, 178, 179, 187, 188, 190, 192, 204, 212, 214, 216, 221, 222, 225, 226, 230, 262, 271], "loss_": 1, "smth": 1, "where": [1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 24, 32, 47, 49, 51, 60, 61, 64, 68, 75, 78, 79, 83, 85, 87, 97, 98, 99, 101, 102, 103, 110, 113, 122, 124, 126, 127, 128, 130, 132, 133, 134, 135, 137, 138, 139, 141, 144, 147, 149, 150, 152, 153, 154, 158, 159, 160, 161, 162, 163, 164, 165, 169, 172, 174, 175, 177, 178, 179, 182, 184, 187, 189, 192, 193, 194, 195, 200, 201, 204, 208, 213, 215, 216, 226, 228, 230, 244, 245, 263, 272], "string": [1, 8, 15, 22, 23, 49, 51, 58, 59, 60, 65, 67, 105, 111, 115, 116, 118, 126, 127, 128, 136, 139, 156, 159, 165, 171, 182, 208, 209, 226, 257, 260, 269], "describ": [1, 4, 5, 6, 8, 10, 14, 15, 16, 19, 20, 21, 22, 23, 48, 49, 52, 58, 59, 61, 73, 97, 105, 114, 120, 135, 150, 159, 160, 163, 168, 171, 173, 174, 176, 196, 197, 198, 202, 215, 234, 252], "addit": [1, 2, 5, 7, 8, 11, 15, 17, 19, 50, 60, 73, 75, 97, 102, 105, 108, 109, 113, 122, 124, 125, 133, 135, 137, 138, 139, 142, 144, 147, 149, 156, 161, 162, 165, 169, 172, 173, 174, 176, 185, 189, 190, 191, 192, 197, 200, 201, 206, 208, 216, 218, 219, 220, 247, 254], "kei": [1, 6, 8, 11, 14, 15, 17, 49, 58, 75, 82, 90, 100, 103, 105, 109, 112, 114, 115, 116, 119, 122, 126, 136, 137, 139, 143, 146, 156, 158, 159, 160, 161, 164, 165, 168, 169, 171, 173, 174, 175, 177, 185, 193, 194, 195, 201, 209, 210, 211, 220, 234, 237, 245, 254, 262, 271], "mai": [1, 4, 5, 6, 8, 10, 11, 12, 14, 15, 17, 19, 21, 22, 23, 25, 42, 49, 50, 52, 58, 59, 60, 68, 73, 85, 95, 99, 112, 113, 116, 123, 124, 125, 126, 129, 130, 136, 137, 138, 139, 141, 143, 144, 145, 150, 152, 153, 158, 159, 162, 165, 168, 171, 172, 173, 174, 176, 177, 179, 181, 182, 185, 188, 191, 193, 197, 198, 199, 200, 201, 202, 207, 208, 210, 218, 228, 231, 234, 247, 252, 262, 263, 271, 272], "metric": [1, 17, 87, 97, 109, 122, 137, 146, 168, 171, 177, 178, 201, 221, 226, 245], "log": [1, 7, 14, 18, 49, 50, 52, 53, 58, 73, 97, 98, 99, 102, 103, 104, 118, 123, 126, 129, 132, 137, 148, 158, 159, 161, 163, 166, 168, 169, 171, 173, 174, 177, 185, 195, 208, 211, 221, 251, 255], "dure": [1, 3, 7, 8, 12, 14, 16, 18, 19, 25, 32, 37, 49, 52, 60, 61, 63, 64, 76, 78, 85, 97, 99, 103, 108, 111, 112, 113, 118, 121, 122, 123, 124, 125, 128, 129, 130, 131, 133, 136, 142, 143, 144, 149, 150, 153, 157, 158, 159, 160, 161, 163, 168, 172, 176, 177, 178, 185, 196, 198, 202, 206, 214, 216, 220, 223, 224, 225, 226, 228, 234, 244, 245, 252], "reason": [1, 5, 6, 8, 14, 15, 17, 23, 25, 52, 78, 82, 97, 99, 102, 112, 117, 125, 129, 135, 144, 149, 157, 159, 164, 165, 184, 191, 201, 214, 223, 235, 237, 251, 252], "independ": [1, 7, 23, 49, 60, 79, 103, 108, 110, 145, 146, 150, 162, 189], "user": [1, 3, 5, 14, 17, 18, 19, 22, 24, 25, 44, 49, 50, 60, 76, 79, 82, 83, 85, 97, 101, 108, 110, 113, 114, 115, 122, 124, 128, 133, 137, 139, 142, 143, 144, 147, 161, 163, 164, 165, 166, 168, 171, 173, 174, 175, 176, 177, 178, 179, 182, 185, 187, 189, 190, 191, 192, 195, 196, 197, 198, 199, 200, 201, 204, 207, 212, 215, 216, 220, 221, 226, 228, 251, 262, 263, 271, 272], "sum": [1, 2, 4, 5, 7, 11, 13, 14, 16, 18, 19, 21, 25, 37, 38, 40, 43, 44, 49, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 76, 78, 82, 87, 89, 92, 97, 98, 99, 101, 103, 104, 109, 111, 115, 117, 122, 123, 125, 127, 128, 129, 130, 135, 136, 145, 146, 150, 152, 153, 156, 157, 159, 160, 161, 162, 163, 166, 168, 172, 173, 174, 175, 182, 189, 190, 191, 192, 197, 198, 210, 211, 212, 214, 221, 231, 252, 258], "done": [1, 4, 5, 6, 8, 10, 14, 16, 17, 19, 20, 21, 22, 23, 25, 37, 38, 49, 54, 58, 59, 82, 85, 97, 98, 99, 108, 113, 115, 122, 123, 124, 125, 128, 129, 135, 136, 138, 143, 144, 146, 147, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 169, 171, 173, 174, 184, 185, 194, 201, 202, 208, 216, 220, 223, 234, 237, 247, 256, 257], "via": [1, 3, 5, 6, 7, 16, 17, 18, 20, 22, 23, 54, 55, 58, 59, 73, 85, 97, 121, 122, 123, 124, 126, 135, 136, 139, 145, 153, 158, 159, 164, 169, 171, 172, 176, 177, 178, 188, 191, 201, 212, 213, 215, 216, 219, 220, 221, 226, 237, 244, 245, 260, 266, 269, 275], "loss_val": [1, 136, 159], "item": [1, 2, 6, 7, 9, 10, 11, 12, 14, 15, 34, 37, 38, 40, 44, 49, 52, 60, 63, 64, 65, 67, 68, 69, 72, 73, 87, 90, 92, 94, 95, 96, 97, 98, 101, 103, 104, 109, 111, 112, 114, 115, 117, 118, 119, 122, 123, 127, 128, 129, 135, 136, 137, 139, 141, 143, 146, 147, 157, 158, 159, 160, 161, 162, 163, 165, 166, 169, 171, 178, 179, 181, 193, 209, 213, 218, 221, 230, 234, 247, 250, 261, 263, 270, 272], "startswith": [1, 83, 147, 165, 246], "parent": [1, 14, 104, 115, 142, 146, 183, 185], "As": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 25, 43, 49, 50, 52, 58, 59, 60, 61, 73, 85, 87, 97, 103, 105, 108, 112, 116, 118, 122, 123, 124, 125, 126, 127, 133, 135, 136, 137, 141, 142, 143, 144, 145, 146, 149, 152, 153, 156, 157, 159, 160, 161, 162, 163, 164, 168, 171, 174, 175, 176, 177, 178, 179, 182, 184, 185, 187, 188, 192, 193, 195, 197, 200, 204, 207, 208, 212, 219, 221, 222, 226, 234, 237, 247, 254, 256, 258], "mani": [1, 2, 4, 5, 6, 10, 14, 15, 17, 18, 23, 25, 49, 51, 52, 60, 61, 65, 69, 73, 82, 97, 99, 100, 101, 104, 105, 107, 111, 113, 122, 124, 126, 127, 129, 135, 137, 138, 145, 147, 149, 150, 154, 157, 159, 161, 162, 165, 173, 174, 176, 177, 191, 194, 201, 204, 205, 220, 221, 229, 230, 247, 252, 260, 262, 263, 269, 271, 272], "expect": [1, 4, 5, 6, 10, 11, 14, 20, 22, 23, 32, 45, 47, 49, 51, 58, 59, 60, 61, 73, 85, 87, 97, 101, 102, 103, 112, 113, 117, 119, 126, 129, 133, 134, 136, 145, 146, 152, 153, 156, 158, 159, 160, 161, 162, 164, 171, 172, 173, 174, 176, 178, 179, 182, 187, 188, 194, 195, 197, 199, 200, 204, 205, 213, 220, 223, 226, 229, 230, 234, 244, 247, 258], "similar": [1, 3, 5, 8, 10, 11, 14, 15, 19, 22, 23, 48, 49, 58, 59, 61, 82, 83, 97, 98, 103, 108, 116, 124, 130, 134, 135, 136, 139, 143, 149, 153, 159, 161, 162, 163, 164, 165, 168, 169, 171, 176, 178, 179, 182, 185, 189, 190, 191, 192, 193, 198, 199, 213, 218, 219, 230, 234, 247, 258], "structur": [1, 4, 5, 6, 8, 9, 14, 18, 19, 20, 21, 22, 23, 33, 48, 49, 52, 53, 60, 61, 78, 85, 97, 98, 102, 105, 110, 112, 121, 131, 136, 138, 143, 146, 147, 149, 153, 154, 156, 159, 163, 169, 171, 172, 178, 192, 194, 196, 197, 205, 208, 234, 245, 260, 262, 266, 269, 271, 275], "make": [1, 4, 5, 6, 8, 10, 12, 14, 18, 19, 22, 23, 43, 44, 45, 47, 49, 50, 51, 53, 54, 55, 57, 58, 59, 60, 61, 68, 69, 73, 87, 97, 99, 100, 101, 102, 103, 108, 111, 112, 113, 114, 115, 117, 118, 121, 122, 123, 124, 126, 127, 128, 129, 133, 135, 136, 137, 139, 142, 143, 144, 145, 146, 149, 152, 153, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 169, 171, 172, 173, 174, 176, 178, 182, 184, 185, 188, 189, 190, 191, 192, 193, 194, 195, 197, 200, 205, 212, 213, 214, 215, 216, 218, 219, 220, 223, 227, 228, 229, 230, 234, 237, 239, 245, 247, 251, 252, 254, 256, 262, 264, 271, 273], "possibl": [1, 2, 4, 5, 6, 8, 10, 14, 15, 17, 22, 23, 52, 60, 61, 75, 98, 101, 108, 119, 125, 129, 130, 136, 138, 141, 143, 145, 146, 149, 157, 158, 159, 161, 162, 165, 178, 182, 185, 187, 193, 197, 198, 199, 200, 201, 202, 204, 207, 216, 220, 221, 223, 230, 234, 237, 247, 252, 254, 262, 271], "across": [1, 5, 7, 8, 9, 11, 14, 16, 18, 20, 24, 49, 52, 54, 55, 56, 61, 82, 97, 105, 115, 120, 122, 123, 124, 131, 132, 133, 134, 135, 138, 146, 149, 156, 162, 163, 175, 176, 181, 211, 214, 215, 229, 235, 245, 247, 258, 260, 269], "modal": [1, 60, 229], "complex": [1, 6, 23, 25, 50, 61, 67, 68, 97, 105, 112, 120, 123, 133, 150, 153, 161, 163, 169, 193, 203, 209, 234, 239, 254], "multipl": [1, 5, 8, 10, 11, 14, 16, 17, 18, 19, 20, 23, 40, 45, 48, 49, 53, 54, 55, 56, 61, 65, 78, 79, 81, 82, 87, 97, 101, 110, 120, 123, 124, 125, 126, 127, 128, 133, 134, 135, 138, 139, 143, 144, 146, 149, 158, 159, 161, 162, 163, 165, 168, 169, 171, 173, 174, 175, 176, 177, 182, 184, 193, 199, 200, 201, 207, 213, 214, 219, 230, 235, 247, 250, 262, 263, 271, 272], "entri": [1, 4, 11, 14, 23, 53, 75, 98, 101, 103, 109, 110, 112, 115, 131, 136, 143, 144, 156, 159, 161, 164, 168, 173, 174, 191, 192, 193, 195, 212], "word": [1, 6, 7, 10, 11, 14, 42, 44, 49, 60, 73, 79, 82, 97, 98, 100, 102, 112, 115, 116, 118, 121, 127, 128, 135, 137, 143, 152, 153, 156, 163, 165, 176, 181, 190, 192, 193, 195, 199, 234, 262, 271], "oblivi": [1, 159], "type": [1, 4, 5, 6, 8, 9, 10, 14, 18, 19, 20, 21, 22, 23, 37, 38, 40, 42, 48, 49, 50, 51, 52, 60, 61, 73, 78, 80, 82, 85, 95, 101, 105, 108, 113, 118, 120, 122, 123, 124, 126, 134, 137, 138, 139, 142, 143, 144, 147, 148, 154, 155, 156, 159, 161, 162, 163, 164, 168, 171, 172, 173, 174, 175, 177, 179, 181, 185, 187, 189, 194, 197, 199, 200, 202, 204, 207, 208, 209, 212, 213, 214, 216, 220, 221, 222, 223, 226, 228, 229, 244, 245, 247, 253, 257, 262, 271], "being": [1, 3, 4, 5, 6, 10, 12, 14, 17, 20, 21, 23, 42, 47, 49, 52, 58, 59, 60, 76, 80, 82, 97, 98, 99, 101, 103, 105, 110, 113, 117, 122, 124, 126, 129, 135, 136, 142, 153, 156, 159, 160, 162, 177, 185, 188, 190, 191, 193, 195, 199, 201, 202, 220, 237, 247], "run": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 51, 52, 56, 57, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 76, 78, 79, 80, 82, 87, 89, 90, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 172, 173, 175, 176, 177, 178, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 214, 215, 216, 218, 219, 220, 222, 223, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 248, 249, 250, 251, 252, 254, 255, 262, 271], "elementari": [1, 2, 234], "those": [1, 4, 5, 6, 10, 11, 14, 17, 42, 43, 61, 79, 87, 98, 103, 113, 115, 116, 124, 125, 127, 135, 138, 143, 152, 153, 155, 156, 163, 165, 169, 171, 173, 174, 177, 182, 184, 188, 190, 201, 202, 204, 205, 206, 207, 221, 223, 226, 230, 262, 271], "keep": [1, 6, 7, 10, 11, 14, 23, 43, 49, 51, 52, 60, 61, 73, 82, 85, 95, 97, 99, 101, 102, 108, 112, 116, 119, 121, 122, 123, 124, 125, 127, 128, 132, 133, 136, 142, 144, 150, 157, 159, 163, 165, 177, 181, 182, 197, 208, 218, 247, 257, 258], "didact": [1, 135], "displai": [1, 2, 5, 6, 12, 14, 34, 44, 52, 58, 75, 108, 109, 117, 129, 139, 157, 160, 165, 168, 212, 230, 245, 257, 260, 269], "each": [1, 2, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 21, 23, 24, 25, 34, 43, 44, 45, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 61, 65, 68, 73, 75, 76, 79, 82, 83, 85, 87, 97, 98, 99, 102, 103, 107, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 138, 141, 142, 143, 145, 146, 147, 149, 150, 152, 153, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 173, 174, 175, 176, 177, 178, 185, 186, 189, 192, 193, 195, 197, 198, 200, 201, 208, 209, 211, 212, 215, 216, 220, 221, 226, 229, 230, 231, 234, 237, 239, 244, 245, 247, 252, 255, 257, 258, 260, 262, 269, 271], "popul": [1, 14, 22, 43, 49, 58, 59, 87, 122, 136, 146, 159, 161, 211, 216], "later": [1, 3, 4, 5, 6, 11, 23, 47, 49, 52, 60, 73, 78, 87, 97, 101, 102, 112, 113, 123, 124, 127, 128, 129, 130, 134, 135, 138, 141, 142, 143, 144, 145, 146, 150, 154, 159, 160, 163, 164, 165, 169, 171, 173, 174, 182, 189, 197, 198, 210, 211, 223, 226, 228, 230, 232, 237, 244, 247, 254, 255], "stage": [1, 7, 14, 16, 148, 186, 188, 206, 212], "start": [1, 4, 5, 6, 9, 11, 14, 16, 17, 18, 19, 23, 24, 25, 43, 44, 49, 50, 52, 53, 54, 55, 59, 60, 61, 73, 87, 97, 98, 100, 101, 105, 113, 116, 120, 121, 122, 124, 125, 126, 127, 128, 129, 134, 135, 137, 139, 143, 144, 145, 146, 148, 149, 152, 153, 157, 158, 160, 161, 162, 165, 168, 169, 171, 172, 173, 176, 177, 178, 182, 184, 185, 187, 191, 195, 197, 198, 199, 200, 201, 203, 208, 212, 213, 216, 219, 223, 226, 234, 239, 245, 247, 251, 254, 258, 263, 272], "solv": [1, 6, 14, 49, 51, 97, 103, 117, 118, 149, 153, 157, 159, 161, 163, 176, 191, 237, 247], "task": [1, 6, 7, 13, 14, 17, 21, 24, 49, 58, 59, 60, 75, 97, 98, 103, 109, 113, 116, 117, 118, 119, 120, 121, 123, 136, 137, 153, 157, 159, 160, 165, 166, 171, 178, 185, 201, 204, 208, 247], "strategi": [1, 5, 17, 18, 24, 52, 82, 113, 121, 128, 135, 144, 145, 149, 154, 161, 162, 201, 207, 215, 216, 221], "predict": [1, 9, 17, 19, 20, 33, 37, 38, 43, 44, 49, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 87, 89, 90, 92, 97, 98, 102, 103, 104, 111, 113, 115, 116, 118, 121, 124, 126, 127, 128, 137, 138, 145, 146, 149, 154, 160, 165, 169, 178, 181, 182, 197, 198, 201, 213, 219, 229, 251, 256, 257], "henc": [1, 14, 17, 43, 48, 61, 78, 80, 82, 113, 123, 125, 133, 134, 147, 149, 150, 155, 159, 161, 163, 176, 201, 219, 220], "two": [1, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 25, 40, 42, 43, 48, 49, 50, 52, 57, 58, 59, 60, 73, 75, 83, 85, 87, 92, 95, 97, 98, 99, 101, 102, 103, 105, 107, 108, 109, 116, 117, 119, 122, 123, 126, 127, 129, 130, 132, 133, 134, 135, 136, 139, 141, 143, 144, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 159, 160, 161, 163, 164, 165, 171, 175, 176, 177, 178, 179, 183, 184, 186, 190, 192, 193, 195, 197, 198, 199, 200, 201, 202, 203, 207, 212, 215, 216, 219, 221, 224, 225, 226, 229, 234, 237, 244, 247, 252, 256, 258, 262, 263, 267, 271, 272, 276], "constructor": [1, 6, 10, 11, 12, 21, 22, 23, 25, 60, 65, 67, 69, 78, 85, 111, 116, 122, 123, 133, 134, 143, 155, 156, 159, 161, 163, 192, 202, 230, 252], "both": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 42, 49, 51, 52, 58, 59, 60, 61, 73, 82, 85, 97, 103, 109, 113, 116, 118, 122, 124, 126, 127, 129, 132, 133, 134, 135, 141, 142, 144, 145, 147, 149, 150, 156, 157, 159, 161, 162, 163, 164, 165, 173, 174, 175, 176, 177, 178, 179, 182, 184, 185, 186, 189, 192, 194, 195, 197, 199, 200, 209, 212, 215, 219, 220, 221, 223, 226, 228, 229, 230, 231, 244, 256, 260, 262, 269, 271], "compat": [1, 4, 5, 6, 8, 11, 17, 50, 60, 94, 95, 101, 136, 147, 164, 173, 174, 182, 187, 202, 204, 216, 222, 256], "comput": [1, 3, 5, 6, 8, 11, 12, 13, 16, 17, 19, 20, 21, 23, 24, 25, 32, 37, 38, 40, 44, 47, 48, 49, 52, 53, 57, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 83, 85, 95, 97, 98, 99, 100, 102, 105, 107, 110, 111, 115, 117, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 135, 136, 137, 139, 141, 142, 143, 144, 146, 148, 149, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 168, 171, 172, 173, 174, 176, 177, 178, 182, 184, 187, 188, 193, 194, 195, 196, 197, 198, 199, 201, 202, 205, 206, 207, 208, 210, 211, 216, 219, 223, 228, 230, 231, 234, 237, 239, 254, 256, 262, 271], "fit": [1, 6, 7, 9, 10, 11, 12, 20, 24, 61, 87, 103, 122, 123, 124, 133, 148, 149, 163, 181, 230, 262, 271], "crucial": [1, 2, 12, 14, 23, 82, 101, 136, 159, 223], "convert_to_funct": 1, "extract": [1, 5, 20, 49, 52, 58, 59, 73, 97, 116, 117, 127, 128, 137, 141, 144, 154, 157, 159, 165, 172, 173, 174, 178, 208, 212, 213, 216], "convert": [1, 5, 9, 10, 12, 14, 19, 20, 22, 23, 44, 49, 51, 52, 55, 73, 75, 95, 97, 105, 107, 110, 112, 113, 115, 116, 118, 119, 121, 127, 128, 137, 139, 157, 158, 159, 160, 161, 162, 166, 169, 177, 178, 181, 183, 184, 185, 188, 189, 190, 192, 193, 196, 199, 200, 209, 213, 216, 218, 220, 223, 224, 225, 227, 228, 229, 234, 244, 247, 251, 252], "strictli": [1, 159], "speak": [1, 8, 43, 125, 135, 149, 247], "perfectli": [1, 14, 65, 78, 111], "encourag": [1, 6, 19, 139, 160, 165, 171], "usag": [1, 3, 4, 11, 13, 15, 21, 23, 37, 60, 82, 109, 116, 121, 123, 125, 135, 136, 144, 145, 159, 161, 163, 164, 168, 177, 184, 185, 188, 193, 194, 195, 199, 207, 220, 226, 230, 245, 247, 251, 256, 262, 271], "doe": [1, 2, 5, 6, 8, 13, 14, 15, 19, 22, 23, 25, 43, 47, 60, 61, 73, 79, 80, 85, 97, 98, 99, 101, 103, 105, 108, 112, 113, 117, 122, 123, 130, 133, 134, 135, 136, 139, 142, 145, 146, 147, 149, 152, 153, 158, 159, 160, 162, 163, 164, 165, 168, 169, 172, 173, 174, 176, 178, 182, 183, 184, 190, 191, 192, 197, 199, 202, 203, 205, 208, 216, 223, 225, 226, 228, 230, 231, 234, 237, 244, 247, 262, 271], "often": [1, 4, 5, 6, 10, 14, 17, 49, 73, 87, 97, 99, 101, 103, 112, 113, 124, 125, 126, 128, 146, 153, 177, 193, 201, 203, 210, 216, 230, 247, 262, 271], "same": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17, 19, 20, 21, 22, 23, 25, 32, 40, 43, 44, 47, 49, 51, 52, 53, 55, 58, 59, 60, 65, 73, 78, 80, 85, 87, 95, 97, 98, 99, 101, 102, 103, 105, 108, 109, 111, 112, 118, 119, 122, 123, 124, 125, 127, 129, 132, 133, 135, 137, 138, 139, 141, 144, 145, 146, 147, 149, 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 179, 181, 182, 185, 186, 189, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 208, 213, 214, 218, 222, 223, 228, 230, 231, 234, 244, 247, 252, 256, 258, 260, 262, 269, 271], "usual": [1, 5, 6, 8, 19, 23, 43, 58, 59, 60, 61, 99, 100, 102, 103, 113, 117, 124, 125, 128, 129, 130, 133, 135, 136, 144, 147, 152, 156, 157, 159, 166, 195, 205, 230, 237, 247, 260, 269], "former": [1, 5, 61, 79, 127, 128, 165], "lag": [1, 159], "absolut": [1, 6, 7, 10, 82, 99, 126, 156, 160, 208, 234], "dilut": 1, "averag": [1, 3, 19, 49, 52, 61, 82, 87, 97, 113, 115, 123, 127, 128, 129, 135, 137, 143, 146, 154, 159, 160, 163, 165, 166, 168, 176, 177, 182, 197, 198, 247], "associ": [1, 5, 6, 8, 10, 17, 50, 82, 130, 141, 142, 156, 164, 171, 190, 201, 202, 244, 247], "One": [1, 2, 4, 5, 6, 7, 10, 11, 15, 21, 23, 49, 51, 60, 61, 73, 79, 82, 97, 98, 99, 101, 122, 123, 124, 125, 128, 133, 135, 137, 138, 142, 143, 149, 152, 153, 166, 169, 172, 177, 178, 191, 195, 200, 205, 209, 221, 223, 239, 244, 247, 262, 263, 271, 272], "advantag": [1, 3, 6, 14, 17, 23, 49, 60, 85, 95, 98, 107, 120, 122, 125, 135, 136, 153, 159, 172, 177, 182, 185, 192, 201, 209, 220, 222, 226, 234, 247, 257], "match": [1, 4, 5, 10, 14, 17, 19, 20, 22, 49, 51, 58, 59, 60, 61, 68, 75, 76, 92, 97, 105, 108, 111, 112, 113, 134, 137, 138, 142, 144, 147, 149, 152, 154, 159, 162, 172, 173, 174, 182, 185, 190, 192, 195, 197, 201, 219, 220, 230, 239], "exactli": [1, 5, 7, 8, 10, 12, 17, 25, 43, 51, 52, 60, 78, 80, 101, 103, 105, 136, 144, 153, 174, 185, 201], "configur": [1, 4, 5, 6, 14, 18, 19, 20, 22, 23, 24, 42, 49, 50, 60, 61, 82, 113, 122, 124, 131, 133, 142, 144, 149, 152, 157, 159, 162, 168, 171, 176, 183, 184, 199, 200, 208, 212, 219, 220, 221, 225, 254, 266, 275], "pessimist": [1, 159], "bound": [1, 23, 49, 112, 126, 144, 159, 160, 168, 173, 174, 176, 178, 184, 230, 247], "pai": [1, 10, 45, 49, 60, 115], "attent": [1, 7, 10, 42, 45, 49, 115, 118, 119, 121, 124, 136, 166, 184, 185, 193, 252, 254], "create_target_param": 1, "keyword": [1, 5, 156, 159, 171, 237, 244], "argument": [1, 2, 4, 5, 6, 8, 14, 21, 22, 23, 32, 43, 44, 48, 51, 55, 60, 69, 76, 78, 82, 89, 97, 99, 102, 103, 109, 111, 112, 115, 122, 123, 126, 127, 128, 132, 133, 135, 136, 138, 144, 145, 154, 155, 156, 159, 161, 162, 163, 164, 168, 171, 172, 173, 174, 179, 188, 191, 194, 199, 205, 206, 208, 209, 212, 222, 223, 230, 237, 244, 245, 247, 254, 262, 263, 271, 272], "below": [1, 2, 4, 6, 10, 11, 12, 14, 16, 17, 18, 19, 20, 23, 24, 34, 43, 45, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 79, 82, 85, 97, 98, 99, 101, 102, 103, 105, 107, 108, 113, 114, 116, 118, 119, 124, 126, 129, 131, 132, 133, 134, 135, 136, 137, 141, 144, 147, 149, 152, 155, 157, 159, 160, 161, 162, 163, 164, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 184, 185, 186, 188, 190, 191, 192, 193, 195, 202, 203, 204, 211, 212, 213, 214, 216, 218, 219, 221, 222, 223, 225, 226, 228, 230, 234, 237, 247, 252, 253, 258, 262, 271], "tell": [1, 18, 23, 42, 69, 87, 103, 111, 126, 127, 136, 138, 141, 152, 160, 161, 163, 165, 175, 187, 188, 209, 262, 271], "fals": [1, 2, 6, 7, 10, 11, 12, 14, 19, 20, 23, 24, 34, 37, 38, 42, 43, 44, 49, 52, 55, 59, 60, 63, 64, 73, 82, 83, 87, 89, 92, 94, 96, 97, 101, 110, 111, 112, 115, 116, 117, 119, 122, 123, 124, 125, 126, 129, 134, 137, 141, 143, 144, 146, 147, 148, 150, 152, 153, 157, 158, 159, 160, 161, 162, 164, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 184, 185, 186, 190, 191, 192, 194, 195, 197, 198, 200, 201, 206, 208, 210, 211, 218, 219, 220, 221, 223, 228, 230, 232, 244, 246, 247, 248, 250, 252, 253, 258, 260, 261, 262, 263, 269, 270, 271, 272], "target_actor_network_param": 1, "attribut": [1, 6, 11, 14, 22, 25, 43, 47, 53, 60, 73, 76, 79, 82, 85, 90, 103, 108, 116, 125, 134, 136, 141, 147, 148, 153, 156, 173, 174, 176, 182, 185, 193, 194, 196, 199, 203, 207, 230, 251, 262, 271], "access": [1, 5, 6, 7, 10, 12, 14, 17, 19, 23, 50, 60, 68, 73, 78, 79, 87, 97, 102, 111, 112, 118, 119, 122, 125, 131, 135, 142, 153, 158, 160, 162, 171, 173, 174, 177, 185, 187, 189, 190, 192, 194, 201, 208, 209, 215, 218, 252, 260, 269], "detach": [1, 2, 6, 9, 11, 12, 13, 20, 32, 52, 73, 89, 90, 95, 101, 105, 108, 137, 150, 154, 165, 181, 185, 229, 244], "def": [1, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 33, 34, 37, 38, 44, 45, 47, 49, 51, 52, 53, 55, 60, 64, 65, 67, 73, 75, 78, 79, 85, 87, 89, 90, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 111, 112, 113, 115, 116, 117, 118, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 189, 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, 205, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 221, 223, 226, 228, 230, 231, 233, 234, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 254, 255, 258, 262, 271], "_init": 1, "self": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 25, 33, 34, 37, 38, 44, 45, 47, 49, 51, 52, 53, 55, 60, 65, 67, 73, 78, 79, 85, 87, 89, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 111, 112, 115, 118, 123, 124, 125, 127, 128, 129, 133, 134, 135, 138, 142, 143, 144, 146, 148, 149, 150, 153, 154, 156, 160, 161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 185, 193, 194, 195, 197, 198, 199, 202, 203, 209, 212, 214, 215, 216, 218, 219, 221, 222, 223, 226, 228, 233, 234, 237, 238, 239, 240, 241, 242, 243, 244, 248, 249, 250, 252], "actor_network": [1, 159], "value_network": [1, 159], "none": [1, 7, 11, 12, 14, 15, 17, 18, 19, 20, 24, 34, 49, 51, 60, 63, 64, 76, 79, 87, 89, 90, 97, 104, 105, 108, 111, 113, 115, 117, 118, 119, 122, 123, 129, 134, 135, 137, 138, 141, 142, 144, 145, 146, 147, 148, 150, 152, 154, 157, 160, 162, 164, 165, 171, 173, 174, 175, 178, 179, 182, 185, 194, 201, 202, 207, 209, 213, 215, 216, 230, 244, 245, 252, 260, 262, 269, 271], "super": [1, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 25, 33, 37, 38, 44, 45, 47, 49, 52, 59, 60, 65, 67, 73, 78, 79, 85, 87, 89, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 109, 111, 112, 115, 118, 123, 125, 127, 128, 129, 133, 134, 138, 142, 143, 146, 148, 149, 150, 153, 154, 156, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 177, 179, 181, 193, 194, 195, 197, 198, 199, 202, 203, 208, 209, 212, 214, 215, 218, 219, 221, 222, 223, 226, 233, 234, 237, 239, 240, 241, 242, 243, 248, 249, 250], "true": [1, 2, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 23, 24, 32, 34, 37, 38, 41, 42, 43, 44, 45, 47, 49, 51, 52, 55, 58, 59, 60, 63, 64, 68, 73, 76, 82, 87, 89, 90, 92, 94, 95, 96, 97, 98, 101, 104, 108, 109, 110, 111, 113, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 129, 130, 133, 134, 135, 136, 137, 139, 141, 143, 144, 146, 147, 148, 149, 153, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 179, 182, 184, 185, 186, 187, 188, 190, 191, 192, 193, 194, 197, 198, 199, 200, 201, 203, 204, 205, 206, 208, 211, 212, 213, 214, 218, 220, 221, 222, 223, 224, 225, 228, 229, 230, 231, 234, 236, 238, 244, 250, 252, 253, 254, 255, 256, 257, 258, 260, 263, 269, 272], "compare_against": 1, "list": [1, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 24, 44, 47, 48, 49, 50, 52, 60, 61, 68, 73, 87, 90, 101, 102, 103, 105, 107, 108, 110, 111, 113, 115, 116, 118, 119, 125, 127, 128, 134, 135, 137, 142, 143, 147, 153, 154, 156, 157, 158, 159, 161, 162, 163, 165, 168, 169, 171, 172, 173, 174, 178, 183, 185, 186, 191, 193, 198, 200, 201, 204, 206, 208, 209, 212, 215, 216, 218, 222, 223, 227, 228, 229, 231, 234, 237, 251, 252, 266, 275], "actor_in_kei": 1, "in_kei": [1, 14, 136, 159], "sinc": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 16, 19, 20, 21, 23, 44, 49, 51, 52, 53, 60, 65, 73, 78, 85, 97, 98, 99, 101, 102, 103, 105, 111, 113, 115, 116, 117, 118, 119, 124, 126, 127, 128, 130, 131, 135, 136, 139, 142, 143, 148, 150, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 169, 171, 172, 175, 176, 178, 179, 182, 183, 184, 185, 187, 188, 189, 190, 191, 197, 198, 199, 200, 204, 207, 210, 212, 214, 223, 226, 230, 231, 237, 239, 258, 262, 271], "base": [1, 5, 6, 7, 9, 10, 11, 14, 16, 17, 18, 20, 23, 24, 25, 42, 44, 49, 52, 57, 58, 59, 60, 73, 75, 76, 78, 85, 87, 97, 99, 105, 109, 112, 115, 116, 119, 120, 121, 122, 123, 126, 127, 136, 137, 146, 155, 156, 160, 162, 165, 168, 169, 171, 174, 177, 178, 181, 182, 184, 185, 186, 191, 195, 196, 197, 198, 199, 200, 201, 212, 219, 223, 225, 230, 234, 244, 247, 251, 262, 271], "singl": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 20, 21, 22, 23, 43, 47, 51, 53, 54, 55, 56, 58, 59, 60, 61, 78, 85, 87, 97, 99, 113, 115, 121, 122, 123, 124, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 143, 145, 146, 150, 154, 159, 160, 161, 162, 163, 165, 168, 171, 172, 173, 174, 175, 179, 182, 184, 193, 197, 200, 201, 205, 213, 214, 218, 219, 223, 227, 234, 247, 251, 252, 262, 271], "critic": [1, 52, 73, 85, 132, 216, 223, 228], "actor_crit": 1, "actorcriticwrapp": 1, "loss_funct": [1, 99, 102, 103], "l2": [1, 87, 93, 156], "q": [1, 7, 17, 43, 49, 60, 121, 124, 146, 164, 171, 195, 197, 201, 234], "empir": [1, 150, 159], "bootstrap": [1, 136], "td": [1, 14, 52, 136], "varianc": [1, 6, 19, 159], "bia": [1, 2, 5, 6, 7, 9, 13, 19, 43, 47, 52, 68, 69, 93, 99, 104, 109, 111, 112, 115, 123, 129, 134, 136, 142, 145, 156, 159, 163, 164, 166, 173, 179, 181, 185, 193, 195, 198, 200, 201, 203, 218, 223, 244], "mean": [1, 2, 5, 6, 7, 10, 12, 14, 19, 23, 25, 42, 47, 49, 51, 52, 58, 59, 60, 68, 73, 76, 80, 82, 85, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104, 109, 111, 112, 115, 116, 117, 122, 124, 126, 127, 129, 135, 137, 139, 143, 146, 147, 149, 153, 157, 158, 159, 160, 162, 163, 164, 165, 166, 168, 169, 171, 173, 174, 182, 185, 187, 189, 190, 191, 193, 197, 198, 200, 204, 205, 206, 207, 210, 214, 228, 229, 231, 234, 237, 238, 247, 252], "obtain": [1, 9, 24, 49, 60, 68, 87, 111, 126, 129, 135, 137, 142, 145, 154, 159, 160, 162, 168, 171, 178], "reward": [1, 4, 14, 136, 146, 159, 160, 161, 163], "noth": [1, 16, 23, 42, 73, 113, 130, 149, 159, 163, 168, 179, 256], "mont": 1, "carlo": 1, "whole": [1, 3, 25, 44, 47, 60, 112, 113, 121, 135, 143, 156, 157, 159, 165, 182, 183, 185, 190, 200, 205, 208, 234], "sequenc": [1, 5, 6, 12, 21, 23, 48, 49, 60, 67, 68, 98, 100, 103, 111, 112, 113, 115, 116, 118, 136, 137, 153, 159, 164, 165, 173, 174, 175, 182, 184, 185, 193, 195, 205, 210, 211, 218, 223, 230, 234, 247, 252, 262, 271], "upcom": 1, "intermedi": [1, 17, 25, 74, 108, 112, 120, 121, 131, 134, 141, 144, 145, 146, 149, 152, 200, 201, 239, 256], "lambda": [1, 5, 7, 17, 20, 22, 49, 90, 104, 115, 116, 125, 143, 158, 160, 161, 172, 173, 174, 201, 205, 230, 231, 246, 254, 262, 271], "compromis": 1, "easi": [1, 2, 5, 6, 9, 23, 24, 44, 45, 51, 58, 59, 60, 61, 68, 80, 95, 97, 99, 122, 124, 126, 135, 142, 143, 145, 150, 153, 159, 168, 176, 183, 186, 195, 201, 205, 209, 220, 257], "valueestim": 1, "enum": 1, "pointer": [1, 5, 6, 22, 23, 98, 162], "defin": [1, 2, 5, 12, 14, 15, 16, 17, 18, 20, 21, 23, 25, 38, 43, 45, 52, 58, 59, 62, 65, 67, 68, 69, 73, 78, 79, 85, 87, 98, 99, 103, 105, 111, 112, 113, 116, 118, 121, 122, 123, 125, 127, 131, 135, 136, 138, 139, 142, 143, 146, 150, 152, 154, 160, 161, 162, 164, 166, 168, 169, 172, 173, 174, 183, 187, 189, 195, 199, 200, 201, 208, 209, 210, 216, 219, 220, 221, 228, 234, 235, 237, 244, 251, 258, 260, 269], "default": [1, 3, 5, 6, 8, 9, 10, 11, 12, 15, 19, 20, 21, 24, 43, 45, 49, 51, 52, 55, 60, 63, 64, 69, 75, 76, 78, 82, 95, 99, 101, 108, 111, 115, 116, 117, 118, 119, 121, 122, 123, 124, 129, 134, 135, 136, 138, 141, 142, 144, 147, 149, 152, 155, 157, 158, 159, 161, 162, 163, 164, 168, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 186, 188, 192, 193, 194, 195, 197, 198, 199, 200, 202, 206, 207, 208, 213, 214, 216, 219, 220, 223, 226, 228, 234, 235, 237, 244, 245, 247, 252, 253, 258, 260, 261, 262, 269, 270, 271], "simplest": [1, 6, 23, 47, 99, 136, 159, 165, 213, 247], "util": [1, 3, 5, 7, 10, 14, 15, 17, 19, 20, 22, 23, 24, 25, 33, 34, 37, 38, 44, 45, 49, 51, 52, 53, 55, 60, 73, 75, 82, 87, 92, 94, 96, 104, 109, 112, 113, 115, 116, 117, 118, 119, 121, 122, 123, 124, 126, 129, 134, 135, 137, 138, 141, 142, 144, 145, 147, 148, 153, 154, 155, 157, 158, 159, 162, 164, 165, 166, 168, 169, 171, 172, 176, 177, 178, 182, 184, 185, 188, 193, 194, 197, 198, 199, 200, 201, 202, 204, 206, 208, 209, 210, 216, 218, 220, 221, 222, 224, 225, 226, 229, 230, 236, 240, 245, 246, 250, 252, 253, 254], "default_value_estim": 1, "td0": 1, "instruct": [1, 6, 7, 19, 23, 24, 42, 108, 113, 115, 116, 118, 127, 128, 136, 137, 141, 156, 157, 159, 161, 163, 165, 176, 177, 182, 194, 197, 198, 199, 206, 207, 208, 213, 219, 220, 226, 229, 231, 234, 246, 247, 256], "queri": [1, 14, 22, 49, 60, 112, 118, 162, 164, 165, 178, 185, 193, 197, 200], "default_value_kwarg": 1, "td0estim": 1, "td1estim": 1, "tdlambdaestim": 1, "make_value_estim": 1, "value_typ": 1, "hyperparam": [1, 201], "hp": 1, "dict": [1, 18, 49, 51, 142, 143, 146, 147, 152, 153, 156, 159, 173, 174, 178, 195, 200, 209, 214, 216, 230, 237, 244], "hasattr": 1, "gamma": [1, 7, 115, 117, 122, 123, 129, 146, 157, 159, 160, 161, 163, 178], "value_kei": 1, "state_action_valu": [1, 160], "td1": 1, "_value_estim": 1, "elif": [1, 12, 16, 19, 49, 52, 60, 134, 137, 146, 147, 150, 156, 185, 216], "gae": [1, 159], "rais": [1, 8, 11, 12, 19, 49, 60, 73, 124, 125, 128, 144, 146, 147, 158, 159, 172, 173, 174, 204, 216, 244, 247], "notimplementederror": [1, 244], "f": [1, 5, 7, 8, 9, 11, 12, 14, 17, 18, 19, 22, 32, 33, 34, 37, 38, 40, 42, 43, 44, 47, 48, 49, 53, 55, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 87, 89, 90, 92, 93, 94, 96, 97, 99, 102, 103, 104, 105, 108, 110, 111, 112, 113, 116, 117, 118, 122, 123, 124, 125, 127, 129, 133, 134, 135, 136, 137, 138, 139, 144, 145, 146, 148, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 178, 181, 182, 184, 185, 186, 187, 188, 193, 195, 197, 198, 201, 204, 205, 210, 212, 213, 214, 215, 216, 219, 221, 226, 231, 233, 234, 237, 239, 240, 241, 242, 243, 244, 246, 248, 249, 250, 254, 255, 256, 257, 258, 262, 271], "tdlambda": 1, "unknown": [1, 49, 60, 75, 116, 213], "set_kei": 1, "central": [1, 8, 73, 102, 103, 131, 257], "quit": [1, 6, 17, 23, 49, 60, 73, 125, 135, 139, 149, 152, 159, 163, 189, 201, 208, 215], "weight": [1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 17, 19, 20, 24, 33, 39, 43, 44, 49, 60, 63, 64, 66, 67, 68, 69, 71, 72, 73, 78, 89, 90, 93, 97, 99, 100, 102, 103, 104, 110, 111, 112, 115, 117, 121, 123, 129, 131, 134, 136, 137, 138, 139, 142, 144, 145, 147, 152, 153, 154, 156, 157, 159, 160, 163, 165, 166, 168, 171, 173, 177, 178, 179, 181, 182, 183, 184, 185, 188, 197, 198, 199, 200, 201, 202, 203, 205, 216, 219, 221, 223, 228, 229, 232, 234, 244, 253, 256, 262, 271], "must": [1, 2, 4, 5, 6, 8, 10, 11, 12, 14, 22, 23, 42, 49, 52, 60, 61, 67, 73, 85, 98, 99, 103, 107, 108, 111, 112, 113, 122, 133, 135, 136, 138, 141, 157, 159, 162, 168, 171, 172, 173, 174, 179, 189, 190, 192, 193, 194, 198, 200, 202, 205, 212, 227, 237, 239, 241, 244, 254, 257, 262, 263, 271, 272], "sure": [1, 4, 5, 6, 8, 10, 11, 14, 19, 22, 51, 57, 58, 59, 60, 87, 97, 98, 99, 103, 108, 112, 113, 115, 118, 123, 124, 128, 133, 135, 136, 137, 139, 143, 149, 157, 159, 161, 171, 185, 188, 190, 192, 194, 200, 205, 212, 213, 220, 229, 230, 237, 245, 247, 254], "otherwis": [1, 8, 10, 12, 14, 17, 19, 23, 55, 82, 85, 112, 113, 123, 125, 130, 133, 136, 141, 144, 145, 147, 152, 159, 160, 162, 198, 201, 205, 206, 212, 230], "mix": [1, 8, 15, 60, 61, 109, 113, 147, 182, 199, 220, 221, 235, 251, 252], "hold_out_param": 1, "_loss_actor": 1, "tensor": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 21, 22, 23, 35, 37, 40, 41, 42, 43, 44, 45, 46, 47, 49, 51, 57, 58, 59, 60, 61, 62, 64, 65, 67, 68, 69, 70, 73, 75, 77, 78, 81, 85, 88, 89, 91, 92, 93, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 112, 115, 116, 117, 118, 121, 122, 123, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 141, 144, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 175, 176, 178, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 194, 195, 196, 197, 199, 201, 202, 203, 205, 206, 208, 209, 212, 213, 215, 216, 219, 220, 228, 229, 230, 231, 234, 235, 237, 239, 246, 250, 251, 254, 256], "td_copi": 1, "select": [1, 5, 10, 17, 23, 42, 50, 60, 80, 82, 87, 97, 105, 147, 156, 160, 161, 163, 168, 169, 182, 185, 191, 196, 197, 201, 206, 219, 238, 247, 254, 261, 264, 270, 273], "made": [1, 6, 10, 15, 19, 25, 51, 52, 87, 97, 98, 103, 113, 119, 122, 125, 135, 136, 165, 169, 171, 173, 174, 175, 177, 192, 196, 200, 224, 225, 228, 229, 234, 247, 262, 271], "pass": [1, 2, 3, 4, 6, 8, 10, 12, 13, 14, 15, 16, 19, 22, 23, 25, 43, 44, 49, 51, 52, 53, 56, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 82, 85, 87, 97, 98, 99, 101, 102, 103, 111, 112, 113, 115, 116, 118, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133, 134, 135, 136, 138, 141, 143, 146, 147, 149, 150, 153, 154, 156, 159, 160, 161, 162, 163, 165, 166, 168, 171, 172, 173, 174, 179, 183, 184, 185, 187, 189, 192, 193, 194, 195, 198, 200, 202, 211, 212, 213, 214, 216, 219, 222, 230, 237, 238, 239, 244, 247, 252, 258], "param": [1, 7, 14, 16, 19, 33, 43, 47, 51, 68, 85, 93, 99, 111, 112, 117, 122, 123, 130, 133, 135, 138, 141, 150, 154, 157, 162, 163, 178, 179, 189, 216, 231, 244, 247, 252, 257, 258], "actor_network_param": 1, "value_network_param": 1, "reli": [1, 3, 6, 8, 14, 23, 49, 103, 125, 146, 152, 156, 159, 191, 204, 207, 212, 247], "distance_loss": 1, "_loss_valu": 1, "v": [1, 2, 7, 9, 19, 24, 32, 37, 43, 49, 52, 53, 55, 60, 89, 101, 102, 103, 105, 108, 124, 137, 141, 147, 150, 154, 160, 162, 168, 178, 181, 183, 189, 192, 200, 205, 208, 209, 263, 272], "pred_val": 1, "squeez": [1, 9, 10, 12, 14, 34, 49, 60, 73, 90, 95, 110, 137, 146, 149, 150, 165, 169, 178, 184, 185, 229], "manual": [1, 5, 8, 12, 22, 23, 47, 49, 53, 63, 64, 69, 97, 111, 112, 130, 136, 138, 141, 153, 154, 157, 182, 183, 185, 193, 198, 207, 212, 215, 226, 230, 261, 262, 270, 271], "reconstruct": 1, "first": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 40, 42, 44, 45, 49, 50, 51, 52, 53, 55, 58, 59, 60, 61, 68, 69, 73, 76, 78, 79, 80, 82, 83, 85, 87, 97, 99, 101, 102, 103, 109, 111, 112, 113, 115, 116, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 149, 150, 152, 154, 155, 156, 157, 159, 160, 161, 162, 163, 165, 168, 171, 172, 173, 174, 175, 178, 179, 182, 184, 185, 187, 188, 189, 191, 192, 193, 194, 195, 197, 198, 200, 201, 203, 205, 208, 212, 213, 214, 215, 216, 218, 219, 221, 222, 223, 225, 230, 234, 237, 244, 247, 254, 262, 263, 271, 272], "belong": [1, 7, 127, 137, 213, 262, 271], "second": [1, 4, 5, 6, 7, 8, 9, 12, 13, 14, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 123, 125, 126, 127, 128, 129, 130, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 156, 159, 160, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 178, 181, 184, 185, 189, 190, 191, 192, 193, 195, 200, 203, 205, 211, 212, 218, 221, 223, 224, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 262, 271], "target_param": 1, "target_value_network_param": 1, "batch_siz": [1, 5, 6, 7, 14, 16, 17, 19, 20, 24, 34, 37, 38, 44, 45, 49, 51, 52, 55, 60, 73, 75, 78, 87, 89, 92, 94, 96, 97, 104, 110, 113, 115, 116, 117, 118, 122, 123, 124, 126, 129, 134, 135, 136, 137, 145, 146, 148, 149, 152, 154, 157, 159, 160, 161, 162, 164, 165, 166, 168, 169, 171, 175, 176, 177, 178, 182, 185, 193, 197, 198, 201, 205, 220, 221, 230, 234, 236, 250, 253], "target_valu": 1, "value_estim": 1, "l1": [1, 17, 87, 156, 177, 201], "smooth": [1, 6, 97, 171], "loss_valu": [1, 159], "td_error": 1, "pow": [1, 2, 5, 32, 63, 64, 68, 69, 72, 89, 111, 125, 189], "miss": [1, 51, 112, 113, 133, 136, 168, 172, 177, 190, 204, 222, 230, 262, 271], "glue": [1, 137, 163], "cost": [1, 5, 14, 49, 52, 97, 99, 109, 122, 123, 124, 125, 150, 168, 194, 223, 232, 247], "deliv": [1, 42, 177, 207, 220, 254], "tensordictbas": [1, 14], "_forward": 1, "input_tensordict": 1, "unsqueez": [1, 2, 7, 12, 14, 47, 49, 58, 59, 60, 68, 69, 78, 90, 94, 95, 104, 110, 111, 117, 118, 129, 136, 139, 146, 150, 154, 158, 160, 161, 163, 165, 169, 204, 206, 229], "ndimens": 1, "inplac": [1, 12, 19, 20, 52, 110, 123, 134, 157, 173, 174, 181, 195, 201, 218, 223, 228], "loss_actor": 1, "pred_valu": 1, "pred_value_max": 1, "max": [1, 10, 11, 17, 19, 44, 49, 52, 58, 59, 60, 73, 75, 82, 87, 92, 95, 97, 98, 104, 117, 118, 123, 126, 129, 135, 136, 137, 139, 146, 157, 159, 160, 164, 166, 169, 171, 173, 174, 178, 182, 184, 185, 193, 197, 198, 200, 201, 213, 230, 247, 258, 260, 269], "target_value_max": 1, "ddpgloss": 1, "most": [1, 2, 4, 5, 11, 14, 17, 22, 23, 25, 42, 43, 49, 51, 52, 58, 59, 60, 73, 75, 87, 99, 101, 102, 109, 112, 117, 120, 123, 124, 125, 126, 128, 129, 130, 135, 137, 142, 143, 144, 146, 147, 152, 157, 158, 159, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 176, 177, 182, 191, 192, 194, 195, 197, 198, 200, 201, 208, 213, 220, 221, 223, 229, 244, 247], "taken": [1, 6, 8, 14, 19, 22, 25, 60, 82, 83, 113, 119, 136, 139, 143, 152, 159, 160, 171, 184, 185, 234, 239, 262, 271], "condit": [1, 14, 49, 55, 65, 102, 111, 113, 115, 123, 135, 137, 153, 172, 173, 174, 202, 216, 262, 271], "remaind": [1, 7, 9, 134, 141, 181], "cheetah": 1, "goal": [1, 6, 14, 15, 44, 49, 52, 58, 61, 73, 85, 97, 125, 126, 135, 136, 143, 159, 161, 163, 176, 189, 221], "half": [1, 7, 8, 17, 95, 117, 147, 176, 177, 201, 230, 258, 262, 271], "dm_control": 1, "gym": [1, 14, 121, 136, 146, 159, 160, 161, 163], "env": [1, 18, 132, 135, 136, 146, 159, 160, 161, 163, 187, 194, 206, 208, 231, 246], "gymenv": [1, 136, 159], "halfcheetah": 1, "v4": [1, 159], "dmcontrolenv": 1, "By": [1, 8, 17, 19, 25, 43, 60, 63, 64, 76, 82, 87, 101, 103, 111, 113, 122, 124, 126, 135, 138, 141, 143, 144, 152, 156, 160, 168, 173, 174, 176, 177, 186, 190, 192, 193, 194, 201, 206, 213, 214, 226, 247, 252, 254, 260, 269], "disabl": [1, 9, 11, 15, 42, 122, 123, 146, 148, 150, 158, 162, 164, 168, 181, 184, 189, 190, 191, 192, 198, 204, 206, 214, 230, 252, 260, 261, 269, 270], "render": [1, 6, 58, 82, 90, 126, 146, 159, 260, 269], "easier": [1, 17, 18, 23, 24, 50, 51, 58, 98, 123, 126, 143, 144, 152, 161, 165, 169, 176, 184, 189, 192, 194, 200, 201, 205, 214, 216, 254], "than": [1, 3, 5, 6, 8, 10, 11, 12, 13, 14, 17, 19, 23, 25, 44, 48, 49, 50, 52, 53, 60, 67, 69, 73, 82, 85, 95, 97, 98, 99, 101, 103, 105, 112, 113, 116, 117, 121, 122, 123, 126, 128, 129, 132, 133, 135, 138, 143, 144, 145, 146, 149, 150, 152, 153, 154, 158, 159, 160, 161, 168, 169, 171, 172, 177, 178, 182, 184, 188, 189, 193, 194, 195, 197, 201, 203, 204, 206, 207, 209, 223, 228, 234, 237, 247, 261, 262, 270, 271], "focu": [1, 6, 7, 10, 18, 58, 59, 97, 99, 107, 122, 124, 125, 137, 139, 159, 161, 163, 165, 177, 184, 190, 221, 234], "from_pixel": [1, 136], "pixels_onli": 1, "make_env": 1, "helper": [1, 5, 8, 9, 14, 16, 17, 23, 47, 51, 55, 59, 97, 98, 110, 118, 122, 123, 126, 127, 128, 129, 134, 135, 136, 160, 161, 162, 163, 165, 166, 169, 171, 178, 201, 208, 210, 211], "either": [1, 2, 4, 5, 6, 8, 17, 19, 23, 42, 44, 49, 60, 65, 87, 97, 105, 111, 112, 113, 117, 122, 124, 133, 136, 137, 147, 156, 160, 161, 162, 168, 172, 182, 185, 192, 193, 198, 199, 201, 203, 209, 213, 216, 220, 221, 224, 225, 226, 230, 244, 247, 254, 256, 260, 262, 269, 271], "backend": [1, 5, 6, 7, 11, 14, 16, 18, 20, 24, 25, 33, 38, 53, 55, 61, 105, 117, 119, 120, 121, 126, 129, 132, 133, 136, 137, 147, 150, 158, 159, 168, 172, 174, 175, 177, 187, 188, 194, 196, 200, 207, 212, 219, 223, 228, 230, 251, 252, 261, 270], "consid": [1, 6, 10, 11, 14, 23, 49, 60, 61, 68, 73, 82, 111, 115, 116, 123, 130, 133, 135, 141, 147, 150, 152, 153, 155, 157, 161, 165, 168, 172, 178, 189, 190, 191, 205, 223, 237, 239, 252], "dm": [1, 127, 128, 165], "lib": [1, 4, 5, 6, 10, 18, 22, 23, 108, 136, 144, 159, 187, 204, 208, 220, 246], "env_librari": 1, "env_nam": [1, 82, 159], "global": [1, 5, 6, 17, 25, 49, 56, 60, 87, 124, 138, 144, 145, 149, 152, 154, 160, 162, 164, 166, 173, 174, 182, 184, 201, 210, 212, 216, 230, 231, 232, 244, 246, 247, 252], "env_task": 1, "env_arg": 1, "env_kwarg": 1, "frame_skip": [1, 159], "modifi": [1, 3, 6, 10, 11, 14, 19, 43, 44, 49, 52, 58, 59, 73, 78, 97, 98, 118, 119, 124, 135, 139, 142, 143, 144, 155, 156, 157, 159, 161, 165, 173, 174, 179, 188, 195, 203, 213, 223, 244, 247, 263, 272], "represent": [1, 4, 10, 14, 23, 25, 43, 52, 60, 85, 97, 99, 102, 103, 105, 108, 110, 112, 121, 126, 137, 142, 143, 146, 165, 168, 169, 173, 174, 175, 193, 196, 197, 200, 203, 209, 216, 234, 244, 256], "friendli": [1, 4, 15, 23, 177, 216, 230], "append": [1, 7, 8, 9, 12, 14, 16, 17, 18, 19, 21, 49, 52, 60, 73, 98, 103, 109, 112, 115, 118, 122, 125, 127, 128, 129, 134, 135, 136, 137, 143, 146, 148, 149, 156, 159, 160, 161, 162, 163, 164, 165, 169, 172, 178, 181, 182, 185, 197, 198, 201, 216, 230, 231], "special": [1, 7, 10, 18, 22, 23, 48, 60, 73, 99, 101, 103, 113, 115, 116, 118, 125, 136, 147, 155, 156, 168, 171, 173, 174, 182, 193, 197, 202, 244, 252], "torchr": 1, "transformedenv": [1, 14, 136, 159], "common": [1, 4, 6, 8, 10, 14, 17, 19, 44, 49, 51, 60, 61, 82, 95, 97, 99, 101, 103, 112, 117, 121, 124, 133, 134, 137, 143, 146, 153, 156, 157, 158, 159, 164, 171, 175, 178, 183, 187, 191, 193, 201, 216, 221, 231, 232, 246, 247, 262, 271], "rescal": [1, 51, 178, 184], "heurist": [1, 82, 200, 219, 254], "multipli": [1, 5, 12, 19, 48, 49, 60, 95, 104, 127, 142, 165, 176, 177, 231, 234], "5": [1, 2, 3, 5, 6, 7, 9, 11, 14, 17, 20, 23, 24, 32, 34, 36, 37, 38, 40, 43, 45, 47, 48, 49, 52, 60, 64, 65, 73, 75, 78, 80, 82, 85, 87, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 109, 110, 111, 112, 113, 114, 115, 116, 118, 122, 123, 125, 126, 127, 129, 133, 135, 137, 138, 141, 142, 143, 144, 146, 147, 149, 150, 153, 154, 156, 157, 158, 161, 162, 163, 164, 165, 166, 171, 172, 173, 174, 176, 177, 178, 181, 187, 189, 190, 191, 192, 193, 194, 195, 197, 198, 201, 202, 203, 205, 207, 208, 210, 211, 213, 215, 218, 219, 220, 221, 224, 226, 227, 233, 239, 243, 244, 245, 247, 248, 249, 253, 256, 257, 262, 263, 266, 271, 272, 275], "interfac": [1, 4, 5, 6, 14, 15, 20, 22, 23, 25, 49, 60, 126, 132, 135, 159, 171, 186, 194, 209, 220, 226], "simul": [1, 17, 18, 19, 59, 119, 159, 160, 201, 204, 215, 222], "doubl": [1, 2, 5, 6, 13, 23, 58, 80, 95, 104, 109, 117, 121, 125, 129, 136, 137, 141, 146, 154, 157, 159, 169, 185, 192, 219, 230, 262, 271], "precis": [1, 4, 8, 10, 15, 20, 61, 125, 129, 130, 137, 147, 159, 169, 177, 182, 185, 188, 199, 219, 220, 221, 234, 235, 251], "number": [1, 5, 6, 7, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 42, 44, 49, 51, 52, 53, 55, 58, 60, 65, 82, 85, 87, 97, 99, 101, 103, 109, 112, 115, 116, 122, 123, 124, 125, 126, 127, 132, 133, 134, 135, 136, 137, 138, 139, 141, 144, 145, 148, 149, 150, 153, 156, 157, 158, 159, 160, 161, 162, 163, 168, 171, 172, 175, 178, 184, 185, 187, 188, 192, 193, 198, 199, 205, 206, 210, 213, 214, 219, 223, 228, 234, 247, 255, 260, 269], "presum": 1, "ones": [1, 2, 4, 6, 11, 12, 14, 19, 21, 32, 40, 48, 49, 60, 76, 80, 85, 89, 92, 95, 97, 110, 113, 118, 125, 135, 138, 143, 153, 154, 155, 157, 159, 160, 168, 173, 174, 177, 178, 179, 190, 191, 198, 202, 209, 216, 220, 231, 246, 255, 262, 271], "goe": [1, 4, 5, 23, 51, 95, 98, 99, 130, 145, 155, 159, 162, 213, 228, 262, 271], "wai": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 14, 20, 21, 22, 25, 32, 43, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 60, 67, 73, 78, 80, 82, 87, 95, 98, 99, 101, 103, 105, 108, 110, 112, 113, 115, 120, 123, 124, 125, 126, 127, 130, 132, 133, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 152, 153, 156, 157, 159, 161, 162, 164, 166, 169, 173, 174, 175, 178, 179, 184, 185, 190, 191, 192, 193, 195, 196, 197, 198, 200, 202, 204, 209, 213, 214, 216, 222, 223, 229, 232, 234, 239, 240, 244, 247, 252], "doubletofloat": [1, 159], "refer": [1, 4, 5, 6, 8, 13, 15, 16, 17, 21, 22, 23, 24, 25, 49, 59, 60, 61, 73, 76, 82, 85, 97, 99, 101, 102, 103, 105, 107, 108, 109, 112, 113, 118, 122, 123, 124, 125, 127, 128, 132, 133, 144, 149, 152, 156, 157, 159, 161, 162, 163, 168, 171, 173, 174, 177, 178, 185, 188, 189, 192, 194, 197, 198, 199, 201, 204, 208, 209, 219, 221, 222, 224, 225, 229, 230, 237, 244, 247, 252, 254, 256, 257, 261, 266, 270, 275], "float": [1, 5, 6, 7, 8, 9, 11, 12, 13, 19, 23, 37, 38, 40, 41, 44, 48, 51, 52, 58, 59, 63, 64, 72, 73, 80, 89, 95, 101, 103, 104, 108, 109, 111, 118, 122, 123, 124, 126, 135, 137, 143, 144, 146, 147, 148, 155, 156, 157, 160, 161, 163, 164, 166, 178, 179, 181, 184, 185, 186, 189, 190, 191, 192, 193, 194, 197, 198, 200, 206, 208, 216, 218, 219, 221, 223, 228, 230, 234, 238, 244], "in_keys_inv": [1, 14], "befor": [1, 3, 5, 6, 8, 9, 10, 11, 12, 14, 16, 19, 20, 22, 23, 25, 32, 33, 42, 43, 44, 45, 47, 49, 51, 52, 55, 58, 59, 60, 68, 69, 73, 85, 95, 97, 98, 99, 101, 102, 103, 105, 107, 108, 109, 111, 112, 113, 115, 117, 119, 122, 124, 126, 127, 129, 133, 135, 136, 137, 139, 141, 144, 146, 149, 152, 153, 156, 157, 158, 159, 161, 162, 163, 165, 168, 169, 172, 173, 174, 176, 177, 178, 179, 182, 183, 185, 187, 189, 190, 192, 195, 197, 198, 200, 215, 218, 224, 225, 227, 228, 230, 231, 237, 241, 244, 245, 247, 251, 252, 254, 258], "concaten": [1, 14, 48, 49, 60, 79, 101, 102, 110, 115, 124, 128, 134, 160, 197], "cattensor": [1, 14], "leav": [1, 8, 17, 43, 49, 51, 53, 60, 61, 85, 113, 126, 152, 153, 158, 201, 204, 219, 222, 244], "constant": [1, 2, 6, 17, 20, 23, 25, 48, 58, 60, 82, 87, 99, 108, 113, 119, 136, 153, 159, 160, 169, 172, 174, 177, 185, 197, 201, 247, 252], "envcreat": 1, "inittrack": [1, 136], "observationnorm": [1, 136, 159], "parallelenv": [1, 159], "rewardsc": [1, 136], "stepcount": [1, 136, 159], "make_transformed_env": 1, "scale": [1, 6, 12, 19, 51, 56, 61, 73, 97, 105, 112, 120, 121, 122, 123, 126, 135, 136, 146, 159, 160, 166, 177, 178, 179, 184, 185, 200, 221, 230, 234, 244, 247, 254, 256, 257], "base_env": [1, 159], "syntax": [1, 3, 23, 25, 48, 60, 84, 86, 99, 112, 121], "append_transform": [1, 14, 136], "loc": [1, 20, 83, 133, 136, 159, 165, 230], "reward_sc": 1, "observation_vector": 1, "renam": [1, 179, 182, 187, 197, 198], "facilit": [1, 11, 14, 49, 60, 97, 112, 121, 124, 136, 193], "downstream": [1, 6, 113, 171], "oper": [1, 4, 6, 13, 14, 15, 17, 18, 19, 20, 21, 25, 42, 43, 45, 47, 49, 51, 60, 61, 63, 64, 65, 67, 68, 76, 80, 82, 83, 85, 92, 97, 98, 99, 103, 105, 107, 109, 110, 111, 116, 118, 121, 123, 124, 125, 127, 130, 135, 136, 137, 138, 141, 142, 144, 145, 147, 149, 150, 154, 155, 158, 159, 161, 165, 168, 169, 171, 172, 173, 174, 176, 182, 183, 184, 185, 187, 188, 189, 190, 194, 196, 197, 198, 199, 201, 203, 204, 205, 206, 214, 216, 219, 220, 222, 226, 228, 229, 230, 234, 237, 238, 239, 246, 251, 252, 258], "vector": [1, 2, 4, 5, 6, 12, 14, 22, 23, 32, 49, 52, 60, 82, 97, 99, 101, 102, 103, 110, 115, 127, 128, 136, 137, 141, 144, 154, 155, 165, 177, 186, 199, 205, 207, 208, 219, 220, 234, 247, 254, 256], "snippet": [1, 10, 21, 58, 59, 122, 123, 135, 144, 155, 164, 176, 185, 189, 197, 198, 208, 215, 222, 228, 230, 237, 246, 247, 252, 257], "selected_kei": 1, "observation_spec": [1, 14, 159], "out_kei": [1, 14, 136, 159], "instanti": [1, 5, 6, 10, 14, 21, 22, 25, 51, 52, 65, 67, 78, 85, 97, 105, 111, 113, 118, 126, 155, 156, 160, 171, 175, 202, 234, 237], "stateless": [1, 14, 22, 138, 141], "standard_norm": [1, 136], "max_frames_per_traj": [1, 159], "marker": [1, 51, 128], "ornstein": 1, "uhlenbeck": 1, "ou": 1, "significantli": [1, 19, 102, 119, 120, 124, 129, 149, 172, 176, 184, 197, 199, 203, 228, 234, 239, 247, 260, 269], "speed": [1, 5, 6, 10, 14, 19, 48, 49, 61, 85, 97, 120, 121, 122, 124, 131, 136, 138, 144, 147, 158, 159, 161, 164, 172, 176, 184, 185, 186, 196, 203, 207, 212, 216, 223, 228, 234, 245, 247, 251], "throughput": [1, 122, 177, 234, 247], "whether": [1, 6, 8, 10, 11, 14, 20, 22, 49, 52, 95, 97, 105, 108, 112, 126, 130, 135, 137, 143, 146, 152, 159, 161, 168, 169, 171, 179, 192, 247, 261, 270], "individu": [1, 5, 6, 12, 21, 25, 49, 78, 85, 110, 115, 124, 126, 129, 143, 149, 154, 156, 162, 165, 169, 179, 213, 226, 230, 247], "approach": [1, 4, 5, 6, 22, 23, 25, 56, 107, 112, 131, 139, 149, 153, 154, 159, 162, 165, 178, 183, 189, 192, 199, 204, 205, 208, 221, 223, 228, 234, 244], "num_work": [1, 24, 44, 51, 52, 87, 92, 94, 97, 117, 122, 123, 129, 157, 166, 168, 169, 176, 178, 247, 250], "leverag": [1, 6, 49, 73, 97, 107, 108, 112, 121, 122, 124, 133, 135, 145, 178, 186, 188, 196, 199, 215, 216, 222, 247, 251, 257], "capabl": [1, 3, 11, 15, 17, 49, 60, 73, 124, 164, 168, 197, 199, 201, 207, 210, 211, 222, 230], "pytorch": [1, 2, 7, 8, 9, 11, 14, 17, 18, 21, 23, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 40, 42, 44, 45, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 62, 66, 70, 73, 74, 75, 77, 78, 79, 80, 83, 84, 85, 87, 89, 90, 97, 98, 104, 106, 107, 112, 113, 114, 115, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 148, 149, 150, 152, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 172, 173, 174, 175, 178, 181, 182, 183, 184, 186, 187, 189, 190, 191, 192, 193, 194, 201, 203, 204, 205, 210, 211, 212, 213, 214, 215, 216, 218, 222, 228, 229, 230, 232, 234, 237, 244, 246, 250, 252, 254, 255, 256, 258], "adopt": [1, 20, 24, 61, 152, 155, 162, 221], "parallel_env_constructor": 1, "env_per_collector": 1, "transform_state_dict": 1, "make_t_env": 1, "init_stat": [1, 136, 159], "copy_": [1, 3, 40, 48, 109, 144, 161, 166, 237, 244], "env_creat": 1, "parallel_env": 1, "create_env_fn": 1, "create_env_kwarg": 1, "pin_memori": [1, 122, 123, 125, 129, 247], "limit": [1, 4, 6, 9, 10, 11, 14, 15, 17, 19, 49, 73, 119, 123, 124, 136, 137, 138, 146, 147, 149, 154, 165, 172, 173, 174, 177, 182, 184, 185, 187, 188, 194, 197, 201, 223, 228, 231, 234, 244, 261, 270], "lazi": [1, 59], "cat_dim": [1, 136, 159], "reduce_dim": [1, 136, 159], "load_state_dict": [1, 9, 19, 20, 38, 39, 44, 49, 53, 60, 73, 87, 96, 97, 112, 117, 121, 133, 146, 157, 160, 171, 181, 182, 197, 198, 214, 221, 230, 235, 240, 241, 242, 243, 248], "frame": [1, 6, 107, 136, 146, 158, 159, 168], "count": [1, 6, 11, 19, 22, 42, 44, 49, 60, 61, 82, 99, 103, 135, 136, 148, 159, 160, 163, 165, 168, 171, 177, 182, 197, 198, 246], "frames_per_batch": [1, 136, 159], "total_fram": [1, 136, 159], "adjust": [1, 7, 14, 19, 43, 49, 52, 73, 115, 124, 126, 150, 161, 194, 262, 271], "total": [1, 5, 7, 9, 11, 12, 13, 14, 16, 17, 20, 21, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, 125, 126, 127, 128, 129, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 162, 164, 165, 166, 168, 171, 172, 174, 176, 178, 181, 182, 184, 185, 189, 190, 191, 192, 193, 195, 203, 205, 211, 212, 219, 221, 224, 225, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "unchang": [1, 8, 83, 209], "seem": [1, 44, 52, 113, 125, 127, 136], "cheat": [1, 121, 165], "compar": [1, 5, 10, 15, 17, 19, 20, 23, 44, 58, 59, 61, 83, 97, 102, 108, 116, 117, 123, 124, 126, 127, 135, 137, 143, 144, 145, 147, 150, 152, 154, 156, 159, 161, 163, 165, 168, 171, 172, 173, 174, 176, 177, 181, 182, 184, 186, 189, 196, 197, 199, 200, 201, 207, 212, 219, 220, 223, 228, 231, 234, 237, 245, 247], "dataset": [1, 6, 9, 17, 24, 33, 34, 35, 37, 38, 41, 42, 43, 44, 47, 49, 52, 53, 55, 57, 58, 59, 73, 75, 87, 90, 92, 94, 96, 97, 99, 116, 117, 118, 119, 120, 122, 123, 126, 127, 128, 129, 131, 135, 138, 148, 154, 157, 158, 162, 164, 165, 166, 168, 169, 171, 175, 181, 195, 199, 201, 213, 220, 221, 233, 234, 236, 247, 250, 253], "10m": 1, "element": [1, 5, 6, 7, 9, 12, 17, 19, 40, 48, 49, 58, 59, 73, 76, 95, 99, 101, 102, 103, 116, 125, 135, 144, 150, 153, 159, 160, 171, 173, 174, 178, 181, 190, 191, 192, 193, 201, 223, 262, 263, 266, 271, 272, 275], "anoth": [1, 4, 5, 7, 8, 11, 14, 20, 21, 23, 25, 43, 48, 49, 52, 59, 60, 63, 73, 80, 85, 98, 102, 108, 109, 112, 113, 115, 121, 128, 129, 130, 132, 135, 136, 141, 142, 153, 156, 159, 161, 162, 163, 164, 165, 172, 174, 176, 178, 179, 182, 184, 188, 195, 197, 200, 206, 213, 228, 229, 247, 252, 262, 263, 271, 272], "ratio": [1, 51, 82, 97, 115, 144, 159, 168, 178, 195], "interact": [1, 5, 6, 14, 49, 51, 60, 117, 126, 130, 146, 159, 162, 166, 169, 172, 173, 174, 197, 262, 271], "nutshel": [1, 191], "cautiou": 1, "deal": [1, 5, 44, 49, 51, 52, 60, 97, 110, 112, 122, 145, 159, 221], "lead": [1, 5, 6, 14, 49, 52, 61, 73, 79, 82, 87, 97, 115, 119, 130, 136, 138, 149, 157, 191, 205, 244, 247, 262, 271], "bias": [1, 33, 43, 97, 112, 164, 244], "comparison": [1, 9, 17, 21, 83, 95, 97, 98, 123, 137, 144, 145, 176, 181, 184, 189, 191, 193, 195, 201, 204, 222], "help": [1, 5, 8, 10, 15, 17, 18, 19, 22, 23, 32, 43, 49, 52, 58, 59, 60, 61, 68, 82, 87, 97, 98, 101, 102, 103, 112, 113, 120, 121, 122, 123, 126, 132, 133, 134, 136, 137, 138, 144, 145, 148, 150, 152, 155, 159, 161, 162, 163, 164, 165, 171, 176, 177, 184, 185, 190, 191, 192, 193, 197, 201, 205, 210, 212, 214, 215, 216, 221, 222, 223, 226, 227, 229, 230, 245, 247, 254, 255, 257], "signal": [1, 13, 43, 133, 159, 161, 195, 234], "magnitud": [1, 17, 42, 156, 201, 230], "truncat": [1, 17, 109, 113, 144, 159, 160, 201], "A": [1, 5, 6, 7, 8, 11, 12, 14, 16, 17, 21, 22, 25, 42, 47, 48, 49, 51, 52, 53, 55, 57, 60, 63, 64, 67, 68, 69, 73, 78, 82, 83, 92, 97, 99, 101, 102, 103, 110, 112, 113, 115, 120, 121, 125, 126, 127, 128, 130, 131, 135, 138, 142, 143, 146, 149, 152, 153, 154, 159, 160, 161, 162, 164, 165, 166, 169, 171, 173, 174, 175, 176, 177, 193, 197, 201, 219, 220, 222, 228, 231, 237, 244, 247, 252, 254, 256, 263, 272], "thousand": [1, 103, 120, 124, 127, 136, 165, 171], "500": [1, 6, 17, 24, 49, 52, 60, 75, 109, 115, 128, 145, 147, 160, 163, 166, 178, 231], "statist": [1, 44, 52, 87, 117, 121, 129, 142, 143, 156, 157, 159, 165, 168, 169, 171, 177, 182, 195, 197, 198, 221], "arbitrari": [1, 5, 8, 14, 64, 67, 78, 97, 102, 111, 122, 138, 146, 154, 169, 172, 175, 195, 239], "random": [1, 6, 14, 16, 19, 20, 21, 25, 40, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 71, 72, 73, 76, 78, 80, 92, 95, 101, 102, 105, 109, 110, 111, 116, 117, 122, 123, 126, 127, 128, 133, 134, 135, 137, 138, 146, 149, 150, 152, 153, 156, 157, 159, 160, 161, 163, 164, 165, 169, 172, 182, 185, 193, 197, 198, 209, 212, 234, 239, 247], "standard": [1, 5, 8, 20, 23, 25, 44, 48, 52, 60, 61, 73, 82, 87, 92, 97, 98, 99, 105, 107, 108, 113, 135, 139, 149, 158, 166, 172, 173, 174, 178, 184, 193, 209, 213, 223, 234, 247, 257, 262, 271], "deviat": [1, 73, 82, 92, 97, 139, 149], "purpos": [1, 5, 20, 21, 22, 57, 73, 78, 85, 115, 118, 123, 125, 126, 128, 135, 136, 142, 143, 144, 152, 158, 159, 162, 163, 168, 172, 182, 184, 190, 197, 214, 221, 234, 244, 247], "summari": [1, 82, 103, 126, 136, 143, 159, 168, 173, 176, 197, 245, 246], "over": [1, 4, 5, 6, 7, 10, 11, 14, 17, 18, 19, 20, 22, 23, 34, 44, 47, 48, 49, 50, 51, 52, 53, 60, 61, 73, 75, 78, 79, 87, 97, 98, 99, 101, 102, 103, 109, 113, 117, 121, 122, 123, 124, 127, 129, 132, 133, 135, 138, 142, 143, 144, 145, 146, 147, 150, 154, 156, 157, 159, 160, 161, 162, 163, 164, 165, 168, 169, 171, 172, 174, 176, 178, 182, 184, 185, 187, 194, 197, 198, 201, 205, 219, 230, 234, 247, 250, 252, 262, 271], "get_env_stat": 1, "proof_env": 1, "init_env_step": 1, "state_dict": [1, 9, 19, 38, 39, 44, 49, 53, 55, 87, 96, 97, 117, 122, 123, 133, 137, 146, 156, 157, 160, 181, 182, 195, 197, 198, 214, 220, 228, 230, 233, 234, 235, 237, 240, 241, 243, 244, 248, 251], "close": [1, 4, 6, 9, 14, 17, 19, 23, 52, 61, 94, 97, 98, 115, 122, 126, 137, 149, 152, 169, 181, 185, 201, 245, 247, 252], "5000": [1, 2, 7, 118, 127, 128, 139, 213, 231], "earlier": [1, 4, 5, 6, 22, 23, 73, 98, 99, 102, 116, 123, 124, 136, 152, 159, 165, 173, 174, 177, 223, 230], "compositespec": [1, 14], "turn": [1, 4, 5, 6, 7, 8, 9, 14, 15, 19, 20, 23, 25, 49, 98, 102, 103, 109, 113, 126, 128, 136, 145, 152, 153, 156, 161, 165, 181, 186, 190, 191, 199, 213, 216, 256], "seen": [1, 7, 10, 11, 18, 19, 44, 47, 49, 51, 97, 102, 103, 109, 113, 116, 118, 136, 143, 154, 162, 172, 173, 174, 262, 263, 271, 272], "requir": [1, 2, 4, 5, 6, 8, 10, 12, 14, 15, 18, 19, 20, 22, 23, 24, 25, 43, 49, 50, 51, 52, 55, 60, 61, 75, 83, 85, 87, 103, 107, 108, 113, 115, 116, 119, 123, 124, 126, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 145, 148, 149, 150, 152, 153, 154, 157, 158, 159, 161, 162, 163, 164, 165, 171, 172, 173, 174, 175, 176, 177, 178, 181, 182, 183, 184, 185, 186, 190, 191, 192, 194, 200, 202, 205, 207, 208, 209, 210, 211, 214, 215, 219, 220, 221, 222, 224, 230, 232, 237, 238, 244, 247, 255, 257, 260, 269], "recal": [1, 6, 23, 52, 60, 98, 103, 133, 137, 159, 169, 173, 174, 190, 191, 192, 244], "wrap": [1, 5, 6, 7, 9, 10, 16, 22, 25, 45, 60, 63, 76, 79, 87, 98, 99, 101, 102, 103, 105, 109, 110, 111, 123, 125, 129, 133, 136, 142, 146, 157, 159, 162, 163, 171, 173, 174, 175, 181, 183, 194, 199, 210, 211, 213, 214, 226, 230, 234, 258, 262, 265, 271, 274], "flow": [1, 4, 5, 14, 21, 23, 25, 43, 52, 60, 66, 85, 97, 110, 111, 113, 159, 160, 168, 172, 182, 183, 185, 197, 198, 199, 208, 247, 252, 262, 271], "handl": [1, 5, 8, 10, 23, 49, 52, 53, 61, 78, 85, 108, 113, 123, 126, 127, 137, 138, 139, 154, 156, 158, 159, 162, 163, 164, 165, 171, 172, 173, 174, 177, 182, 185, 189, 191, 193, 203, 205, 207, 214, 220, 229, 237, 257], "specifi": [1, 4, 5, 6, 7, 8, 9, 11, 17, 19, 20, 22, 23, 24, 34, 39, 51, 52, 59, 76, 82, 87, 101, 110, 113, 116, 122, 123, 124, 126, 130, 134, 136, 137, 138, 141, 155, 156, 159, 162, 163, 168, 171, 173, 174, 179, 189, 190, 191, 192, 193, 196, 197, 198, 200, 201, 204, 205, 206, 208, 209, 212, 221, 222, 228, 237, 242, 245, 247, 252, 256, 257, 260, 262, 269, 271], "scenario": [1, 4, 6, 14, 61, 105, 107, 108, 112, 117, 125, 160, 163, 199, 219, 244], "tensordictsequenti": [1, 136], "valueoper": [1, 159], "automat": [1, 2, 5, 6, 8, 10, 14, 15, 22, 25, 35, 40, 43, 45, 46, 47, 48, 53, 57, 61, 76, 80, 98, 114, 121, 122, 123, 124, 125, 126, 130, 137, 139, 142, 144, 147, 149, 159, 160, 163, 166, 168, 171, 176, 177, 182, 185, 207, 209, 212, 214, 216, 219, 220, 221, 226, 232, 235, 237, 247, 251, 252, 254, 262, 271], "state_valu": 1, "built": [1, 4, 5, 6, 7, 8, 22, 23, 47, 49, 59, 60, 61, 99, 108, 113, 115, 116, 121, 135, 136, 137, 159, 164, 169, 173, 174, 177, 178, 195, 204, 216, 221, 222, 229, 231, 257], "present": [1, 6, 8, 18, 22, 61, 82, 83, 97, 108, 134, 137, 143, 153, 155, 156, 157, 160, 161, 163, 171, 172, 175, 178, 193, 247, 258], "origin": [1, 5, 6, 7, 8, 12, 14, 17, 19, 23, 32, 49, 52, 58, 59, 60, 73, 87, 90, 97, 102, 105, 113, 115, 118, 119, 124, 125, 127, 128, 137, 142, 150, 153, 154, 156, 157, 160, 171, 172, 173, 174, 176, 177, 179, 181, 182, 183, 184, 186, 192, 197, 200, 201, 218, 220, 221, 226, 228, 234, 252, 257], "paper": [1, 5, 12, 16, 17, 52, 58, 59, 61, 73, 97, 113, 114, 118, 119, 124, 137, 159, 162, 164, 165, 166, 193, 201], "found": [1, 4, 5, 6, 10, 16, 22, 23, 25, 42, 49, 50, 60, 79, 97, 113, 115, 116, 118, 126, 128, 133, 134, 135, 136, 137, 142, 143, 147, 160, 162, 163, 164, 171, 173, 174, 181, 182, 183, 185, 193, 206, 220, 222, 226, 247, 262, 271], "ddpgmlpactor": 1, "ddpgmlpqnet": 1, "materi": [1, 61, 123, 124, 145, 189, 202, 208, 234, 239, 244], "achiev": [1, 3, 6, 14, 17, 19, 24, 32, 44, 49, 56, 82, 87, 97, 108, 119, 121, 125, 129, 135, 136, 137, 144, 149, 152, 153, 156, 157, 159, 160, 168, 176, 179, 182, 184, 185, 198, 199, 201, 203, 212, 219, 222, 247, 251, 254], "practic": [1, 5, 6, 11, 20, 23, 37, 47, 49, 51, 52, 58, 59, 60, 61, 97, 99, 114, 117, 121, 124, 125, 126, 127, 131, 134, 136, 137, 144, 153, 156, 159, 173, 174, 175, 177, 189, 190, 193, 195, 232, 237, 247], "fake": [1, 6, 12, 17, 19, 25, 47, 52, 78, 152, 157, 193, 197, 198, 200, 201, 228], "spec": [1, 108, 126, 136, 159, 163, 179, 200, 231], "ornsteinuhlenbeckprocesswrapp": 1, "probabilisticactor": [1, 159], "tanhdelta": 1, "make_ddpg_actor": 1, "proof_environ": 1, "out_featur": [1, 33, 109, 123, 136, 179, 201], "action_spec": [1, 14, 136, 159], "shape": [1, 4, 12, 17, 23, 34, 38, 40, 42, 43, 47, 48, 49, 51, 52, 58, 59, 60, 63, 68, 76, 85, 90, 92, 95, 97, 98, 101, 103, 104, 109, 111, 118, 122, 124, 127, 128, 136, 137, 138, 141, 142, 145, 146, 147, 150, 152, 154, 156, 159, 168, 171, 178, 184, 185, 187, 192, 193, 195, 197, 201, 202, 209, 213, 219, 226, 231, 234, 235, 238, 244, 247, 251, 254], "actor_net": [1, 159], "action_dim": [1, 146], "distribution_class": [1, 159], "q_net": 1, "qnet": 1, "initi": [1, 6, 8, 11, 14, 16, 18, 19, 20, 21, 22, 23, 25, 37, 43, 49, 55, 60, 64, 71, 72, 73, 80, 97, 98, 99, 102, 103, 109, 111, 112, 117, 122, 123, 124, 127, 128, 129, 136, 138, 142, 144, 147, 148, 152, 156, 157, 158, 160, 161, 162, 163, 165, 166, 168, 173, 174, 175, 189, 192, 196, 198, 203, 206, 213, 214, 219, 223, 226, 229, 231, 234, 237, 244, 256, 262, 271], "reset": [1, 19, 117, 128, 136, 146, 159, 160, 161, 163, 165, 168, 172, 173, 174, 182, 186, 195, 197, 198, 221, 255], "suggest": [1, 4, 12, 52, 86, 97, 128, 137, 144, 145, 146, 147, 150, 157, 168, 171, 173, 174, 175, 234], "nois": [1, 6, 12, 52, 73, 148, 195], "reach": [1, 10, 17, 52, 60, 61, 97, 133, 135, 137, 146, 147, 149, 159, 163, 173, 174, 201, 221], "minimum": [1, 49, 82, 159, 163, 173, 174, 177, 191], "annealing_fram": 1, "1_000_000": [1, 96, 136], "actor_model_explor": 1, "annealing_num_step": [1, 136], "share_memori": 1, "iter": [1, 3, 4, 6, 11, 12, 14, 16, 24, 34, 42, 43, 44, 47, 52, 53, 55, 60, 75, 85, 87, 92, 94, 96, 98, 103, 105, 112, 113, 116, 117, 118, 126, 127, 128, 131, 133, 134, 136, 142, 144, 149, 157, 159, 160, 161, 162, 163, 166, 168, 169, 172, 178, 181, 182, 194, 197, 198, 203, 211, 218, 223, 226, 230, 234, 245, 247, 258], "tight": [1, 105, 107, 108], "per": [1, 5, 6, 8, 11, 19, 61, 87, 97, 103, 121, 122, 126, 127, 128, 129, 133, 135, 136, 137, 145, 147, 152, 156, 159, 163, 164, 165, 168, 169, 171, 175, 176, 177, 178, 185, 189, 194, 205, 207, 212, 214, 216, 218, 221, 223, 231, 237, 246, 258], "sync": [1, 7, 10, 11, 16, 55, 121, 122, 123, 142, 146, 188, 194, 257], "natur": [1, 5, 6, 17, 18, 23, 24, 25, 45, 61, 73, 75, 97, 107, 116, 119, 126, 127, 135, 136, 137, 162, 171, 191, 193, 197, 200, 201, 207, 262, 271], "resourc": [1, 53, 58, 59, 61, 73, 87, 105, 119, 123, 133, 135, 152, 159, 168, 171, 176, 216, 223, 236, 247, 253], "alloc": [1, 6, 18, 21, 22, 23, 48, 55, 59, 129, 135, 152, 168, 175, 176, 193, 202, 214, 223, 237, 258], "gpu": [1, 3, 4, 7, 12, 17, 18, 19, 20, 24, 33, 38, 40, 42, 43, 47, 48, 49, 50, 52, 53, 54, 56, 57, 60, 61, 64, 72, 73, 77, 80, 81, 82, 83, 88, 92, 96, 97, 99, 105, 111, 114, 117, 120, 121, 122, 123, 124, 125, 131, 132, 133, 134, 135, 136, 137, 138, 144, 147, 148, 149, 150, 152, 154, 157, 159, 160, 162, 163, 164, 171, 172, 175, 177, 178, 185, 186, 196, 201, 206, 207, 210, 214, 216, 223, 230, 231, 234, 240, 251, 252, 254, 257], "worker": [1, 6, 7, 11, 16, 51, 52, 61, 115, 120, 122, 123, 134, 135, 147, 159, 162, 163, 168, 212, 216, 247], "syncdatacollector": [1, 136, 159], "process": [1, 4, 5, 6, 11, 12, 14, 15, 16, 17, 18, 20, 22, 23, 24, 25, 42, 47, 49, 50, 51, 52, 56, 60, 61, 73, 82, 85, 97, 103, 105, 110, 112, 113, 114, 116, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 131, 132, 135, 136, 137, 143, 144, 146, 147, 149, 154, 158, 160, 162, 163, 164, 165, 168, 171, 173, 174, 175, 176, 177, 182, 184, 185, 187, 188, 193, 195, 196, 201, 203, 204, 207, 208, 212, 214, 215, 221, 228, 237, 247, 251, 255, 258, 261, 262, 270, 271], "offer": [1, 11, 14, 18, 42, 43, 53, 61, 99, 122, 124, 138, 141, 144, 145, 197, 214, 216, 229, 247], "multiasyncdatacollector": [1, 159], "rollout": [1, 136, 159], "asynchron": [1, 21, 61, 120, 121, 126, 134, 149, 155, 159, 163], "manner": [1, 5, 8, 14, 19, 61, 159, 171, 216], "therebi": [1, 186, 189, 193], "decoupl": [1, 61, 153, 197], "factori": [1, 6, 101, 115, 190, 191, 232, 237], "empti": [1, 5, 6, 8, 14, 19, 21, 23, 49, 80, 95, 108, 128, 129, 143, 144, 147, 153, 158, 165, 168, 171, 173, 174, 176, 185, 191, 193, 202, 206, 238, 246, 263, 272], "maximum": [1, 11, 49, 60, 82, 102, 113, 126, 128, 136, 137, 144, 159, 164, 165, 173, 174, 185, 194, 195, 213, 247], "non": [1, 2, 3, 5, 8, 11, 14, 19, 22, 49, 51, 53, 54, 56, 60, 82, 85, 97, 98, 100, 103, 112, 113, 119, 122, 126, 129, 130, 134, 135, 136, 137, 139, 141, 145, 147, 150, 156, 157, 160, 161, 164, 165, 168, 172, 173, 176, 182, 184, 185, 189, 199, 202, 214, 228, 244, 252, 263, 265, 272, 274], "termin": [1, 14, 23, 53, 60, 87, 159, 160, 162, 163, 171, 188, 206, 213, 225], "effect": [1, 5, 6, 8, 9, 11, 23, 55, 73, 82, 97, 103, 108, 124, 127, 128, 138, 152, 154, 156, 160, 164, 165, 171, 176, 177, 191, 199, 200, 205, 230, 234, 247, 260, 269], "regist": [1, 22, 43, 47, 78, 108, 109, 112, 121, 122, 124, 133, 141, 152, 153, 159, 173, 174, 177, 207, 208, 216, 220, 226, 230, 239], "new": [1, 2, 4, 5, 6, 8, 9, 12, 13, 14, 22, 23, 24, 25, 31, 42, 43, 45, 48, 49, 50, 52, 55, 60, 62, 73, 75, 79, 80, 82, 85, 97, 99, 102, 103, 108, 109, 110, 112, 113, 117, 121, 122, 123, 125, 126, 127, 136, 137, 141, 142, 144, 146, 149, 152, 153, 154, 155, 156, 157, 159, 160, 161, 164, 165, 168, 171, 173, 174, 178, 179, 181, 186, 187, 188, 189, 193, 195, 196, 197, 198, 199, 200, 204, 205, 206, 207, 208, 213, 216, 222, 223, 224, 225, 226, 234, 244, 247, 251, 257, 262, 271], "infer": [1, 3, 6, 8, 9, 10, 19, 20, 21, 22, 23, 42, 48, 49, 60, 61, 97, 101, 103, 105, 113, 121, 125, 126, 129, 139, 142, 144, 158, 159, 161, 171, 172, 177, 178, 185, 187, 188, 193, 194, 196, 197, 198, 199, 201, 203, 206, 207, 209, 214, 221, 223, 224, 225, 226, 228, 234, 235, 241, 251], "around": [1, 5, 6, 11, 23, 24, 49, 55, 58, 59, 75, 97, 117, 128, 138, 144, 145, 150, 154, 157, 165, 168, 169, 173, 174, 182, 189, 190, 194, 197, 219, 234, 239, 262, 265, 271, 274], "1m": [1, 136, 159], "10_000": [1, 97], "outer": [1, 6, 122, 145], "loop": [1, 3, 4, 5, 7, 8, 11, 16, 17, 19, 21, 25, 44, 47, 49, 51, 52, 59, 60, 65, 73, 75, 78, 85, 87, 97, 111, 118, 123, 126, 127, 137, 138, 144, 145, 146, 152, 154, 162, 163, 165, 169, 177, 183, 185, 201, 219, 247, 250], "equal": [1, 4, 10, 95, 97, 115, 116, 125, 137, 147, 156, 159, 160, 171, 173, 174, 176, 192, 216, 247, 254], "length": [1, 7, 12, 14, 17, 20, 42, 45, 49, 52, 60, 102, 103, 105, 113, 115, 116, 124, 128, 136, 137, 146, 159, 164, 165, 175, 185, 191, 193, 196, 201, 205, 208, 216, 251, 263, 272], "sub": [1, 6, 20, 25, 49, 60, 109, 124, 143, 149, 159, 163, 165, 168, 176, 177, 185, 215, 246, 262, 271], "traj_len": [1, 136], "200": [1, 6, 9, 90, 93, 136, 147, 163, 184, 194, 219], "init_random_fram": 1, "num_collector": 1, "explorationtyp": [1, 136, 159], "reset_at_each_it": 1, "split_traj": [1, 159], "exploration_typ": 1, "assess": 1, "mode": [1, 4, 7, 9, 12, 13, 16, 20, 37, 42, 43, 49, 51, 52, 55, 60, 73, 79, 82, 85, 86, 87, 97, 112, 115, 116, 117, 121, 122, 129, 130, 134, 136, 139, 142, 144, 146, 147, 150, 157, 161, 164, 165, 166, 169, 171, 172, 174, 177, 179, 184, 187, 188, 194, 195, 196, 198, 199, 200, 216, 219, 221, 241, 247], "dedic": [1, 10, 55, 60, 112, 134, 162, 163, 177, 199, 208, 223, 228, 229, 230, 258, 263, 272], "frequenc": [1, 7, 83, 126, 223], "trainer": [1, 16, 17, 24, 55, 126, 131, 148, 161, 162, 163, 201, 214], "make_record": 1, "record_interv": 1, "load": [1, 5, 17, 18, 19, 20, 21, 23, 24, 34, 35, 38, 39, 42, 43, 47, 51, 52, 55, 73, 75, 87, 90, 96, 98, 104, 105, 110, 113, 116, 119, 121, 123, 125, 127, 139, 144, 147, 152, 159, 168, 169, 171, 174, 178, 181, 182, 184, 185, 186, 187, 194, 195, 201, 204, 206, 208, 213, 220, 221, 222, 224, 225, 230, 231, 235, 240, 241, 242, 243, 244, 246, 248, 249, 251, 254], "recorder_obj": 1, "record_fram": 1, "1000": [1, 2, 7, 9, 17, 19, 43, 52, 79, 89, 94, 96, 117, 119, 122, 123, 125, 127, 134, 136, 144, 149, 159, 160, 169, 172, 176, 177, 187, 199, 201, 203, 212, 213, 226, 231, 237, 246], "policy_explor": 1, "everi": [1, 2, 6, 8, 10, 12, 14, 15, 17, 18, 19, 24, 43, 44, 47, 49, 51, 52, 60, 61, 87, 103, 117, 124, 125, 127, 128, 129, 135, 136, 141, 146, 147, 150, 152, 153, 154, 156, 157, 159, 160, 161, 163, 165, 168, 169, 178, 193, 197, 198, 201, 208, 210, 223, 232, 245, 247, 258], "10": [1, 3, 4, 6, 7, 8, 11, 13, 14, 16, 17, 19, 20, 23, 25, 33, 34, 37, 38, 41, 42, 43, 44, 45, 47, 49, 51, 52, 53, 60, 73, 78, 79, 80, 83, 87, 89, 92, 93, 94, 95, 96, 103, 104, 105, 109, 112, 115, 117, 122, 123, 125, 126, 127, 129, 133, 135, 136, 138, 139, 141, 142, 144, 146, 147, 148, 149, 150, 154, 156, 157, 158, 159, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 184, 187, 189, 190, 191, 194, 195, 196, 197, 198, 201, 202, 203, 204, 206, 208, 209, 210, 211, 212, 215, 219, 221, 223, 226, 231, 233, 237, 238, 239, 240, 241, 242, 243, 245, 246, 248, 249, 250, 266, 275], "lazymemmapstorag": [1, 136, 146], "prioritizedsampl": 1, "randomsampl": [1, 19, 137, 165, 182, 185, 197, 198], "tensordictreplaybuff": [1, 136, 146], "flavor": [1, 5, 23, 107], "priorit": [1, 193], "error": [1, 4, 5, 6, 8, 10, 11, 12, 22, 37, 38, 43, 47, 49, 50, 52, 53, 58, 60, 61, 68, 78, 97, 101, 107, 108, 111, 122, 125, 130, 134, 139, 148, 152, 155, 159, 160, 172, 173, 174, 184, 189, 190, 195, 197, 204, 208, 215, 220, 222, 244, 247, 256, 262, 271], "higher": [1, 19, 44, 48, 53, 82, 97, 99, 122, 123, 127, 128, 130, 141, 145, 157, 158, 159, 160, 168, 169, 171, 182, 185, 195, 197, 199, 203, 205, 207, 211, 215, 223, 228, 234, 260, 262, 269, 271], "likelihood": [1, 49, 99, 104, 127, 213], "regular": [1, 4, 5, 6, 8, 10, 19, 23, 24, 97, 114, 127, 128, 134, 145, 153, 154, 164, 165, 166, 189, 191, 193, 199, 220, 247], "circular": 1, "compos": [1, 5, 6, 10, 12, 17, 19, 21, 25, 44, 52, 58, 59, 73, 75, 79, 87, 90, 92, 94, 96, 97, 99, 108, 110, 113, 115, 117, 119, 121, 123, 129, 135, 136, 139, 141, 142, 146, 148, 150, 154, 157, 158, 159, 162, 164, 166, 168, 169, 171, 178, 182, 197, 198, 200, 204, 209, 213, 215, 220, 221, 229, 250, 253], "pick": [1, 6, 19, 44, 98, 127, 160, 165, 216], "physic": [1, 14, 103, 177, 237, 247], "memori": [1, 4, 5, 6, 8, 10, 16, 17, 18, 19, 21, 22, 23, 37, 48, 49, 51, 55, 61, 80, 87, 95, 97, 100, 105, 110, 112, 115, 118, 121, 122, 123, 124, 131, 135, 136, 144, 145, 146, 150, 156, 162, 164, 168, 171, 175, 178, 184, 188, 189, 192, 193, 194, 199, 201, 207, 212, 218, 220, 228, 230, 234, 237, 239, 251, 258], "map": [1, 6, 7, 12, 13, 17, 49, 52, 58, 60, 75, 90, 97, 98, 102, 103, 104, 108, 110, 112, 113, 115, 116, 119, 127, 136, 138, 139, 143, 145, 152, 153, 154, 159, 160, 163, 171, 173, 174, 176, 178, 182, 197, 200, 201, 205, 209, 212, 213, 214, 237, 247], "arrai": [1, 6, 32, 43, 44, 47, 51, 58, 59, 85, 89, 95, 103, 109, 117, 127, 128, 139, 146, 157, 158, 160, 165, 166, 171, 192, 229], "desir": [1, 5, 8, 12, 14, 16, 49, 51, 52, 73, 82, 97, 110, 112, 116, 135, 142, 156, 168, 171, 184, 190, 202, 226, 230, 263, 272], "hyperparamet": [1, 6, 14, 17, 52, 87, 112, 115, 121, 126, 189, 193], "randomcroptensordict": 1, "make_replay_buff": 1, "buffer_s": 1, "random_crop_len": 1, "prefetch": [1, 136, 177], "prb": 1, "sampler": [1, 6, 19, 34, 55, 110, 122, 123, 137, 159, 165, 166, 182, 185, 197, 198], "max_capac": 1, "alpha": [1, 5, 6, 15, 98, 108, 127, 128, 146, 149, 171, 178, 189, 193, 263, 272], "7": [1, 3, 5, 6, 17, 18, 19, 22, 23, 34, 36, 51, 58, 59, 80, 85, 95, 96, 101, 109, 116, 117, 122, 123, 129, 134, 135, 146, 147, 149, 157, 158, 166, 171, 172, 173, 174, 175, 177, 178, 184, 188, 199, 202, 203, 204, 206, 207, 208, 210, 211, 215, 218, 219, 221, 222, 224, 225, 227, 228, 230, 247, 252, 255, 266, 275], "beta": [1, 6, 20, 52, 105, 118, 121, 192, 216, 234, 247, 251], "scratch_dir": 1, "buffer_scratch_dir": 1, "sample_dim": 1, "temporari": [1, 5, 117, 126, 177, 181], "disk": [1, 4, 23, 25, 105, 112, 136, 187, 188, 194, 208, 223, 237, 245], "tempfil": [1, 7, 87, 117, 125, 126, 133], "tmpdir": 1, "temporarydirectori": [1, 87, 117, 125], "along": [1, 4, 5, 6, 7, 8, 14, 17, 21, 23, 43, 48, 49, 53, 54, 55, 56, 60, 83, 97, 101, 102, 110, 116, 117, 119, 122, 123, 127, 128, 131, 132, 136, 152, 156, 160, 162, 169, 171, 175, 191, 201, 202], "dimens": [1, 5, 6, 7, 12, 14, 18, 20, 21, 44, 47, 48, 49, 60, 78, 79, 87, 92, 99, 101, 102, 103, 110, 115, 121, 124, 127, 129, 136, 138, 146, 147, 154, 156, 158, 159, 161, 173, 174, 175, 190, 193, 197, 198, 205, 213, 223, 230, 234, 239, 247], "feed": [1, 6, 12, 19, 44, 47, 49, 60, 97, 100, 102, 105, 112, 124, 127, 128, 133, 134, 146, 160, 165, 169, 176, 195, 214], "adapt": [1, 2, 14, 17, 24, 87, 105, 126, 201], "divid": [1, 7, 8, 9, 10, 11, 12, 14, 15, 19, 85, 97, 99, 127, 134, 135, 149, 153, 163, 176, 177, 181], "yield": [1, 6, 11, 12, 16, 17, 19, 21, 104, 112, 115, 116, 118, 124, 125, 161, 163, 184, 192, 201, 219, 221, 241, 247], "regard": [1, 6, 11, 14, 23, 60, 112, 144, 145, 159, 168, 262, 271], "25": [1, 7, 9, 22, 23, 73, 89, 90, 97, 109, 117, 123, 157, 162, 164, 171, 181, 184, 203, 219, 231, 233, 238], "balanc": [1, 6, 18, 133, 168, 226], "choic": [1, 4, 6, 8, 49, 87, 126, 128, 165, 210, 247], "heterogen": [1, 196], "figur": [1, 8, 12, 14, 22, 34, 49, 51, 52, 73, 82, 97, 117, 121, 124, 126, 127, 128, 136, 144, 149, 159, 160, 161, 165, 168, 169, 171, 176, 178, 182, 195, 197, 236, 263, 265, 272, 274], "dataflow": 1, "8": [1, 3, 5, 6, 7, 9, 13, 14, 16, 17, 19, 23, 34, 49, 52, 58, 59, 65, 73, 87, 90, 93, 101, 102, 109, 111, 115, 116, 118, 119, 122, 124, 127, 128, 129, 133, 134, 137, 142, 144, 146, 147, 149, 153, 157, 158, 164, 165, 166, 168, 171, 172, 173, 174, 176, 178, 184, 185, 187, 188, 189, 193, 199, 201, 206, 207, 208, 212, 214, 215, 216, 219, 221, 223, 224, 225, 228, 230, 234, 238, 247, 254, 257, 258, 262, 263, 266, 271, 272, 275], "ceil_div": 1, "y": [1, 2, 5, 7, 17, 18, 20, 22, 23, 25, 32, 37, 38, 40, 41, 43, 47, 48, 51, 52, 63, 64, 65, 67, 68, 69, 71, 72, 73, 76, 82, 85, 89, 92, 93, 95, 96, 97, 98, 101, 102, 104, 110, 111, 113, 116, 122, 125, 137, 141, 144, 146, 147, 148, 155, 164, 168, 171, 172, 173, 174, 175, 185, 186, 191, 195, 205, 208, 212, 245, 246, 254, 255, 263, 272], "known": [1, 4, 5, 12, 17, 42, 113, 124, 135, 137, 141, 143, 156, 160, 165, 185, 188, 200, 201, 207, 234], "utd": [1, 136], "update_to_data": 1, "64": [1, 5, 6, 14, 15, 17, 18, 19, 20, 23, 34, 37, 38, 43, 49, 52, 60, 73, 87, 95, 97, 102, 104, 115, 119, 122, 123, 124, 126, 129, 134, 136, 138, 145, 146, 154, 158, 159, 161, 162, 164, 166, 173, 174, 175, 178, 184, 201, 203, 205, 207, 208, 219, 221, 231, 233, 238], "reproduc": [1, 12, 25, 52, 73, 97, 137, 144, 159, 163, 172, 185, 219, 234, 247], "realiz": [1, 17, 201], "sever": [1, 2, 3, 10, 11, 15, 16, 19, 22, 25, 45, 47, 52, 53, 54, 61, 73, 78, 97, 99, 113, 122, 127, 132, 135, 142, 146, 149, 152, 153, 155, 157, 159, 161, 162, 168, 169, 172, 173, 174, 176, 177, 191, 200, 208, 219, 220, 223, 252], "ve": [1, 5, 6, 7, 8, 17, 21, 22, 25, 45, 47, 50, 76, 78, 113, 121, 125, 129, 136, 142, 143, 145, 152, 154, 160, 162, 169, 176, 184, 189, 191, 192, 201, 213, 214, 234, 257], "_must_": 1, "99": [1, 63, 64, 67, 68, 69, 71, 72, 111, 159, 160, 163], "lmbda": [1, 159], "tau": [1, 160], "001": [1, 12, 14, 24, 44, 51, 89, 92, 94, 96, 97, 103, 112, 117, 133, 149, 160, 161, 165, 168, 169, 220, 230, 241, 242, 243, 249, 250, 253], "decai": [1, 117, 136, 157, 160, 216], "factor": [1, 18, 20, 117, 129, 157, 160, 161, 172, 183, 184, 234], "off": [1, 7, 8, 9, 12, 16, 19, 21, 24, 34, 43, 49, 51, 52, 98, 112, 113, 117, 119, 123, 126, 127, 144, 152, 157, 159, 161, 162, 163, 171, 181, 187, 189, 213, 234, 256], "dictat": [1, 14], "introduc": [1, 11, 15, 16, 17, 21, 22, 23, 24, 42, 54, 60, 75, 78, 79, 87, 97, 99, 109, 118, 119, 121, 122, 133, 144, 147, 149, 152, 161, 163, 164, 165, 171, 172, 173, 174, 175, 177, 181, 182, 185, 186, 188, 189, 191, 192, 195, 197, 199, 200, 201, 203, 204, 205, 207, 209, 212, 216, 220, 222, 223, 244, 247, 255], "outdat": 1, "trick": [1, 6, 10, 49, 130, 135, 145], "multi": [1, 5, 6, 14, 18, 47, 49, 52, 53, 54, 55, 56, 61, 77, 99, 113, 121, 122, 124, 131, 132, 133, 134, 136, 137, 149, 159, 161, 164, 168, 177, 178, 185, 193, 214, 215, 247], "altern": [1, 6, 10, 23, 48, 49, 102, 113, 117, 123, 138, 143, 147, 155, 157, 159, 165, 168, 171, 172, 182, 184, 192, 199, 209, 244, 247, 255], "hack": [1, 137, 185, 189, 244], "find": [1, 2, 4, 5, 6, 8, 10, 17, 22, 23, 48, 52, 73, 82, 83, 85, 87, 98, 101, 121, 123, 127, 128, 135, 137, 141, 142, 144, 149, 153, 157, 160, 163, 165, 168, 173, 174, 183, 189, 190, 191, 192, 195, 197, 200, 201, 204, 208, 213, 221, 222, 223, 226, 229, 245, 252], "despit": [1, 73, 133], "fact": [1, 3, 5, 6, 8, 12, 14, 19, 22, 23, 60, 73, 80, 97, 99, 103, 113, 125, 153, 159, 160, 169], "part": [1, 3, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 20, 23, 42, 43, 45, 49, 52, 58, 59, 60, 73, 76, 87, 98, 100, 103, 113, 116, 118, 121, 122, 124, 125, 128, 130, 131, 134, 135, 136, 137, 139, 143, 144, 149, 152, 153, 159, 165, 173, 174, 181, 182, 183, 184, 186, 188, 189, 191, 196, 198, 204, 208, 209, 213, 216, 221, 222, 223, 226, 229, 230, 234, 244, 252, 254, 260, 261, 262, 269, 270, 271], "thank": [1, 9, 19, 49, 104, 115, 119, 126, 127, 128, 135, 137, 165, 176, 177, 185, 187, 188, 195, 204, 222], "hardupd": 1, "softupd": [1, 136], "appropri": [1, 6, 7, 8, 42, 49, 60, 126, 127, 133, 153, 157, 162, 169, 175, 182, 197, 198, 199, 213, 219, 220, 230], "locat": [1, 6, 31, 48, 78, 80, 82, 103, 109, 113, 135, 157, 159, 165, 168, 173, 174, 176, 178, 188, 204, 222, 223, 226, 238, 247, 257], "target_net_updat": 1, "ep": [1, 13, 73, 118, 129, 136, 142, 163, 173, 174, 179, 189, 198, 200, 201, 218], "adam": [1, 6, 11, 13, 14, 47, 49, 52, 69, 96, 97, 99, 110, 111, 118, 135, 136, 146, 148, 152, 159, 160, 161, 163, 165, 172, 210, 211, 214, 258], "optimizer_actor": 1, "lr": [1, 7, 11, 14, 16, 19, 24, 37, 38, 43, 44, 47, 49, 52, 65, 67, 69, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 110, 111, 112, 115, 117, 118, 122, 123, 129, 133, 134, 135, 136, 144, 146, 148, 149, 157, 159, 160, 161, 162, 163, 165, 166, 168, 169, 178, 210, 214, 216, 220, 221, 230, 237, 241, 242, 243, 245, 249, 250, 251, 253, 258], "1e": [1, 13, 17, 20, 37, 38, 43, 63, 65, 67, 68, 69, 71, 72, 87, 93, 98, 111, 118, 125, 126, 129, 138, 150, 154, 157, 159, 160, 161, 163, 179, 189, 201, 218, 237], "weight_decai": [1, 98, 112, 157, 178, 216], "optimizer_valu": 1, "total_collection_step": 1, "pretti": [1, 16, 21, 44, 109, 113, 126, 145, 163, 182, 205], "rewards_ev": 1, "collected_fram": 1, "pbar": [1, 14, 136, 159], "r0": [1, 122], "enumer": [1, 7, 17, 19, 37, 38, 44, 49, 51, 52, 75, 87, 92, 94, 96, 98, 103, 115, 117, 123, 124, 127, 129, 136, 157, 158, 159, 162, 165, 166, 168, 169, 193, 201, 220, 221, 250, 253], "update_policy_weights_": 1, "numel": [1, 7, 8, 78, 97, 125, 129, 136, 147, 150, 159, 161, 189, 246, 254], "extend": [1, 4, 5, 6, 8, 19, 24, 52, 58, 59, 61, 87, 105, 106, 107, 113, 121, 123, 128, 134, 136, 158, 159, 162, 163, 171, 175, 177, 179, 186, 199, 208, 220, 221, 247], "current_fram": 1, "_": [1, 5, 11, 12, 14, 15, 16, 19, 21, 33, 34, 35, 36, 37, 40, 44, 48, 49, 52, 60, 75, 80, 87, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 102, 104, 106, 111, 115, 117, 118, 134, 135, 136, 137, 138, 139, 142, 144, 145, 147, 149, 150, 152, 157, 159, 160, 161, 163, 164, 165, 169, 172, 176, 177, 181, 182, 184, 185, 195, 197, 198, 199, 204, 210, 211, 212, 213, 219, 229, 230, 234, 237, 256, 258, 262, 271], "rang": [1, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 25, 34, 37, 38, 42, 44, 49, 51, 52, 53, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 82, 85, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 105, 107, 108, 111, 113, 115, 116, 117, 118, 122, 123, 126, 127, 128, 129, 134, 135, 136, 137, 138, 142, 144, 146, 149, 152, 154, 157, 158, 159, 160, 161, 163, 164, 165, 166, 168, 169, 172, 173, 174, 176, 177, 178, 179, 181, 184, 185, 186, 193, 194, 195, 198, 201, 203, 209, 210, 211, 212, 215, 219, 221, 226, 229, 230, 234, 237, 238, 245, 247, 250, 254, 258], "sampled_tensordict": 1, "backward": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 15, 16, 19, 25, 32, 37, 38, 43, 44, 45, 47, 49, 52, 61, 63, 64, 65, 67, 68, 69, 73, 75, 76, 87, 89, 92, 94, 96, 97, 98, 99, 101, 102, 103, 104, 111, 115, 117, 118, 121, 123, 124, 125, 127, 128, 131, 133, 134, 135, 136, 141, 145, 146, 149, 150, 154, 157, 159, 160, 161, 162, 163, 165, 166, 168, 169, 172, 173, 174, 191, 198, 210, 211, 212, 214, 216, 220, 221, 230, 238, 245, 247, 250, 253, 258], "gn1": 1, "clip_grad_norm_": [1, 7, 14, 49, 115, 159, 230], "zero_grad": [1, 3, 6, 7, 12, 14, 19, 37, 38, 44, 47, 49, 52, 65, 67, 68, 69, 73, 75, 87, 89, 92, 94, 96, 97, 98, 99, 102, 103, 104, 111, 115, 117, 118, 122, 123, 127, 128, 129, 133, 135, 136, 146, 149, 152, 157, 159, 160, 161, 163, 165, 166, 168, 169, 172, 198, 214, 220, 221, 230, 245, 250, 253], "gn2": 1, "gn": [1, 14], "prioriti": [1, 8, 182], "update_tensordict_prior": 1, "td_record": 1, "r_evalu": 1, "len": [1, 7, 9, 12, 14, 17, 19, 34, 37, 38, 45, 47, 49, 51, 52, 55, 60, 73, 75, 79, 87, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 108, 115, 116, 117, 118, 122, 123, 125, 127, 128, 129, 135, 137, 142, 149, 157, 160, 161, 162, 165, 166, 169, 171, 175, 178, 181, 185, 200, 201, 209, 215, 216, 221], "rn": 1, "rs": [1, 165], "std": [1, 2, 4, 5, 6, 12, 15, 19, 22, 23, 51, 58, 59, 73, 90, 92, 95, 97, 117, 149, 155, 157, 158, 163, 166, 171, 182, 186, 187, 189, 197, 198, 204, 208, 220, 222, 229, 231, 256], "set_descript": [1, 14, 136, 159], "2f": [1, 7, 19, 97, 115, 119, 123, 127, 129, 156, 158, 161, 163, 176, 177, 182, 184, 197, 198, 203, 228, 231, 234], "grad": [1, 2, 6, 12, 13, 16, 32, 43, 47, 63, 64, 68, 73, 76, 78, 89, 101, 104, 111, 123, 125, 127, 128, 129, 130, 133, 135, 141, 145, 150, 152, 159, 161, 162, 163, 189, 205, 211, 216, 230, 250], "norm": [1, 2, 14, 17, 19, 52, 78, 89, 97, 110, 121, 124, 153, 156, 159, 171, 182, 195, 201], "shutdown": [1, 16, 134, 161, 162, 163, 212], "del": [1, 44, 129, 141, 152, 159, 184, 186, 237], "plot": [1, 6, 12, 14, 17, 51, 52, 73, 82, 89, 113, 117, 126, 136, 146, 149, 159, 160, 161, 166, 169, 171, 195, 236], "mention": [1, 5, 6, 10, 11, 15, 16, 52, 60, 73, 85, 95, 97, 98, 112, 123, 124, 135, 136, 160, 162, 168, 171, 185, 197, 226, 237, 244], "greater": [1, 11, 49, 52, 125, 176, 188, 206], "matplotlib": [1, 6, 12, 14, 34, 44, 51, 52, 57, 73, 75, 89, 90, 92, 94, 96, 104, 117, 127, 128, 136, 146, 149, 157, 159, 160, 165, 166, 169, 171, 178, 195, 236], "pyplot": [1, 6, 12, 14, 34, 44, 51, 52, 73, 75, 89, 90, 92, 94, 96, 104, 117, 127, 128, 136, 146, 149, 157, 159, 160, 165, 166, 169, 171, 178, 195, 236], "plt": [1, 6, 12, 14, 34, 44, 51, 52, 73, 75, 89, 90, 92, 94, 96, 117, 127, 128, 136, 146, 149, 157, 159, 160, 165, 166, 169, 171, 178, 195, 236], "zip": [1, 6, 17, 18, 44, 49, 50, 52, 104, 105, 108, 112, 116, 128, 137, 138, 150, 154, 160, 161, 163, 169, 171, 178, 181, 185, 201, 208, 216, 223, 230], "label": [1, 6, 17, 34, 40, 43, 44, 51, 52, 58, 59, 73, 75, 78, 87, 90, 92, 94, 96, 97, 99, 103, 109, 110, 113, 115, 117, 119, 122, 124, 127, 133, 134, 137, 146, 149, 157, 158, 161, 165, 168, 169, 178, 185, 201, 208, 213, 221, 226, 231, 234, 236, 250, 251, 258, 262, 271], "legend": [1, 52, 146, 262, 271], "xlabel": [1, 14, 52, 73, 136, 160, 171], "ylabel": [1, 17, 52, 73, 160, 171], "tight_layout": [1, 51, 73, 149, 157], "concret": [1, 5, 6, 8, 11, 149, 159, 189, 200], "takeawai": [1, 114], "further": [1, 4, 5, 6, 8, 19, 21, 23, 47, 61, 73, 87, 97, 113, 116, 118, 124, 127, 142, 144, 149, 156, 159, 171, 172, 177, 184, 193, 195, 196, 197, 198, 199, 204, 216, 220, 222, 228, 237, 247, 252, 253], "dispatch": [1, 5, 15, 121, 155, 177, 207, 208, 219, 230], "distpatch": 1, "iql": 1, "flexibl": [1, 2, 5, 6, 23, 24, 25, 49, 60, 85, 105, 112, 115, 121, 122, 131, 199, 240, 257], "minut": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 159, 160, 164, 165, 166, 168, 169, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "000": [1, 7, 9, 12, 13, 14, 17, 19, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 171, 172, 174, 176, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "coding_ddpg": 1, "jupyt": [1, 7, 9, 12, 13, 14, 17, 20, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 171, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "notebook": [1, 7, 9, 12, 13, 14, 17, 18, 20, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 82, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 169, 171, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 257], "ipynb": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "galleri": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255], "sphinx": [1, 7, 9, 12, 13, 14, 17, 20, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 60, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, 117, 118, 119, 125, 126, 127, 128, 129, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 159, 160, 164, 165, 166, 168, 172, 174, 178, 181, 184, 189, 190, 191, 192, 193, 195, 203, 205, 211, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 260, 261, 262, 263, 267, 269, 270, 271, 272, 276], "build": [2, 6, 7, 12, 14, 19, 20, 25, 35, 47, 49, 60, 61, 65, 68, 69, 75, 76, 78, 81, 87, 91, 95, 98, 103, 109, 111, 113, 114, 115, 118, 120, 121, 127, 128, 134, 135, 136, 137, 139, 141, 152, 154, 159, 160, 161, 162, 163, 174, 175, 181, 182, 185, 187, 188, 193, 194, 196, 197, 199, 205, 220, 223, 224, 225, 246, 247, 254, 261, 266, 270, 275], "highli": [2, 5, 6, 10, 18, 49, 60, 87, 165, 175, 177, 205, 247], "dynam": [2, 4, 5, 6, 8, 12, 14, 15, 19, 20, 22, 23, 25, 43, 53, 61, 65, 97, 100, 107, 111, 112, 119, 121, 147, 156, 159, 179, 182, 183, 184, 196, 197, 198, 199, 208, 220, 221, 222, 230, 235, 247, 251, 254], "explor": [2, 6, 8, 14, 21, 23, 45, 49, 73, 108, 121, 126, 130, 136, 144, 146, 152, 159, 164, 165, 229, 254], "note": [2, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 43, 44, 45, 47, 49, 50, 52, 61, 73, 85, 99, 100, 101, 102, 103, 108, 109, 112, 113, 116, 117, 122, 123, 124, 125, 126, 129, 130, 132, 133, 134, 135, 137, 138, 141, 142, 144, 145, 147, 149, 152, 154, 155, 156, 157, 161, 162, 163, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 187, 188, 189, 190, 191, 192, 193, 197, 198, 199, 201, 202, 203, 204, 205, 207, 212, 214, 215, 216, 222, 238, 247, 252, 257, 258, 260, 262, 269, 271], "differenti": [2, 5, 6, 14, 18, 25, 35, 40, 46, 47, 57, 76, 121, 136, 154, 160, 166, 191], "requires_grad": [2, 6, 7, 8, 12, 13, 20, 32, 37, 43, 47, 63, 64, 68, 73, 76, 89, 95, 101, 104, 105, 108, 110, 111, 117, 125, 129, 130, 141, 146, 147, 157, 178, 191, 201, 205, 237, 244, 250], "track": [2, 5, 7, 8, 9, 14, 43, 52, 63, 82, 99, 101, 110, 111, 117, 122, 127, 128, 132, 136, 142, 157, 163, 165, 168, 208, 245, 257], "auto": [2, 3, 5, 6, 8, 10, 12, 22, 55, 59, 122, 123, 144, 155, 186, 187, 188, 206, 208, 220, 221, 231, 246, 262, 263, 271, 272], "cout": [2, 4, 6, 22, 23, 187, 256], "endl": [2, 6, 22, 23, 187, 208], "cpufloattyp": [2, 4, 6, 23, 208], "wa": [2, 3, 4, 5, 11, 17, 20, 22, 23, 25, 42, 44, 49, 51, 52, 58, 59, 60, 61, 73, 76, 79, 95, 97, 98, 99, 101, 108, 112, 113, 115, 116, 123, 124, 126, 133, 135, 146, 150, 152, 153, 154, 156, 158, 159, 160, 163, 164, 165, 169, 176, 177, 184, 188, 191, 192, 198, 201, 208, 223, 226, 230, 231, 234, 257, 262, 271], "result": [2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 19, 20, 21, 23, 24, 25, 43, 44, 51, 58, 59, 60, 63, 64, 65, 67, 68, 69, 71, 72, 76, 78, 82, 83, 87, 97, 101, 107, 108, 111, 112, 114, 116, 119, 122, 124, 125, 128, 133, 135, 136, 137, 141, 142, 143, 144, 145, 146, 147, 149, 150, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 182, 184, 188, 190, 191, 192, 193, 195, 197, 198, 199, 200, 202, 203, 204, 205, 206, 208, 209, 210, 212, 218, 219, 221, 222, 223, 228, 231, 233, 234, 237, 238, 241, 244, 246, 247, 251, 252, 256, 258, 260, 269], "grad_fn": [2, 4, 25, 32, 43, 47, 76, 89, 101, 125, 130, 173, 185], "addbackward1": 2, "z": [2, 5, 7, 23, 32, 43, 49, 52, 60, 76, 80, 85, 89, 92, 95, 101, 147, 165, 174, 191, 203, 208, 255, 263, 272], "27": [2, 7, 51, 144, 163, 176, 184, 219, 228, 231], "mulbackward1": 2, "meanbackward0": 2, "requires_grad_": [2, 12, 32, 76, 101, 104, 145], "flag": [2, 5, 14, 23, 43, 73, 76, 101, 137, 150, 153, 165, 174, 176, 185, 196, 198, 204, 237], "place": [2, 5, 6, 11, 12, 14, 18, 22, 23, 43, 45, 48, 49, 52, 76, 78, 85, 99, 101, 108, 113, 116, 118, 122, 126, 129, 133, 135, 138, 148, 149, 152, 154, 156, 157, 159, 160, 165, 171, 172, 175, 182, 189, 197, 198, 199, 205, 208, 212, 213, 214, 230, 237, 244, 247, 252, 262, 263, 264, 271, 272, 273], "randn": [2, 5, 6, 12, 13, 20, 23, 32, 45, 47, 52, 63, 65, 67, 71, 72, 76, 78, 80, 89, 97, 98, 99, 101, 102, 104, 105, 108, 110, 111, 125, 133, 134, 138, 141, 142, 143, 144, 145, 149, 150, 154, 161, 163, 164, 172, 173, 174, 184, 186, 191, 193, 197, 198, 199, 205, 208, 212, 230, 231, 232, 234, 238, 239, 245, 254, 258], "b": [2, 5, 6, 7, 12, 18, 21, 23, 32, 43, 47, 63, 64, 65, 67, 71, 72, 76, 80, 83, 89, 92, 93, 95, 98, 99, 102, 103, 104, 109, 110, 111, 125, 127, 128, 129, 142, 144, 145, 147, 149, 158, 160, 172, 174, 191, 193, 194, 203, 209, 231, 238, 246, 263, 272], "sumbackward0": 2, "backprop": [2, 43, 71, 72, 76, 98, 101, 111, 127, 146], "scalar": [2, 5, 14, 15, 23, 32, 43, 49, 52, 60, 63, 76, 101, 111, 169, 197, 206], "equival": [2, 4, 5, 11, 13, 17, 22, 23, 32, 43, 99, 137, 141, 154, 160, 162, 171, 173, 174, 185, 186, 189, 191, 193, 198, 199, 200, 201, 247, 255, 256], "print": [2, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 32, 33, 34, 37, 38, 40, 42, 43, 44, 45, 47, 48, 49, 51, 52, 53, 58, 59, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 80, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 123, 125, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 185, 188, 189, 190, 191, 192, 193, 194, 195, 197, 198, 201, 203, 206, 208, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 223, 228, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 244, 246, 247, 249, 250, 252, 254, 255, 256, 258, 262, 271], "dx": [2, 64, 76, 99, 111, 130, 174], "got": [2, 15, 19, 55, 98, 99, 101, 113, 133, 146, 147, 155, 162, 188, 197, 200, 213, 262, 271], "matrix": [2, 5, 6, 12, 17, 23, 32, 40, 43, 48, 82, 92, 98, 99, 101, 103, 109, 110, 124, 127, 128, 145, 150, 153, 164, 165, 166, 171, 173, 174, 176, 177, 192, 193, 199, 201, 205, 219, 220, 221, 226, 247, 251], "explan": [2, 52, 61, 160, 169, 237], "arriv": [2, 6, 15, 23, 42, 113, 122, 133, 161, 208, 247], "valu": [2, 4, 5, 6, 7, 9, 12, 14, 18, 19, 20, 21, 22, 23, 25, 32, 33, 40, 41, 43, 47, 48, 49, 50, 55, 58, 59, 60, 61, 63, 68, 73, 80, 82, 85, 87, 92, 97, 98, 99, 101, 102, 103, 105, 108, 111, 113, 115, 124, 125, 126, 127, 129, 132, 133, 135, 137, 138, 139, 141, 143, 146, 149, 150, 154, 155, 156, 160, 161, 162, 163, 164, 165, 168, 171, 172, 173, 174, 175, 182, 183, 185, 187, 189, 190, 191, 192, 193, 195, 196, 197, 198, 200, 203, 204, 208, 209, 211, 213, 216, 222, 229, 230, 234, 244, 245, 258, 260, 269], "section": [2, 4, 5, 6, 7, 8, 11, 15, 18, 19, 21, 23, 43, 44, 47, 50, 51, 52, 73, 95, 97, 98, 99, 102, 103, 108, 113, 116, 118, 125, 129, 135, 139, 141, 144, 146, 150, 157, 160, 161, 163, 168, 171, 173, 176, 177, 178, 179, 182, 188, 190, 191, 200, 202, 207, 211, 213, 220, 226, 230, 237, 247, 260, 262, 263, 264, 266, 269, 271, 272, 273, 275], "jacobian": [2, 43, 89, 121, 141, 205], "product": [2, 3, 4, 6, 12, 40, 42, 43, 48, 60, 61, 85, 99, 105, 113, 121, 122, 135, 139, 141, 165, 175, 176, 177, 185, 199, 200, 205, 209, 231, 234, 251, 254, 257], "1021": 2, "4020": 2, "314": 2, "6695": 2, "613": [2, 219], "4944": [2, 208], "0001": [2, 19, 49, 87, 89, 118, 144, 221], "kfloat": [2, 3, 59, 186, 188, 206], "102": 2, "4000": [2, 49, 60, 92, 246], "1024": [2, 5, 18, 21, 42, 82, 97, 129, 147, 164, 184, 199, 208, 210, 211, 231, 239], "0000": [2, 23, 173, 201, 208, 263, 272], "stop": [2, 4, 5, 23, 51, 58, 59, 76, 78, 87, 98, 101, 110, 126, 128, 135, 147, 152, 159, 161, 165, 168], "histori": [2, 9, 47, 48, 101, 110, 113, 117, 128, 146, 156, 157, 165, 181], "nogradguard": [2, 256], "block": [2, 5, 6, 7, 8, 10, 12, 16, 17, 19, 22, 23, 47, 49, 75, 76, 82, 90, 101, 115, 116, 123, 124, 134, 135, 136, 144, 157, 161, 162, 163, 164, 168, 171, 184, 201, 207, 208, 212, 247, 266, 275], "no_grad": [2, 7, 9, 12, 17, 19, 32, 37, 38, 42, 43, 44, 52, 58, 59, 63, 64, 68, 76, 87, 89, 92, 96, 97, 98, 99, 101, 102, 104, 110, 111, 115, 117, 122, 123, 127, 128, 129, 136, 137, 144, 146, 157, 158, 159, 160, 162, 165, 166, 169, 172, 174, 177, 178, 181, 182, 184, 185, 194, 197, 198, 199, 202, 216, 220, 247, 253, 256], "Or": [2, 21, 23, 152, 163, 179, 198, 206, 208, 262, 271], "eq": [2, 19, 23, 49, 60, 95, 123, 129, 162, 166, 173, 182, 197, 198, 221, 238, 262, 271], "bool": [2, 11, 14, 15, 17, 23, 95, 109, 118, 137, 143, 146, 155, 159, 160, 164, 171, 179, 185, 190, 192, 201, 208, 252, 260, 269], "is_leaf": 2, "detach_": [2, 163], "register_hook": 2, "retain_grad": 2, "doc": [2, 4, 6, 32, 33, 34, 37, 38, 40, 60, 69, 94, 104, 109, 111, 132, 135, 142, 143, 161, 163, 171, 174, 181, 193, 205, 226, 230, 245, 260, 261, 262, 267, 269, 270, 271, 276], "calcul": [2, 12, 17, 43, 44, 49, 52, 56, 60, 73, 82, 85, 87, 97, 110, 127, 128, 137, 143, 146, 160, 161, 163, 164, 165, 171, 177, 182, 191, 193, 197, 200, 201, 215, 221], "penalti": [2, 153, 158, 230], "h": [2, 4, 5, 6, 7, 8, 9, 10, 12, 22, 23, 25, 38, 49, 51, 96, 124, 129, 137, 144, 146, 147, 155, 178, 181, 185, 188, 208, 213, 220, 222, 225, 246, 256], "model": [2, 3, 5, 8, 11, 14, 16, 22, 23, 24, 33, 35, 37, 38, 39, 42, 43, 44, 47, 48, 52, 53, 54, 56, 61, 65, 67, 68, 69, 75, 78, 86, 87, 89, 90, 91, 93, 95, 96, 98, 99, 100, 101, 104, 106, 107, 108, 109, 110, 111, 116, 118, 119, 120, 121, 123, 126, 127, 128, 129, 132, 135, 139, 141, 142, 144, 145, 148, 152, 153, 154, 158, 159, 160, 161, 162, 163, 164, 172, 173, 174, 176, 177, 183, 184, 186, 193, 196, 199, 200, 201, 204, 205, 207, 212, 213, 214, 215, 216, 219, 222, 227, 228, 230, 235, 237, 238, 239, 241, 242, 243, 244, 245, 248, 249, 250, 251, 253, 254, 258], "linear": [2, 5, 6, 7, 9, 11, 16, 17, 19, 25, 37, 38, 43, 44, 45, 47, 48, 49, 60, 68, 69, 73, 78, 79, 87, 89, 92, 93, 94, 96, 97, 98, 100, 102, 103, 105, 109, 110, 111, 112, 115, 117, 118, 119, 123, 124, 125, 127, 128, 129, 133, 134, 137, 138, 141, 144, 145, 146, 148, 149, 150, 153, 154, 156, 157, 160, 161, 162, 163, 164, 165, 166, 169, 172, 173, 174, 177, 179, 181, 182, 184, 185, 189, 193, 195, 197, 198, 199, 200, 201, 202, 203, 205, 207, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 223, 226, 228, 230, 232, 233, 234, 237, 239, 240, 241, 242, 243, 244, 245, 248, 249, 250, 252, 258], "loss": [2, 3, 5, 6, 7, 9, 11, 14, 16, 17, 19, 32, 38, 43, 48, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 78, 87, 89, 92, 94, 96, 99, 102, 103, 104, 111, 112, 115, 117, 118, 121, 122, 123, 125, 127, 129, 134, 135, 146, 147, 148, 149, 152, 154, 157, 160, 162, 163, 165, 166, 168, 169, 172, 178, 181, 182, 188, 191, 197, 198, 201, 216, 220, 221, 234, 241, 245, 250, 253, 258], "target": [2, 3, 4, 6, 9, 12, 14, 16, 18, 19, 22, 23, 44, 47, 49, 55, 60, 73, 78, 90, 94, 97, 98, 99, 102, 103, 104, 113, 116, 118, 123, 127, 128, 129, 134, 135, 136, 138, 142, 144, 152, 154, 155, 158, 160, 161, 162, 163, 165, 166, 169, 171, 172, 173, 174, 178, 179, 181, 182, 188, 197, 198, 199, 200, 204, 206, 208, 220, 221, 222, 225, 226, 229, 230, 234, 253, 256], "mseloss": [2, 12, 37, 47, 65, 67, 68, 69, 78, 97, 110, 111, 133, 134, 149, 161, 214, 230, 245, 258], "grad_output": [2, 8, 10, 13, 64, 76, 78, 111], "ones_lik": [2, 32, 40, 48, 95, 142, 191], "create_graph": [2, 130], "gradient_penalti": 2, "dim": [2, 4, 5, 11, 14, 21, 33, 40, 41, 45, 48, 49, 60, 73, 90, 92, 93, 94, 96, 97, 99, 102, 103, 104, 110, 115, 118, 123, 127, 128, 129, 134, 144, 147, 148, 149, 154, 156, 158, 159, 161, 162, 163, 164, 165, 166, 169, 171, 173, 174, 190, 191, 192, 193, 203, 206, 219, 221, 233, 256], "combined_loss": 2, "1042": 2, "0638": 2, "0103": 2, "0723": 2, "2543": 2, "1222": 2, "0071": 2, "0814": 2, "1683": 2, "1052": 2, "0355": 2, "document": [2, 4, 5, 6, 20, 47, 52, 60, 61, 79, 82, 85, 87, 101, 112, 113, 117, 121, 133, 135, 136, 139, 141, 143, 144, 157, 162, 163, 164, 168, 171, 172, 173, 174, 176, 177, 178, 179, 191, 197, 199, 205, 206, 209, 213, 214, 218, 220, 221, 228, 247, 252, 254, 255, 256, 257, 260, 262, 263, 267, 269, 271, 272, 276], "link": [2, 4, 5, 6, 10, 12, 22, 23, 52, 58, 59, 82, 105, 108, 114, 116, 118, 135, 139, 141, 191, 204, 206, 208, 220, 260, 261, 266, 269, 270, 275], "subclass": [2, 5, 6, 14, 17, 25, 64, 67, 79, 111, 121, 126, 136, 146, 156, 162, 169, 178, 191, 193, 201, 219, 229, 230, 235, 251, 254, 256], "encod": [2, 7, 9, 14, 17, 42, 47, 48, 75, 76, 100, 104, 113, 118, 122, 126, 127, 128, 136, 153, 159, 163, 171, 178, 181, 184, 185, 195, 200, 201, 208, 230, 252], "method": [2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 19, 21, 23, 25, 44, 47, 49, 51, 55, 58, 59, 60, 64, 65, 67, 73, 79, 83, 85, 90, 95, 97, 99, 101, 111, 112, 113, 115, 120, 121, 126, 130, 133, 136, 137, 139, 141, 142, 143, 144, 145, 146, 149, 153, 154, 155, 156, 157, 159, 160, 161, 162, 169, 171, 172, 173, 174, 176, 182, 183, 189, 197, 198, 200, 201, 203, 208, 209, 213, 221, 223, 224, 225, 228, 229, 230, 245, 247, 262, 271], "forward": [2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 22, 23, 25, 33, 37, 38, 43, 44, 45, 47, 49, 52, 56, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 79, 85, 87, 89, 92, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 108, 111, 112, 115, 117, 118, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 133, 134, 135, 138, 139, 142, 146, 148, 149, 150, 152, 153, 154, 156, 157, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 177, 179, 181, 182, 183, 185, 187, 188, 193, 194, 195, 197, 198, 199, 203, 204, 206, 208, 209, 211, 212, 213, 214, 215, 218, 219, 220, 221, 226, 228, 230, 233, 234, 237, 238, 239, 240, 241, 242, 243, 247, 248, 249, 250, 252, 256, 258], "detail": [2, 5, 6, 8, 10, 12, 15, 16, 20, 22, 23, 25, 43, 44, 45, 52, 53, 58, 59, 60, 61, 69, 73, 82, 83, 85, 111, 113, 116, 119, 123, 124, 126, 128, 129, 131, 133, 142, 144, 149, 150, 152, 157, 160, 163, 164, 168, 169, 172, 173, 174, 177, 179, 185, 188, 189, 190, 191, 192, 194, 198, 199, 205, 207, 208, 211, 213, 218, 219, 220, 224, 225, 226, 228, 229, 230, 231, 234, 237, 246, 247, 252, 257], "namespac": [2, 6, 8, 10, 22, 23, 108, 137, 155, 179, 185, 193, 208, 256], "inherit": [2, 11, 15, 22, 51, 60, 85, 99, 143, 146, 149, 159, 171, 178, 191, 193, 195, 199, 216], "linearfunct": 2, "public": [2, 8, 10, 15, 155, 208, 263, 272], "static": [2, 8, 10, 14, 21, 58, 59, 60, 107, 121, 137, 141, 142, 155, 173, 174, 181, 183, 184, 185, 196, 197, 198, 199, 200, 208, 221, 247, 260, 269], "option": [2, 5, 6, 8, 10, 11, 14, 23, 44, 46, 49, 51, 53, 60, 61, 82, 87, 97, 109, 120, 121, 126, 131, 134, 136, 138, 144, 147, 149, 156, 158, 171, 173, 174, 182, 183, 184, 185, 193, 194, 197, 198, 199, 200, 204, 209, 212, 216, 218, 227, 230, 251, 252, 253, 255, 262, 266, 271, 275], "autogradcontext": [2, 8, 10], "ctx": [2, 5, 8, 10, 13, 18, 64, 111, 129, 130, 141, 212], "save_for_backward": [2, 5, 13, 64, 111, 129, 130], "mm": [2, 5, 12, 59, 110, 137, 185, 186, 188, 194, 197, 206, 207, 222, 225], "expand_a": [2, 19, 182, 197, 198], "tensor_list": [2, 8, 10, 135], "get_saved_vari": 2, "grad_input": [2, 13, 78, 129, 130], "grad_weight": 2, "grad_bia": [2, 13], "Then": [2, 12, 15, 17, 20, 22, 24, 25, 44, 45, 52, 58, 59, 61, 73, 85, 98, 99, 102, 103, 114, 121, 123, 133, 134, 149, 152, 155, 156, 159, 160, 161, 163, 165, 168, 173, 174, 188, 195, 200, 201, 212, 215, 222, 224, 225, 228, 244], "5314": 2, "2807": 2, "4864": 2, "7608": 2, "9101": [2, 173], "0073": 2, "mulconst": [2, 78], "object": [2, 4, 5, 6, 7, 9, 10, 11, 14, 19, 20, 22, 23, 43, 49, 51, 52, 60, 61, 64, 68, 69, 75, 95, 97, 101, 110, 111, 112, 116, 117, 118, 121, 125, 129, 135, 136, 141, 142, 143, 145, 154, 155, 159, 160, 161, 162, 163, 164, 168, 169, 171, 173, 174, 177, 181, 182, 193, 197, 198, 200, 216, 220, 221, 223, 225, 229, 231, 244, 246, 247], "stash": [2, 64, 111], "saved_data": 2, "were": [2, 3, 5, 6, 9, 12, 17, 18, 23, 32, 52, 60, 83, 85, 97, 99, 101, 103, 113, 114, 126, 132, 133, 138, 147, 153, 159, 160, 162, 164, 165, 173, 174, 176, 189, 201, 204, 205, 226, 234, 237, 244], "todoubl": 2, "On": [2, 4, 5, 6, 8, 17, 19, 21, 22, 23, 115, 117, 122, 133, 135, 137, 147, 153, 156, 161, 162, 172, 177, 178, 201, 203, 208, 219, 226, 230, 247], "easiest": [2, 5, 9, 23, 121, 139, 145, 157, 159, 228, 247], "tabl": [2, 16, 21, 89, 103, 109, 115, 121, 122, 135, 137, 143, 144, 162, 163, 164, 168, 173, 174, 175, 219, 238, 266, 275], "set_data": 2, "output_nr": 2, "after": [2, 3, 5, 6, 7, 9, 10, 12, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 32, 33, 34, 43, 45, 47, 49, 52, 53, 58, 59, 60, 61, 63, 64, 76, 79, 87, 97, 98, 99, 102, 103, 105, 110, 111, 112, 113, 115, 116, 122, 124, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 144, 146, 147, 149, 152, 153, 155, 156, 157, 158, 159, 160, 162, 163, 165, 166, 168, 169, 173, 174, 176, 178, 179, 181, 182, 183, 185, 187, 188, 195, 197, 198, 199, 200, 201, 202, 203, 204, 206, 208, 213, 214, 223, 224, 225, 228, 230, 231, 234, 237, 244, 245, 247, 252, 254, 257, 258], "bug": [2, 5, 10, 23, 108, 144, 186], "report": [2, 10, 17, 23, 52, 73, 87, 98, 121, 137, 144, 161, 163, 164, 186, 201], "fix": [2, 14, 17, 20, 23, 24, 49, 50, 51, 52, 97, 108, 113, 125, 157, 161, 173, 174, 184, 201, 226, 247, 262, 271], "soon": [2, 5, 52, 58, 59, 122, 147, 152, 198, 220], "overview": [2, 5, 6, 11, 53, 55, 61, 113, 119, 120, 121, 127, 128, 133, 134, 135, 142, 155, 159, 161, 162, 163, 165, 168, 189, 190, 192, 196, 207, 210, 227, 257], "alwai": [2, 3, 4, 6, 9, 14, 16, 18, 19, 22, 23, 49, 52, 99, 102, 103, 108, 113, 124, 125, 129, 135, 136, 137, 139, 158, 159, 160, 161, 163, 173, 178, 185, 187, 188, 189, 195, 204, 207, 222, 252, 262, 271], "problem": [2, 4, 6, 11, 14, 15, 18, 22, 23, 49, 51, 52, 61, 98, 100, 103, 115, 117, 126, 136, 142, 144, 145, 149, 153, 157, 159, 161, 163, 168, 172, 176, 189, 191, 207, 232, 237, 247, 262, 271], "question": [2, 4, 5, 6, 8, 10, 17, 22, 23, 49, 75, 122, 135, 137, 143, 165, 183, 190, 200, 201, 207, 231], "forum": [2, 4, 5, 6, 22, 23, 44, 79, 110, 142, 143, 183, 207], "view": [3, 7, 9, 10, 11, 12, 14, 15, 16, 19, 25, 47, 49, 50, 52, 53, 55, 56, 61, 73, 78, 82, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 105, 110, 112, 118, 123, 124, 126, 127, 131, 132, 133, 134, 135, 141, 142, 143, 144, 149, 150, 155, 156, 160, 161, 162, 163, 164, 165, 166, 169, 173, 174, 181, 182, 183, 193, 197, 198, 206, 211, 214, 215, 226, 229, 239, 240, 241, 242, 243, 245, 248, 249, 250, 255, 260, 269], "prerequisit": [3, 7, 53, 55, 56, 100, 108, 114, 124, 131, 132, 133, 134, 135, 136, 155, 161, 162, 163, 171, 197, 214, 215], "frontend": [3, 10, 84, 110, 121, 177, 186, 187, 193, 199, 220, 221, 253], "semant": [3, 6, 22, 49, 58, 59, 68, 95, 100, 102, 111, 135, 137, 191, 192, 193, 196, 205, 262, 271], "11": [3, 5, 6, 7, 11, 17, 18, 23, 59, 61, 95, 104, 109, 122, 123, 141, 158, 163, 171, 172, 173, 174, 175, 194, 204, 208, 215, 219, 225, 227, 231, 238, 256, 262, 266, 271, 275], "nvidia": [3, 5, 17, 50, 95, 129, 135, 137, 147, 172, 201, 215, 230, 247, 251, 257], "toolkit": [3, 23, 100, 142, 146, 245], "releas": [3, 4, 6, 10, 17, 20, 23, 24, 42, 50, 105, 108, 109, 112, 122, 123, 125, 139, 142, 152, 162, 164, 168, 199, 201, 204, 208, 212, 219, 220, 221, 247, 262, 271], "greatli": [3, 6, 49, 160], "overhead": [3, 5, 6, 10, 17, 56, 82, 109, 122, 123, 124, 133, 145, 147, 149, 158, 161, 163, 164, 168, 172, 176, 177, 184, 186, 193, 199, 201, 247], "increas": [3, 5, 6, 18, 19, 20, 24, 44, 73, 82, 83, 87, 97, 122, 123, 124, 126, 128, 131, 134, 142, 152, 158, 168, 182, 184, 193, 194, 197, 209, 219, 229, 230, 234, 247], "mostli": [3, 10, 19, 85, 97, 116, 127, 163, 165, 179, 197, 198, 199], "deploy": [3, 4, 25, 42, 60, 97, 112, 126, 177, 186, 199, 204, 220, 227, 228, 234, 251, 252, 257], "appear": [3, 11, 14, 22, 25, 103, 226, 229, 234, 262, 271], "heart": [3, 49, 113, 219, 263, 272], "veri": [3, 4, 5, 6, 8, 12, 14, 15, 18, 19, 21, 22, 23, 24, 25, 45, 47, 48, 49, 58, 59, 60, 61, 65, 73, 75, 76, 85, 99, 101, 113, 115, 117, 123, 124, 125, 127, 134, 135, 149, 152, 153, 157, 160, 161, 163, 164, 165, 166, 168, 169, 176, 178, 182, 189, 191, 195, 198, 205, 226, 234, 247, 263, 264, 272, 273], "time": [3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 80, 83, 85, 87, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 173, 174, 176, 177, 178, 181, 182, 184, 185, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 203, 204, 205, 206, 211, 212, 214, 219, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 256, 257, 260, 262, 269, 271], "compil": [3, 4, 6, 8, 10, 17, 21, 22, 25, 60, 85, 98, 108, 121, 135, 143, 173, 174, 175, 184, 186, 193, 199, 204, 207, 216, 220, 223, 247, 251, 253, 256, 260, 269], "boost": [3, 97, 99, 144, 145, 176, 184, 199, 207, 216, 220, 221, 247], "demonstr": [3, 7, 9, 14, 16, 17, 20, 21, 22, 25, 42, 43, 50, 57, 61, 75, 82, 85, 108, 113, 120, 121, 122, 123, 124, 125, 127, 129, 130, 133, 134, 137, 138, 141, 142, 143, 144, 150, 155, 159, 161, 162, 163, 164, 168, 171, 173, 174, 177, 179, 184, 185, 186, 187, 188, 191, 193, 195, 198, 201, 202, 203, 204, 211, 214, 215, 218, 219, 221, 222, 224, 225, 228, 230, 234, 237, 252, 254, 255, 258, 262, 263, 264, 271, 272, 273], "mnist": [3, 6, 34, 44, 47, 73, 78, 92, 94, 96, 119, 120, 121, 123, 126, 129, 135, 138, 148, 154, 162, 166, 169, 221, 233], "libtorch": [3, 6, 22, 23, 187, 204, 206, 208, 220, 222, 225, 251, 256], "counterpart": [3, 17, 108, 134, 144, 195, 201, 215, 220, 247, 252], "depict": 3, "chunk": [3, 5, 7, 55, 135, 152, 164], "batch": [3, 5, 6, 9, 12, 16, 17, 19, 21, 34, 37, 38, 39, 42, 44, 45, 47, 49, 51, 52, 53, 55, 56, 60, 61, 73, 75, 78, 79, 82, 87, 90, 92, 94, 97, 102, 104, 110, 112, 113, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 131, 134, 135, 136, 137, 138, 139, 146, 147, 148, 149, 150, 152, 154, 157, 158, 159, 160, 162, 163, 164, 166, 168, 169, 171, 172, 173, 174, 175, 177, 178, 181, 182, 184, 185, 191, 193, 196, 198, 201, 204, 205, 213, 221, 223, 230, 231, 239, 241, 242, 243], "data_load": [3, 6, 19, 178, 182, 197, 198, 199, 236], "nll_loss": [3, 73, 123, 129, 135, 148, 154, 162, 166, 221], "updat": [3, 6, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 42, 43, 44, 49, 51, 52, 61, 63, 64, 65, 67, 68, 69, 71, 72, 75, 82, 97, 98, 99, 102, 103, 110, 111, 112, 117, 122, 123, 126, 129, 136, 137, 139, 147, 152, 159, 160, 162, 163, 168, 178, 182, 185, 189, 197, 198, 199, 200, 201, 204, 207, 210, 214, 216, 218, 221, 222, 228, 230, 244, 258], "captur": [3, 4, 6, 22, 23, 25, 52, 60, 107, 123, 141, 148, 158, 171, 172, 173, 174, 186, 194, 197, 198, 200], "But": [3, 6, 8, 10, 20, 42, 44, 45, 52, 73, 78, 101, 103, 116, 125, 147, 152, 153, 154, 160, 173, 174, 176, 178, 182, 185, 189, 192, 200, 205, 218, 221, 223, 228, 252, 262, 271], "slightli": [3, 5, 14, 23, 122, 135, 136, 158, 165, 173, 174, 192, 247], "prealloc": [3, 14], "reus": [3, 10, 65, 78, 111, 130, 137, 141, 153, 160, 176, 177, 185, 187, 247], "tensoropt": [3, 186], "floatcuda": 3, "dtype": [3, 7, 8, 9, 10, 13, 14, 15, 38, 40, 41, 48, 49, 51, 52, 60, 63, 64, 72, 78, 80, 85, 89, 92, 95, 98, 101, 102, 103, 109, 111, 115, 119, 127, 129, 130, 137, 141, 144, 146, 147, 150, 160, 164, 165, 166, 173, 174, 175, 178, 179, 185, 186, 189, 190, 191, 192, 193, 195, 197, 199, 200, 206, 209, 218, 220, 223, 228, 230, 234, 237, 244, 247, 252, 253], "longcuda": 3, "klong": 3, "zero": [3, 6, 7, 11, 16, 17, 19, 25, 32, 40, 41, 44, 47, 48, 49, 60, 63, 64, 65, 67, 68, 69, 73, 78, 87, 92, 95, 98, 99, 103, 104, 110, 111, 117, 118, 122, 123, 127, 128, 134, 135, 136, 141, 144, 149, 150, 153, 155, 156, 157, 160, 161, 163, 165, 169, 178, 181, 185, 189, 191, 192, 194, 200, 201, 209, 221, 223, 230, 235, 246, 247, 252, 255, 258], "ktrainbatchs": 3, "28": [3, 6, 7, 17, 33, 34, 37, 38, 47, 78, 93, 94, 104, 138, 148, 154, 169, 176, 201, 203, 204, 208, 219, 221, 223, 231, 233, 246], "training_step": [3, 148], "void": [3, 5, 6, 15, 22, 23, 59, 144, 155, 186, 188, 208, 231, 238, 246], "cudagraph": 3, "cudastream": 3, "capturestream": 3, "getstreamfrompool": 3, "setcurrentcudastream": 3, "capture_begin": 3, "capture_end": 3, "warm": [3, 21, 70, 103, 109, 168, 172, 176, 177, 193, 203, 219, 231, 247], "side": [3, 20, 51, 52, 82, 103, 138, 147, 152, 154, 155, 160, 161, 166, 168, 188, 226, 260, 269], "prepar": [3, 11, 17, 19, 25, 44, 51, 52, 58, 59, 68, 69, 102, 103, 111, 112, 116, 134, 137, 138, 152, 155, 159, 161, 181, 185, 193, 195, 196, 199, 200, 201, 204, 209, 212, 218, 222, 227, 228, 251], "cach": [3, 64, 111, 137, 144, 168, 176, 177, 184, 185, 247], "cubla": [3, 231], "cudnn": [3, 5, 78, 117, 129, 136, 147, 150, 230], "warmupstream": 3, "int": [3, 4, 5, 6, 9, 11, 14, 18, 19, 22, 23, 24, 51, 53, 55, 58, 59, 60, 75, 85, 87, 98, 109, 115, 118, 122, 123, 126, 135, 137, 144, 146, 148, 155, 156, 161, 162, 163, 164, 168, 172, 173, 174, 178, 181, 185, 188, 193, 206, 208, 209, 213, 215, 220, 223, 252, 256, 260, 269], "num_warmup_it": 3, "success": [3, 6, 14, 23, 73, 101, 103, 126, 144, 165, 188, 204, 206, 226], "replai": [3, 14, 25, 76, 146], "spin": [3, 60, 176], "ordinari": [3, 194], "epoch": [3, 6, 7, 9, 16, 19, 24, 37, 38, 44, 52, 53, 55, 75, 87, 92, 94, 96, 97, 98, 99, 102, 103, 104, 112, 115, 117, 118, 122, 123, 126, 129, 135, 147, 148, 152, 157, 159, 163, 165, 166, 169, 178, 198, 221, 230, 241, 245, 250], "59584": 3, "60000": [3, 135], "3921": 3, "2051": 3, "accuraci": [3, 9, 17, 19, 20, 24, 37, 38, 44, 92, 97, 104, 115, 119, 120, 121, 122, 123, 126, 129, 148, 150, 156, 157, 158, 162, 166, 169, 171, 177, 182, 185, 194, 195, 198, 199, 201, 218, 219, 227, 228, 230, 245, 251], "938": [3, 6, 147], "1826": 3, "1273": 3, "960": 3, "1796": 3, "1012": [3, 147], "968": 3, "1603": 3, "0869": 3, "973": 3, "2315": 3, "0736": 3, "978": 3, "0511": [3, 185], "0704": 3, "977": [3, 147, 219], "0802": 3, "0654": 3, "979": 3, "0774": 3, "0604": 3, "980": [3, 176], "0669": 3, "0544": 3, "984": [3, 219], "0219": 3, "0517": 3, "983": 3, "real": [3, 6, 14, 20, 32, 52, 54, 58, 97, 98, 99, 100, 103, 121, 123, 126, 127, 128, 135, 136, 149, 152, 155, 158, 160, 165, 172, 176, 191, 193, 197, 200, 218, 219, 234], "0m44": 3, "287": [3, 177, 262, 271], "018": 3, "0m1": 3, "116": [3, 185], "produc": [3, 4, 5, 6, 11, 22, 23, 25, 60, 68, 97, 111, 113, 115, 126, 136, 138, 141, 143, 145, 147, 149, 159, 160, 165, 171, 173, 174, 179, 182, 183, 185, 197, 198, 199, 206, 214, 230, 234, 247, 262, 271], "4092": 3, "2037": 3, "2039": 3, "1274": 3, "961": 3, "1779": 3, "1017": 3, "1559": 3, "0871": 3, "972": 3, "2240": 3, "0735": [3, 201], "0520": 3, "0710": 3, "0935": 3, "0666": [3, 23], "0744": 3, "0603": 3, "981": 3, "0762": 3, "0547": 3, "0207": 3, "0525": [3, 208], "0m6": 3, "952": [3, 144], "0m7": 3, "048": [3, 207], "0m0": 3, "619": 3, "gain": [3, 5, 17, 82, 145, 154, 168, 176, 201], "six": [3, 159, 166, 262, 271], "kind": [3, 5, 6, 19, 23, 44, 47, 49, 58, 59, 73, 98, 102, 112, 119, 121, 137, 173, 177, 197, 252], "larg": [3, 5, 6, 7, 12, 16, 17, 18, 23, 42, 49, 87, 97, 102, 103, 105, 117, 120, 121, 122, 123, 126, 129, 133, 135, 138, 139, 149, 150, 159, 160, 162, 163, 164, 171, 172, 176, 177, 178, 191, 199, 201, 202, 210, 219, 223, 230, 239, 247, 257, 260, 262, 269, 271], "improv": [3, 5, 6, 8, 10, 17, 19, 21, 24, 42, 49, 56, 97, 108, 120, 121, 122, 123, 124, 129, 142, 145, 147, 149, 153, 154, 157, 160, 164, 165, 171, 172, 176, 177, 184, 185, 194, 197, 200, 201, 204, 207, 210, 212, 216, 218, 220, 222, 230, 245, 247, 253, 254, 263, 272], "due": [3, 5, 6, 17, 18, 22, 52, 58, 60, 82, 85, 108, 122, 123, 124, 133, 152, 153, 157, 162, 172, 176, 182, 184, 191, 200, 201, 202, 211, 216, 221, 234, 261, 262, 270, 271], "heavi": [3, 6, 49, 97, 101, 223], "impact": [3, 12, 17, 87, 97, 136, 161, 164, 184, 201, 209, 229, 252, 258], "smaller": [3, 9, 51, 79, 97, 103, 123, 124, 157, 159, 161, 171, 203, 208, 223, 229, 234, 237], "nevertheless": [3, 5, 19, 23, 147, 159], "primari": [4, 5, 6, 15, 142, 175, 176, 177, 186, 193, 206, 247], "program": [4, 5, 18, 21, 22, 23, 25, 60, 61, 98, 100, 101, 103, 121, 124, 127, 143, 162, 172, 173, 177, 197, 198, 199, 200, 214, 247, 256], "languag": [4, 5, 6, 7, 21, 23, 24, 25, 44, 49, 58, 59, 60, 78, 79, 98, 100, 102, 116, 118, 119, 121, 124, 126, 127, 128, 137, 163, 165, 173, 174, 181, 186, 195, 207, 219, 234, 246, 247, 252, 254, 256, 261, 262, 263, 270, 271, 272], "suitabl": [4, 8, 131, 135, 139, 171, 199, 223], "prefer": [4, 6, 8, 53, 58, 145, 150, 155, 159, 176, 194, 230, 252], "eas": [4, 5, 85, 122, 177, 220, 237, 251], "situat": [4, 15, 23, 25, 37, 129, 130, 133, 135, 178, 184, 195], "properti": [4, 5, 6, 11, 14, 21, 23, 25, 32, 40, 48, 101, 103, 126, 147, 153, 165, 173, 174, 176, 177, 190, 208, 220, 230, 244, 249, 256, 260, 269], "unfavor": 4, "environ": [4, 5, 6, 7, 11, 17, 18, 22, 25, 42, 55, 61, 82, 85, 105, 112, 114, 115, 121, 122, 123, 124, 132, 133, 134, 135, 144, 148, 149, 155, 160, 161, 162, 163, 172, 173, 174, 175, 176, 204, 206, 207, 208, 212, 213, 214, 215, 216, 219, 222, 223, 226, 229, 231, 247, 252, 255, 256, 258], "latter": [4, 5, 6, 60, 61, 126, 161, 198], "land": [4, 23, 113, 146, 191, 220, 258], "latenc": [4, 6, 17, 121, 124, 126, 132, 144, 158, 172, 176, 177, 187, 194, 201, 219, 223], "strict": [4, 112, 171, 190, 220, 248], "bind": [4, 6, 10, 23, 121, 176, 177, 247, 262, 271], "java": [4, 58, 177, 204, 222, 223], "rust": 4, "paragraph": [4, 6, 23, 263, 266, 272, 275], "outlin": [4, 5, 6, 23, 227], "pure": [4, 5, 6, 10, 23, 47, 121, 127, 130, 138, 154, 178, 186, 199], "journei": [4, 6, 52, 137], "enabl": [4, 5, 6, 8, 11, 14, 15, 16, 18, 19, 23, 24, 42, 47, 55, 56, 58, 59, 60, 61, 75, 82, 97, 107, 112, 122, 123, 124, 126, 129, 130, 133, 135, 137, 144, 147, 152, 156, 158, 159, 168, 169, 171, 175, 176, 177, 179, 183, 184, 189, 191, 193, 195, 196, 199, 204, 207, 214, 216, 219, 220, 224, 225, 226, 228, 230, 240, 244, 251, 258, 260, 269], "vanilla": [4, 5, 6, 23, 49, 65, 99, 111, 127, 171, 189, 258], "eager": [4, 10, 23, 60, 85, 86, 121, 144, 147, 164, 172, 174, 181, 195, 197, 198, 199, 200, 210, 221, 247], "discuss": [4, 5, 6, 8, 10, 15, 16, 23, 44, 73, 79, 101, 102, 116, 122, 123, 134, 142, 143, 144, 149, 150, 172, 176, 177, 183, 189, 190, 191, 192, 228, 237, 254], "littl": [4, 17, 25, 52, 61, 97, 99, 113, 136, 159, 161, 163, 164, 166, 168, 201], "effort": [4, 14, 49, 51, 52, 108, 182, 195, 196], "next": [4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 19, 20, 22, 23, 34, 42, 43, 49, 51, 53, 55, 56, 58, 59, 60, 75, 78, 80, 82, 85, 92, 94, 96, 97, 98, 99, 102, 103, 105, 112, 113, 115, 117, 121, 122, 123, 124, 125, 127, 128, 129, 130, 132, 136, 137, 138, 139, 143, 144, 146, 149, 150, 152, 154, 157, 160, 161, 162, 163, 165, 166, 168, 169, 177, 178, 181, 182, 184, 187, 188, 191, 192, 195, 197, 198, 199, 201, 203, 208, 216, 219, 220, 222, 223, 226, 230, 234, 237, 260, 262, 263, 269, 271, 272], "mechan": [4, 5, 6, 11, 14, 15, 24, 32, 49, 56, 60, 130, 143, 153, 165, 166, 168, 174, 177, 199, 216, 220, 221, 226], "evalu": [4, 6, 9, 12, 17, 19, 20, 24, 37, 73, 97, 105, 107, 112, 118, 145, 150, 159, 160, 162, 169, 172, 173, 174, 178, 181, 198, 201, 221, 241], "onc": [4, 5, 6, 8, 10, 11, 14, 16, 17, 20, 21, 22, 23, 25, 51, 52, 56, 60, 82, 97, 98, 102, 105, 113, 131, 136, 139, 147, 148, 152, 153, 156, 158, 159, 160, 162, 165, 168, 169, 177, 184, 185, 188, 193, 195, 201, 213, 220, 223, 226, 230, 231, 247, 257], "record": [4, 6, 8, 19, 20, 23, 25, 43, 49, 60, 112, 121, 122, 123, 127, 129, 130, 143, 146, 152, 159, 160, 162, 163, 172, 174, 204, 221, 234, 252], "explicit": [4, 6, 21, 23, 60, 139, 147, 163, 190, 200, 209, 226, 230, 262, 271], "pars": [4, 5, 23, 49, 51, 103, 116, 122, 123, 126, 209, 262, 271], "subject": [4, 11, 14, 23, 42, 108, 113, 123, 141, 165, 173, 174, 187, 188, 193, 198, 204, 205, 206, 207, 212, 216, 222], "constraint": [4, 6, 12, 17, 18, 60, 85, 98, 99, 121, 124, 126, 153, 159, 171, 197, 198, 200, 201, 230, 244, 252], "impos": [4, 223, 232, 244], "guidanc": [4, 8, 176, 177, 195, 230], "offici": [4, 82, 108, 113, 115, 135, 160, 172, 174, 181, 199, 218, 220, 252], "jit": [4, 6, 8, 15, 19, 21, 22, 25, 49, 58, 59, 60, 85, 112, 119, 137, 142, 147, 172, 177, 182, 185, 187, 188, 194, 197, 198, 203, 204, 206, 207, 208, 209, 216, 218, 220, 222, 223, 224, 225, 231, 238, 247, 252, 254, 256], "scriptmodul": [4, 22, 23, 25, 85, 203, 222, 252, 256], "embed": [4, 7, 9, 16, 21, 23, 49, 60, 75, 79, 93, 98, 100, 102, 110, 112, 115, 118, 121, 122, 124, 137, 162, 163, 165, 169, 175, 181, 188, 193, 195, 241, 262, 271], "resnet18": [4, 43, 90, 117, 147, 157, 158, 168, 171, 182, 195, 197, 198, 199, 229, 238, 256], "normal": [4, 6, 8, 11, 12, 19, 20, 21, 37, 39, 49, 51, 52, 58, 59, 60, 65, 73, 80, 85, 87, 90, 92, 94, 96, 97, 98, 99, 102, 103, 111, 112, 117, 119, 123, 127, 128, 129, 135, 136, 139, 146, 148, 153, 157, 158, 161, 162, 164, 165, 166, 168, 169, 171, 172, 177, 182, 184, 190, 197, 198, 204, 209, 213, 216, 220, 221, 223, 224, 225, 228, 229, 241, 242, 243, 247, 250, 252, 253, 262, 271], "rand": [4, 5, 6, 14, 15, 17, 21, 23, 25, 33, 40, 43, 48, 85, 89, 92, 93, 95, 96, 109, 114, 129, 130, 144, 146, 152, 153, 164, 176, 177, 178, 179, 187, 195, 197, 198, 201, 203, 206, 210, 211, 214, 219, 220, 223, 224, 225, 226, 233, 239, 247, 252, 253, 256], "224": [4, 12, 19, 20, 51, 58, 59, 75, 90, 97, 117, 119, 139, 142, 143, 152, 157, 158, 166, 168, 171, 176, 177, 182, 187, 188, 194, 197, 198, 199, 204, 206, 213, 218, 220, 223, 224, 225, 229, 238, 247, 252, 253, 256], "traced_script_modul": [4, 223], "ident": [4, 6, 17, 55, 85, 124, 132, 142, 150, 157, 166, 169, 185, 192, 194, 201, 218], "2698": 4, "0381": 4, "4023": 4, "3010": 4, "0448": 4, "slicebackward": 4, "circumst": [4, 5, 230], "emploi": [4, 97, 165, 168], "particular": [4, 5, 6, 8, 11, 23, 42, 44, 51, 60, 82, 83, 87, 103, 124, 126, 127, 135, 136, 138, 139, 150, 154, 162, 171, 173, 174, 178, 179, 189, 190, 192, 193, 213, 223, 237, 247], "form": [4, 6, 9, 12, 15, 17, 23, 47, 49, 52, 60, 98, 105, 110, 113, 116, 121, 125, 128, 139, 144, 165, 171, 174, 184, 193, 201, 202, 213, 214, 226, 234, 247, 262, 271], "accordingli": [4, 10, 12, 18, 22, 136, 149, 152, 161, 171, 188, 207, 260, 269], "sai": [4, 5, 6, 24, 43, 51, 99, 101, 103, 113, 115, 125, 138, 145, 149, 152, 156, 168, 184, 200, 222, 234, 263, 272], "mymodul": [4, 6, 109, 172, 173, 174, 202, 212], "__init__": [4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 19, 20, 21, 22, 25, 33, 37, 38, 44, 45, 47, 49, 51, 52, 53, 60, 65, 67, 73, 78, 79, 85, 87, 89, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 105, 109, 111, 112, 115, 118, 123, 125, 127, 128, 129, 133, 134, 135, 138, 142, 143, 146, 148, 149, 150, 153, 154, 156, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 177, 178, 179, 181, 182, 183, 193, 194, 195, 197, 198, 199, 202, 203, 209, 212, 214, 215, 216, 218, 219, 221, 223, 226, 228, 233, 234, 237, 239, 240, 241, 242, 243, 244, 248, 249, 250, 252, 262, 271], "n": [4, 5, 6, 7, 9, 12, 17, 19, 22, 23, 32, 33, 37, 38, 40, 43, 47, 48, 49, 51, 59, 60, 75, 82, 85, 89, 90, 93, 94, 95, 97, 104, 110, 113, 115, 118, 122, 123, 127, 129, 133, 135, 136, 137, 143, 145, 146, 147, 150, 153, 156, 160, 161, 162, 163, 165, 166, 169, 178, 182, 184, 185, 189, 190, 191, 192, 193, 197, 198, 200, 201, 205, 208, 213, 220, 230, 231, 236, 244, 247, 254, 256], "mv": [4, 110], "my_modul": 4, "20": [4, 6, 7, 9, 13, 16, 17, 19, 23, 33, 58, 59, 61, 78, 79, 82, 85, 87, 93, 95, 109, 123, 126, 128, 133, 135, 136, 142, 144, 146, 147, 149, 150, 152, 156, 161, 163, 166, 168, 173, 174, 177, 184, 187, 192, 195, 198, 201, 209, 221, 223, 231, 232, 234, 238, 246, 258, 266, 275], "sm": [4, 168], "exclud": [4, 8, 43], "doesn": [4, 7, 8, 10, 12, 13, 17, 25, 58, 99, 101, 103, 113, 125, 143, 145, 147, 156, 171, 172, 176, 179, 183, 184, 189, 195, 198, 200, 201, 205, 208, 210, 211, 228, 247, 255, 262, 271], "yet": [4, 6, 10, 11, 18, 23, 50, 73, 102, 107, 108, 113, 135, 162, 165, 175, 179, 185, 193, 198, 199, 216, 220, 224, 225, 247], "could": [4, 5, 6, 8, 10, 11, 23, 52, 60, 87, 97, 98, 99, 101, 102, 103, 105, 109, 122, 123, 124, 125, 127, 128, 129, 135, 139, 147, 149, 152, 159, 160, 161, 162, 163, 165, 168, 169, 171, 176, 177, 178, 179, 189, 191, 197, 199, 200, 205, 214, 215, 216, 220, 221, 237, 247], "ignor": [4, 19, 49, 51, 97, 102, 103, 112, 142, 148, 155, 159, 171, 178, 179, 182, 187, 189, 190, 191, 192, 193, 197, 198, 218, 230], "readi": [4, 6, 9, 10, 16, 22, 23, 42, 49, 58, 59, 60, 98, 99, 102, 103, 122, 134, 135, 150, 155, 159, 161, 162, 163, 175, 178, 187, 194, 197, 198, 199, 208, 213, 223, 224, 225, 228, 252], "hand": [4, 5, 6, 8, 14, 17, 18, 23, 61, 73, 98, 103, 128, 135, 139, 154, 172, 177, 190, 201, 234], "shown": [4, 6, 8, 17, 19, 20, 21, 52, 58, 59, 113, 116, 124, 126, 137, 144, 146, 157, 160, 161, 163, 164, 168, 171, 172, 176, 177, 183, 188, 190, 191, 192, 195, 198, 200, 201, 213, 214, 219, 220, 226, 228, 234, 252, 255, 257, 258, 260, 262, 269, 271], "filenam": [4, 6, 49, 104, 109, 116, 127, 128, 171, 230], "traced_resnet_model": 4, "pt": [4, 6, 22, 23, 25, 53, 58, 59, 75, 112, 117, 119, 122, 123, 137, 188, 194, 204, 206, 208, 218, 220, 221, 222, 223, 224, 225, 228, 240, 241, 242, 243, 248, 256], "my_module_model": 4, "left": [4, 17, 32, 43, 47, 49, 51, 52, 64, 85, 89, 99, 103, 111, 112, 113, 135, 137, 146, 150, 159, 160, 162, 164, 168, 169, 200, 201, 226, 234, 260, 262, 269, 271], "realm": [4, 6], "cross": [4, 7, 8, 13, 20, 44, 52, 95, 118, 124, 126, 176, 247, 262, 271], "sphere": 4, "distribut": [4, 5, 6, 14, 15, 19, 24, 52, 54, 73, 75, 79, 80, 87, 97, 99, 103, 108, 113, 121, 122, 123, 124, 126, 131, 132, 137, 147, 149, 152, 155, 159, 161, 168, 176, 185, 193, 196, 202, 208, 212, 215, 223, 229, 231, 251, 258], "encompass": 4, "share": [4, 5, 6, 10, 11, 18, 22, 23, 48, 55, 66, 78, 80, 87, 97, 101, 108, 110, 113, 121, 122, 125, 133, 135, 136, 146, 159, 161, 162, 163, 173, 174, 176, 195, 208, 220, 237], "header": [4, 5, 6, 8, 22, 23, 143, 155, 188, 204, 208, 222, 225, 260, 262, 263, 269, 271, 272], "cmake": [4, 6, 188, 206, 220, 256], "futur": [4, 7, 18, 21, 22, 42, 49, 58, 59, 109, 110, 118, 123, 134, 137, 141, 146, 152, 155, 157, 160, 161, 162, 163, 173, 174, 179, 181, 187, 188, 192, 197, 198, 199, 200, 204, 208, 219, 222, 252], "begin": [4, 5, 6, 7, 11, 12, 17, 19, 22, 23, 25, 32, 43, 49, 50, 52, 55, 58, 59, 73, 85, 89, 102, 103, 108, 113, 115, 116, 122, 124, 137, 142, 152, 157, 160, 162, 168, 169, 191, 193, 201, 223, 228, 230, 262, 271], "iostream": [4, 5, 6, 22, 23, 220], "argc": [4, 22, 23, 220, 256], "const": [4, 5, 6, 8, 10, 15, 22, 23, 59, 144, 155, 186, 208, 220, 222, 231, 246, 256], "char": [4, 22, 23, 59, 144, 208, 220, 256], "cerr": [4, 22, 23, 220, 256], "app": [4, 23, 105, 119, 121, 139, 194, 204, 220, 222, 227, 228, 251, 252], "try": [4, 6, 12, 14, 15, 17, 19, 21, 22, 23, 25, 42, 44, 47, 48, 49, 52, 53, 58, 59, 60, 61, 73, 79, 97, 98, 99, 100, 101, 104, 105, 109, 116, 125, 126, 127, 128, 129, 136, 142, 144, 146, 147, 149, 150, 152, 155, 156, 159, 160, 164, 165, 168, 172, 173, 174, 176, 182, 184, 187, 190, 197, 201, 203, 208, 213, 216, 219, 220, 222, 230, 234, 244, 245, 256, 262, 263, 271, 272], "deseri": [4, 6, 23, 112, 182, 197, 198, 256], "catch": [4, 8, 11, 22, 58, 208, 220, 222, 256], "c10": [4, 8, 10, 15, 22, 144, 155, 186, 188, 208, 219, 220, 231, 246, 256], "ok": [4, 103, 161, 262, 271], "relev": [4, 6, 14, 53, 98, 100, 103, 113, 114, 122, 124, 156, 171, 247], "accept": [4, 5, 20, 67, 78, 87, 97, 102, 111, 115, 116, 124, 126, 141, 145, 150, 154, 159, 162, 168, 171, 179, 200, 202, 205, 212, 219, 247, 252], "proce": [4, 11, 25, 97, 99, 144, 157, 165, 234, 247], "examin": [4, 11, 22, 25, 58, 59, 82, 97, 143], "moment": [4, 6, 11, 173, 179, 192, 206, 223], "cpp": [4, 5, 6, 8, 22, 23, 120, 121, 144, 187, 196, 199, 208, 220, 246, 256], "cmakelist": [4, 6, 22, 23, 208, 220, 256], "txt": [4, 5, 6, 9, 22, 23, 49, 75, 116, 127, 128, 137, 144, 158, 165, 185, 208, 220, 256], "cmake_minimum_requir": [4, 6, 22, 23, 208, 220, 256], "fatal_error": [4, 6, 22, 23, 208, 220, 256], "custom_op": [4, 108, 173, 174, 256], "find_packag": [4, 6, 22, 23, 220, 256], "add_execut": [4, 6, 22, 23, 220, 256], "target_link_librari": [4, 6, 22, 23, 208, 220, 256], "torch_librari": [4, 6, 8, 22, 23, 220, 256], "set_properti": [4, 6, 220, 256], "cxx_standard": [4, 6, 220, 256], "14": [4, 6, 22, 23, 24, 47, 73, 92, 123, 144, 171, 176, 208, 219, 220, 221, 228, 231, 238, 266, 275], "last": [4, 6, 11, 12, 14, 19, 23, 40, 43, 49, 52, 53, 59, 60, 73, 83, 85, 87, 99, 102, 105, 113, 117, 121, 124, 125, 127, 128, 135, 136, 142, 144, 148, 149, 152, 157, 159, 160, 161, 163, 164, 165, 169, 176, 178, 188, 189, 192, 193, 218, 220, 222, 228, 230, 247, 252], "thing": [4, 5, 6, 8, 15, 21, 22, 23, 25, 43, 44, 47, 49, 58, 59, 85, 87, 97, 98, 99, 101, 102, 103, 113, 116, 124, 125, 126, 129, 130, 131, 132, 135, 136, 139, 143, 144, 147, 148, 153, 158, 159, 166, 177, 182, 184, 195, 197, 208, 213, 262, 271], "grab": [4, 6, 52, 158, 163], "latest": [4, 6, 10, 14, 20, 87, 107, 108, 112, 121, 137, 157, 158, 159, 162, 165, 166, 171, 172, 208, 257, 260, 269], "stabl": [4, 20, 26, 27, 28, 29, 30, 32, 33, 34, 37, 38, 40, 94, 98, 113, 140, 158, 167, 168, 170, 181, 221, 223, 230, 233, 251, 260, 269], "page": [4, 6, 10, 22, 23, 50, 54, 61, 109, 127, 139, 163, 168, 175, 199, 204, 207, 208, 209, 217, 220, 222, 247, 264, 266, 273, 275], "websit": [4, 6, 160, 226, 229], "unzip": [4, 6, 19, 50, 171, 178, 181, 182, 197, 198, 208], "archiv": [4, 5, 6, 25, 147, 257], "against": [4, 22, 23, 44, 60, 81, 105, 135, 147, 159, 212, 220, 234], "window": [4, 5, 6, 7, 20, 44, 51, 103, 105, 133, 162, 168, 178, 206, 213, 226, 262, 271], "debug": [4, 6, 8, 19, 25, 58, 59, 60, 78, 98, 121, 125, 173, 174, 186, 195, 196, 231, 255], "abi": [4, 5, 6, 22, 23, 204, 206, 208, 220], "plan": [4, 6, 10, 18, 60, 112, 122, 124, 171, 175, 182, 187, 192, 198, 206, 208, 224], "correct": [4, 5, 6, 8, 10, 11, 12, 13, 19, 37, 38, 43, 44, 47, 49, 60, 64, 73, 85, 87, 92, 97, 98, 99, 102, 111, 122, 123, 125, 127, 129, 133, 136, 144, 147, 153, 156, 159, 161, 162, 165, 166, 168, 169, 182, 193, 197, 198, 215, 221, 230, 244, 260, 269], "laid": 4, "within": [4, 5, 7, 14, 18, 21, 23, 61, 85, 103, 105, 109, 110, 124, 130, 137, 142, 144, 153, 156, 160, 162, 171, 176, 177, 185, 186, 192, 193, 195, 199, 206, 208, 213, 215, 219, 239, 247, 260, 262, 269, 271], "mkdir": [4, 6, 23, 104, 146, 168, 171, 181, 194, 208], "dcmake_prefix_path": [4, 6, 22, 23, 220, 256], "config": [4, 6, 10, 17, 20, 24, 87, 123, 126, 137, 144, 158, 176, 177, 179, 184, 185, 186, 197, 199, 201, 220, 221, 244, 254], "someth": [4, 5, 6, 11, 14, 19, 23, 25, 44, 87, 99, 101, 113, 116, 135, 144, 157, 158, 159, 165, 205, 234, 262, 271], "root": [4, 5, 6, 14, 22, 23, 34, 37, 38, 41, 43, 44, 51, 52, 87, 92, 97, 98, 110, 129, 136, 144, 162, 163, 166, 168, 178, 188, 204, 213, 220, 223, 226, 236, 245, 250, 252, 253, 260, 269], "4b5a67132e81": 4, "identif": [4, 6, 22, 23, 220], "gnu": [4, 5, 6, 22, 23, 220, 247], "cxx": [4, 6, 22, 23, 204, 206, 208, 220], "check": [4, 5, 6, 7, 8, 13, 14, 15, 19, 20, 22, 23, 25, 42, 43, 44, 45, 49, 50, 52, 55, 58, 59, 60, 73, 75, 85, 97, 98, 101, 104, 105, 108, 109, 110, 115, 116, 122, 126, 133, 135, 136, 139, 141, 142, 144, 146, 147, 153, 154, 156, 158, 159, 162, 171, 172, 173, 174, 176, 178, 188, 192, 193, 198, 200, 206, 208, 213, 214, 219, 220, 222, 223, 226, 230, 252, 253, 256], "usr": [4, 6, 18, 22, 23, 135, 194, 220], "cc": [4, 6, 22, 23, 43, 108, 118, 204, 206, 220], "detect": [4, 6, 11, 12, 18, 22, 23, 52, 75, 121, 139, 158, 168, 172, 220, 247], "info": [4, 5, 6, 22, 23, 82, 118, 132, 135, 137, 146, 160, 171, 173, 174, 175, 185, 207, 220, 221, 228], "pthread": [4, 5, 6, 22, 23, 208, 220], "pthread_creat": [4, 6, 22, 23, 220], "thread": [4, 5, 6, 8, 9, 21, 22, 23, 52, 61, 109, 133, 134, 137, 149, 158, 161, 162, 163, 176, 177, 181, 182, 194, 216, 220, 226, 231, 246, 247], "scan": [4, 6, 22, 23, 171], "50": [4, 6, 7, 12, 16, 17, 19, 21, 22, 23, 24, 49, 52, 53, 58, 78, 92, 136, 144, 147, 156, 160, 163, 166, 177, 178, 182, 185, 191, 197, 199, 201, 203, 219, 221, 223, 228, 230, 247], "cmakefil": [4, 6, 22, 23], "dir": [4, 6, 22, 23, 82, 126, 147, 148, 204, 208, 223, 246], "o": [4, 5, 6, 7, 17, 22, 23, 90, 97, 98, 108, 128, 137, 150, 152, 171, 201, 262, 271], "100": [4, 6, 9, 14, 16, 17, 19, 21, 22, 23, 37, 38, 44, 45, 48, 49, 52, 63, 64, 67, 68, 69, 71, 72, 80, 89, 92, 93, 94, 97, 99, 111, 119, 123, 125, 127, 128, 129, 133, 138, 143, 144, 145, 146, 147, 149, 154, 156, 158, 159, 160, 163, 165, 166, 169, 171, 172, 173, 174, 176, 177, 182, 187, 191, 195, 197, 198, 201, 215, 219, 221, 231, 234, 246, 257], "suppli": [4, 6, 101, 147, 158, 262, 271], "binari": [4, 6, 20, 22, 23, 49, 52, 105, 135, 147, 156, 172, 178, 188, 190, 196, 199, 204, 208, 212, 218, 220, 222, 223, 231], "incompat": [4, 173, 174, 197], "1d": [4, 68, 93, 111, 205, 247], "4d": [4, 47, 78, 147, 200], "path_to_model": 4, "successfulli": [4, 6, 22, 50, 58, 59, 60, 105, 119, 126, 135, 144, 162, 191, 194, 206, 219, 225, 227, 241, 256], "coupl": [4, 14, 49, 103, 122, 124, 130, 136, 138, 152, 169, 183, 203, 247], "awai": [4, 5, 6, 23, 47, 60, 98, 99, 101, 113, 143, 149, 159, 160, 161, 192, 234, 262, 271], "ivalu": [4, 23, 58, 144, 155, 206, 208, 220, 223, 256], "push_back": [4, 22, 23, 220, 256], "totensor": [4, 12, 19, 20, 23, 34, 37, 38, 44, 51, 52, 58, 59, 73, 75, 87, 90, 92, 94, 96, 97, 116, 117, 119, 123, 129, 135, 139, 148, 157, 158, 162, 166, 168, 169, 171, 182, 187, 188, 197, 198, 204, 206, 213, 220, 221, 223, 229, 250, 253, 256], "slice": [4, 5, 48, 80, 102, 127, 150, 156, 193, 206], "eras": [4, 25], "org": [4, 6, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 40, 42, 45, 46, 49, 58, 59, 74, 77, 84, 91, 93, 94, 96, 100, 104, 106, 113, 120, 122, 127, 128, 137, 140, 141, 142, 143, 152, 153, 157, 158, 165, 167, 168, 170, 172, 174, 181, 184, 187, 188, 190, 192, 194, 196, 203, 204, 205, 206, 208, 213, 221, 222, 223, 224, 226, 230, 233, 234, 235, 236, 237, 256, 260, 262, 269, 271], "cppdoc": [4, 6], "pariti": 4, "manipul": [4, 60, 103, 143, 152, 182, 185, 213], "five": [4, 9, 65, 95, 111, 113], "ideal": [4, 6, 14, 58, 59, 97, 149, 165, 177, 197, 207], "variabl": [4, 5, 6, 7, 8, 12, 20, 22, 23, 42, 49, 60, 69, 76, 82, 87, 98, 99, 101, 111, 114, 127, 132, 135, 144, 161, 164, 173, 174, 176, 184, 191, 193, 205, 206, 207, 208, 219, 222, 226, 252, 255], "kcuda": [4, 6, 186], "live": [4, 6, 10, 15, 121, 125, 134, 162, 163, 192, 216, 262, 271], "hopefulli": [4, 6, 50, 51, 73, 85, 99, 112], "equip": [4, 5, 130, 136, 189], "concept": [4, 6, 11, 22, 55, 100, 101, 114, 121, 126, 146, 161, 164, 165, 186, 197, 199, 200], "Of": [4, 14, 23, 97, 101, 125, 133, 135, 169, 190, 192, 226], "cours": [4, 6, 14, 17, 19, 23, 53, 97, 100, 101, 103, 104, 125, 133, 135, 169, 201, 213, 226], "did": [4, 6, 8, 19, 23, 25, 44, 52, 60, 68, 105, 111, 113, 135, 141, 153, 159, 162, 165, 176, 182, 262, 271], "cover": [4, 5, 14, 15, 16, 18, 22, 25, 47, 58, 59, 100, 108, 113, 114, 119, 121, 122, 126, 135, 155, 159, 162, 163, 169, 172, 173, 174, 175, 191, 193, 197, 200, 212, 219, 220, 230, 245, 252], "insid": [4, 5, 6, 10, 16, 17, 18, 20, 22, 23, 45, 78, 108, 124, 168, 178, 195, 201, 205, 207, 223, 262, 271], "shortli": [4, 161], "html": [4, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 40, 45, 46, 52, 57, 74, 77, 84, 90, 91, 94, 100, 104, 106, 113, 114, 118, 120, 122, 137, 140, 142, 143, 157, 167, 170, 171, 174, 181, 187, 188, 190, 192, 203, 204, 230, 233, 234, 235, 237, 262, 271], "peter": 5, "goldsborough": 5, "plethora": 5, "relat": [5, 11, 14, 52, 60, 101, 103, 113, 124, 144, 153, 173, 174, 182, 247, 262, 271], "algebra": [5, 14, 48, 99, 219], "wrangl": 5, "novel": 5, "research": [5, 6, 17, 19, 23, 25, 49, 52, 60, 73, 75, 85, 99, 114, 115, 135, 137, 150, 154, 156, 171, 181, 201, 216], "modul": [5, 7, 9, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 33, 37, 38, 39, 42, 44, 45, 47, 49, 52, 53, 55, 58, 59, 65, 66, 68, 73, 78, 79, 87, 89, 92, 94, 95, 96, 97, 98, 99, 102, 103, 105, 107, 108, 109, 110, 112, 115, 116, 117, 118, 121, 122, 123, 124, 125, 127, 128, 129, 133, 135, 138, 142, 143, 144, 146, 147, 150, 152, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 171, 172, 173, 174, 175, 176, 177, 179, 181, 182, 183, 184, 185, 186, 187, 188, 193, 194, 196, 197, 198, 199, 200, 201, 203, 206, 208, 209, 212, 214, 215, 219, 220, 221, 222, 223, 226, 227, 228, 231, 233, 234, 235, 238, 239, 240, 241, 242, 243, 247, 248, 249, 250, 251, 252, 256, 261, 262, 263, 270, 271, 272], "power": [5, 6, 23, 43, 49, 57, 65, 73, 75, 87, 97, 99, 121, 123, 126, 135, 144, 146, 150, 155, 156, 158, 165, 171, 184, 187, 192, 194, 227, 254, 262, 271], "spare": [5, 6], "deriv": [5, 6, 10, 17, 23, 25, 43, 48, 76, 78, 99, 101, 102, 103, 110, 125, 129, 130, 141, 145, 195, 201, 247], "express": [5, 13, 23, 95, 98, 107, 114, 124, 137, 173, 174, 191, 197, 198, 200, 209, 262, 271], "better": [5, 6, 14, 17, 19, 21, 44, 52, 56, 61, 79, 97, 103, 109, 113, 115, 121, 126, 127, 128, 139, 144, 145, 146, 152, 154, 157, 159, 160, 165, 168, 169, 171, 173, 174, 176, 177, 182, 184, 189, 190, 195, 197, 198, 199, 200, 201, 207, 223, 247, 253, 257], "frequent": [5, 22, 23, 75, 82, 103, 123, 175, 176, 177, 191, 220], "expens": [5, 17, 97, 109, 163, 177, 184, 201], "plausibl": 5, "address": [5, 12, 18, 22, 24, 82, 135, 161, 162, 174, 176, 197, 221, 244, 263, 272], "nativ": [5, 6, 8, 15, 23, 42, 55, 87, 107, 108, 119, 121, 122, 124, 136, 137, 163, 176, 177, 179, 184, 189, 192, 197, 216, 219, 220, 223, 238, 246, 247, 251], "intend": [5, 6, 8, 12, 23, 97, 123, 124, 129, 144, 147, 164, 172, 173, 174, 189, 197, 212, 247], "much": [5, 6, 8, 10, 12, 14, 17, 19, 23, 25, 52, 56, 73, 97, 98, 99, 103, 112, 119, 122, 125, 126, 142, 145, 146, 152, 158, 159, 162, 163, 165, 168, 169, 172, 176, 184, 189, 192, 200, 201, 218, 226, 227, 228, 230, 234, 237, 245, 247, 251, 260, 262, 269, 271], "boilerpl": [5, 6, 19, 44, 99, 169, 189], "degre": [5, 64, 126, 165, 168, 192], "matter": [5, 134, 171, 189, 191, 210, 230], "organ": [5, 8, 14, 23, 51, 112, 127, 143, 149, 257, 263, 272], "tackl": [5, 109], "decid": [5, 6, 8, 10, 17, 18, 52, 87, 160, 175, 192, 196, 201], "contribut": [5, 52, 61, 65, 82, 111, 137, 147, 168, 176], "upstream": [5, 220, 247], "rest": [5, 6, 14, 44, 117, 121, 136, 139, 143, 157, 159, 161, 162, 191, 198, 218, 234, 244, 262, 263, 271, 272], "chase": [5, 113], "someon": [5, 165], "fire": [5, 133], "dai": [5, 42, 103, 115, 116, 124, 244], "head": [5, 7, 17, 21, 42, 75, 83, 109, 113, 124, 126, 133, 157, 164, 178, 193, 201], "straight": [5, 6, 23, 139, 165], "recurr": [5, 9, 44, 49, 60, 79, 81, 98, 102, 110, 121, 127, 128, 153, 165, 181, 195, 234], "unit": [5, 6, 25, 49, 110, 122, 123, 145, 150, 156, 159, 160, 165, 171, 176, 177, 187, 247], "superior": 5, "lstm": [5, 44, 49, 78, 79, 93, 100, 110, 119, 121, 127, 128, 163, 181, 183, 195, 228, 234, 251], "lack": [5, 15, 82, 189], "forget": [5, 6, 112, 157, 172, 188], "gate": [5, 49, 244], "exponenti": [5, 49, 99, 101, 153, 160, 184], "elu": [5, 110], "never": [5, 7, 98, 99, 100, 103, 115, 125, 156, 166], "lltm": 5, "long": [5, 6, 7, 9, 10, 20, 23, 49, 50, 60, 78, 80, 82, 87, 98, 99, 100, 101, 103, 113, 118, 122, 125, 127, 128, 136, 137, 143, 144, 149, 153, 160, 163, 165, 168, 178, 185, 186, 195, 197, 208, 223, 231, 234, 238, 246, 247, 262, 263, 271, 272], "term": [5, 6, 15, 52, 73, 99, 100, 101, 109, 122, 124, 150, 156, 159, 174, 184, 192, 197, 198, 199, 200, 202, 234, 239, 262, 263, 271, 272], "signific": [5, 6, 9, 19, 42, 52, 58, 59, 82, 122, 129, 137, 143, 144, 145, 147, 152, 159, 164, 168, 172, 177, 203, 214, 215, 219, 221, 223, 230, 234, 254, 262, 271], "lstmcell": 5, "cell": [5, 21, 23, 25, 50, 60, 75, 80, 109, 159, 160, 164, 171, 184, 234, 247, 263, 272], "plain": [5, 6, 23, 49, 127, 128, 165, 178, 244], "input_featur": 5, "state_s": 5, "candid": [5, 144, 247], "reset_paramet": [5, 129], "stdv": 5, "math": [5, 7, 10, 49, 63, 64, 65, 67, 68, 69, 71, 72, 85, 89, 95, 101, 104, 110, 111, 118, 127, 128, 129, 150, 158, 160, 164, 165, 234, 247, 266, 275], "sqrt": [5, 7, 85, 104, 118, 129, 189, 202], "uniform_": [5, 6, 7, 9, 115, 163, 181, 195, 202], "old_h": 5, "old_cel": 5, "cat": [5, 7, 9, 20, 21, 40, 44, 48, 49, 60, 78, 90, 92, 98, 101, 102, 110, 115, 118, 128, 134, 139, 144, 149, 160, 163, 165, 169, 178, 181, 200, 229, 250], "gate_weight": 5, "split": [5, 7, 8, 9, 18, 19, 20, 21, 45, 49, 52, 60, 79, 85, 87, 98, 99, 102, 103, 113, 118, 121, 127, 128, 133, 134, 137, 142, 149, 159, 162, 163, 165, 178, 181, 182, 185, 193, 197, 198, 212, 226, 246], "input_g": 5, "sigmoid": [5, 6, 52, 93, 110, 179, 200, 247], "output_g": 5, "tanh": [5, 6, 14, 25, 49, 52, 60, 93, 99, 110, 127, 145, 159, 165, 247], "candidate_cel": 5, "new_cel": 5, "hidden": [5, 7, 9, 21, 49, 60, 78, 97, 98, 102, 124, 126, 127, 128, 136, 142, 148, 163, 164, 165, 181, 195, 197, 229, 234, 260, 269], "new_h": [5, 25, 51], "rnn": [5, 9, 21, 25, 45, 49, 60, 61, 78, 79, 93, 110, 118, 121, 134, 136, 153, 162, 165, 181, 195, 199, 247], "new_c": 5, "intel": [5, 121, 135, 144, 147, 199, 206, 251], "mkl": [5, 144, 238], "nnpack": 5, "why": [5, 6, 8, 11, 14, 25, 44, 52, 85, 97, 99, 103, 112, 114, 130, 133, 144, 152, 165, 172, 173, 174, 190, 192, 262, 271], "room": [5, 97, 149, 219, 262, 271], "obviou": [5, 113], "knowledg": [5, 49, 52, 73, 99, 100, 114, 121, 144, 146, 262, 271], "execut": [5, 6, 7, 8, 11, 15, 16, 20, 21, 22, 23, 25, 42, 43, 45, 50, 60, 61, 76, 78, 82, 98, 108, 120, 121, 125, 126, 134, 135, 136, 143, 144, 147, 149, 155, 159, 160, 162, 163, 164, 172, 173, 174, 176, 177, 182, 183, 185, 186, 187, 194, 203, 204, 206, 207, 208, 212, 219, 223, 224, 225, 226, 230, 234, 252, 256], "kernel": [5, 6, 8, 13, 17, 18, 23, 47, 83, 108, 110, 121, 138, 144, 147, 149, 153, 154, 156, 164, 165, 168, 172, 176, 177, 184, 186, 199, 201, 207, 216, 237, 247, 251], "involv": [5, 8, 9, 15, 16, 17, 19, 23, 25, 50, 60, 85, 98, 101, 105, 112, 120, 125, 127, 132, 139, 146, 152, 163, 165, 173, 174, 182, 184, 193, 201, 239, 247, 254], "launch": [5, 6, 21, 53, 61, 115, 126, 132, 133, 149, 161, 162, 163, 164, 168, 176, 206, 219, 221, 247], "amount": [5, 19, 25, 73, 82, 112, 124, 133, 156, 172, 184, 223, 247], "becom": [5, 6, 11, 21, 24, 52, 61, 73, 75, 78, 85, 97, 124, 130, 145, 147, 168, 169, 176, 186, 193, 197, 210, 216, 219, 230, 252], "furthermor": [5, 19, 97, 138, 145, 169, 176, 186, 200, 224, 225], "interpret": [5, 6, 23, 25, 40, 56, 82, 85, 103, 121, 127, 128, 137, 165, 172, 173, 174, 186, 196, 216, 235, 251, 262, 271], "slow": [5, 6, 8, 42, 123, 148, 176, 228, 247], "down": [5, 8, 10, 11, 16, 19, 42, 50, 82, 87, 99, 104, 123, 136, 144, 145, 146, 162, 166, 169, 176, 189, 247, 260, 269], "therefor": [5, 6, 9, 15, 19, 49, 51, 60, 97, 108, 112, 113, 115, 120, 133, 134, 147, 150, 155, 156, 162, 163, 173, 174, 176, 191, 192, 200, 206, 223, 230, 262, 271], "rewrit": [5, 21, 45, 60, 107, 129, 153, 173, 174, 200, 205, 206, 252], "fuse": [5, 17, 19, 121, 144, 157, 158, 176, 177, 179, 181, 182, 184, 194, 198, 201, 206, 227, 251, 252], "group": [5, 7, 11, 16, 18, 19, 24, 49, 61, 83, 109, 113, 120, 121, 122, 123, 128, 129, 131, 133, 134, 135, 144, 168, 175, 178, 214, 215, 216, 258, 262, 263, 271, 272], "profit": 5, "fewer": [5, 11, 129, 145], "visibl": [5, 22, 23, 44, 87, 171, 182], "aten": [5, 8, 10, 15, 23, 42, 109, 144, 168, 173, 174, 177, 182, 185, 186, 188, 197, 198, 199, 219, 220, 226, 238, 244, 246], "translat": [5, 23, 25, 49, 60, 105, 107, 116, 118, 150, 165, 187, 191, 213, 247, 252], "benefit": [5, 6, 9, 17, 18, 42, 43, 85, 87, 119, 122, 141, 147, 152, 157, 164, 176, 184, 197, 201, 216, 219, 220, 230, 234, 247, 257], "massiv": [5, 25, 44, 101, 103, 220], "parallel": [5, 6, 11, 16, 18, 44, 46, 49, 51, 52, 55, 73, 79, 87, 112, 121, 126, 131, 135, 137, 144, 150, 159, 161, 162, 163, 175, 176, 214, 215, 216, 230, 240, 258], "ahead": [5, 22, 152, 169, 173, 174, 179, 188, 214, 234, 247, 256], "cpp_extens": [5, 10, 23, 155, 208, 231], "setup": [5, 6, 7, 10, 16, 19, 22, 42, 52, 53, 55, 122, 123, 126, 133, 148, 149, 152, 155, 158, 163, 184, 188, 191, 192, 204, 205, 206, 214, 215, 231, 246, 251], "lltm_cpp": 5, "ext_modul": [5, 10, 23, 155], "cppextens": [5, 10, 23, 155], "cmdclass": [5, 10, 23, 155], "build_ext": [5, 10, 23, 155], "buildextens": [5, 10, 23, 155], "conveni": [5, 8, 14, 22, 23, 44, 47, 49, 101, 125, 127, 128, 138, 145, 155, 159, 190, 192, 213, 220, 230, 252], "wrapper": [5, 6, 8, 16, 55, 112, 122, 123, 130, 136, 146, 159, 171, 196, 199, 240], "include_dir": [5, 10, 155], "include_path": 5, "manag": [5, 22, 43, 49, 61, 108, 109, 113, 120, 124, 131, 132, 133, 149, 153, 164, 168, 177, 214, 215, 216, 230, 232, 237, 239, 247, 257], "And": [5, 6, 10, 22, 23, 24, 25, 52, 101, 103, 105, 113, 130, 144, 145, 147, 150, 158, 168, 169, 172, 173, 174, 176, 177, 195, 199, 200, 213], "overal": [5, 19, 42, 49, 122, 123, 135, 149, 160, 171, 197, 200, 219, 228, 247], "d_sigmoid": 5, "bit": [5, 12, 15, 23, 25, 51, 68, 95, 109, 113, 117, 136, 148, 158, 159, 160, 165, 184, 189, 197, 199, 207, 221, 228, 234], "pybind11": [5, 8, 22, 23, 155, 231], "datatyp": [5, 23, 40, 48, 109, 220, 230, 234, 247], "Its": [5, 97, 99, 193, 262, 271], "inspect": [5, 23, 78, 97, 108, 122, 126, 143, 164, 166, 172, 173, 174, 182, 185, 216], "notic": [5, 8, 14, 21, 22, 23, 25, 32, 42, 43, 44, 52, 60, 73, 85, 97, 99, 112, 130, 135, 144, 146, 149, 153, 154, 157, 159, 168, 172, 173, 174, 176, 177, 188, 189, 191, 195, 256], "dispos": 5, "nvcc": 5, "workaround": [5, 7, 23, 79, 85, 130, 141], "logic": [5, 6, 11, 17, 23, 85, 98, 123, 126, 132, 134, 156, 162, 163, 171, 177, 183, 201, 202, 214, 216], "sigmoidalphablendforwardcuda": 5, "port": [5, 16, 135, 162, 213], "entir": [5, 6, 14, 16, 18, 19, 25, 47, 49, 53, 60, 78, 97, 99, 102, 117, 121, 122, 123, 127, 129, 134, 142, 149, 152, 154, 156, 157, 159, 163, 165, 176, 182, 189, 190, 191, 194, 197, 198, 208, 214, 230, 237, 239, 247, 262, 271], "lltm_forward": 5, "addmm": [5, 6, 109, 144, 173, 188, 197, 206, 207, 219, 238], "transpos": [5, 6, 7, 12, 40, 44, 48, 49, 51, 52, 60, 90, 92, 94, 96, 110, 117, 118, 129, 144, 146, 153, 157, 160, 164, 166, 169, 173, 174, 193, 206, 229], "respect": [5, 16, 32, 34, 43, 49, 51, 52, 63, 64, 68, 69, 71, 72, 99, 101, 111, 114, 115, 124, 125, 134, 136, 141, 143, 144, 145, 154, 159, 163, 165, 168, 173, 174, 176, 177, 198, 212, 244, 247, 249], "ultim": [5, 19, 49, 52, 60, 85, 189, 207], "plop": [5, 23], "autograd": [5, 12, 13, 15, 16, 21, 25, 32, 40, 42, 46, 47, 57, 59, 61, 62, 68, 69, 77, 78, 81, 91, 93, 98, 100, 101, 104, 109, 110, 119, 121, 127, 128, 129, 130, 133, 134, 144, 145, 150, 154, 160, 161, 162, 165, 177, 191, 200, 205, 208, 212, 213, 216, 226, 230, 247, 254, 256], "nice": [5, 12, 49, 80, 143, 152, 154, 159], "dig": [5, 99, 103, 164], "deeper": [5, 11, 12, 95, 97, 99, 143, 144, 164, 177, 211, 256], "interest": [5, 6, 10, 14, 17, 20, 23, 25, 44, 49, 51, 58, 59, 78, 87, 97, 99, 105, 107, 108, 113, 117, 122, 126, 145, 152, 153, 157, 159, 166, 173, 174, 176, 178, 201, 205, 234, 262, 271], "alex": 5, "grave": 5, "thesi": 5, "d_tanh": 5, "relu": [5, 6, 12, 19, 20, 23, 25, 37, 38, 44, 47, 52, 73, 78, 87, 89, 92, 93, 94, 96, 97, 99, 103, 104, 105, 110, 112, 123, 133, 134, 138, 144, 146, 148, 149, 150, 154, 156, 157, 158, 160, 161, 162, 163, 165, 166, 169, 172, 173, 174, 177, 181, 182, 200, 203, 205, 214, 215, 218, 219, 220, 221, 223, 230, 233, 239, 240, 241, 242, 243, 247, 248, 249, 250, 252], "exp": [5, 7, 9, 65, 89, 98, 99, 104, 111, 118, 125, 130, 141, 160, 191], "d_elu": 5, "mask": [5, 17, 58, 75, 90, 109, 118, 121, 136, 153, 156, 160, 164, 171, 178, 184, 189, 190, 192, 193, 196, 201, 220, 254], "type_a": [5, 118], "lltm_backward": 5, "grad_h": 5, "grad_cel": 5, "d_output_g": 5, "d_tanh_new_cel": 5, "d_new_cel": 5, "d_old_cel": 5, "d_candidate_cel": 5, "d_input_g": 5, "d_gate": 5, "d_weight": 5, "d_bia": 5, "keepdim": [5, 13, 19, 73, 123, 129, 162, 166, 182, 197, 198, 221], "d_x": [5, 52], "d_old_h": 5, "d_input": 5, "span": [5, 17, 75, 98, 133, 149, 168, 201, 226, 263, 272], "four": [5, 7, 14, 18, 22, 61, 67, 85, 94, 95, 108, 111, 115, 119, 122, 134, 135, 149, 169, 223, 228, 257, 262, 263, 271, 272], "pybind11_modul": [5, 155], "torch_extension_nam": [5, 155], "macro": [5, 6, 8, 15, 23], "maintain": [5, 10, 14, 22, 43, 49, 61, 73, 97, 102, 108, 121, 131, 135, 146, 160, 163, 176, 177, 194, 230, 258], "mismatch": [5, 61, 97], "nasti": [5, 244], "hard": [5, 6, 8, 15, 21, 99, 126, 156], "At": [5, 6, 8, 14, 15, 17, 20, 23, 43, 47, 49, 50, 85, 87, 102, 116, 122, 123, 124, 136, 141, 146, 157, 159, 160, 161, 164, 165, 168, 189, 192, 197, 201, 206, 223, 244, 261, 270], "point": [5, 6, 8, 10, 11, 14, 17, 18, 19, 20, 22, 23, 43, 47, 49, 50, 51, 52, 53, 58, 60, 82, 85, 97, 98, 100, 101, 102, 103, 110, 123, 124, 125, 126, 130, 131, 133, 143, 146, 149, 150, 157, 159, 161, 165, 169, 171, 173, 174, 181, 182, 184, 185, 189, 191, 192, 194, 197, 200, 201, 208, 221, 223, 228, 234, 235, 245, 247, 251, 260, 261, 262, 269, 270, 271], "bdist_egg": 5, "egg_info": [5, 23], "egg": [5, 23], "pkg": [5, 23, 257], "dependency_link": [5, 23], "top": [5, 6, 8, 17, 19, 20, 22, 23, 38, 50, 51, 52, 82, 83, 94, 96, 97, 115, 124, 127, 135, 139, 143, 157, 158, 163, 164, 168, 169, 176, 178, 182, 197, 198, 199, 201, 209, 219, 226, 227, 229, 256, 260, 264, 269, 273], "top_level": [5, 23], "manifest": [5, 23, 191, 194], "bdist": 5, "x86_64": [5, 18, 23, 204, 208], "install_lib": 5, "temp": [5, 9, 19, 23, 125, 137, 181, 182, 185, 197, 198, 234], "gcc": [5, 23, 108, 144], "miniconda": [5, 18, 23], "compiler_compat": [5, 23], "wl": [5, 22, 23], "sysroot": [5, 23], "wsign": [5, 23], "dndebug": [5, 23], "g": [5, 6, 7, 8, 10, 11, 12, 14, 18, 23, 25, 42, 43, 49, 51, 52, 60, 61, 79, 87, 89, 97, 99, 100, 103, 108, 110, 117, 121, 123, 126, 127, 128, 133, 135, 137, 138, 144, 152, 154, 155, 159, 161, 163, 165, 168, 173, 174, 176, 179, 182, 185, 186, 192, 196, 200, 205, 206, 215, 247, 257, 262, 271], "fwrapv": [5, 23], "o3": [5, 23, 231], "wall": [5, 23, 98, 143, 246], "wstrict": [5, 23], "prototyp": [5, 10, 11, 15, 23, 61, 113, 173, 174, 186, 193, 194, 200, 205, 206, 212], "fpic": [5, 23, 108], "site": [5, 18, 22, 23, 50, 52, 58, 59, 142, 143, 165, 187, 213, 224, 225, 227, 238, 246, 257, 262, 271], "csrc": [5, 22, 23, 155, 188, 222], "th": [5, 14, 23, 51, 99, 103, 135, 146], "thc": [5, 23], "7m": [5, 23], "dtorch_api_include_extension_h": [5, 23], "dtorch_extension_nam": [5, 23], "d_glibcxx_use_cxx11_abi": [5, 23], "cc1plu": [5, 23], "warn": [5, 19, 23, 42, 51, 137, 144, 148, 159, 164, 171, 172, 173, 174, 182, 185, 187, 189, 190, 191, 192, 197, 198, 216, 231, 252], "valid": [5, 7, 9, 13, 17, 20, 23, 24, 49, 87, 94, 97, 104, 107, 109, 112, 113, 115, 117, 118, 122, 123, 126, 129, 130, 148, 155, 157, 171, 178, 181, 182, 190, 191, 200, 201, 204, 222], "objc": [5, 23], "l": [5, 7, 12, 14, 20, 23, 43, 49, 51, 52, 89, 99, 108, 110, 127, 128, 159, 160, 165, 173, 193, 194, 231], "rpath": [5, 23], "cpython": [5, 23], "37m": [5, 23], "stub": [5, 157, 209, 223, 263, 272], "loader": [5, 6, 12, 24, 38, 44, 79, 159, 162, 178, 222, 231], "byte": [5, 137, 139, 174, 181, 208, 230], "37": [5, 7, 17, 109, 158, 163, 177, 201, 219, 238], "pyc": 5, "native_lib": 5, "zip_saf": 5, "analyz": [5, 19, 23, 60, 82, 121, 152, 159, 172, 174, 185], "__pycache__": 5, "__file__": [5, 155, 231], "dist": [5, 7, 11, 16, 18, 110, 122, 123, 133, 135, 153, 155, 162, 175, 214, 215, 258], "py3": 5, "remov": [5, 9, 12, 17, 19, 49, 52, 53, 59, 60, 83, 109, 110, 114, 116, 125, 133, 137, 142, 144, 152, 158, 164, 165, 171, 172, 173, 174, 178, 181, 182, 183, 184, 185, 189, 190, 193, 194, 197, 198, 201, 204, 216, 228, 231, 234, 246, 252, 260, 269], "everyth": [5, 43, 87, 97, 99, 108, 126, 127, 130, 136, 139, 157, 158, 159, 160, 161, 165, 169, 187, 188, 212, 213, 223, 246], "finish": [5, 6, 16, 23, 44, 45, 58, 87, 92, 94, 115, 133, 134, 135, 143, 149, 161, 163, 169, 188, 199, 204, 212, 218, 223, 226, 247, 250], "ubuntu": [5, 6, 168, 208], "16": [5, 7, 16, 17, 19, 23, 24, 44, 47, 52, 87, 89, 92, 93, 94, 96, 97, 104, 105, 112, 126, 133, 136, 141, 145, 147, 156, 157, 158, 163, 164, 169, 171, 172, 173, 174, 177, 178, 184, 187, 191, 194, 201, 204, 208, 214, 219, 231, 239, 240, 241, 242, 243, 248, 249, 250, 266, 275], "04": [5, 7, 118, 168, 219, 231], "recent": [5, 49, 75, 102, 109, 113, 115, 124, 135, 137, 144, 150, 153, 157, 160, 168, 208], "maco": [5, 6, 105, 135, 171], "clang": [5, 204, 206], "worst": [5, 115, 137], "resolv": [5, 23, 97, 142, 147, 177, 191], "symbol": [5, 25, 115, 118, 142, 173, 174, 182, 200, 231, 246, 262, 271], "linker": [5, 23, 204], "pycapsul": [5, 23], "builtin": [5, 155], "arg0": 5, "arg1": [5, 162], "arg2": [5, 162], "arg3": 5, "arg4": 5, "citizen": [5, 23, 189, 191], "lltmfunction": 5, "staticmethod": [5, 13, 14, 64, 111, 129, 130, 141, 161, 171, 244], "contigu": [5, 7, 8, 9, 14, 147, 181, 194, 199, 209, 218, 223, 247], "saved_tensor": [5, 13, 64, 111, 129, 130], "benchmark": [5, 15, 17, 24, 42, 109, 117, 121, 126, 137, 138, 144, 145, 154, 158, 164, 172, 176, 177, 184, 187, 193, 199, 201, 220, 221, 235, 246, 247, 251], "measur": [5, 12, 21, 82, 97, 103, 123, 137, 143, 145, 149, 159, 160, 164, 166, 172, 176, 177, 184, 195, 199, 203, 212, 219, 223, 230, 231, 246], "durat": [5, 83, 155, 160, 168, 177, 262, 271], "32": [5, 14, 17, 18, 19, 20, 21, 23, 24, 47, 52, 55, 73, 87, 92, 93, 97, 102, 105, 109, 123, 126, 129, 136, 137, 144, 145, 146, 147, 150, 154, 158, 162, 163, 164, 165, 166, 168, 171, 173, 174, 176, 177, 178, 198, 203, 219, 221, 228, 231, 233, 239, 247], "128": [5, 6, 12, 22, 51, 52, 55, 73, 87, 97, 103, 109, 118, 123, 124, 126, 127, 128, 129, 134, 135, 136, 137, 138, 144, 149, 154, 158, 160, 161, 162, 163, 165, 172, 178, 185, 200, 203, 207, 212, 220, 230, 231, 232, 233, 246, 253], "100000": [5, 58, 59, 127, 128, 137, 146, 231], "3f": [5, 9, 17, 19, 44, 87, 92, 115, 118, 146, 164, 178, 181, 193, 198, 201, 230, 250], "wrote": [5, 23, 139, 172, 178, 262, 271], "post": [5, 6, 11, 20, 49, 58, 59, 97, 121, 122, 123, 126, 137, 139, 147, 149, 166, 176, 177, 183, 185, 193, 196, 198, 200, 221, 229], "my": [5, 21, 42, 50, 98, 103, 191, 198, 203, 262, 271], "machin": [5, 6, 18, 20, 21, 25, 44, 49, 50, 51, 53, 54, 55, 56, 58, 59, 60, 61, 73, 87, 105, 107, 116, 118, 121, 122, 123, 126, 131, 132, 133, 134, 135, 143, 154, 158, 162, 163, 164, 165, 176, 178, 185, 194, 198, 203, 210, 219, 226, 245, 247, 257], "506": 5, "480": [5, 238], "444": 5, "694": 5, "349": [5, 92], "335": [5, 147, 163, 258], "443": [5, 163, 238], "523": 5, "speedup": [5, 17, 21, 42, 44, 121, 138, 144, 149, 154, 177, 181, 182, 184, 193, 201, 219, 223, 247], "30": [5, 6, 7, 14, 17, 19, 45, 82, 99, 115, 121, 122, 147, 156, 161, 163, 182, 192, 197, 201, 231, 232, 238], "albeit": [5, 14, 228], "major": [5, 10, 11, 19, 103, 117, 144, 152, 164, 172, 176, 177, 192, 216, 219, 258], "particularli": [5, 13, 17, 53, 153, 165, 201], "engin": [5, 6, 14, 20, 43, 61, 87, 107, 119, 123, 158, 163, 171, 174, 178, 187, 205, 207, 220, 228, 260, 269], "wonder": [5, 99, 152], "abstract": [5, 11, 14, 51, 87, 95, 100, 103, 110, 113, 124, 126, 135, 142, 155, 159, 215, 263, 272], "correspondingli": 5, "big": [5, 42, 52, 98, 103, 128, 129, 138, 152, 159, 165, 171, 194], "win": [5, 115, 152, 185], "No": [5, 6, 49, 53, 60, 99, 144, 148, 179, 204, 211], "cuda_devic": 5, "creation": [5, 6, 10, 192, 202, 208, 237], "assert": [5, 9, 11, 12, 17, 18, 19, 22, 51, 94, 95, 98, 105, 108, 125, 129, 133, 138, 141, 142, 144, 145, 150, 153, 154, 162, 164, 169, 172, 181, 193, 194, 200, 201, 205, 208, 209, 210, 230, 231, 244], "synchron": [5, 11, 16, 55, 56, 61, 82, 133, 135, 149, 159, 161, 162, 168, 172, 176, 177, 184, 193, 212, 226, 230, 258], "1e6": [5, 9, 19, 137, 164, 181, 182, 185, 197, 198, 210, 228, 231, 258], "1e5": 5, "again": [5, 6, 9, 21, 25, 44, 50, 60, 78, 97, 98, 102, 103, 108, 113, 116, 119, 125, 129, 135, 136, 152, 161, 163, 165, 168, 171, 172, 176, 184, 197, 200, 223, 262, 271], "187": [5, 231], "719": 5, "410": [5, 147], "815": 5, "149": 5, "802": [5, 144], "393": [5, 177], "458": [5, 144], "That": [5, 6, 17, 23, 43, 44, 45, 49, 99, 101, 102, 103, 105, 108, 116, 124, 127, 134, 141, 143, 145, 147, 149, 150, 152, 159, 164, 168, 178, 189, 190, 192, 201, 223, 224, 234, 251, 262, 271], "great": [5, 49, 60, 105, 112, 113, 191, 197, 262, 271], "pull": [5, 7, 21, 143, 173, 174, 213], "dive": [5, 6, 11, 23, 133, 144, 157], "elabor": [5, 6, 124, 144, 161], "fly": [5, 14, 23, 51, 98, 115, 159, 228], "background": [5, 6, 23, 58, 59, 73, 113, 158, 169, 171, 178, 262, 271], "tmp": [5, 23, 126, 129, 144, 171, 186, 218, 223, 228, 238], "torch_extens": 5, "emit": [5, 6, 98], "ninja": 5, "verbos": [5, 23, 132, 171, 177, 207, 208, 263, 272], "complic": [5, 14, 98, 99, 103, 126, 177, 197, 205, 209, 215, 230, 252], "techniqu": [5, 9, 16, 17, 19, 21, 49, 60, 97, 98, 103, 107, 121, 124, 129, 130, 131, 143, 149, 153, 156, 157, 163, 171, 177, 184, 189, 193, 201, 203, 204, 228, 234, 247], "fine": [5, 6, 17, 19, 49, 51, 98, 113, 120, 125, 134, 135, 144, 157, 158, 168, 185, 188, 189, 201, 229, 230, 247], "system": [5, 6, 8, 10, 12, 14, 15, 22, 23, 25, 55, 76, 97, 121, 126, 135, 153, 158, 159, 161, 175, 176, 177, 178, 206, 207, 208, 213, 247], "increment": [5, 11, 12, 60, 85, 101, 135, 146, 160], "thu": [5, 6, 8, 10, 19, 20, 21, 23, 49, 85, 87, 97, 108, 122, 138, 142, 152, 165, 177, 197, 202, 208, 216, 226, 247, 252, 262, 271], "didn": [5, 8, 22, 76, 105, 143, 161, 181, 205, 262, 271], "prospect": 5, "pointwis": [5, 8, 142, 147, 199], "declar": [5, 6, 13, 23, 60, 73, 78, 115, 208, 223, 252], "cu": 5, "ensur": [5, 8, 9, 10, 11, 12, 14, 15, 16, 19, 22, 37, 49, 53, 56, 60, 64, 97, 109, 111, 112, 115, 116, 123, 132, 135, 141, 159, 160, 162, 164, 171, 176, 178, 186, 194, 198, 202, 231, 234, 241, 244, 254, 256], "lltm_cuda": 5, "lltm_cuda_forward": 5, "lltm_cuda_backward": 5, "check_cuda": 5, "torch_check": [5, 8], "is_cuda": [5, 147], "check_contigu": 5, "is_contigu": [5, 147, 231, 246], "check_input": 5, "lltm_cuda_kernel": 5, "cannot": [5, 6, 11, 14, 16, 18, 22, 23, 49, 60, 61, 82, 108, 112, 113, 130, 133, 135, 136, 147, 149, 157, 159, 173, 174, 184, 195, 203, 205, 254, 261, 270], "peek": [5, 211], "cuda_runtim": 5, "templat": [5, 8, 22, 23, 59, 135, 144, 208, 209, 221, 260, 269], "typenam": [5, 208], "scalar_t": [5, 144], "__device__": 5, "__forceinline__": 5, "specif": [5, 6, 8, 9, 10, 11, 12, 17, 18, 19, 22, 23, 25, 44, 55, 58, 59, 73, 82, 87, 99, 100, 101, 105, 107, 108, 110, 112, 114, 122, 123, 124, 127, 128, 129, 133, 135, 136, 137, 143, 144, 148, 149, 156, 157, 159, 161, 162, 163, 164, 165, 168, 169, 173, 174, 176, 177, 178, 179, 185, 187, 190, 193, 199, 200, 201, 204, 206, 207, 212, 214, 219, 220, 226, 229, 234, 244, 251, 252, 254, 258, 262, 271], "fmax": 5, "fmin": 5, "d_relu": 5, "wish": [5, 6, 23, 52, 60, 73, 95, 112, 113, 150, 154, 162, 171, 179, 185, 190, 198, 230, 241, 263, 272], "explicitli": [5, 6, 18, 25, 43, 48, 52, 53, 60, 87, 101, 124, 132, 136, 147, 163, 164, 166, 173, 176, 177, 182, 192, 193, 200, 226, 247], "zeros_lik": [5, 14, 95, 142, 161, 216, 254], "dim3": 5, "at_dispatch_floating_typ": 5, "lltm_forward_cuda": 5, "lltm_cuda_forward_kernel": 5, "indic": [5, 6, 10, 11, 14, 16, 23, 49, 60, 63, 64, 82, 98, 99, 102, 103, 108, 109, 110, 111, 115, 116, 118, 126, 127, 136, 137, 144, 156, 159, 160, 162, 168, 169, 171, 176, 177, 178, 185, 189, 191, 192, 195, 200, 207, 229, 256, 260, 262, 269, 271], "runtim": [5, 8, 14, 18, 21, 23, 25, 40, 50, 60, 82, 85, 107, 109, 121, 124, 129, 143, 152, 168, 172, 176, 177, 181, 184, 185, 197, 206, 207, 210, 219, 230, 234, 251], "back": [5, 6, 8, 10, 14, 15, 19, 20, 22, 23, 44, 47, 51, 58, 59, 60, 73, 80, 87, 97, 98, 101, 105, 109, 113, 125, 127, 139, 143, 147, 149, 152, 154, 159, 161, 162, 163, 165, 171, 176, 188, 189, 193, 194, 213, 234, 244, 247, 262, 271], "determin": [5, 6, 8, 11, 17, 19, 48, 49, 97, 98, 101, 102, 103, 105, 124, 126, 138, 142, 152, 153, 154, 156, 160, 172, 182, 193, 201, 234, 239, 247], "conceptu": [5, 6, 43, 49, 60, 177], "scalartyp": 5, "messag": [5, 49, 108, 135, 137, 171, 173, 174, 185, 207, 208, 222, 225, 252], "alia": [5, 10, 64, 111, 173, 174], "retriev": [5, 6, 7, 14, 16, 21, 49, 125, 126, 146, 159, 161, 162, 177, 209, 226], "at_dispatch_all_typ": 5, "sens": [5, 8, 12, 14, 97, 103, 113, 126, 138, 169, 262, 271], "routin": [5, 6, 23], "convolut": [5, 6, 8, 12, 13, 20, 47, 52, 60, 97, 112, 117, 119, 121, 147, 150, 156, 157, 166, 176, 177, 182, 199, 200, 206, 207, 219, 220, 223, 226, 230, 238, 239, 252], "harder": [5, 97, 184, 185], "ourselv": [5, 6, 49, 76, 129, 159], "grid": [5, 47, 51, 117, 149, 157, 166, 169, 186, 254], "fill": [5, 6, 14, 80, 103, 127, 136, 141, 176, 190, 191, 208, 223], "matric": [5, 12, 17, 23, 25, 48, 101, 145, 153, 201, 207], "2048": [5, 18, 97, 129, 145], "heard": 5, "introductori": [5, 79], "fairli": [5, 97, 113, 135, 152, 160], "ever": [5, 6, 23, 125, 173, 174, 237], "__global__": 5, "__restrict__": 5, "size_t": 5, "column": [5, 7, 18, 23, 40, 80, 99, 101, 109, 119, 124, 127, 144, 145, 150, 160, 168, 171, 190, 191, 192, 193, 231, 238, 263, 272], "blockidx": 5, "blockdim": 5, "threadidx": 5, "index": [5, 6, 15, 34, 38, 41, 44, 45, 48, 49, 51, 58, 59, 60, 73, 83, 98, 99, 101, 102, 103, 109, 115, 116, 118, 119, 123, 125, 126, 127, 128, 129, 135, 139, 153, 160, 161, 165, 166, 168, 171, 172, 176, 184, 193, 205, 213, 229, 260, 266, 269, 275], "gates_row": 5, "primarili": [5, 82, 162, 172, 230], "imagin": [5, 98, 103, 130, 135, 152, 153, 165, 244], "giant": [5, 165], "million": [5, 115, 117, 119, 122, 136, 176], "serial": [5, 6, 10, 23, 25, 60, 112, 121, 173, 174, 176, 182, 197, 198, 226], "faster": [5, 6, 8, 9, 12, 19, 49, 56, 58, 59, 73, 97, 112, 122, 132, 136, 138, 145, 147, 154, 161, 165, 172, 177, 178, 182, 203, 218, 223, 227, 228, 230, 234, 247, 251], "right": [5, 6, 8, 10, 12, 14, 20, 23, 32, 43, 48, 49, 52, 64, 82, 89, 97, 99, 101, 103, 111, 113, 135, 137, 146, 150, 152, 157, 159, 160, 161, 164, 165, 168, 171, 178, 185, 195, 197, 205, 219, 226, 234, 252, 262, 271], "inde": [5, 14, 58, 59, 97, 129, 145, 159, 164, 172, 191, 192, 247], "agnost": [5, 60, 110, 232], "ineffici": [5, 82, 176, 193], "readabl": [5, 25, 51, 98, 110, 128, 139, 168, 213], "especi": [5, 17, 19, 49, 52, 60, 73, 113, 122, 133, 143, 150, 152, 173, 174, 177, 184, 190, 199, 201, 221, 223, 228], "dimension": [5, 47, 48, 49, 52, 60, 97, 100, 101, 102, 103, 113, 124, 147, 156, 164, 165, 169, 171, 192, 207, 215, 223], "stride": [5, 6, 19, 52, 90, 97, 104, 113, 123, 129, 134, 144, 146, 147, 166, 171, 177, 179, 192, 218, 229, 237, 244], "row": [5, 18, 23, 34, 40, 51, 73, 80, 99, 101, 102, 103, 116, 124, 126, 127, 145, 157, 160, 161, 176, 177, 190, 192, 205, 208, 226, 231, 263, 272], "arithmet": [5, 19, 143, 185, 234], "fortun": [5, 6, 10, 15, 23, 87, 135, 136], "expos": [5, 6, 8, 22, 23, 108, 113, 121, 139, 163, 181, 197, 198, 206, 208, 213, 247], "foo": [5, 21, 22, 141, 142, 153, 162, 172, 174, 182, 197, 202, 209, 246, 262, 263, 271, 272], "12": [5, 7, 23, 42, 58, 59, 92, 101, 109, 122, 123, 144, 149, 161, 169, 173, 178, 179, 184, 190, 193, 200, 201, 204, 208, 219, 221, 222, 225, 227, 231, 257, 262, 266, 271, 275], "hold": [5, 14, 16, 18, 47, 60, 63, 64, 65, 67, 68, 69, 76, 78, 87, 98, 111, 122, 123, 132, 134, 139, 152, 160, 161, 163, 237, 244, 247], "foo_a": 5, "packed_accessor64": 5, "packed_accessor32": 5, "pack": [5, 49, 60, 78, 115, 144, 159, 161, 163, 193, 208, 212, 223, 252], "integ": [5, 6, 8, 60, 97, 99, 101, 103, 113, 115, 126, 146, 156, 173, 174, 178, 184, 192, 197, 198, 199, 207, 228, 234, 265, 274], "fundament": [5, 49, 91, 101, 103, 146, 190, 198, 214], "packedtensoraccessor32": 5, "restrictptrtrait": 5, "decompos": [5, 10, 17, 123, 149, 173, 174, 197, 201], "packedaccessor32": 5, "variant": [5, 49, 60, 124, 129, 158, 164], "int32_t": 5, "packedaccessor64": 5, "slower": [5, 17, 56, 133, 145, 149, 158, 160, 172, 176, 178, 184, 186, 193, 201, 229], "host": [5, 7, 16, 18, 54, 82, 98, 122, 123, 124, 133, 134, 135, 149, 162, 163, 168, 215, 216, 247], "reshap": [5, 6, 9, 12, 19, 51, 95, 103, 104, 110, 118, 142, 159, 181, 182, 188, 189, 190, 191, 193, 197, 198, 206, 221, 231], "pattern": [5, 17, 21, 103, 124, 135, 142, 144, 153, 162, 177, 182, 183, 185, 189, 191, 197, 201, 202, 215, 220], "lltm_cuda_backward_kernel": 5, "lltm_backward_cuda": 5, "d_gate_weight": 5, "cudaextens": [5, 155], "hassl": [5, 6], "entail": 5, "simpler": [5, 78, 124, 129, 141, 153, 197, 205], "fastest": [5, 149, 164], "129": [5, 109, 187], "431": 5, "304": [5, 49, 177], "641": [5, 147], "faq": [5, 22, 23], "sit": [6, 42, 105, 107, 108, 149, 153, 261, 263, 265, 270, 272, 274], "atop": 6, "substanti": [6, 126], "codebas": [6, 10, 14], "foundat": [6, 159, 171], "underli": [6, 8, 14, 23, 48, 73, 80, 95, 97, 112, 126, 138, 144, 149, 154, 162, 182, 191, 192, 193, 215, 216], "popular": [6, 68, 73, 75, 97, 111, 126, 136, 137, 177, 184, 220, 221, 261, 270], "stochast": [6, 7, 47, 52, 65, 104, 111, 115, 135, 159, 160], "descent": [6, 7, 43, 47, 63, 64, 65, 68, 72, 104, 110, 111, 115, 135, 184], "digit": [6, 47, 121, 122, 123, 171], "whirlwind": 6, "wet": 6, "appetit": 6, "watch": [6, 37, 113, 131, 135], "lightn": [6, 126], "talk": [6, 8, 49, 52, 55, 101, 115, 135, 159, 162], "cppcon": 6, "2018": [6, 118, 137], "quick": [6, 17, 48, 58, 59, 97, 99, 102, 103, 119, 122, 127, 133, 138, 145, 153, 154, 184, 201, 213, 234, 256], "humor": 6, "sweep": [6, 164], "philosophi": [6, 113], "ecosystem": [6, 108], "descript": [6, 50, 61, 122, 123, 144, 148, 159, 161, 162, 163, 164, 171, 181, 231, 247, 255, 257, 263, 272], "embark": 6, "excit": [6, 22, 23, 143, 152], "team": [6, 108, 115, 126, 137, 160, 171], "job": [6, 45, 52, 53, 54, 82, 97, 126, 131, 132, 133, 135, 223], "reinforc": [6, 14, 61, 121, 146, 159, 160, 161, 162], "game": [6, 44, 52, 79, 146], "tractabl": [6, 98], "multithread": [6, 43, 56, 109, 216, 226, 231], "lock": [6, 14, 25, 56, 134, 135, 161, 162, 177, 216, 261, 270], "gil": [6, 56, 61, 133, 216], "scalabl": [6, 126, 189, 207, 219, 220, 247], "shortcom": [6, 191], "neuroevolut": 6, "owner": [6, 161, 162, 163], "anyth": [6, 13, 44, 98, 101, 102, 103, 139, 148, 158, 181, 182, 184, 226, 234, 244, 245, 262, 263, 271, 272], "serv": [6, 37, 57, 61, 85, 97, 102, 121, 127, 133, 139, 143, 146, 149, 155, 162, 163, 176, 177, 191, 212, 213, 230, 247, 257], "web": [6, 105, 213, 251, 262, 271], "server": [6, 16, 25, 61, 119, 120, 121, 127, 133, 149, 155, 163, 177, 179, 185, 194, 213, 214, 216, 220, 228, 251], "3d": [6, 7, 75, 93, 101, 102, 115, 171, 197, 200, 247], "graphic": [6, 164, 206], "photo": [6, 229], "softwar": [6, 137, 149, 155, 168, 176, 206, 213, 262, 271], "integr": [6, 10, 14, 23, 78, 87, 109, 121, 126, 139, 169, 176, 177, 179, 199, 200, 206, 219, 226, 229, 244, 254], "remain": [6, 7, 87, 97, 119, 135, 142, 152, 156, 165, 179, 184, 191, 193, 195, 199, 209, 247], "forth": [6, 149, 176, 263, 272], "retain": [6, 40, 48, 76, 80, 112], "intuit": [6, 52, 73, 78, 99, 108, 112, 144, 149, 165, 171, 190, 226, 244], "tradit": [6, 42, 52, 97, 99, 107, 145, 162], "compet": [6, 113, 115, 119, 126, 176, 177], "complement": 6, "alik": 6, "love": [6, 113], "simplic": [6, 73, 122, 129, 159, 160, 215, 222], "core": [6, 8, 10, 11, 42, 45, 60, 76, 98, 99, 100, 104, 108, 112, 115, 121, 124, 126, 135, 136, 144, 147, 158, 168, 173, 174, 177, 194, 196, 197, 204, 222, 226, 230, 246, 247], "principl": [6, 8, 102, 103, 121, 126], "curiou": [6, 138, 152, 154, 211], "tri": [6, 18, 52, 98, 103, 113, 160, 206, 230], "experienc": [6, 85], "ask": [6, 17, 22, 23, 60, 103, 128, 136, 159, 201, 209], "rememb": [6, 44, 52, 59, 73, 76, 98, 99, 102, 109, 112, 139, 145, 146, 152, 165], "dot": [6, 14, 32, 49, 52, 60, 102, 103, 121, 145, 165, 176, 177, 205, 231, 254], "colon": [6, 171, 262, 271], "minim": [6, 10, 12, 17, 23, 52, 61, 63, 64, 67, 68, 69, 73, 82, 99, 103, 121, 122, 126, 132, 137, 144, 160, 172, 182, 185, 189, 199, 201, 204, 209, 234], "verifi": [6, 20, 58, 59, 85, 108, 114, 116, 119, 130, 138, 141, 142, 145, 147, 156, 158, 176, 177, 178, 206, 219, 220, 226, 256], "too": [6, 10, 14, 19, 44, 64, 68, 82, 87, 97, 98, 103, 109, 111, 124, 127, 133, 139, 149, 152, 156, 160, 161, 163, 165, 189, 228, 260, 262, 263, 269, 271, 272], "cu90": 6, "url": [6, 19, 104, 118, 168, 172, 184, 208, 222, 236, 245, 260, 269], "wget": [6, 18, 75, 178, 181, 184, 208], "nightli": [6, 18, 75, 122, 137, 141, 172, 175, 178, 184, 187, 188, 196, 197, 199, 204, 205, 208, 221], "dep": 6, "tini": [6, 123, 149, 152], "three": [6, 10, 12, 14, 15, 51, 52, 61, 64, 73, 82, 85, 92, 95, 98, 108, 112, 113, 115, 118, 121, 124, 128, 135, 147, 153, 155, 159, 163, 164, 165, 166, 168, 169, 175, 176, 177, 184, 192, 199, 226, 228, 256, 262, 263, 271, 272], "ey": [6, 20, 23, 32, 103, 145, 150, 153, 205, 208, 262, 271], "fledg": 6, "visual": [6, 14, 25, 43, 52, 73, 75, 82, 83, 90, 116, 121, 122, 125, 126, 130, 143, 153, 159, 168, 169, 171, 176, 177, 186, 191, 245, 251], "studio": [6, 58, 204, 222, 224, 227], "qmake": 6, "makefil": 6, "comfort": 6, "box": [6, 8, 10, 11, 17, 73, 113, 126, 130, 135, 146, 158, 161, 168, 176, 177, 178, 199, 201, 205, 207, 220, 225, 226, 229, 262, 271], "cmake_prefix_path": [6, 22, 23], "invok": [6, 8, 22, 23, 25, 97, 133, 134, 141, 143, 144, 155, 162, 163, 177, 186, 188, 191, 199, 203, 207, 226, 244, 247, 253], "agre": [6, 23, 137, 258], "break": [6, 8, 10, 11, 12, 19, 38, 49, 51, 60, 75, 82, 112, 113, 116, 118, 128, 139, 146, 152, 156, 160, 161, 163, 165, 168, 172, 189, 236, 262, 271], "unexpect": [6, 51, 191, 195, 200, 247], "pwd": [6, 208, 226], "fa350df05ecf": 6, "home": [6, 48, 113, 189, 194, 204, 206, 209, 217, 222], "enter": [6, 49, 60, 122, 133, 135], "ran": [6, 103, 159, 162, 164, 173, 174, 204, 231], "me": [6, 17, 42, 49, 99, 152, 165, 201, 262, 263, 271, 272], "extens": [6, 7, 15, 22, 23, 52, 112, 121, 127, 130, 135, 171, 176, 186, 189, 191, 197, 199, 219, 221, 235, 251], "besid": [6, 23, 103, 153, 161, 221, 229, 247, 262, 271], "encapsul": [6, 47, 152, 161], "buffer": [6, 14, 44, 47, 59, 69, 76, 110, 111, 112, 122, 129, 133, 138, 141, 146, 150, 152, 153, 154, 156, 160, 173, 174, 177, 188, 202, 206, 208, 223, 237], "nest": [6, 14, 43, 110, 142, 159, 161, 163, 164, 196, 262, 263, 271, 272], "similarli": [6, 9, 12, 22, 51, 60, 80, 83, 113, 116, 125, 126, 134, 143, 144, 145, 152, 179, 192, 214], "w": [6, 7, 9, 12, 32, 38, 43, 47, 49, 51, 73, 76, 98, 102, 103, 122, 125, 129, 137, 146, 147, 163, 168, 178, 184, 185, 187, 222], "struct": [6, 15, 22, 208, 252], "int64_t": [6, 8, 23], "register_paramet": [6, 202], "reflect": [6, 8, 23, 48, 95, 136, 159, 195], "magic": [6, 99, 128, 135, 145], "behind": [6, 8, 17, 23, 45, 82, 97, 99, 129, 160, 179, 190, 192, 196, 201, 202, 262, 271], "scene": [6, 23, 58, 59, 113, 202], "another_bia": 6, "recurs": [6, 16, 44, 60, 110, 202, 218, 245], "0808": 6, "8613": 6, "2017": [6, 73, 104, 118], "5206": 6, "5353": 6, "3740": 6, "0976": 6, "4786": 6, "4928": 6, "1434": 6, "4713": 6, "1735": 6, "3293": 6, "3467": 6, "3858": 6, "1980": 6, "1986": 6, "1975": 6, "4278": 6, "1831": 6, "2709": 6, "3730": 6, "4307": 6, "3236": 6, "0629": 6, "2038": 6, "4638": 6, "2023": [6, 171, 173], "1230": 6, "0516": 6, "aptli": [6, 13], "register_modul": 6, "dropout": [6, 7, 9, 12, 19, 20, 37, 39, 49, 60, 73, 93, 96, 97, 104, 110, 112, 118, 123, 124, 126, 128, 129, 136, 148, 157, 161, 163, 164, 165, 166, 181, 193, 194, 195, 198, 201, 221, 241, 242, 243, 252, 256], "conv2d": [6, 12, 19, 20, 44, 47, 52, 73, 78, 87, 92, 93, 94, 96, 97, 104, 105, 112, 123, 129, 134, 142, 146, 147, 150, 153, 154, 156, 158, 162, 166, 169, 177, 179, 182, 197, 198, 199, 200, 203, 207, 218, 220, 221, 223, 226, 228, 233, 238, 239, 240, 241, 242, 243, 247, 248, 249, 250, 252], "subtleti": [6, 192], "bodi": [6, 113, 144, 262, 263, 271, 272], "upon": [6, 14, 49, 56, 79, 117, 135, 141, 165, 169, 172, 229, 247, 260, 269], "p": [6, 7, 9, 18, 19, 49, 68, 69, 93, 97, 98, 103, 104, 110, 111, 118, 122, 123, 127, 128, 129, 134, 135, 137, 138, 141, 142, 144, 146, 147, 150, 152, 157, 161, 162, 163, 165, 178, 181, 182, 185, 197, 198, 201, 206, 207, 208, 212, 216, 234, 238], "0345": [6, 185], "4456": 6, "6313": 6, "3585": 6, "4008": [6, 23], "1647": 6, "2891": 6, "0527": 6, "0354": 6, "3084": 6, "2025": 6, "0343": [6, 208], "1824": 6, "4630": 6, "2862": 6, "2500": 6, "0420": 6, "3679": 6, "1482": 6, "0460": 6, "1967": 6, "2132": 6, "1992": 6, "4257": 6, "0739": 6, "01": [6, 7, 11, 19, 43, 47, 98, 109, 135, 157, 163, 164, 166, 173, 210, 211, 219, 221, 258, 263, 272], "6861": 6, "1166": 6, "45": [6, 7, 126, 144, 163, 176, 204, 219, 229], "0333": 6, "9983": 6, "0705": 6, "named_paramet": [6, 33, 141, 150, 153, 154, 156], "ordereddict": [6, 178], "13": [6, 23, 92, 95, 104, 109, 115, 163, 171, 176, 219, 223, 226, 262, 266, 271, 275], "48": [6, 7, 17, 126, 127, 144, 147, 169, 201, 204, 219, 238], "1863": 6, "8611": 6, "1228": 6, "3269": 6, "9858": 6, "0339": 6, "2484": 6, "2035": 6, "2103": 6, "0715": 6, "2975": 6, "4350": 6, "1878": 6, "3616": 6, "1050": 6, "4982": 6, "0335": [6, 185], "1605": 6, "4963": 6, "4099": 6, "2883": 6, "1818": 6, "3447": 6, "1501": 6, "0215": 6, "0250": 6, "0408": 6, "3756": 6, "2149": 6, "3636": 6, "8559": 6, "1572": 6, "1069": 6, "1247": 6, "8060": 6, "topic": [6, 49, 58, 59, 61, 73, 105, 107, 108, 114, 120, 176, 216], "devour": 6, "menu": [6, 50, 260, 262, 269, 271], "pipelin": [6, 16, 61, 113, 121, 139, 159, 161, 171, 176, 177, 178, 234], "briefli": [6, 61, 121, 124, 159, 172, 207], "who": [6, 42, 49, 60, 73, 79, 97, 100, 113, 135, 152, 226, 262, 271], "heap": 6, "referenc": [6, 134, 163, 234], "lower": [6, 14, 17, 49, 50, 60, 73, 82, 108, 121, 122, 126, 133, 137, 141, 144, 152, 153, 157, 159, 160, 164, 165, 169, 171, 172, 179, 185, 192, 195, 198, 201, 223, 263, 272], "heavili": [6, 113, 165, 176, 184], "influenc": [6, 52], "ergonom": 6, "far": [6, 7, 14, 20, 22, 47, 49, 58, 59, 64, 95, 97, 98, 99, 111, 115, 125, 135, 139, 149, 152, 156, 160, 165, 176, 189, 198, 262, 271], "stack": [6, 8, 14, 15, 21, 22, 40, 48, 78, 92, 109, 121, 124, 138, 145, 146, 150, 154, 155, 161, 165, 168, 169, 171, 205], "shared_ptr": [6, 22], "cognit": 6, "everywher": [6, 103], "make_shar": 6, "though": [6, 10, 23, 47, 73, 97, 98, 113, 117, 129, 130, 138, 139, 143, 154, 159, 169, 173, 174, 184, 189, 220], "stai": [6, 82, 122, 124, 159, 160, 161, 176, 197, 198, 199, 228], "shorten": [6, 23], "wait": [6, 14, 16, 21, 82, 128, 133, 134, 135, 136, 144, 155, 160, 161, 162, 163, 168, 171, 176, 237, 238, 247], "hell": 6, "lot": [6, 8, 10, 15, 19, 21, 51, 79, 98, 113, 119, 123, 135, 150, 162, 165, 168, 172, 176, 184, 189, 230, 234], "came": [6, 52, 190], "scheme": [6, 18, 97, 121, 189, 202, 237, 244], "hide": [6, 118, 129, 159, 205], "reserv": [6, 10, 15, 137, 168], "simplifi": [6, 10, 14, 24, 78, 129, 133, 134, 165, 171, 177, 178, 189, 192, 196, 197, 199, 215], "linearimpl": 6, "torch_modul": 6, "brief": [6, 24, 61, 82, 98, 159, 208], "typedef": 6, "among": [6, 8, 22, 53, 58, 59, 82, 87, 124, 156, 168, 176, 200, 228, 229], "holder": [6, 118, 264, 273], "arrow": [6, 43, 124, 195], "resembl": [6, 12, 23, 58, 59, 98, 131, 160], "extra": [6, 7, 8, 9, 56, 97, 101, 102, 107, 127, 128, 129, 134, 136, 141, 153, 159, 165, 171, 172, 177, 178, 181, 194, 220, 223, 247], "netimpl": 6, "subtl": [6, 230], "deserv": [6, 103, 113], "construct": [6, 14, 20, 21, 22, 25, 47, 52, 60, 61, 65, 67, 85, 97, 111, 117, 121, 128, 130, 134, 136, 138, 145, 149, 154, 159, 160, 162, 165, 178, 183, 193, 196, 197, 200, 202, 205, 219, 221, 230, 249, 258, 262, 263, 271, 272], "null": [6, 58, 208, 223, 226], "tricki": [6, 17, 130, 142, 173, 174, 176, 201], "had": [6, 23, 42, 47, 51, 102, 105, 113, 152, 153, 160, 169, 197, 220, 226, 244], "nullptr": [6, 186, 208], "familiar": [6, 8, 10, 22, 44, 48, 53, 54, 56, 60, 85, 98, 100, 112, 122, 125, 131, 132, 135, 139, 146, 162, 226], "pythonista": 6, "disadvantag": [6, 112], "said": [6, 23, 25, 42, 146, 152, 159, 189, 190, 262, 271], "introduct": [6, 11, 17, 25, 46, 53, 54, 55, 56, 57, 79, 84, 85, 99, 100, 105, 106, 107, 108, 121, 131, 132, 144, 191, 201, 220, 247, 251, 254, 256], "sooner": [6, 122], "technic": [6, 23, 135, 136, 152, 189, 210, 211], "henceforth": 6, "recap": [6, 47, 160, 192, 237], "adversari": [6, 44, 79, 121], "architectur": [6, 9, 17, 25, 52, 56, 60, 73, 85, 95, 97, 98, 110, 121, 122, 124, 126, 131, 138, 150, 156, 164, 169, 171, 172, 175, 176, 177, 197, 199, 201, 220, 226, 228, 230, 247], "distinct": [6, 17, 21, 52, 82, 103, 122, 163, 169, 201], "transform": [6, 12, 17, 19, 20, 23, 24, 25, 32, 33, 34, 35, 36, 37, 38, 39, 40, 44, 49, 52, 58, 59, 60, 73, 75, 87, 90, 92, 93, 94, 96, 97, 109, 110, 113, 116, 117, 120, 121, 123, 129, 135, 136, 138, 139, 141, 142, 144, 146, 148, 150, 152, 153, 157, 158, 162, 165, 168, 169, 171, 178, 182, 184, 185, 193, 195, 197, 198, 199, 201, 204, 213, 216, 219, 220, 221, 229, 231, 244, 246, 247, 250, 253, 254], "probabl": [6, 8, 22, 49, 52, 58, 59, 60, 73, 75, 97, 98, 101, 103, 118, 123, 125, 126, 127, 128, 129, 148, 153, 158, 160, 166, 169, 171, 193, 219], "judg": 6, "closer": [6, 97, 160, 177], "authent": 6, "theori": [6, 49, 52, 60, 97, 125, 262, 271], "delic": 6, "tandem": 6, "indistinguish": 6, "fool": [6, 49, 73], "excel": [6, 51, 169], "realist": [6, 21, 60, 193], "2d": [6, 52, 93, 127, 129, 142, 156, 161, 171, 175, 200, 215, 252], "dcgangeneratorimpl": 6, "knoises": 6, "conv1": [6, 20, 44, 47, 73, 78, 87, 92, 93, 94, 96, 104, 105, 112, 123, 129, 142, 149, 150, 154, 156, 157, 162, 166, 169, 182, 195, 200, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "convtranspose2dopt": 6, "256": [6, 9, 17, 19, 51, 87, 90, 97, 117, 119, 124, 125, 126, 134, 144, 146, 159, 164, 165, 176, 178, 181, 182, 195, 197, 198, 200, 201, 207, 219, 229, 230, 238], "batch_norm1": 6, "conv2": [6, 20, 44, 47, 73, 78, 87, 90, 92, 93, 94, 96, 104, 105, 112, 123, 129, 142, 150, 154, 156, 162, 166, 169, 200, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "pad": [6, 17, 19, 42, 49, 52, 60, 75, 97, 104, 113, 115, 118, 129, 134, 137, 164, 191, 193, 201, 247], "batch_norm2": 6, "conv3": [6, 20, 104, 150], "batch_norm3": 6, "conv4": [6, 20], "convtranspose2d": [6, 52], "batchnorm2d": [6, 12, 19, 52, 104, 129, 134, 142, 143, 179, 198, 218, 223, 247, 252], "dcgangener": 6, "chosen": [6, 20, 22, 160, 172, 230], "student": [6, 97, 113], "harm": [6, 97], "discoveri": 6, "fed": [6, 12, 49, 52, 61, 113, 118, 134, 139, 149, 171, 177, 200], "soylent": 6, "regularli": [6, 53], "channel": [6, 10, 12, 19, 21, 43, 44, 47, 52, 97, 110, 121, 122, 124, 139, 148, 152, 156, 169, 178, 185, 208, 212, 213, 220, 247, 261, 270], "moduleopt": 6, "linearopt": 6, "leaki": [6, 52], "squash": [6, 136, 146], "sequenti": [6, 7, 12, 14, 19, 37, 38, 49, 52, 68, 69, 97, 103, 110, 111, 116, 118, 125, 134, 136, 142, 146, 148, 149, 153, 157, 159, 166, 185, 193, 194, 202, 205, 210, 211, 219, 230, 247, 258], "orient": [6, 166], "layer": [6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 19, 20, 33, 37, 42, 43, 47, 49, 52, 55, 60, 68, 73, 78, 87, 93, 97, 99, 102, 110, 111, 112, 115, 117, 118, 121, 122, 123, 126, 127, 128, 134, 136, 147, 148, 149, 153, 156, 157, 158, 159, 162, 163, 165, 166, 176, 177, 178, 181, 184, 185, 200, 201, 210, 211, 212, 219, 229, 230, 233, 234, 237, 239, 241, 242, 244, 252, 256], "conv2dopt": 6, "leakyrelu": [6, 52, 110], "leakyreluopt": 6, "negative_slop": 6, "composit": [6, 11, 14, 25, 99, 100, 145, 159], "third": [6, 8, 12, 22, 23, 52, 63, 64, 65, 67, 68, 69, 102, 111, 130, 155, 165, 175, 189, 195, 205, 263, 272], "fourth": [6, 65, 130, 194, 199], "knob": [6, 176, 177], "truli": [6, 49, 146], "collat": [6, 51, 118, 263, 272], "wherev": 6, "make_data_load": 6, "unique_ptr": 6, "spawn": [6, 7, 11, 16, 18, 49, 52, 53, 55, 123, 133, 134, 135, 149, 161, 162, 163, 212, 214, 258], "concurr": [6, 109, 124, 126, 134, 149, 176, 177, 247], "kbatchsiz": 6, "dataloaderopt": 6, "consol": [6, 169, 171, 188, 257], "field": [6, 10, 11, 12, 14, 15, 49, 102, 103, 113, 135, 152, 161, 168, 174, 178, 191, 200, 203, 216, 223], "rebuild": [6, 231], "danc": [6, 12], "generator_optim": 6, "adamopt": 6, "2e": [6, 14, 89, 137], "make_tupl": 6, "discriminator_optim": 6, "5e": [6, 24, 64, 111], "adagrad": [6, 96, 110, 111, 192, 196], "lbfg": [6, 12, 110], "rmsprop": [6, 47, 69, 99, 110, 111], "sgd": [6, 7, 16, 19, 37, 38, 43, 44, 47, 65, 67, 69, 87, 89, 92, 94, 96, 98, 99, 102, 103, 104, 110, 111, 112, 115, 117, 133, 134, 135, 149, 157, 161, 162, 163, 166, 168, 169, 178, 220, 221, 230, 237, 241, 242, 243, 244, 245, 249, 250, 253], "date": [6, 10, 73, 115, 122, 162, 197, 204, 220, 244, 263, 272], "exhaust": [6, 11, 173, 174, 200], "knumberofepoch": 6, "batch_index": 6, "real_imag": 6, "real_label": [6, 52], "real_output": 6, "d_loss_real": 6, "binary_cross_entropi": [6, 230], "fake_imag": [6, 152], "fake_label": [6, 52], "fake_output": 6, "d_loss_fak": 6, "d_loss": [6, 52], "fill_": [6, 9, 52, 80, 118, 136, 165, 168, 191], "g_loss": [6, 52], "printf": 6, "r": [6, 7, 9, 11, 14, 16, 19, 42, 43, 47, 49, 51, 60, 73, 76, 85, 92, 98, 99, 121, 144, 145, 146, 147, 150, 160, 161, 163, 165, 171, 176, 178, 181, 182, 195, 197, 198, 204, 205, 208, 220, 231, 246, 247, 257, 262, 271], "2ld": 6, "3ld": 6, "4f": [6, 12, 14, 49, 52, 60, 117, 122, 123, 127, 128, 129, 136, 145, 154, 157, 159, 165, 166, 203], "batches_per_epoch": 6, "uniformli": [6, 87, 160, 247], "robust": [6, 49, 53, 54, 73, 160, 219], "propag": [6, 10, 16, 32, 43, 45, 47, 52, 78, 97, 101, 102, 127, 130, 141, 147, 154, 159, 177, 197, 199, 247], "repeat": [6, 14, 18, 19, 23, 128, 144, 146, 149, 159, 168, 176, 182, 189, 197, 198, 212, 223, 238], "spiel": 6, "progress": [6, 8, 15, 24, 49, 52, 53, 110, 136, 157, 165, 169, 214, 263, 272], "observ": [6, 14, 19, 47, 51, 61, 82, 116, 117, 122, 123, 126, 136, 137, 146, 147, 152, 159, 160, 161, 163, 164, 165, 172, 176, 179, 181, 182, 185, 192, 197, 198, 199, 200, 203, 210, 219, 230, 234, 239, 244, 247, 251, 255, 258], "meaning": [6, 49, 60, 97, 147], "3c0711f20896": 6, "dcga": 6, "6876": 6, "1304": 6, "3776": 6, "3101": 6, "300": [6, 12, 98, 102, 122, 163, 178, 219, 231, 246], "3652": 6, "6626": 6, "400": [6, 47, 58, 59, 112, 137, 178, 185, 231, 246], "8057": 6, "2795": [6, 231], "3531": 6, "4452": 6, "600": [6, 119, 147, 160, 256], "3501": 6, "0811": 6, "700": 6, "3581": 6, "5623": 6, "800": 6, "6423": 6, "7385": 6, "900": 6, "3592": 6, "7333": 6, "4660": [6, 173], "5242": 6, "6364": 6, "0886": 6, "3717": 6, "8103": 6, "0201": 6, "3544": 6, "4522": 6, "6545": 6, "quickli": [6, 44, 82, 97, 98, 99, 103, 124, 152, 160, 165, 216, 221, 234, 251], "onto": [6, 8, 14, 16, 18, 44, 121, 136, 149, 152, 162, 163, 202, 247], "somewher": [6, 23, 98, 99, 112], "kcpu": [6, 186, 206], "whose": [6, 42, 60, 82, 85, 97, 103, 122, 125, 147, 171, 187, 200, 229], "insert": [6, 12, 17, 19, 49, 118, 137, 157, 163, 179, 181, 182, 197, 198, 199, 200, 201, 228, 252], "op": [6, 10, 11, 15, 21, 22, 23, 48, 82, 121, 122, 123, 124, 129, 133, 135, 137, 142, 143, 144, 147, 158, 168, 176, 177, 178, 179, 181, 182, 184, 185, 186, 187, 188, 190, 191, 193, 197, 198, 199, 200, 202, 207, 208, 212, 221, 222, 223, 230, 237, 244, 247, 252], "previou": [6, 11, 13, 14, 15, 16, 17, 22, 23, 49, 52, 53, 55, 58, 59, 97, 98, 116, 117, 119, 122, 127, 128, 130, 131, 132, 134, 136, 146, 149, 152, 156, 157, 159, 160, 161, 163, 164, 165, 168, 169, 171, 172, 173, 174, 176, 177, 182, 197, 198, 199, 201, 207, 208, 223, 239, 247, 260, 269], "resid": [6, 7, 97, 134], "portabl": 6, "augment": [6, 24, 51, 117, 118, 119, 157, 166, 178], "period": [6, 49, 52, 126, 146, 168, 176], "crash": [6, 61], "middl": [6, 262, 271], "procedur": [6, 23, 47, 120, 157, 160, 166], "restor": [6, 73, 112, 147], "session": [6, 20, 97, 105, 234, 262, 271], "interv": [6, 14, 52, 126, 163, 165, 173, 174], "kcheckpointeveri": 6, "str": [6, 9, 18, 19, 22, 49, 83, 90, 108, 113, 118, 122, 126, 137, 139, 142, 143, 148, 159, 162, 171, 173, 174, 185, 194, 203, 208, 209, 213, 216, 231, 238, 246], "checkpoint_count": 6, "counter": [6, 11, 49, 52, 73, 135], "bump": 6, "beta1": [6, 52], "krestorefromcheckpoint": 6, "intermediari": [6, 125], "xxx": [6, 15, 45, 51], "argpars": [6, 52, 122, 123, 137, 148, 161, 162, 163, 185], "parser": [6, 98, 122, 123, 148, 161, 162, 163, 262, 271], "argumentpars": [6, 122, 123, 148, 161, 162, 163], "add_argu": [6, 122, 123, 148, 161, 162, 163], "png": [6, 51, 119, 121, 149, 178], "parse_arg": [6, 122, 123, 148, 161, 162, 163], "sample_fil": [6, 139], "mul": [6, 40, 48, 108, 144, 192, 197, 206, 231, 246], "255": [6, 12, 20, 59, 97, 139, 146, 171, 178, 179, 200, 213, 238], "uint8": [6, 20, 95, 144, 146, 178, 200], "numpi": [6, 12, 14, 17, 19, 20, 41, 44, 51, 52, 57, 60, 70, 72, 73, 75, 87, 89, 90, 92, 94, 96, 104, 105, 108, 109, 110, 117, 118, 119, 121, 127, 130, 137, 146, 149, 157, 158, 160, 163, 165, 166, 169, 171, 172, 182, 185, 189, 193, 195, 196, 197, 198, 201, 204, 229, 236, 246], "axi": [6, 13, 21, 34, 51, 52, 82, 101, 102, 109, 110, 117, 119, 127, 137, 146, 156, 157, 171, 185, 254], "subplot": [6, 14, 51, 52, 73, 117, 149, 157, 159, 165, 166, 178], "imshow": [6, 12, 34, 44, 51, 52, 73, 75, 90, 92, 94, 96, 104, 117, 157, 166, 169, 171, 178], "cmap": [6, 34, 73, 90, 94, 96, 104, 165, 169], "grai": [6, 34, 73, 104, 119, 146, 188, 229], "get_xaxi": 6, "set_vis": 6, "get_yaxi": 6, "savefig": [6, 146, 149], "out_fil": 6, "17": [6, 21, 23, 58, 59, 92, 95, 109, 113, 144, 173, 174, 187, 203, 219, 231, 266, 275], "57": [6, 7, 17, 109, 127, 144, 238], "4953": 6, "0195": [6, 185], "3610": 6, "8148": 6, "4072": 6, "36760": 6, "4444": 6, "3761": 6, "8790": 6, "3977": 6, "3315": 6, "120": [6, 44, 47, 87, 92, 93, 94, 96, 105, 112, 117, 134, 149, 156, 157, 163, 169, 238, 239, 240, 241, 242, 243, 248, 249, 250], "8084": 6, "hoorai": [6, 25], "ball": 6, "court": 6, "digest": 6, "necess": [6, 49], "broad": [6, 57], "space": [6, 14, 22, 49, 52, 60, 73, 97, 98, 102, 103, 113, 115, 126, 136, 146, 152, 159, 160, 163, 165, 168, 169, 171, 194, 262, 263, 271, 272], "consult": [6, 152, 197, 229, 261, 270], "stuck": 6, "whenev": [6, 22, 53, 67, 69, 98, 99, 111, 207], "rate": [6, 7, 43, 52, 87, 97, 99, 104, 115, 117, 122, 123, 126, 127, 146, 148, 157, 159, 160, 162, 178, 216, 236, 245, 247], "pritam": [7, 16], "damania": [7, 16], "torchtext": [7, 38, 42, 50, 92, 96, 113, 118, 121, 127, 165, 236], "positionalencod": [7, 118], "inject": 7, "posit": [7, 14, 17, 90, 99, 113, 118, 121, 137, 153, 159, 160, 164, 165, 171, 201, 229, 260, 269], "token": [7, 9, 17, 42, 49, 60, 75, 103, 113, 115, 116, 118, 122, 124, 128, 164, 165, 181, 185, 201, 247], "sine": [7, 14, 92, 95], "cosin": [7, 14, 219], "os": [7, 9, 11, 17, 18, 19, 33, 34, 49, 50, 51, 52, 53, 55, 60, 87, 90, 117, 122, 123, 125, 127, 128, 133, 134, 135, 137, 146, 148, 155, 157, 158, 161, 162, 163, 175, 178, 181, 182, 185, 194, 195, 197, 198, 208, 212, 213, 214, 215, 228, 231, 234, 237, 246, 258], "transformerencod": [7, 42, 93], "transformerencoderlay": [7, 42, 93, 164], "d_model": [7, 118], "max_len": [7, 118], "pe": 7, "arang": [7, 73, 118, 146, 149, 169, 189, 190, 191, 193, 244, 245, 254], "div_term": 7, "10000": [7, 44, 52, 92, 98, 118, 127, 136, 160, 163, 231, 246], "sin": [7, 14, 63, 64, 65, 67, 68, 69, 71, 72, 89, 95, 111, 118, 145, 172, 173, 174, 192, 247, 262, 271], "co": [7, 14, 89, 103, 118, 172, 173, 174, 238, 247, 263, 272], "replica": [7, 55, 56, 61, 79, 123, 133, 135, 149, 258], "drive": [7, 16, 25, 52, 58, 59, 60, 121, 146, 189, 212], "largest": [7, 60, 83, 160, 171, 185], "nlayer": [7, 9, 93, 163, 181, 195], "decod": [7, 9, 98, 113, 118, 122, 163, 164, 177, 181, 184, 195, 230, 252], "platform": [7, 20, 23, 105, 133, 135, 168, 194, 207, 219, 222, 226, 247, 253, 256, 257], "win32": 7, "exit": [7, 16, 141, 161, 162, 163, 210, 211, 230, 255], "device_count": [7, 11, 45, 53, 55, 87, 95, 123, 133, 150, 214, 215], "least": [7, 47, 58, 59, 73, 112, 113, 126, 128, 133, 146, 158, 165, 194, 214, 216, 223, 234, 258, 262, 263, 271, 272], "ntoken": [7, 9, 163, 181, 195], "ninp": [7, 9, 163, 181, 195], "pos_encod": 7, "init_weight": [7, 9, 115, 181, 195], "initrang": [7, 9, 115, 181, 195], "src": [7, 10, 11, 108, 118, 135, 155, 206, 208, 222, 244, 246], "zero_": [7, 9, 32, 104, 115, 155, 163, 166, 181, 195], "inp": [7, 19, 32, 49, 117, 142, 157, 162, 165, 166, 172, 174, 232, 239], "permut": [7, 90, 97, 110, 146, 147, 158, 165, 171, 173, 174, 178, 183], "run_work": [7, 16, 134, 161, 162, 163, 212], "rank": [7, 11, 16, 18, 42, 45, 53, 55, 82, 121, 122, 123, 133, 134, 135, 155, 161, 162, 163, 175, 193, 212, 214, 215, 258, 260, 269], "world_siz": [7, 11, 16, 18, 24, 53, 55, 122, 123, 133, 134, 135, 155, 161, 162, 163, 175, 212, 214, 215, 258], "wikitext": [7, 9, 181, 193], "torchdata": [7, 50, 113, 115, 116, 118], "vocab": [7, 75, 99, 102, 103, 115, 116, 118, 124, 137, 185], "numeric": [7, 118], "batchifi": [7, 9, 181], "arrang": [7, 17, 201], "trim": [7, 9, 12, 60, 165, 181, 246], "alphabet": 7, "26": [7, 23, 144, 146, 147, 158, 163, 219], "bmatrix": [7, 17, 102, 201], "text": [7, 17, 34, 38, 40, 44, 52, 73, 75, 85, 98, 99, 101, 102, 103, 113, 115, 116, 118, 120, 121, 122, 127, 128, 135, 137, 159, 160, 165, 168, 171, 181, 196, 201, 226, 229, 251, 263, 265, 272, 274], "c": [7, 12, 15, 18, 19, 21, 25, 38, 43, 49, 51, 63, 64, 65, 67, 71, 72, 85, 89, 90, 94, 95, 97, 103, 104, 108, 110, 111, 112, 115, 121, 127, 128, 129, 130, 135, 137, 139, 142, 144, 146, 147, 158, 163, 164, 165, 171, 173, 174, 175, 188, 191, 199, 209, 221, 223, 225, 226, 230, 231, 244, 245, 251, 252, 263, 272], "ldot": 7, "rightarrow": [7, 98, 135, 160], "j": [7, 22, 23, 32, 43, 44, 58, 59, 73, 89, 92, 94, 96, 97, 98, 102, 103, 117, 127, 137, 150, 165, 194], "k": [7, 12, 17, 19, 49, 58, 59, 60, 82, 90, 98, 105, 108, 124, 137, 147, 150, 154, 161, 162, 164, 178, 182, 197, 198, 201, 209], "u": [7, 14, 115, 118, 194], "treat": [7, 60, 75, 103, 113, 154, 161, 172, 203, 252], "print_with_rank": 7, "msg": [7, 187, 213], "wikitext2": 7, "get_token": [7, 115, 118], "build_vocab_from_iter": [7, 115, 116, 118], "train_it": [7, 115, 118], "basic_english": [7, 115], "unk": [7, 115, 116, 118], "set_default_index": [7, 115, 116, 118], "data_process": 7, "raw_text_it": 7, "tupl": [7, 9, 20, 48, 51, 58, 59, 60, 78, 80, 82, 97, 102, 103, 110, 115, 116, 137, 141, 142, 146, 147, 160, 173, 174, 178, 181, 182, 185, 192, 200, 209, 230, 234, 256], "filter": [7, 13, 24, 49, 83, 97, 125, 137, 157, 165, 185, 208, 246], "val_it": [7, 118], "test_it": [7, 115], "train_data": [7, 55, 165], "val_data": 7, "test_data": [7, 9, 20, 34, 37, 38, 99, 181], "bsz": [7, 9, 135, 181, 195], "is_train": 7, "nbatch": [7, 9, 181], "wouldn": [7, 9, 17, 103, 123, 136, 181, 201], "cleanli": [7, 9, 181, 210, 211, 255], "narrow": [7, 9, 80, 144, 181, 193], "evenli": [7, 9, 18, 181], "data_per_rank": 7, "eval_batch_s": [7, 9, 19, 24, 137, 181, 182, 185, 197, 198], "get_batch": [7, 9, 181], "subdivid": [7, 8], "bptt": [7, 9, 181], "35": [7, 17, 73, 124, 147, 203, 219, 221], "seq_len": [7, 9, 164, 181], "min": [7, 9, 19, 52, 82, 87, 97, 104, 117, 135, 146, 155, 157, 159, 161, 163, 171, 173, 174, 176, 177, 178, 181, 197, 200], "4096": [7, 18, 175, 219, 230], "billion": [7, 122, 124], "rpc": [7, 109, 121, 133, 149, 216, 251], "rref": [7, 16, 61, 134, 161, 162, 212, 216], "expans": [7, 134], "replic": [7, 16, 18, 56, 60, 61, 79, 121, 123, 124, 131, 133, 135, 149, 162, 163, 215], "distributeddataparallel": [7, 16, 55, 56, 120, 122, 123, 135, 155, 163, 175, 230, 258], "vocabulari": [7, 49, 60, 103, 115, 118, 124, 137, 193, 247], "emsiz": [7, 115], "nhid": [7, 9, 163, 181, 195], "feedforward": [7, 124], "nhead": [7, 118, 193], "multihead": [7, 42], "tmpfile": 7, "namedtemporaryfil": 7, "init_rpc": [7, 16, 134, 161, 162, 163, 212], "rpc_backend_opt": [7, 16, 134, 212], "tensorpiperpcbackendopt": [7, 16, 134, 212], "init_method": [7, 16, 133, 135], "_transport": 7, "_channel": 7, "longer": [7, 12, 42, 52, 78, 99, 113, 125, 129, 144, 149, 152, 156, 160, 161, 172, 176, 177, 193, 197, 198, 211, 247, 260, 269], "ibv": 7, "uv": 7, "cuda_ipc": 7, "cuda_bas": 7, "num_gpu": [7, 162], "partition_len": 7, "tmp_list": 7, "module_list": 7, "transformer_block": [7, 124], "checkpoint": [7, 39, 49, 60, 61, 75, 87, 117, 131, 152, 184, 220, 230, 235, 241, 243, 251], "ddp": [7, 11, 16, 53, 54, 61, 121, 122, 123, 124, 132, 168, 215, 258], "master_addr": [7, 11, 18, 53, 55, 123, 133, 134, 135, 155, 161, 162, 163, 175, 212, 214, 258], "localhost": [7, 11, 16, 18, 53, 55, 94, 123, 127, 133, 134, 139, 155, 161, 162, 163, 168, 169, 175, 212, 213, 214, 215, 245, 258], "master_port": [7, 11, 18, 53, 55, 123, 133, 134, 135, 155, 161, 162, 163, 175, 212, 214, 258], "29500": [7, 11, 16, 18, 134, 135, 155, 161, 162, 163, 175, 212, 258], "init_process_group": [7, 11, 16, 18, 53, 55, 61, 122, 123, 133, 135, 155, 175, 214, 215, 258], "nccl": [7, 11, 18, 53, 55, 82, 122, 123, 124, 133, 135, 168, 175, 214, 215], "get_total_param": 7, "total_param": 7, "crossentropyloss": [7, 9, 16, 19, 37, 38, 44, 78, 87, 92, 94, 96, 97, 99, 110, 115, 117, 118, 124, 157, 163, 168, 169, 172, 181, 182, 197, 198, 220, 250, 253], "steplr": [7, 110, 115, 117, 122, 123, 129, 157, 178], "togeth": [7, 11, 17, 21, 25, 49, 51, 59, 60, 75, 85, 97, 101, 113, 118, 123, 129, 136, 138, 158, 161, 163, 165, 171, 188, 197, 199, 200, 201, 216, 252, 254], "prevent": [7, 49, 55, 76, 109, 118, 125, 128, 133, 144, 146, 230], "explod": [7, 49, 127], "criterion": [7, 9, 12, 16, 19, 44, 47, 52, 65, 67, 87, 92, 94, 97, 111, 115, 117, 127, 128, 157, 160, 163, 165, 168, 169, 181, 182, 197, 198, 220, 245, 250, 253], "schedul": [7, 11, 14, 82, 87, 115, 117, 122, 123, 129, 133, 144, 157, 159, 160, 168, 176, 178, 238, 247, 251], "lr_schedul": [7, 14, 110, 115, 117, 122, 123, 129, 157, 159, 178, 211], "95": [7, 115, 126, 136, 159, 163, 177, 179, 219], "total_loss": [7, 9, 103, 128, 165, 181], "start_tim": [7, 19, 115, 118, 198, 230, 237], "node": [7, 8, 18, 20, 23, 32, 43, 47, 53, 54, 55, 56, 63, 98, 108, 110, 120, 122, 131, 132, 133, 142, 143, 144, 162, 165, 176, 186, 198, 199, 200, 215, 247, 252], "local_valu": [7, 161, 162], "log_interv": [7, 115, 163], "cur_loss": 7, "elaps": [7, 9, 19, 115, 123, 143, 165, 181, 185], "5d": [7, 37, 38, 44, 87, 92, 115, 250], "02": [7, 52, 144, 149, 163, 219], "ms": [7, 17, 19, 119, 144, 158, 176, 177, 184, 201], "ppl": 7, "get_last_lr": 7, "eval_model": 7, "data_sourc": [7, 9, 181], "output_flat": [7, 9, 181], "best_val_loss": [7, 122], "inf": [7, 118, 122, 191, 193, 195], "best_model": 7, "epoch_start_tim": [7, 115], "val_loss": [7, 87, 104, 118, 122], "89": [7, 144, 163, 176], "test_loss": [7, 37, 38, 123, 129, 166], "mp": [7, 11, 15, 16, 33, 38, 53, 55, 121, 122, 123, 133, 134, 135, 161, 162, 163, 212, 214, 258], "__name__": [7, 11, 12, 16, 51, 52, 53, 55, 78, 87, 122, 123, 133, 134, 135, 137, 139, 147, 148, 161, 162, 163, 185, 187, 194, 212, 213, 214, 226, 258], "__main__": [7, 11, 16, 51, 53, 55, 87, 122, 123, 133, 134, 135, 139, 148, 161, 162, 163, 187, 194, 212, 213, 214, 226, 231, 258], "arg": [7, 16, 18, 19, 21, 51, 53, 55, 73, 101, 110, 112, 122, 123, 125, 133, 134, 135, 137, 142, 143, 147, 148, 149, 156, 157, 160, 161, 162, 163, 164, 171, 172, 173, 174, 184, 185, 186, 193, 194, 198, 200, 210, 212, 214, 216, 220, 244, 258, 266, 275], "nproc": [7, 11, 16, 53, 55, 123, 133, 134, 161, 163, 212, 214, 258], "join": [7, 9, 10, 16, 18, 34, 44, 48, 49, 50, 51, 53, 60, 61, 92, 96, 117, 118, 120, 123, 125, 127, 128, 133, 134, 135, 137, 157, 159, 161, 162, 163, 165, 178, 181, 185, 212, 214, 231, 246, 258], "00": [7, 92, 109, 144, 163, 171, 184, 187, 219], "778": 7, "97": [7, 144, 163, 219], "43": [7, 119, 149, 219, 231], "31": [7, 122, 144, 145, 200, 219, 231, 238, 246], "6432469059895903232": 7, "90": [7, 127, 137, 163, 165, 191, 219], "44": [7, 17, 144, 163, 201], "21245447128217366528": 7, "699": 7, "21176949187407757312": 7, "87": [7, 24, 109, 163, 219, 231], "62": [7, 115, 163, 201], "23975861229620961280": 7, "698": 7, "86": [7, 17, 144, 158, 163, 201, 219, 231], "41": [7, 17, 123, 158, 176, 231, 238], "1193312915629888256": 7, "40": [7, 113, 123, 146, 147, 149, 156, 163, 165, 176, 186, 192, 195, 201, 219, 231], "69": [7, 90, 173, 185, 231], "471605759847546240": 7, "34": [7, 109, 158, 219, 223, 231, 238, 246], "42812308420836458496": 7, "33": [7, 145, 158, 163, 176, 177, 187, 219, 231], "68": [7, 17, 51, 127, 137, 144, 177, 231], "68839569686012223488": 7, "08": [7, 122, 144, 163, 219, 221, 231], "80": [7, 87, 115, 126, 147, 163, 165, 191, 234], "22": [7, 17, 144, 147, 163, 204, 219, 231], "09": [7, 17, 49, 144, 163, 176, 201, 219], "75": [7, 22, 23, 97, 115, 117, 123, 149, 157, 234], "768": [7, 137, 147, 185, 201], "51": [7, 119, 127, 147, 149, 163, 176, 219], "36": [7, 17, 115, 158, 219], "6063529544668166": 7, "769": 7, "23": [7, 17, 95, 144, 163, 176, 184, 219, 231, 238, 246, 263, 272], "17651211266236086": 7, "3798441739584": 7, "56": [7, 19, 147, 158, 176, 201, 231, 238], "29": [7, 137, 158, 163, 208, 231], "5203636967575": 7, "47": [7, 17, 87, 127, 147, 219, 231, 238], "2212498693571": 7, "05": [7, 14, 16, 20, 21, 73, 115, 122, 134, 160, 163, 179, 218, 219], "2015144761281": 7, "13121380184": 7, "92": [7, 17, 201, 219, 231], "14653799192": 7, "39": [7, 123, 127, 163, 219, 231], "24": [7, 17, 19, 113, 144, 158, 173, 184, 191, 201, 219, 231], "98": [7, 51, 118, 144, 163, 187, 219], "361681": 7, "287876": 7, "61": [7, 19, 109, 147, 201, 219], "164364": 7, "60": [7, 34, 105, 110, 117, 122, 127, 128, 147, 149, 157, 158, 163, 165, 169, 191, 219, 238], "159095": 7, "697": [7, 219], "54261": 7, "91": [7, 17, 163, 201, 219, 231], "72": [7, 17, 158, 231], "53372": 7, "49": [7, 17, 147, 149, 163, 185, 201, 231], "78": [7, 17, 201, 231], "47948": 7, "79": [7, 17, 144, 197, 201, 231, 238], "48664": 7, "42": [7, 23, 73, 97, 127, 137, 163, 176, 185, 208, 231], "96": [7, 19, 144, 147, 163, 219], "38": [7, 109, 163, 177, 219, 246], "46": [7, 17, 137, 144, 147, 158, 176], "ddp_pipelin": 7, "respons": [8, 11, 16, 18, 49, 60, 108, 121, 124, 129, 133, 135, 139, 161, 162, 165, 172, 177, 208, 210, 212, 213, 229, 257, 262, 271], "nontrivi": [8, 209], "cut": [8, 113, 119, 262, 271], "concern": [8, 21, 61, 99, 189, 197, 216, 221], "rule": [8, 22, 43, 47, 60, 102, 103, 125, 129, 138, 145, 153, 154, 159, 160, 182, 230], "vmap": [8, 121, 141, 145, 150, 154, 196], "statement": [8, 21, 25, 43, 45, 60, 65, 98, 111, 165, 173, 174, 183, 230, 232, 262, 271], "convers": [8, 49, 95, 112, 147, 165, 177, 189, 194, 216, 223, 228, 234, 244], "basic": [8, 11, 15, 16, 23, 24, 49, 54, 56, 57, 61, 75, 86, 97, 100, 103, 105, 107, 108, 113, 115, 121, 124, 127, 129, 144, 159, 164, 190, 193, 214, 245, 251, 252, 263, 272], "registr": [8, 10, 15, 22, 23, 208, 220, 221, 226], "highest": [8, 19, 44, 49, 58, 59, 60, 128, 160, 171], "transfer": [8, 22, 44, 58, 59, 79, 80, 97, 98, 112, 117, 121, 135, 158, 162, 168, 178, 206, 228, 232, 252, 261, 270], "redispatch": 8, "happen": [8, 21, 23, 25, 32, 43, 52, 97, 99, 105, 122, 124, 130, 135, 141, 156, 161, 168, 169, 184, 185, 197, 199, 208, 209, 237, 247], "unlik": [8, 12, 17, 60, 97, 125, 141, 142, 147, 157, 165, 201], "style": [8, 60, 113, 115, 124, 178, 208, 214, 234, 260, 262, 263, 269, 271, 272], "abid": [8, 52], "myop": 8, "myadd": [8, 10], "myadd_cpu": 8, "self_": 8, "other_": 8, "torch_internal_assert": 8, "devicetyp": [8, 15], "self_ptr": 8, "data_ptr": [8, 23, 59, 186, 208], "other_ptr": 8, "result_ptr": 8, "torch_library_impl": [8, 10, 15], "impl": [8, 10, 15, 108, 173, 174, 246], "myadd_cuda": 8, "boundari": [8, 61, 134, 159, 168], "myops_cpu": 8, "myops_cuda": 8, "xla": [8, 10, 15, 244], "torch_xla": [8, 10], "useabl": 8, "behav": [8, 12, 20, 60, 80, 147, 153, 161, 198, 226, 264, 273], "autogradnotimplementedfallback": 8, "notimpl": 8, "preserv": [8, 17, 22, 25, 49, 107, 121, 134, 147, 156, 177, 183, 190, 201, 203, 223, 234, 244, 249, 262, 271], "require_grad": 8, "ness": 8, "pin": [8, 125, 247, 261, 270], "lost": [8, 17, 99, 147, 201], "mutat": [8, 10, 138, 154, 173, 174, 205, 211], "alias": [8, 10], "adinplaceorview": 8, "bookkeep": 8, "autogradnotimplementedinplaceorviewfallback": 8, "logi": 8, "properli": [8, 9, 10, 14, 23, 50, 55, 97, 118, 130, 133, 135, 147, 149, 152, 153, 159, 161, 162, 163, 165, 176, 188, 189, 191, 194, 202, 209, 224, 225, 234, 244], "annot": [8, 10, 18, 21, 22, 23, 51, 60, 99, 108, 118, 137, 171, 172, 177, 216], "guess": [8, 43, 49, 52, 113, 127, 165], "twist": [8, 113], "constitut": [8, 14], "hood": [8, 14, 19, 49, 52, 54, 56, 124, 125, 145, 146, 163, 192, 212, 216], "singleton": [8, 162], "findschemaorthrow": 8, "decltyp": [8, 144], "qualifi": [8, 22, 108, 214], "overload": [8, 22, 108], "typic": [8, 11, 14, 19, 21, 43, 47, 48, 54, 55, 58, 59, 82, 98, 99, 103, 115, 119, 124, 126, 129, 131, 144, 152, 159, 162, 171, 172, 173, 174, 176, 177, 200, 213, 219, 220, 221, 228, 230, 232, 234, 247], "cast": [8, 13, 17, 18, 108, 109, 122, 201, 230], "lookup": [8, 16, 103, 115, 163, 175], "typo": 8, "myaddfunct": [8, 10], "autononvariabletypemod": [8, 10, 59, 208], "myadd_autograd": [8, 10], "except": [8, 11, 17, 23, 43, 44, 48, 49, 52, 58, 59, 60, 61, 76, 79, 80, 87, 95, 99, 102, 104, 117, 125, 127, 134, 137, 138, 139, 141, 142, 145, 147, 149, 154, 155, 157, 164, 165, 172, 173, 174, 184, 190, 193, 196, 200, 201, 202, 203, 205, 206, 220, 222, 239, 246], "raii": 8, "guard": [8, 59, 133, 173, 199, 208, 211], "infinit": 8, "overflow": [8, 49, 184, 230, 234], "send": [8, 10, 11, 12, 44, 45, 61, 73, 78, 87, 115, 135, 139, 146, 155, 157, 161, 162, 163, 173, 174, 212], "consider": [8, 10, 20, 123, 173, 174], "handler": [8, 171, 177, 244], "autogradcpu": 8, "autogradcuda": 8, "pythondispatch": 8, "_python_dispatch": 8, "isn": [8, 98, 141, 142, 158, 169, 191, 260, 262, 269, 271], "glorifi": 8, "add_cpu": 8, "add_cuda": 8, "unsupport": [8, 172, 173, 174, 177, 244], "decentr": 8, "importantli": [8, 19, 23, 42, 130, 152, 189], "parti": [8, 22, 23, 155], "aspect": [8, 15, 51, 73, 135, 178], "patch": [8, 10, 160], "dispatchkei": [8, 10], "varieti": [8, 24, 49, 112, 128, 192], "fallback": [8, 10, 15, 185], "behavior": [8, 10, 11, 12, 14, 22, 25, 49, 51, 102, 108, 136, 143, 144, 147, 149, 152, 173, 174, 190, 191, 197, 198, 202, 223, 237, 247], "opt": [8, 16, 22, 104, 110, 126, 134, 147, 152, 155, 162, 163, 168, 172, 184, 202, 210, 211, 230, 237], "amp": [8, 15, 61, 147, 207, 220, 251, 253], "incom": [8, 168, 213], "float16": [8, 15, 122, 137, 147, 164, 207, 230], "float32": [8, 14, 23, 85, 122, 144, 147, 158, 160, 163, 172, 186, 189, 199, 200, 230, 244, 247], "matmul": [8, 17, 23, 32, 40, 48, 95, 124, 144, 184, 193, 201, 205, 207, 208, 219, 230, 247], "impair": 8, "converg": [8, 49, 52, 64, 97, 111, 112, 124, 135, 153, 160, 165, 211, 230, 234], "hypothet": 8, "autocast_mod": 8, "mymatmul_autocast": 8, "excludedispatchkeyguard": 8, "no_autocast": 8, "mymatmul": 8, "cached_cast": 8, "khalf": 8, "elig": 8, "polici": [8, 15, 121, 123, 146, 160, 161, 163], "mixtur": 8, "meanwhil": [8, 125, 144, 190, 220], "float64": [8, 95], "unaffect": [8, 97], "forc": [8, 14, 17, 23, 49, 60, 127, 165, 172, 189, 191, 201, 230, 247, 260, 269], "fallthrough": 8, "occur": [8, 11, 19, 23, 25, 53, 75, 78, 82, 97, 116, 144, 147, 161, 162, 168, 171, 173, 174, 177, 184, 185], "fall": [8, 15, 153, 160], "aren": [8, 130, 136, 191, 247], "dri": [8, 168], "reduct": [8, 9, 58, 59, 65, 67, 68, 69, 111, 119, 122, 123, 125, 129, 137, 152, 155, 168, 171, 181, 189, 191, 196, 223, 230, 234], "gemm": [8, 144, 176, 177, 199, 219], "unless": [8, 20, 48, 99, 129, 137, 159, 182, 184, 185, 205, 237], "categori": [8, 10, 19, 49, 73, 82, 117, 127, 128, 165, 168, 173, 174, 182, 189, 190, 191, 192, 197, 198, 208], "promote_typ": 8, "widest": 8, "safest": 8, "my_multiple_input_op_autocast": 8, "t0": [8, 122, 164, 184, 190, 210, 231], "t1": [8, 40, 48, 190, 231, 244], "optimist": 8, "exec_typ": 8, "my_multiple_input_op": 8, "myadd_autocast": 8, "gymnast": 8, "invoc": [8, 25, 143, 161, 177, 226], "stabil": [8, 97, 160, 257], "41478": 8, "jame": [9, 25, 113, 143], "reed": [9, 25, 143], "seth": [9, 19, 36], "weidman": [9, 19], "io": [9, 34, 49, 51, 58, 60, 94, 119, 121, 127, 128, 139, 148, 161, 164, 165, 171, 178, 181, 196, 208, 213, 227, 228, 229, 251, 252], "lstmmodel": [9, 181, 195], "drop": [9, 23, 50, 105, 131, 152, 163, 176, 181, 184, 219, 224, 225, 260, 269], "emb": [9, 23, 93, 98, 102, 103, 136, 163, 181, 195, 263, 272], "init_hidden": [9, 98, 181, 195], "new_zero": [9, 195], "corpu": [9, 49, 50, 60, 137, 181, 193], "preprocess": [9, 20, 42, 51, 58, 59, 60, 97, 104, 113, 116, 127, 158, 165, 171, 187, 204, 234], "dictionari": [9, 14, 49, 58, 59, 60, 82, 103, 105, 112, 127, 128, 139, 152, 154, 159, 161, 162, 165, 171, 181, 185, 195, 237], "word2idx": [9, 181], "idx2word": [9, 181], "add_word": [9, 181], "__len__": [9, 45, 51, 104, 135, 160, 178, 181], "train": [9, 10, 12, 16, 17, 18, 20, 23, 32, 34, 37, 38, 41, 42, 43, 46, 47, 51, 54, 56, 57, 58, 59, 60, 63, 64, 65, 67, 68, 69, 73, 75, 79, 82, 85, 91, 92, 94, 96, 97, 98, 100, 102, 103, 104, 105, 111, 113, 116, 118, 119, 121, 123, 126, 129, 133, 137, 142, 146, 147, 148, 149, 150, 153, 154, 155, 158, 161, 162, 163, 164, 168, 171, 172, 175, 176, 178, 183, 185, 187, 191, 194, 196, 200, 201, 207, 210, 211, 213, 214, 215, 216, 224, 225, 227, 230, 234, 241, 243, 245, 250, 251, 252, 256, 257, 258], "utf8": [9, 181], "eo": [9, 49, 60, 113, 116, 118, 128, 165, 181], "idss": [9, 181], "int64": [9, 14, 60, 85, 95, 115, 144, 175, 178, 181, 192], "model_data_filepath": [9, 181], "512": [9, 12, 18, 33, 37, 38, 43, 75, 97, 113, 118, 122, 134, 144, 145, 146, 164, 178, 181, 193, 195, 201, 207, 220, 230, 231, 238], "word_language_model_quant": [9, 181], "map_loc": [9, 20, 49, 60, 73, 112, 133, 171, 181, 230, 237, 240], "input_": [9, 195], "randint": [9, 16, 34, 51, 52, 65, 111, 127, 128, 137, 138, 144, 146, 147, 154, 164, 172, 185, 190, 195, 220], "temperatur": [9, 97, 115], "num_word": [9, 49, 60], "outf": 9, "word_weight": 9, "div": [9, 12, 144, 189, 191, 192, 197], "word_idx": 9, "multinomi": 9, "utf": [9, 49, 111, 127, 128, 137, 165, 208, 262, 263, 271, 272], "19": [9, 12, 17, 23, 60, 95, 127, 144, 160, 174, 184, 186, 201, 219, 238, 263, 266, 272, 275], "all_output": 9, "gpt": [9, 54, 123, 131, 132], "almost": [9, 12, 19, 80, 102, 103, 123, 124, 136, 158, 176, 184], "repackage_hidden": [9, 181], "isinst": [9, 12, 14, 17, 19, 49, 51, 73, 125, 134, 142, 146, 147, 156, 181, 182, 185, 186, 197, 198, 200, 201, 244], "model_": [9, 96, 181], "quantize_dynam": [9, 119, 137, 195, 228, 234], "int8": [9, 19, 95, 137, 158, 177, 184, 185, 197, 199, 200, 207, 221, 223, 228, 234], "quantized_model": [9, 19, 119, 137, 181, 182, 185, 197, 198], "qint8": [9, 119, 137, 179, 195, 228, 234], "print_size_of_model": [9, 19, 137, 181, 182, 185, 197, 198, 234], "mb": [9, 19, 109, 123, 137, 175, 181, 182, 185, 197, 198, 228, 238, 258], "getsiz": [9, 19, 137, 181, 182, 185, 197, 198, 228, 234], "set_num_thread": [9, 137, 158, 181, 185], "time_model_evalu": [9, 137, 181, 185], "nelaps": [9, 181], "1f": [9, 37, 38, 44, 49, 137, 169, 181, 185, 231], "macbook": [9, 19, 137, 165], "pro": [9, 19, 137], "welcom": [9, 19, 137, 185, 187, 188, 195, 204, 222], "dynamic_quantization_tutori": [9, 234], "outsid": [10, 14, 15, 23, 45, 60, 121, 124, 129, 168, 171, 173, 189, 244, 262, 271], "repo": [10, 15, 18, 19, 54, 58, 59, 82, 119, 121, 127, 131, 135, 137, 161, 162, 184, 194, 221], "solut": [10, 17, 52, 60, 112, 121, 134, 144, 149, 154, 171, 172, 176, 191, 193, 201, 215, 247], "pr": [10, 169, 220], "propos": [10, 24, 124, 136, 153, 189, 191], "request": [10, 25, 43, 87, 104, 119, 122, 139, 153, 158, 161, 162, 166, 173, 174, 176, 177, 186, 191, 192, 212, 213, 216, 229, 257], "hardwar": [10, 15, 17, 20, 48, 50, 60, 97, 105, 135, 138, 145, 147, 149, 154, 155, 156, 177, 184, 201, 207, 219, 220, 221, 223, 232, 234, 247, 253, 254], "googl": [10, 17, 21, 24, 25, 42, 49, 52, 75, 104, 119, 121, 136, 137, 159, 160, 168, 204, 208, 260, 269], "tpu": [10, 148, 155], "chip": [10, 177, 188], "layout": [10, 17, 124, 141, 177, 189, 192, 193, 196, 201, 215, 244, 247], "spars": [10, 16, 99, 103, 115, 121, 136, 156, 191, 196, 244], "quantiz": [10, 58, 59, 97, 117, 121, 152, 158, 177, 194, 196, 207, 218, 227, 235, 244, 251, 252], "enforc": [10, 14, 22, 60, 98, 126, 149, 153, 173, 174, 189, 190], "mainli": [10, 14, 15, 18, 137, 144, 168, 172, 199, 200, 221], "haven": [10, 23, 87, 98, 102, 103, 138, 143, 154, 216], "addtion": 10, "identifi": [10, 17, 53, 55, 73, 82, 83, 109, 113, 132, 146, 147, 156, 162, 177, 178, 182, 185, 192, 200, 201, 247], "carri": [10, 14, 49, 52, 97, 101, 131, 136, 147, 165, 237], "privateuse1": [10, 121], "autogradprivateuse1": [10, 15], "privateuse2": [10, 15], "autogradprivateuse2": [10, 15], "privateuse3": [10, 15], "autogradprivateuse3": [10, 15], "tensorimpl": [10, 15, 231, 246], "storag": [10, 15, 20, 101, 112, 125, 136, 138, 146, 147, 159, 168, 189, 191, 192, 202, 209, 214, 223, 230, 237, 244], "dispatchkeyset": [10, 15], "ks": 10, "caffe2": [10, 85, 187], "typemeta": 10, "data_typ": [10, 101], "opaquetensorimpl": 10, "tweak": [10, 49], "overrid": [10, 15, 40, 48, 51, 59, 68, 99, 108, 111, 143, 147, 149, 155, 171, 185, 188, 208], "vulkan": [10, 196, 252], "submit": [10, 220], "dispath": 10, "registrationdeclar": 10, "ab": [10, 13, 85, 92, 95, 172, 182, 193, 207, 234, 238], "schema": [10, 20, 23, 208], "abs_": 10, "abs_out": 10, "absolute_": 10, "absolute_out": 10, "angl": [10, 14, 95, 103], "angle_out": 10, "sgn": 10, "uniqu": [10, 17, 49, 53, 55, 95, 98, 99, 100, 102, 103, 116, 122, 132, 162, 165, 178, 189, 201, 234, 257], "boolean": [10, 73, 136, 173, 174, 252], "impli": [10, 97, 102, 137, 237, 254], "schema_my_op1": 10, "my_op1": 10, "schema_my_op2": 10, "my_op2": 10, "schema_my_op2_backward": 10, "my_op2_backward": 10, "zoom": [10, 82, 126, 168, 171], "1600": [10, 231, 246], "grow": [10, 49, 61, 99, 125, 131, 175], "unrealist": 10, "classifi": [10, 12, 19, 24, 43, 46, 47, 52, 57, 73, 82, 87, 97, 112, 117, 127, 128, 137, 146, 178, 194, 229, 251, 263, 272], "metadata": [10, 17, 22, 94, 141, 159, 169, 173, 174, 201, 237, 260, 269], "accompani": 10, "comment": [10, 135, 152, 165, 188, 189, 205, 220, 221, 222, 232, 262, 271], "sacrif": [10, 156], "max_pool2d": [10, 47, 73, 92, 93, 105, 123, 129, 154, 156, 162, 166, 203, 206, 221, 233, 238], "formula": [10, 97, 141, 159], "mathemat": [10, 13, 43, 48, 64, 101, 135, 159], "worri": [10, 52, 99, 129, 130, 133, 143, 152, 163, 215], "my_op": [10, 23, 208], "op_backward": 10, "proper": [10, 32, 122, 124, 133, 147, 149, 159, 163, 171, 176, 189, 247], "rare": [10, 15, 49, 117, 165, 247], "assumpt": [10, 14, 60, 73, 97, 103, 150], "myadd_schema": 10, "my_add": 10, "setuptool": [10, 155, 168], "_xlac": 10, "torch_xla_sourc": 10, "extra_compile_arg": 10, "library_dir": 10, "extra_link_arg": 10, "make_relative_rpath": 10, "seamlessli": [10, 14, 53, 78, 124, 199], "nm": [10, 150, 220], "torchvsion": 10, "adhoc": 10, "unbox": 10, "potenti": [10, 14, 25, 73, 98, 122, 162, 178, 196, 197, 199, 216, 254, 265, 274], "wiki": [10, 33, 141, 147, 153, 181], "suit": [10, 109, 159, 182, 196, 197, 199, 219, 234], "ship": [10, 44, 61, 92, 113, 250], "guarante": [10, 97, 132, 135, 147, 156, 162, 163, 174, 176, 190], "delet": [10, 17, 83, 125, 129, 133, 152, 163, 171, 184, 188, 203, 252], "old": [10, 19, 103, 112, 113, 119, 156, 168, 181, 182, 193, 223, 228], "until": [10, 16, 49, 60, 82, 113, 122, 128, 134, 135, 136, 144, 152, 159, 161, 162, 163, 168, 189, 212], "interrupt": [10, 53, 87, 165], "quarterli": 10, "cadenc": 10, "announc": [10, 115], "slack": [10, 44, 79], "Not": [10, 16, 58, 59, 113, 133, 158, 173, 234, 258], "search": [10, 18, 49, 75, 113, 121, 126, 144, 156, 173, 174, 184, 204, 260, 269], "instantiate_device_type_test": 10, "testtorchdevicetyp": 10, "testviewop": 10, "testtensordeviceop": 10, "testtypepromot": 10, "etc": [10, 44, 45, 47, 49, 51, 61, 69, 79, 98, 99, 100, 101, 102, 110, 112, 124, 156, 159, 160, 165, 173, 174, 176, 177, 181, 182, 191, 200, 212, 216, 219, 220, 247, 260, 262, 269, 271], "__reduce_ex__": 10, "monkei": 10, "direct": [10, 23, 25, 43, 47, 52, 73, 103, 113, 126, 135, 137, 141, 146, 150, 153, 165, 184, 192, 213, 216, 251, 266, 275], "suppos": [10, 12, 22, 97, 98, 99, 103, 123, 139, 178, 179, 216, 220], "vice": [10, 23, 48, 80, 228], "versa": [10, 23, 48, 80, 228], "Such": [10, 11, 234], "seamless": [10, 78, 199], "coverag": [10, 141, 145, 147, 193, 197, 199, 230], "comprehens": [10, 21, 24, 48, 79, 108, 144, 199], "bahavior": 10, "refactor": [10, 112, 131], "codegen": [10, 144], "dev": [10, 99, 104, 137, 158, 168, 171, 185, 196, 208, 226, 230, 257], "andrew": [11, 179, 198], "gu": 11, "shard": [11, 61, 120, 121, 131, 154, 175, 212, 214, 215, 251], "saw": [11, 14, 21, 23, 49, 59, 60, 99, 101, 141, 142, 145, 146], "skeleton": [11, 14, 244], "implicitli": [11, 43, 49, 123, 130, 164, 200, 226], "particip": [11, 61, 113, 132, 134, 162, 230, 247], "hang": [11, 55, 61, 113, 128], "persist": [11, 22, 230, 262, 271], "earli": [11, 23, 52, 87, 113, 126, 133, 135, 179, 191], "shadow": [11, 195], "hook": [11, 107, 124, 133, 156, 239], "num_input": 11, "device_id": [11, 16, 55, 79, 112, 122, 133, 240, 258], "arbitrarili": [11, 49, 97, 239], "prior": [11, 15, 19, 42, 50, 52, 97, 115, 133, 146, 156, 169, 176, 177, 197, 212, 214], "notabl": [11, 19, 87, 194, 244], "addition": [11, 12, 82, 115, 125, 126, 133, 176, 177, 178, 199, 214], "divide_by_initial_world_s": 11, "world": [11, 14, 18, 23, 42, 54, 58, 59, 99, 103, 115, 124, 126, 135, 139, 143, 146, 149, 155, 160, 161, 162, 193, 214, 215, 219, 262, 271], "nonetheless": [11, 97, 262, 271], "mind": [11, 49, 52, 85, 97, 108, 132, 150, 176, 218, 257, 262, 271], "preliminari": [11, 137], "delv": [11, 144, 254], "insight": [11, 73, 82, 90, 135, 164], "join_hook": 11, "kwarg": [11, 16, 21, 112, 125, 134, 143, 147, 149, 159, 162, 164, 173, 174, 184, 193, 202, 210, 216, 244], "join_devic": 11, "join_process_group": 11, "processgroup": [11, 16, 18, 61, 120, 121, 124, 163, 215, 247], "throw_on_early_termin": 11, "explain": [11, 12, 17, 20, 23, 43, 47, 52, 61, 73, 99, 124, 144, 149, 172, 176, 186, 199, 201, 234, 257], "joinconfig": 11, "_join_config": 11, "main_hook": 11, "repeatedli": [11, 159, 163], "post_hook": 11, "is_last_join": 11, "broadcast": [11, 61, 68, 95, 98, 111, 133, 135, 155, 258], "vacuou": 11, "contextlib": [11, 171], "nullcontext": 11, "conform": [11, 171], "interleav": 11, "syncbatchnorm": [11, 55], "__exit__": 11, "heartbeat": 11, "notify_join_context": 11, "serializ": 11, "fulli": [11, 12, 14, 15, 17, 20, 21, 22, 47, 78, 82, 87, 108, 110, 117, 120, 121, 126, 131, 147, 150, 157, 160, 162, 164, 168, 176, 182, 191, 194, 197, 201, 207, 214, 220, 257], "proceed": [11, 47, 97, 108], "overlap": [11, 21, 56, 61, 122, 123, 127, 131, 133, 149, 168, 171, 176, 247], "moreov": [11, 61, 189, 220], "permit": [11, 230, 262, 271], "customiz": [11, 136, 195], "idea": [11, 23, 24, 60, 73, 85, 97, 99, 100, 101, 103, 124, 129, 136, 144, 149, 153, 160, 161, 163, 165, 176, 189, 205, 212, 216, 226, 234, 247, 258, 262, 271], "counterjoinhook": 11, "sync_max_count": 11, "all_reduc": [11, 61, 122, 123, 135, 155], "get_rank": [11, 133, 135], "process_group": [11, 215], "common_rank": 11, "find_common_rank": 11, "max_count": 11, "__call__": [11, 51, 68, 111, 147, 156], "meth": [11, 14, 262, 271], "to_consid": 11, "reduceop": [11, 122, 123, 135], "highlight": [11, 49, 60, 85, 90, 94, 114, 120, 122, 164, 168, 172, 212, 220, 221, 254, 262, 271], "alexi": 12, "jacq": 12, "winston": 12, "her": [12, 42, 113, 155], "leon": [12, 113], "gati": 12, "alexand": 12, "ecker": 12, "matthia": 12, "bethg": 12, "artist": 12, "distanc": [12, 63, 64, 67, 68, 69, 97, 111], "d_c": 12, "d_": [12, 96], "indispens": [12, 159], "pil": [12, 20, 41, 51, 58, 59, 90, 117, 119, 139, 146, 158, 171, 178, 204, 213, 229], "pretrain": [12, 20, 24, 42, 43, 58, 59, 73, 75, 103, 113, 117, 119, 121, 137, 139, 157, 158, 165, 171, 176, 177, 181, 182, 185, 187, 188, 194, 195, 197, 198, 199, 204, 206, 213, 220, 221, 222, 223, 256], "vgg19": [12, 147], "vgg19_weight": 12, "throughout": [12, 25, 52, 102, 135, 149, 152, 159, 169, 176, 177, 191, 244], "set_default_devic": [12, 63, 111, 230, 232], "resiz": [12, 19, 20, 47, 51, 52, 75, 90, 117, 119, 136, 139, 146, 157, 168, 182, 197, 198, 213, 220, 229, 253], "unabl": [12, 23, 138, 154, 184, 191], "caff": 12, "picasso": 12, "imsiz": 12, "image_load": 12, "image_nam": [12, 51], "style_img": 12, "content_img": 12, "reconvert": 12, "correctli": [12, 49, 52, 58, 59, 60, 73, 78, 114, 127, 141, 147, 152, 156, 158, 171, 172, 174, 191, 198, 213, 215, 224, 225, 252], "unload": [12, 237], "topilimag": 12, "ion": [12, 14, 51, 117, 157, 160, 166], "titl": [12, 14, 17, 34, 51, 52, 73, 90, 117, 127, 136, 157, 159, 160, 165, 171, 178, 195, 225], "paus": [12, 51, 117, 160, 161, 198], "f_": [12, 159], "xl": [12, 219], "w_": [12, 103], "cl": [12, 75, 126, 137, 183, 244], "squar": [12, 47, 51, 63, 64, 67, 68, 69, 71, 97, 111, 129, 130, 146, 153, 156, 160, 164, 179], "contentloss": 12, "throw": [12, 23, 61, 118, 139, 161, 173, 174], "mse_loss": [12, 97, 230], "recomput": [12, 97, 129, 131, 153, 247], "act": [12, 22, 43, 49, 113, 126, 136, 156, 160, 162], "gram": 12, "g_": [12, 262, 271], "hat": [12, 102, 113], "counteract": 12, "caus": [12, 15, 21, 22, 61, 73, 82, 119, 125, 144, 158, 161, 165, 168, 171, 174, 176, 177, 189, 195, 226, 228, 232, 247, 252, 260, 269], "pool": [12, 18, 44, 52, 61, 87, 92, 94, 96, 97, 110, 112, 116, 169, 175, 177, 194, 239, 240, 241, 242, 243, 248, 249, 250], "tend": [12, 17, 97, 184, 201], "gram_matrix": 12, "f_xl": 12, "sl": 12, "styleloss": 12, "target_featur": 12, "vgg": 12, "child": [12, 60, 103, 109, 168, 185, 263, 272], "connect": [12, 47, 59, 87, 103, 110, 117, 124, 135, 141, 143, 150, 156, 157, 158, 160, 176, 200, 208, 215, 218, 223, 262, 271], "cnn": [12, 45, 97, 119, 121, 146, 150, 153, 154, 166, 171, 177, 178, 199, 220, 228, 247], "485": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "456": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "406": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "229": [12, 19, 51, 58, 59, 90, 97, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "225": [12, 19, 51, 58, 59, 90, 97, 109, 117, 139, 157, 158, 166, 182, 197, 198, 204, 213, 229], "cnn_normalization_mean": 12, "cnn_normalization_std": 12, "height": [12, 43, 47, 58, 59, 78, 95, 146, 148, 152, 171, 177, 178, 226, 262, 271], "width": [12, 19, 43, 44, 47, 58, 59, 78, 95, 126, 146, 148, 149, 150, 152, 171, 177, 178, 262, 271], "img": [12, 20, 34, 44, 51, 90, 92, 94, 96, 117, 119, 121, 139, 157, 169, 171, 178, 229, 257], "maxpool2d": [12, 44, 47, 78, 87, 92, 93, 94, 96, 97, 112, 134, 143, 166, 169, 239, 240, 241, 242, 243, 248, 249, 250], "align": [12, 149, 164, 165, 178, 190, 195, 226, 262, 271], "depth": [12, 43, 52, 56, 61, 101, 125, 144, 199, 210, 234, 247, 260, 269], "immedi": [12, 18, 21, 48, 52, 102, 134, 135, 152, 161, 162, 165, 168, 184], "content_layers_default": 12, "conv_4": 12, "style_layers_default": 12, "conv_1": 12, "conv_2": 12, "conv_3": 12, "conv_5": 12, "get_style_model_and_loss": 12, "normalization_mean": 12, "normalization_std": 12, "content_lay": 12, "style_lay": 12, "content_loss": 12, "style_loss": 12, "conv": [12, 19, 52, 90, 110, 129, 142, 143, 147, 156, 157, 162, 177, 181, 182, 200, 218, 223, 226, 238, 239, 247, 252], "children": [12, 168], "conv_": 12, "relu_": [12, 129, 200, 206], "plai": [12, 44, 49, 52, 79, 97, 99, 115, 121, 159, 177, 199], "pool_": 12, "bn_": 12, "runtimeerror": [12, 22, 118, 128, 155, 158, 164, 173, 174, 203], "unrecogn": 12, "__class__": [12, 52, 78, 147, 244], "add_modul": 12, "content_loss_": 12, "style_loss_": 12, "input_img": [12, 90, 229], "bfg": 12, "get_input_optim": 12, "closur": [12, 173, 174, 216], "reevalu": 12, "exce": [12, 73, 129, 175, 228], "run_style_transf": 12, "num_step": [12, 161], "style_weight": 12, "1000000": 12, "content_weight": 12, "clamp_": 12, "style_scor": 12, "content_scor": 12, "sphinx_gallery_thumbnail_numb": [12, 127], "ioff": [12, 51, 117, 157, 160, 166], "neural_style_tutori": 12, "paszk": [13, 135, 160], "dziedzic": 13, "shall": [13, 47, 52, 103], "learnabl": [13, 47, 67, 68, 69, 111, 112, 121, 202], "badfftfunct": 13, "fft": [13, 172], "rfft2": 13, "irfft2": 13, "numpy_input": 13, "numpy_go": 13, "incorrect_fft": 13, "literatur": [13, 160], "confusingli": 13, "correl": [13, 82, 144], "flip": [13, 21, 145], "wrt": [13, 129, 130], "np": [13, 14, 17, 19, 20, 40, 44, 48, 51, 52, 60, 71, 73, 75, 80, 90, 92, 94, 95, 96, 98, 104, 109, 111, 117, 119, 137, 146, 149, 157, 158, 163, 165, 166, 169, 171, 172, 182, 185, 190, 193, 195, 197, 198, 201, 204, 229, 246], "convolve2d": 13, "correlate2d": 13, "scipyconv2dfunct": 13, "as_tensor": [13, 75, 191], "grad_filt": 13, "from_numpi": [13, 40, 48, 51, 80, 95, 109, 161, 163, 172], "scipyconv2d": 13, "filter_width": 13, "filter_height": 13, "gradcheck": [13, 129, 130, 141, 247], "moduleconv": 13, "atol": [13, 17, 20, 138, 150, 154, 201], "numpy_extensions_tutori": 13, "freeli": 14, "inspir": [14, 60, 116, 135, 145, 150, 164, 205, 234], "v1": [14, 17, 61, 95, 134, 136, 160, 161, 163, 181, 192, 201, 212, 231, 257], "openai": [14, 121, 146, 159, 160, 161, 163], "farama": [14, 159], "gymnasium": [14, 159, 160], "encount": [14, 49, 60, 110, 122, 144, 172, 247, 252], "undertaken": 14, "broader": [14, 25], "challeng": [14, 101, 102, 123, 124, 135, 142, 153, 160, 171, 214, 215, 257], "wider": [14, 145], "acquaint": 14, "set_se": [14, 137, 185], "avenu": [14, 85], "backpropag": [14, 37, 38, 43, 47, 49, 73, 98, 99, 100, 102, 103, 125, 146], "defaultdict": [14, 17, 75, 159, 201], "boundedtensorspec": 14, "unboundedcontinuoustensorspec": 14, "unsqueezetransform": 14, "_apply_to_composit": 14, "check_env_spec": [14, 159], "step_mdp": [14, 136], "default_x": 14, "pi": [14, 63, 64, 65, 67, 68, 69, 71, 72, 89, 95, 111, 121, 160, 262, 271], "default_i": 14, "_set_se": 14, "torqu": 14, "upward": 14, "angular": 14, "stand": [14, 85, 113, 146, 192, 262, 271], "equat": [14, 52, 137, 159, 160, 239, 262, 271], "motion": [14, 262, 271], "veloc": [14, 160], "theta": [14, 73, 99, 159, 166, 262, 271], "_t": [14, 146], "theta_t": 14, "dt": [14, 146, 262, 271], "rad": 14, "sec": [14, 123, 137, 230], "gravit": 14, "mass": 14, "accord": [14, 15, 24, 112, 115, 119, 144, 146, 156, 160, 164, 171, 192, 202, 207], "theta_": [14, 146], "deleg": [14, 21, 121, 143, 187, 197], "privat": [14, 15, 23, 58, 59, 115, 155, 156, 189, 208], "merg": [14, 20, 22, 45, 158, 160, 171, 220], "is_shar": 14, "modif": [14, 15, 19, 20, 21, 87, 98, 129, 135, 156, 159, 162, 166, 169, 173, 174, 182, 194], "new_th": 14, "plu": [14, 98, 99, 115, 128], "new_thdot": 14, "neg": [14, 21, 49, 90, 98, 99, 104, 113, 137, 144, 156, 159, 229, 252], "discourag": [14, 48, 159], "thdot": 14, "g_forc": 14, "clamp": [14, 73, 95, 197, 206], "max_torqu": 14, "angle_norm": 14, "max_spe": 14, "omit": [14, 23, 109, 144, 159, 177, 181, 194, 197, 198, 199, 238, 244], "agent": [14, 61, 121, 160, 161, 163, 166], "mandatori": [14, 141, 159], "is_empti": 14, "gen_param": 14, "high_th": 14, "high_thdot": 14, "low_th": 14, "low_thdot": 14, "simultan": [14, 15, 22, 25, 43, 56, 121, 126, 135, 158, 247], "rng": [14, 135], "domain": [14, 24, 49, 50, 73, 108, 121, 159, 193, 247, 263, 272], "accur": [14, 19, 73, 87, 109, 126, 143, 163, 172, 191], "lazili": [14, 152], "costli": [14, 125, 247], "reward_spec": [14, 159], "done_spec": 14, "input_spec": [14, 159, 173], "state_spec": 14, "output_spec": [14, 173], "trivial": [14, 51, 56, 125, 139, 202, 209, 252], "neither": [14, 149, 179], "shortcut": 14, "tensorspec": [14, 187], "irrelev": [14, 155], "_make_spec": 14, "td_param": 14, "make_composite_from_td": 14, "unbound": 14, "incorpor": [14, 97, 136, 164, 263, 272], "pseudo": [14, 24], "manual_se": [14, 17, 19, 25, 52, 73, 92, 95, 97, 98, 99, 101, 102, 103, 118, 122, 123, 129, 135, 137, 138, 145, 154, 161, 182, 185, 193, 197, 198, 201, 234, 258], "pendulumenv": 14, "expand": [14, 15, 49, 60, 98, 101, 105, 113, 144, 169, 177, 187, 193, 194, 209], "batch_lock": 14, "homonym": 14, "render_mod": [14, 146], "human": [14, 20, 49, 73, 110, 115, 128, 137, 139, 146, 165, 171, 213, 262, 271], "rgb_arrai": 14, "render_fp": 14, "random_": [14, 16, 60, 134, 149, 161], "_make_step": 14, "rand_step": 14, "randomli": [14, 44, 51, 52, 65, 71, 72, 87, 111, 128, 137, 146, 160, 165, 185, 234], "invers": [14, 95, 190, 212], "showcas": [14, 23, 65, 122, 150, 152, 176, 177, 186, 196], "unsqueeze_dim": 14, "summar": [14, 49, 51, 114, 119, 120, 122, 126, 137, 143, 168, 177], "_apply_transform": 14, "_call": 14, "inv": 14, "_inv_apply_transform": 14, "eventu": [14, 129, 136], "out_keys_inv": 14, "subset": [14, 21, 23, 58, 59, 60, 85, 87, 97, 107, 117, 135, 155, 157, 171, 173, 174, 178, 191, 192, 219, 252, 256], "unitari": 14, "raw": [14, 23, 44, 49, 61, 68, 82, 104, 113, 118, 119, 173, 174, 178, 260, 269], "sintransform": 14, "ob": [14, 146, 163, 200], "tensordict_reset": 14, "transform_observation_spec": 14, "costransform": 14, "t_sin": 14, "t_co": 14, "del_kei": 14, "cat_transform": 14, "met": [14, 123], "mdp": 14, "gather": [14, 49, 55, 79, 123, 124, 133, 135, 136, 143, 159, 160, 196, 205, 230], "simple_rollout": 14, "_data": [14, 73], "keep_oth": 14, "unexplor": 14, "abil": [14, 23, 60, 61, 112, 124, 125, 135, 166, 169, 172, 191, 206], "recreat": [14, 43, 175, 208], "auto_reset": 14, "lazylinear": [14, 159], "clip": [14, 20, 49, 73, 117, 157, 159, 160, 166], "20_000": [14, 136], "cosineannealinglr": [14, 110, 159], "init_td": 14, "traj_return": 14, "last_reward": [14, 161, 163], "is_ipython": [14, 160], "inlin": [14, 25, 52, 60, 89, 92, 142, 144, 160, 189, 196, 203, 263, 266, 272, 275], "get_backend": [14, 160], "ipython": [14, 18, 52, 104, 109, 148, 160], "figsiz": [14, 34, 52, 73, 157, 159, 169, 178], "gcf": [14, 160], "clear_output": [14, 160], "scratch": [14, 43, 49, 53, 97, 98, 112, 114, 117, 118, 127, 128, 165, 251, 252], "advanc": [15, 17, 19, 23, 43, 58, 59, 87, 100, 105, 107, 108, 120, 121, 133, 171, 176, 189, 192, 196, 199, 201, 205, 216, 220, 221, 234, 247, 251, 263, 272], "verif": [15, 162], "rapid": [15, 192], "manufactur": [15, 60], "imposs": [15, 98, 152, 205], "began": 15, "enhanc": [15, 115, 139, 166, 199, 207, 216, 228, 262, 271], "rapidli": 15, "wrapper_custom_tensor_add": 15, "torch_fn": 15, "custom_cpu_fallback": 15, "operatorhandl": 15, "hint": [15, 18, 97, 98, 102, 108, 125, 135, 161, 168], "cpu_fallback": 15, "cppfunction": 15, "makefromboxedfunct": 15, "cumtomselufunct": 15, "selu": [15, 110], "wrapper_autogradcumstom__selu": 15, "wrapper_autogradcustom__selu": 15, "autocastprivateuse1": 15, "autocast": [15, 17, 199, 201, 207, 220, 247, 253], "kernel_privateuseon": 15, "makefallthrough": 15, "backendmodul": 15, "_register_device_modul": 15, "backend_nam": 15, "get_amp_supported_dtyp": 15, "is_autocast_en": 15, "get_autocast_dtyp": 15, "set_autocast_dtyp": 15, "set_autocast_en": 15, "generatorimpl": 15, "builder": 15, "register_generator_privateuse1": 15, "customgeneratorimpl": 15, "make_custom_gener": 15, "deviceindex": 15, "device_index": 15, "make_gener": 15, "make_cumstom_gener": 15, "event": [15, 22, 82, 109, 113, 122, 123, 161, 172, 177, 245], "deviceguard": 15, "deviceguardimplinterfac": 15, "c10_register_guard_impl": 15, "customguardimpl": 15, "backend_meta_": 15, "extrameta": 15, "backendmeta": 15, "custombackendmetadata": 15, "unordered_map": 15, "tensorbackendmetaregistri": 15, "for_seri": 15, "for_deseri": 15, "timer": [15, 17, 52, 118, 138, 145, 154, 164, 165, 184, 187, 201, 210, 251], "ascend": [15, 52, 83], "npu": [15, 187, 223], "meet": [15, 50, 52, 202, 221], "usabl": [15, 112, 136, 142], "compli": [15, 60], "habit": [15, 265, 274], "torch_npu": 15, "exclus": [15, 23, 156], "strongli": [15, 136, 153, 262, 271], "rename_privateuse1_backend": 15, "register_privateuse1_backend": 15, "unsupported_dtyp": 15, "quint8": [15, 179], "generate_methods_for_privateuse1_backend": 15, "for_tensor": 15, "for_modul": 15, "for_storag": 15, "is_npu": 15, "yi": [16, 173, 174], "wang": [16, 24, 108, 144, 146], "paradigm": [16, 17, 61, 97, 120, 133, 134, 162, 163, 201], "dens": [16, 17, 146, 189, 193, 201], "fc": [16, 43, 45, 115, 117, 134, 146, 149, 150, 157, 202], "hybrid": [16, 84, 110, 215], "pipedream": 16, "embeddingbag": [16, 18, 115], "respond": [16, 146, 162], "amongst": [16, 190], "themselv": [16, 191, 197], "remotemodul": 16, "kick": [16, 43, 113, 152, 161, 162, 163], "remot": [16, 61, 120, 126, 134, 161, 162, 163, 168, 212, 216], "hybridmodel": 16, "allreduc": [16, 61, 82, 123, 124, 133, 155, 247], "firstli": [16, 108, 144, 160], "tcp": [16, 55, 131, 132, 135, 212], "_run_train": [16, 163], "rpc_async": [16, 134, 161, 163], "shut": [16, 162], "29501": 16, "ps": [16, 61, 161, 162, 163, 195], "remote_emb_modul": 16, "num_embed": [16, 18, 110, 175], "embedding_dim": [16, 18, 93, 98, 102, 103, 110, 175], "fut": [16, 21, 161, 163], "trainer_rank": 16, "trainer_nam": 16, "gloo": [16, 133, 135, 155, 168, 175, 258], "offset": [16, 17, 115, 201, 254], "emb_lookup": 16, "distributedoptim": [16, 134, 162, 163, 212, 216], "remote_paramet": 16, "cannnot": 16, "aggreg": [16, 43, 109, 146, 171, 190, 238], "model_parameter_rref": 16, "get_next_batch": [16, 161, 163], "num_indic": 16, "longtensor": [16, 49, 60, 80, 99, 103, 128, 134, 149, 161, 163, 165], "offsets_tensor": 16, "dist_autograd": [16, 134, 162, 163], "context_id": [16, 134, 162, 163], "tun": 16, "jess": [17, 201], "cai": [17, 201], "seek": [17, 85, 201], "grain": [17, 34, 61, 122, 135, 168, 201, 229, 230], "2n": [17, 201], "degrad": [17, 73, 201, 228], "sparsifi": [17, 121, 156, 201], "answer": [17, 49, 75, 99, 103, 135, 137, 143, 152, 165, 201, 252], "tune": [17, 19, 82, 97, 113, 120, 121, 123, 126, 157, 158, 176, 184, 185, 201, 221, 234, 235, 251], "recov": [17, 61, 122, 123, 133, 147, 198, 201], "nearli": [17, 169, 201], "f1": [17, 137, 172, 185, 201], "vs": [17, 18, 52, 78, 94, 122, 154, 168, 169, 176, 177, 184, 191, 194, 196, 197, 200, 201, 219], "3x": [17, 64, 111, 177, 201, 207, 223, 230, 247], "beginn": [17, 35, 45, 46, 77, 84, 91, 100, 106, 120, 201, 203, 204, 234], "to_sparse_semi_structur": [17, 201], "sparsesemistructuredtensor": [17, 201], "_force_cutlass": [17, 201], "tile": [17, 171, 201, 207], "3072": [17, 97, 147, 201], "2560": [17, 201], "10240": [17, 201], "inference_mod": [17, 129, 171, 201], "dense_output": [17, 201], "dense_t": [17, 201], "stmt": [17, 138, 145, 149, 154, 164, 184, 201, 210, 231, 246], "blocked_autorang": [17, 164, 201, 210, 231], "median": [17, 172, 184, 201, 231, 246], "1e3": [17, 184, 201, 234], "sparse_output": [17, 201], "sparse_t": [17, 201], "a100": [17, 122, 125, 154, 172, 175, 184, 201], "80gb": [17, 201], "870m": [17, 201], "630m": [17, 201], "382x": [17, 201], "allclos": [17, 125, 138, 141, 144, 145, 150, 153, 154, 164, 172, 201, 205, 231], "motiv": [17, 73, 144, 162, 179, 186, 190, 191, 193, 201], "affect": [17, 97, 113, 130, 149, 176, 201, 247], "swap": [17, 51, 99, 110, 124, 137, 159, 182, 184, 185, 193, 195, 198, 201, 244], "compress": [17, 90, 156, 189, 192, 201, 209, 221], "drawback": [17, 103, 201], "2020": [17, 201], "amper": [17, 122, 150, 154, 201, 230], "cutlass": [17, 201], "cusparselt": [17, 201], "milder": [17, 201], "account": [17, 50, 136, 152, 165, 169, 185, 201], "retrain": [17, 201, 227], "sweet": [17, 201], "spot": [17, 127, 201], "2x": [17, 85, 121, 130, 152, 176, 177, 181, 201, 219], "theoret": [17, 52, 189, 201], "granular": [17, 122, 144, 177, 185, 201, 238, 247], "fp16": [17, 122, 147, 184, 188, 201], "resnet": [17, 43, 44, 79, 125, 134, 149, 157, 168, 182, 195, 197, 198, 199, 201, 223, 228, 247], "imagenet": [17, 44, 51, 79, 117, 119, 139, 157, 158, 182, 197, 198, 201, 213, 229], "76": [17, 147, 163, 201, 231], "resnext": [17, 201], "101_32x8d": [17, 201], "xception": [17, 201], "ssd": [17, 201, 247], "rn50": [17, 201], "coco2017": [17, 201], "bbap": [17, 201], "maskrcnn": [17, 201], "fairseq": [17, 201], "en": [17, 21, 33, 49, 60, 99, 113, 118, 141, 153, 165, 171, 201, 260, 269], "de": [17, 18, 22, 49, 60, 113, 116, 118, 165, 201], "wmt14": [17, 201], "bleu": [17, 201], "squad": [17, 144, 201], "workflow": [17, 19, 58, 59, 82, 86, 87, 123, 173, 192, 196, 200, 201, 234, 251], "perspect": [17, 23, 101, 159, 177, 201], "subproblem": [17, 201], "handoff": [17, 201], "anticip": [17, 201], "area": [17, 113, 169, 178, 184, 192, 201, 229, 264, 273], "colab": [17, 18, 24, 25, 42, 48, 75, 94, 104, 115, 119, 121, 136, 137, 145, 157, 159, 160, 171, 175], "panda": [17, 34, 51, 73, 119, 171], "wandb_dis": 17, "ao": [17, 19, 179, 181, 182, 184, 197, 198, 199, 201], "weightnormsparsifi": [17, 201], "hug": [17, 75, 144], "face": [17, 44, 51, 52, 60, 73, 75, 79, 113, 144, 197], "preprocess_validation_funct": [17, 201], "strip": [17, 49, 75, 127, 128, 165, 201], "max_length": [17, 49, 60, 75, 128, 137, 165, 185, 201, 252], "384": [17, 187, 201], "only_second": [17, 201], "return_overflowing_token": [17, 201], "return_offsets_map": [17, 201], "sample_map": [17, 201], "pop": [17, 22, 98, 137, 185, 201], "overflow_to_sample_map": [17, 201], "example_id": [17, 201], "input_id": [17, 75, 122, 124, 137, 144, 165, 185, 201], "sample_idx": [17, 34, 201], "sequence_id": [17, 201], "offset_map": [17, 201], "preprocess_train_funct": [17, 201], "start_posit": [17, 201], "end_posit": [17, 201], "start_char": [17, 201], "answer_start": [17, 201], "end_char": [17, 201], "idx": [17, 19, 34, 51, 75, 98, 102, 103, 109, 115, 157, 158, 165, 169, 178, 201, 238], "context_start": [17, 201], "context_end": [17, 201], "compute_metr": [17, 137, 185, 201], "start_logit": [17, 201], "end_logit": [17, 201], "n_best": [17, 201], "max_answer_length": [17, 201], "example_to_featur": [17, 201], "predicted_answ": [17, 201], "feature_index": [17, 201], "start_index": [17, 201], "argsort": [17, 201], "tolist": [17, 51, 113, 178, 201], "end_index": [17, 201], "logit_scor": [17, 201], "score": [17, 49, 60, 98, 102, 103, 109, 137, 148, 164, 165, 178, 185, 201, 229], "best_answ": [17, 201], "prediction_text": [17, 201], "theoretical_answ": [17, 201], "ex": [17, 73, 201, 263, 265, 272, 274], "measure_execution_tim": [17, 201], "dataset_for_model": [17, 201], "remove_column": [17, 201], "set_format": [17, 201], "batch_size_to_time_sec": [17, 201], "column_nam": [17, 201], "baseline_predict": 17, "p50": [17, 201], "model_c": [17, 184], "fullgraph": [17, 164, 172, 210, 211, 254], "_compil": 17, "new_predict": 17, "model_nam": [17, 49, 60, 122, 184, 199, 201, 220], "autotoken": [17, 122, 201], "from_pretrain": [17, 75, 122, 137, 144, 185, 201, 220], "automodelforquestionansw": [17, 201], "val": [17, 19, 22, 117, 118, 122, 148, 157, 158, 182, 197, 198, 201], "squad_dataset": [17, 201], "load_dataset": [17, 75, 122, 201], "tokenized_squad_dataset": [17, 201], "data_col": [17, 201], "datacollatorwithpad": [17, 201], "segment": [17, 121, 184, 201, 204, 222], "wikipedia": [17, 33, 141, 153, 201], "articl": [17, 113, 116, 201], "training_arg": [17, 201], "trainingargu": [17, 201], "num_train_epoch": [17, 137, 201], "lr_scheduler_typ": [17, 201], "per_device_train_batch_s": [17, 201], "per_device_eval_batch_s": [17, 201], "logging_step": 17, "runner": 17, "max_step": [17, 75], "report_to": 17, "train_dataset": [17, 55, 97, 115, 122, 201, 220, 253], "eval_dataset": [17, 137, 185, 201], "fair": [17, 97, 103, 113, 193, 194, 201], "fp16_baselin": [17, 201], "fp16_time": [17, 201], "cuda_fp16": [17, 201], "pd": [17, 34, 51, 119, 171], "df": [17, 83, 119, 126], "datafram": [17, 82, 119, 126, 171], "log_histori": 17, "lowest": [17, 61, 123, 156, 201], "satisfi": [17, 126, 173, 174, 195, 201, 202, 247], "sparsity_level": [17, 201], "sparse_block_shap": [17, 201], "zeros_per_block": [17, 201], "sparse_config": [17, 201], "tensor_fqn": [17, 201], "fqn": [17, 201, 214], "named_modul": [17, 142, 156, 201, 239], "anytim": [17, 201], "pruner": [17, 201], "update_mask": [17, 201], "shot": [17, 113, 161, 201], "squash_mask": [17, 201], "set_printopt": [17, 201, 231], "edgeitem": [17, 201], "sparse_loss": 17, "quickstart": [17, 35, 201, 224], "metrics_spars": [17, 201], "sparse_perf": [17, 201], "perf": [17, 177, 188, 201], "28x": [17, 201], "bs": [17, 104, 144, 201], "amen": [17, 201], "spent": [17, 82, 113, 164, 168, 176, 177, 201, 234], "delta": [17, 125, 144, 145, 146, 154, 160, 201, 231, 246], "exact": [17, 97, 112, 129, 139, 164, 173, 174, 185, 197, 198, 201, 210], "53": [17, 147, 201, 219, 238, 263, 272], "93": [17, 109, 163, 201, 219, 231], "15": [17, 23, 24, 45, 52, 58, 59, 73, 90, 92, 93, 116, 117, 146, 157, 169, 171, 178, 187, 201, 203, 219, 231, 246, 262, 266, 271, 275], "54": [17, 147, 149, 177, 231], "71x": [17, 177], "74": [17, 119, 163, 185, 219, 231], "23x": 17, "71": [17, 19, 21, 51, 144, 163], "59": [17, 115, 158, 171, 231, 238], "22x": 17, "286": [17, 147, 171, 201], "65": [17, 51, 163, 178, 218, 231], "247": [17, 163], "63": [17, 228, 238], "14x": 17, "02x": 17, "ye": [17, 50, 78, 99, 137, 152, 187], "18x": [17, 201], "13x": 17, "159": 17, "142": [17, 219], "12x": 17, "semi_structured_spars": 17, "embeddingplann": [18, 121], "conda": [18, 23, 82, 90, 94, 135, 144, 175, 184, 187, 188, 196, 221, 223, 229, 245, 246], "cudatoolkit": [18, 175], "sudo": [18, 168, 206], "rm": [18, 212, 223], "miniconda3": [18, 22, 246], "py37_4": 18, "sh": [18, 133, 188, 194, 204, 206, 218, 222, 223, 226], "anaconda": [18, 82, 135, 245], "chmod": 18, "fbgemm": [18, 19, 119, 175, 179, 181, 182, 228], "cp": [18, 206, 208, 213, 257], "restart": [18, 23, 58, 59, 132, 160], "newli": [18, 49, 117, 135, 216], "python37": 18, "dynload": 18, "enviro": 18, "spmd": [18, 124, 214], "mimic": [18, 19, 97, 149, 157, 184, 185, 189], "launcher": [18, 208], "embeddingbagcollect": 18, "bag": [18, 34, 38, 94, 96, 115, 169, 175], "ebc": [18, 175], "parameterconstraint": 18, "placement": [18, 176], "intra": [18, 21, 122, 124, 137, 215], "interconnect": [18, 76, 176], "nvlink": [18, 124, 212], "data_parallel": [18, 79], "meta": [18, 49, 124, 126, 138, 154, 159, 173, 174, 175, 176, 177, 200, 202, 239, 244, 251, 254, 266, 275], "planner": 18, "embedding_typ": 18, "embeddingcomputekernel": 18, "shardingtyp": 18, "large_table_cnt": 18, "small_table_cnt": 18, "large_t": 18, "embeddingbagconfig": [18, 175], "large_table_": 18, "feature_nam": [18, 175], "large_table_feature_": 18, "poolingtyp": [18, 175], "small_tabl": 18, "small_table_": 18, "small_table_feature_": 18, "gen_constraint": 18, "sharding_typ": 18, "table_wis": 18, "large_table_constraint": 18, "small_table_constraint": 18, "mimick": 18, "single_rank_execut": 18, "embeddingbagcollectionshard": 18, "model_parallel": 18, "embeddingshardingplann": 18, "topolog": [18, 137, 185, 214, 215, 220, 226], "moduleshard": 18, "shardingenv": 18, "init_distributed_single_host": 18, "pyre": 18, "fixm": 18, "set_devic": [18, 53, 55, 122, 123, 186, 214, 215], "compute_devic": 18, "pg": 18, "sharder": [18, 175], "shardingplan": 18, "collective_plan": 18, "sharded_model": 18, "from_process_group": 18, "spmd_sharing_simul": 18, "get_context": 18, "exitcod": 18, "medium": [18, 122, 178, 262, 271], "large_table_0": 18, "parametershard": 18, "compute_kernel": 18, "batched_fus": 18, "sharding_spec": 18, "enumerableshardingspec": 18, "shardmetadata": 18, "shard_offset": 18, "shard_siz": 18, "large_table_1": 18, "small_table_0": 18, "small_table_1": 18, "finer": [18, 34, 61, 177, 238], "halv": [18, 109], "row_wis": 18, "imbal": [18, 176, 247], "vertic": [18, 21, 260, 262, 269, 271], "column_wis": 18, "unfortu": 18, "batched_dens": 18, "raghuraman": [19, 137, 157], "krishnamoorthi": [19, 137, 157], "jerri": [19, 181, 182, 183, 197, 199, 200], "zhang": [19, 181, 182, 183, 197, 199, 200, 214, 215], "decreas": [19, 49, 73, 83, 97, 103, 124, 146, 176, 177, 192, 223, 252], "mobilenetv2": [19, 188, 196, 198, 223], "dataload": [19, 33, 35, 37, 38, 44, 45, 52, 55, 73, 75, 87, 92, 94, 96, 97, 113, 115, 117, 118, 122, 123, 129, 135, 137, 148, 157, 162, 165, 166, 168, 169, 171, 178, 182, 185, 197, 198, 220, 221, 235, 236, 247, 250, 253], "filterwarn": [19, 51, 148, 159, 171, 182, 189, 190, 191, 192, 197, 198], "deprecationwarn": [19, 182, 197, 198], "seed": [19, 25, 52, 73, 97, 122, 123, 135, 137, 161, 163, 182, 185, 193, 197, 198, 231, 234], "191009": [19, 25, 182, 197, 198], "floatfunct": 19, "quantstub": [19, 182, 218, 223, 228], "dequantstub": [19, 182, 218, 223, 228], "relu6": [19, 110], "_make_divis": 19, "divisor": 19, "min_valu": 19, "tf": [19, 94], "divis": [19, 165, 193], "tensorflow": [19, 94, 98, 100, 111], "blob": [19, 23, 33, 108, 123, 142, 168, 179, 182, 206, 260, 269], "slim": [19, 111], "mobilenet": [19, 58, 59, 121, 158, 194], "new_v": 19, "round": [19, 108, 115, 122, 146, 161, 234], "convbnrelu": 19, "in_plan": [19, 134], "out_plan": [19, 134], "kernel_s": [19, 97, 104, 123, 129, 134, 146, 153, 166, 179, 218, 221], "momentum": [19, 43, 44, 65, 69, 87, 92, 94, 96, 104, 111, 112, 117, 129, 135, 157, 161, 168, 169, 178, 179, 198, 216, 218, 220, 221, 241, 242, 243, 249, 250, 253], "invertedresidu": 19, "oup": 19, "expand_ratio": 19, "hidden_dim": [19, 93, 98, 102], "use_res_connect": 19, "pw": 19, "dw": 19, "skip_add": 19, "num_class": [19, 24, 42, 75, 97, 115, 134, 148, 149, 161, 169, 171, 178], "width_mult": 19, "inverted_residual_set": 19, "round_nearest": 19, "v2": [19, 58, 59, 95, 97, 114, 136, 144, 158, 178, 192, 207], "input_channel": 19, "last_channel": 19, "1280": [19, 178, 184], "160": [19, 137, 163, 171, 218, 231, 238], "320": [19, 78, 166, 221], "valueerror": [19, 49, 60, 146, 190, 216], "invert": [19, 121, 159, 190], "residu": [19, 124], "output_channel": 19, "quant": [19, 157, 179, 185, 194, 197, 200, 218, 223, 228], "dequant": [19, 157, 179, 182, 184, 185, 194, 195, 197, 199, 200, 218, 221, 223, 228], "init": [19, 20, 22, 23, 52, 59, 99, 118, 129, 134, 153, 159, 194, 202, 218, 222, 225, 257], "kaiming_normal_": [19, 134], "fan_out": [19, 134], "zeros_": 19, "ones_": 19, "normal_": [19, 52], "bn": [19, 129, 142, 143, 157, 179, 181, 198, 218, 223], "fuse_model": [19, 157, 194, 195], "is_qat": [19, 179, 198, 199], "fuse_modul": [19, 157], "fuse_modules_qat": 19, "averagemet": [19, 182, 197, 198], "fmt": [19, 149, 182, 197, 198, 209], "avg": [19, 37, 38, 127, 182, 197, 198, 219, 238], "__str__": [19, 182, 197, 198], "fmtstr": [19, 182, 197, 198], "__dict__": [19, 49, 60, 182, 197, 198, 199, 244], "topk": [19, 49, 90, 127, 128, 165, 182, 197, 198, 221, 256], "maxk": [19, 58, 59, 182, 197, 198], "pred": [19, 37, 38, 104, 117, 123, 124, 129, 137, 148, 157, 162, 166, 169, 172, 173, 174, 178, 182, 185, 197, 198, 221], "correct_k": [19, 182, 197, 198], "mul_": [19, 95, 182, 197, 198, 216], "neval_batch": [19, 198], "top1": [19, 182, 197, 198, 221], "acc": [19, 73, 117, 148, 157, 171, 182, 197, 198], "top5": [19, 182, 197, 198, 256], "cnt": [19, 73, 182, 197, 198], "acc1": [19, 182, 197, 198], "acc5": [19, 182, 197, 198], "load_model": [19, 182, 197, 198], "data_path": [19, 87, 104, 182, 197, 198], "prepare_data_load": [19, 182, 197, 198], "randomresizedcrop": [19, 117, 182, 197, 198], "randomhorizontalflip": [19, 51, 117, 157, 178, 182, 197, 198], "dataset_test": [19, 178, 182, 197, 198], "centercrop": [19, 52, 90, 117, 119, 139, 157, 182, 197, 198, 213, 229], "train_sampl": [19, 165, 182, 197, 198], "test_sampl": [19, 182, 197, 198], "sequentialsampl": [19, 137, 182, 185, 197, 198], "train_batch_s": [19, 182, 197, 198], "data_loader_test": [19, 178, 182, 197, 198, 199], "saved_model_dir": [19, 182, 197, 198], "float_model_fil": [19, 182, 197, 198], "mobilenet_pretrained_float": 19, "scripted_float_model_fil": [19, 182, 197], "mobilenet_quantization_script": 19, "scripted_quantized_model_fil": 19, "mobilenet_quantization_scripted_quant": 19, "float_model": [19, 181, 182, 185, 195, 197, 198, 199], "fusion": [19, 82, 143, 144, 177, 182, 184, 198, 216, 218, 220, 247, 252, 255], "baselin": [19, 21, 24, 90, 97, 171, 184, 197, 201, 229, 231, 246], "un": [19, 165], "num_eval_batch": [19, 198], "sophist": [19, 159], "num_calibration_batch": 19, "mymodel": [19, 105, 179], "estim": [19, 47, 51, 52, 126, 159, 160, 165, 184, 213], "qconfig": [19, 119, 157, 179, 181, 182, 183, 185, 195, 197, 200, 218, 223, 228], "default_qconfig": [19, 182, 195], "calibr": [19, 179, 181, 183, 198, 199, 221, 223], "safe": [19, 23, 65, 97, 111, 142, 187, 209], "4x": [19, 122, 177, 181, 182, 234], "exercis": [19, 44, 135, 157, 176, 230], "x86": [19, 119, 179, 181, 182, 194, 196, 204, 207, 222, 228], "basi": [19, 122, 137, 150, 262, 271], "histogram": [19, 195, 197, 245], "per_channel_quantized_model": 19, "get_default_qconfig": [19, 119, 181, 182, 218, 223, 228], "67": [19, 109, 144, 177, 179, 185, 219], "wors": [19, 119, 209], "qat": [19, 157, 179, 199], "train_one_epoch": [19, 96, 178, 198], "ntrain_batch": [19, 198], "avgloss": [19, 198], "5f": [19, 198, 234], "global_avg": [19, 198], "qat_model": 19, "get_default_qat_qconfig": [19, 228], "prepare_qat": [19, 157, 228], "toward": [19, 49, 60, 97, 128, 160, 182, 234], "freez": [19, 43, 117, 157, 177, 196, 198, 199, 220, 247], "num_train_batch": [19, 198], "nepoch": [19, 198], "disable_observ": [19, 198], "intrins": [19, 179], "freeze_bn_stat": 19, "confirm": [19, 20, 58, 59, 87, 122, 145, 161, 256], "allud": [19, 73], "run_benchmark": 19, "img_load": 19, "num_batch": [19, 37, 38, 134, 135, 149, 230], "num_imag": [19, 117], "0f": [19, 117, 129, 157, 166, 221], "dynamo_export": [20, 105, 107, 108], "newest": [20, 105], "torchdynamo": [20, 105, 107, 121, 173, 174, 199, 200], "technolog": [20, 61, 97, 105, 121, 135, 216, 251], "torchscript": [20, 58, 59, 105, 119, 121, 139, 142, 147, 177, 185, 187, 188, 194, 196, 209, 223, 224, 225, 228, 238, 251], "prove": [20, 103, 176], "onnxruntim": [20, 105, 107, 108], "model_zoo": 20, "wide": [20, 61, 124, 127, 128, 135, 137, 149, 155, 165, 184, 208, 216, 229, 247, 266, 275], "superresolut": 20, "shi": 20, "et": [20, 24, 49, 52, 60, 73, 135, 156, 165, 265, 274], "al": [20, 24, 49, 52, 60, 73, 156, 165], "upscal": 20, "ycbcr": 20, "superresolutionnet": 20, "upscale_factor": 20, "pixel_shuffl": 20, "pixelshuffl": 20, "_initialize_weight": 20, "orthogonal_": [20, 153, 202], "calculate_gain": 20, "torch_model": [20, 105], "ordinarili": [20, 230], "batchnorm": [20, 52, 55, 112, 142, 147, 182, 194, 197, 198, 199, 247, 249, 252], "model_url": 20, "s3": [20, 173, 181], "amazonaw": [20, 181], "superres_epoch100": 20, "44c6958e": 20, "load_url": 20, "ax": [20, 51, 99, 102, 117, 121, 127, 149, 157, 165, 169], "dynamic_ax": 20, "torch_out": 20, "super_resolut": 20, "export_param": 20, "opset_vers": 20, "do_constant_fold": 20, "fold": [20, 142, 177, 182, 197, 199, 247, 252, 263, 272], "input_nam": [20, 173], "output_nam": [20, 128], "bundl": [20, 59, 194, 204, 208, 222], "ml": [20, 73, 95, 97, 120, 121, 126, 196, 219, 223, 257], "proto": [20, 110], "checker": [20, 105, 110], "check_model": [20, 105, 110], "onnx_model": [20, 105], "ort_sess": [20, 105, 108], "inferencesess": [20, 105, 108], "cpuexecutionprovid": [20, 105, 108], "to_numpi": [20, 105, 108], "ort_input": 20, "get_input": [20, 105, 108], "ort_out": 20, "assert_allclos": [20, 142], "rtol": [20, 138, 154], "03": [20, 92, 118, 119, 162, 163, 171, 184, 219, 246, 263, 272], "contact": [20, 122, 205, 263, 272], "famou": [20, 24, 73], "224x224": [20, 158, 213], "cb": 20, "cr": 20, "grayscal": [20, 136, 146], "blue": [20, 43, 58, 59, 90, 122, 124, 178, 226, 262, 271], "red": [20, 58, 59, 60, 124, 149, 169, 178, 195, 226], "chroma": 20, "sensit": [20, 97, 131, 141, 182], "_static": [20, 104, 121, 139], "img_ycbcr": 20, "img_i": 20, "img_cb": 20, "img_cr": 20, "to_tensor": [20, 42, 190, 191], "unsqueeze_": [20, 95, 128, 213], "img_out_i": 20, "fromarrai": [20, 171], "final_img": 20, "bicub": 20, "rgb": [20, 52, 58, 59, 75, 92, 97, 139, 146, 158, 171, 178, 213, 229], "mobil": [20, 58, 59, 97, 119, 179, 187, 188, 194, 196, 206, 208, 209, 218, 228, 235, 251], "cat_superres_with_ort": 20, "deploi": [20, 54, 58, 59, 105, 121, 126, 132, 139, 156, 158, 209, 251, 252], "cloud": [20, 54, 105], "inferenc": 20, "azur": [20, 168], "servic": [20, 49, 126, 139, 158, 208, 220, 262, 271], "super_resolution_with_onnxruntim": 20, "inter": [21, 121, 124, 132, 150, 215], "workload": [21, 23, 61, 97, 109, 120, 121, 132, 133, 168, 176, 177, 182, 197, 215, 216, 219, 220, 251], "fragment": [21, 177, 247], "fn": [21, 85, 135, 141, 144, 147, 172, 186, 210, 211, 244, 246, 255], "callabl": [21, 51, 168, 172, 173, 174, 182, 209, 229], "x_normal": 21, "x_parallel": 21, "async": [21, 161, 163], "sort": [21, 25, 49, 98, 102, 109, 116, 137, 143, 158, 178, 185, 209, 247], "parlanc": 21, "revers": [21, 43, 49, 60, 98, 141, 143, 150, 153, 158, 165], "bidirectionalrecurrentlstm": 21, "cell_f": 21, "input_s": [21, 45, 49, 60, 78, 127, 128, 136, 165], "hidden_s": [21, 49, 60, 78, 89, 127, 128, 136, 148, 165, 181, 252], "cell_b": 21, "output_f": 21, "x_rev": 21, "output_b": 21, "output_b_rev": 21, "lstmensembl": 21, "n_model": 21, "modulelist": [21, 153, 237], "demo": [21, 25, 45, 58, 59, 113, 119, 121, 139, 155, 168, 204, 208, 219, 222, 228, 262, 271], "took": [21, 119, 135, 143, 152, 164, 172, 176, 177, 187], "future_f": 21, "stuff": [21, 262, 271], "worth": [21, 23, 52, 103, 113, 152, 162, 234], "profil": [21, 42, 82, 89, 119, 121, 123, 164, 176, 195, 219, 231, 235, 247, 251], "chrome": [21, 89, 164, 168, 238], "prof": [21, 42, 109, 164, 168, 219, 238], "export_chrome_trac": [21, 144, 164, 238], "json": [21, 49, 90, 109, 127, 139, 144, 164, 168, 213, 238], "navig": [21, 61, 168, 169, 204, 226, 260, 269], "button": [21, 50, 52, 58, 59, 105, 168, 188, 225, 226, 260, 262, 269, 271], "timelin": [21, 152, 168, 177, 226], "horizont": 21, "opportun": [21, 85, 105, 136, 149, 216, 247], "breviti": [21, 23, 189, 234, 244], "intro": [21, 35, 36, 55, 99, 100, 120, 136, 139, 159, 169, 211], "tracer": [21, 204], "member": [22, 65, 67, 79, 111, 157, 196, 223], "portion": [22, 82, 152, 156, 219, 226, 262, 271], "custom_class": 22, "mystackclass": 22, "customclasshold": 22, "stack_": 22, "push": [22, 52, 73, 97, 145, 160, 184, 205, 218, 223], "pop_back": 22, "intrusive_ptr": [22, 155, 231, 246], "make_intrus": [22, 155], "elem": [22, 244], "smart": 22, "oppos": [22, 49, 52, 117, 135, 145, 150, 162], "class_": 22, "my_class": 22, "contructor": 22, "yourclass": 22, "ref": [22, 40, 197, 262, 271], "unari": 22, "add_librari": [22, 23, 208], "cmake_cxx_standard": [22, 208], "custom_class_project": 22, "rh": 22, "devtoolset": 22, "torchbind_tutori": 22, "libcustom_class": 22, "load_librari": [22, 23], "loaded_librari": 22, "bar": [22, 49, 82, 142, 149, 153, 162, 171, 172, 182, 197, 202, 226, 260, 262, 269, 271], "manipulate_inst": 22, "s2": [22, 47, 92, 173, 192], "do_stack": 22, "hi": [22, 103, 113, 115, 146, 193, 262, 263, 271, 272], "mom": 22, "wow": 22, "scripted_foo": 22, "filesystem": [22, 135], "treatment": [22, 113, 171, 191, 192, 234], "cpp_inference_exampl": 22, "foobarbaz": 22, "tostr": 22, "add_subdirectori": [22, 23], "drill": 22, "momfoobarbaz": 22, "incred": 22, "make_custom_class": 22, "tocustomclass": 22, "iscustomclass": 22, "export_attr": 22, "__torch__": [22, 203], "def_pickl": 22, "pushivalueimpl": 22, "pickler": 22, "__getstate__": 22, "__setstate__": 22, "pickl": [22, 87, 104, 112, 152, 223, 231, 242, 246], "salient": 22, "wherea": [22, 149, 169, 171, 184, 190, 191], "confus": [22, 23, 98, 99, 127, 141, 171, 184, 190, 191, 192, 197, 223], "trycustomop": 22, "relax": [22, 153, 173, 174], "standalon": [22, 53, 124, 230, 254, 262, 271], "blend": [22, 23], "smoothli": [22, 23], "subsequ": [23, 73, 97, 112, 118, 123, 136, 141, 161, 163, 165, 172, 177, 184, 199, 247], "resort": 23, "opencv": [23, 44, 208], "vision": [23, 24, 34, 38, 44, 58, 59, 117, 119, 121, 152, 178, 187, 194, 196, 204, 222, 223, 229, 233, 256], "mat": [23, 208], "warpperspect": [23, 208], "warp_perspect": [23, 208], "warp": [23, 208], "image_mat": [23, 208], "cv": [23, 24, 126, 193, 208], "col": [23, 34, 157, 208], "cv_32fc1": [23, 208], "warp_mat": [23, 208], "output_mat": [23, 208], "dsize": [23, 208], "output_tensor": 23, "from_blob": [23, 59, 188, 208], "ptr": [23, 208], "short": [23, 25, 49, 60, 82, 98, 100, 115, 120, 128, 135, 153, 159, 165, 166, 197, 198, 199, 234, 247, 262, 263, 271, 272], "opencv2": [23, 208], "hpp": [23, 155, 208], "alongsid": [23, 141, 169, 171, 230], "goodi": 23, "hardcod": [23, 129, 148, 200], "strikingli": 23, "opaqu": 23, "flat": 23, "scope": [23, 60, 101, 109, 125, 173, 174, 177, 226], "dealloc": [23, 168, 177, 247], "invalid": [23, 134, 190, 191, 192, 216, 247], "quot": [23, 117, 263, 272], "metaprogram": 23, "experiment": [23, 60, 123, 126, 142, 163, 173, 174, 179, 186, 221, 245, 247], "target_compile_featur": 23, "cxx_std_14": 23, "opencv_cor": 23, "opencv_imgproc": 23, "libwarp_perspect": 23, "sensat": 23, "0x7f618fc6fa50": 23, "3218": 23, "4611": 23, "4636": 23, "3746": 23, "0978": 23, "5005": 23, "3245": 23, "0169": 23, "4458": 23, "1862": 23, "1692": 23, "noteworthi": [23, 219], "frozen": [23, 43, 146, 157, 185, 203], "prim": [23, 185], "revel": 23, "restrict": [23, 25, 49, 85, 135, 168, 172, 174, 179, 204, 205], "script_method": [23, 85], "tensortobool": 23, "block0": 23, "block1": [23, 79], "21": [23, 58, 59, 109, 115, 158, 208, 219, 231, 238, 246], "sent": [23, 99, 102, 135, 161, 212], "wire": 23, "dlopen": 23, "example_app": 23, "cxx_range_for": 23, "errorreport": 23, "mayb": [23, 101, 103, 138, 196, 262, 271], "subdirectori": [23, 52, 178], "prefix": [23, 113, 122, 125, 136, 137, 168, 184, 185, 246, 258, 262, 271], "inconveni": [23, 189], "altogeth": [23, 150, 191, 260, 269], "nb": [23, 89, 95, 205, 213], "impress": [23, 115, 144], "opencv_photo": 23, "happi": [23, 142, 143], "4125": 23, "8262": 23, "5345": 23, "6111": [23, 231], "3997": [23, 75], "4683": 23, "5969": 23, "0850": 23, "0698": 23, "4597": 23, "0926": 23, "5727": 23, "9319": 23, "4834": 23, "1747": 23, "0162": 23, "9521": 23, "6269": 23, "lastli": [23, 87, 121, 152, 222], "driver": [23, 168], "infrastructur": [23, 257], "vener": 23, "beforehand": [23, 150, 200, 228], "is_python_modul": [23, 208], "extra_ldflag": [23, 208], "lopencv_cor": [23, 208], "lopencv_imgproc": [23, 208], "approxim": [23, 49, 108, 122, 129, 143, 146, 150, 156, 160, 176, 185, 219, 247], "0x7f3e0f840b10": 23, "load_inlin": [23, 208, 231], "op_sourc": [23, 208], "cpp_sourc": [23, 208, 231], "rout": [23, 60, 139, 144, 213], "quirki": 23, "with_opt": 23, "no_python_abi_suffix": 23, "bottom": [23, 98, 168, 171, 226, 260, 269], "suffix": [23, 48, 82, 144], "tag": [23, 51, 100, 103, 116, 173, 174, 208, 237, 245, 262, 271], "0x7ff51c5b7bd0": 23, "hao": 24, "chen": [24, 173, 174, 204, 222], "unifi": [24, 95, 121, 129, 195, 229], "ssl": 24, "modular": [24, 110, 112], "fixmatch": 24, "defixmatch": 24, "speech": [24, 73, 98, 100, 103, 128, 247], "light": [24, 25, 52, 129, 208, 229, 262, 271], "vit": 24, "strong": [24, 98, 176, 192, 262, 271], "unlabel": 24, "confid": [24, 52, 99, 126, 159, 160, 169, 230], "threshold": [24, 49, 60, 82, 109, 110, 126, 159, 163, 171, 219, 247], "statu": [24, 126, 163, 173, 174, 263, 272], "absorb": 24, "gaussian": [24, 47, 52, 126, 159], "overcom": [24, 113], "quantiti": [24, 97, 121, 124, 145, 150, 154], "trade": [24, 126, 152, 234], "afford": 24, "nlp": [24, 42, 92, 93, 99, 102, 103, 113, 114, 115, 116, 118, 127, 128, 137, 165, 177, 185, 193, 199, 230, 234, 247, 252], "audio": [24, 26, 27, 28, 29, 30, 34, 38, 44, 121, 140, 167, 170], "semilearn": 24, "get_dataset": 24, "get_data_load": 24, "weak": [24, 262, 271], "get_net_build": 24, "get_algorithm": 24, "get_config": 24, "hyper": [24, 164], "vit_tiny_patch2_32": 24, "use_pretrain": 24, "pretrain_path": 24, "microsoft": [24, 107, 108, 137, 168], "vit_tiny_patch2_32_mlp_im_1k_32": 24, "num_train_it": 24, "num_eval_it": 24, "num_log_it": 24, "adamw": [24, 75, 110, 122, 160], "layer_decai": 24, "cifar10": [24, 57, 87, 92, 97, 168, 220, 250, 253], "num_label": [24, 99], "img_siz": 24, "crop_ratio": 24, "875": 24, "data_dir": [24, 87, 117, 122, 137, 148, 157, 185], "ulb_samples_per_class": 24, "hard_label": 24, "ema_p": 24, "999": [24, 52, 94, 96, 169], "ent_loss_ratio": 24, "uratio": 24, "ulb_loss_ratio": 24, "dataset_dict": 24, "include_lb_to_ulb": 24, "train_lb_load": 24, "train_lb": 24, "train_ulb_load": 24, "train_ulb": 24, "eval_load": 24, "from_nam": 24, "tb_log": 24, "logger": [24, 137, 146, 148, 171, 185, 195], "lb_imb_ratio": 24, "ulb_imb_ratio": 24, "1500": [24, 122, 231], "ulb_num_label": 24, "3000": [24, 169], "kihyuk": 24, "sohn": 24, "yidong": 24, "usb_semisup_learn": 24, "jamesre": 25, "fb": 25, "michael": [25, 42, 98, 210, 211, 230, 255], "suo": 25, "rev2": 25, "hierarchi": [25, 60, 177], "__version__": [25, 42, 107, 119, 137, 146, 158, 185, 188, 206, 208, 222], "mycel": 25, "my_cel": 25, "3x4": 25, "redefin": 25, "succinctli": [25, 153], "mydecisiong": [25, 252], "dg": 25, "tape": [25, 42, 76], "traced_cel": [25, 252], "rewind": 25, "tracedmodul": [25, 60, 85, 252], "ir": [25, 110, 142, 144, 183, 216], "commonli": [25, 49, 69, 87, 97, 158, 165, 168, 179, 216, 220, 239, 247, 263, 272], "acquir": [25, 112, 134, 156, 159, 163], "laden": 25, "submodul": [25, 49, 60, 85, 153, 164, 202, 218, 222, 228, 234], "branch": [25, 173, 174, 177, 178, 199, 206, 220, 224, 225], "nowher": 25, "faithfulli": [25, 189], "analysi": [25, 87, 107, 115, 121, 123, 143, 144, 164, 168, 171, 174, 176, 184, 226, 234], "scripted_g": 25, "scripted_cel": [25, 252], "decis": [25, 100, 136, 189, 190, 192, 207, 224, 225, 247, 255], "myrnnloop": 25, "xs": [25, 134, 166], "rnn_loop": 25, "wraprnn": 25, "freestand": 25, "wrapped_rnn": 25, "neurip": 25, "1hiicg6jrkbnr5hvk2": 25, "vnmi88vi9puzej": 25, "intro_to_torchscript_tutori": [25, 203], "audio_data_augmentation_tutori": [26, 28], "redirect": [26, 27, 28, 29, 30, 31, 74, 140, 151, 167, 170, 180, 217], "audio_datasets_tutori": 27, "audio_feature_extractions_tutori": 29, "audio_io_tutori": 30, "\u57fa\u7840\u77e5\u8bc6": [32, 33, 34, 35, 37, 38, 39, 40, 41, 121], "\u5feb\u901f\u5165\u95e8": [32, 33, 34, 36, 37, 39, 40, 41, 251], "\u6570\u636e\u96c6\u4e0e\u6570\u636e\u52a0\u8f7d\u5668": [32, 33, 36, 37, 38, 39, 40, 41], "\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": [32, 34, 36, 37, 38, 39, 40, 41], "\u4f18\u5316\u6a21\u578b\u53c2\u6570": [32, 33, 34, 36, 39, 40, 41], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": [32, 33, 34, 36, 37, 38, 40, 41, 235, 251], "\u5728\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u65f6": [32, 250], "\u6700\u5e38\u7528\u7684\u7b97\u6cd5\u662f": 32, "\u53cd\u5411\u4f20\u64ad": [32, 37], "\u5728\u8fd9\u4e2a\u7b97\u6cd5\u4e2d": 32, "\u53c2\u6570": [32, 95, 238, 240], "\u6a21\u578b\u6743\u91cd": 32, "\u6839\u636e\u635f\u5931\u51fd\u6570\u76f8\u5bf9\u4e8e\u7ed9\u5b9a\u53c2\u6570\u7684": 32, "\u68af\u5ea6": [32, 89], "\u8fdb\u884c\u8c03\u6574": 32, "\u4e3a\u4e86\u8ba1\u7b97\u8fd9\u4e9b\u68af\u5ea6": 32, "\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5185\u7f6e\u7684\u5fae\u5206\u5f15\u64ce": 32, "\u79f0\u4e3a": [32, 39, 89], "\u5b83\u652f\u6301\u5bf9\u4efb\u4f55\u8ba1\u7b97\u56fe\u81ea\u52a8\u8ba1\u7b97\u68af\u5ea6": 32, "\u8003\u8651\u6700\u7b80\u5355\u7684\u5355\u5c42\u795e\u7ecf\u7f51\u7edc": 32, "\u5177\u6709\u8f93\u5165": 32, "\u548c": [32, 34, 36, 37, 38, 39, 41, 89, 90, 92, 95, 96, 111, 118, 121, 231, 233, 236, 238, 240, 241, 242, 243, 246, 249, 250], "\u4ee5\u53ca\u4e00\u4e9b\u635f\u5931\u51fd\u6570": 32, "\u53ef\u4ee5\u5728": [32, 104], "\u4e2d\u6309\u4ee5\u4e0b\u65b9\u5f0f\u5b9a\u4e49\u5b83": 32, "binary_cross_entropy_with_logit": [32, 230], "\u8fd9\u6bb5\u4ee3\u7801\u5b9a\u4e49\u4e86\u4ee5\u4e0b": 32, "\u8ba1\u7b97\u56fe": [32, 111], "\u5728\u8fd9\u4e2a\u7f51\u7edc\u4e2d": 32, "\u662f": [32, 34, 92, 93, 104, 236], "\u6211\u4eec\u9700\u8981\u5bf9\u5b83\u4eec\u8fdb\u884c\u4f18\u5316": 32, "\u56e0\u6b64": [32, 89, 111, 231, 238, 240, 242], "\u6211\u4eec\u9700\u8981\u80fd\u591f\u8ba1\u7b97\u635f\u5931\u51fd\u6570\u76f8\u5bf9\u4e8e\u8fd9\u4e9b\u53d8\u91cf\u7684\u68af\u5ea6": 32, "\u4e3a\u4e86\u505a\u5230\u8fd9\u4e00\u70b9": 32, "\u6211\u4eec\u8bbe\u7f6e\u4e86\u8fd9\u4e9b\u5f20\u91cf\u7684": 32, "\u5c5e\u6027": [32, 89, 95], "\u6216\u5728\u521b\u5efa\u540e\u4f7f\u7528": 32, "\u65b9\u6cd5\u6765\u8bbe\u7f6e": 32, "\u6211\u4eec\u5e94\u7528\u4e8e\u5f20\u91cf\u4ee5\u6784\u5efa\u8ba1\u7b97\u56fe\u7684\u51fd\u6570\u5b9e\u9645\u4e0a\u662f": 32, "\u7c7b\u7684\u5bf9\u8c61": 32, "\u8fd9\u4e2a\u5bf9\u8c61\u77e5\u9053\u5982\u4f55\u5728": 32, "\u524d\u5411": [32, 92, 111, 250], "\u65b9\u5411\u8ba1\u7b97\u51fd\u6570": 32, "\u4e5f\u77e5\u9053\u5982\u4f55\u5728": 32, "\u6b65\u9aa4\u4e2d\u8ba1\u7b97\u5176\u5bfc\u6570": 32, "\u5bf9\u4e8e\u53cd\u5411\u4f20\u64ad\u51fd\u6570\u7684\u5f15\u7528\u5b58\u50a8\u5728\u5f20\u91cf\u7684": 32, "\u5c5e\u6027\u4e2d": [32, 250], "\u60a8\u53ef\u4ee5\u5728": 32, "\u6587\u6863": [32, 89, 93, 95], "__": [32, 37, 40, 90, 94, 171, 234], "\u4e2d\u627e\u5230\u6709\u5173": 32, "\u7684\u66f4\u591a\u4fe1\u606f": 32, "\u4e3a\u4e86\u4f18\u5316\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u53c2\u6570\u6743\u91cd": 32, "\u6211\u4eec\u9700\u8981\u8ba1\u7b97\u635f\u5931\u51fd\u6570\u76f8\u5bf9\u4e8e\u53c2\u6570\u7684\u5bfc\u6570": 32, "\u5373\u5728\u67d0\u4e9b\u56fa\u5b9a\u7684": 32, "\u503c\u4e0b": 32, "\u6211\u4eec\u9700\u8981": 32, "frac": [32, 43, 64, 85, 89, 98, 99, 101, 103, 111, 125, 130, 135, 159, 160, 262, 271], "partial": [32, 43, 75, 87, 89, 101, 112, 113, 122, 123, 124, 125, 136, 141, 145, 216, 220, 262, 271], "\u8981\u8ba1\u7b97\u8fd9\u4e9b\u5bfc\u6570": 32, "\u6211\u4eec\u8c03\u7528": [32, 95], "\u7136\u540e\u4ece": 32, "\u4e2d\u68c0\u7d22\u503c": 32, "\u9ed8\u8ba4\u60c5\u51b5\u4e0b": [32, 37, 95, 238], "\u6240\u6709\u5177\u6709": 32, "\u7684\u5f20\u91cf\u90fd\u5728\u8ddf\u8e2a\u5b83\u4eec\u7684\u8ba1\u7b97\u5386\u53f2\u5e76\u652f\u6301\u68af\u5ea6\u8ba1\u7b97": 32, "\u7136\u800c": [32, 111, 231, 246], "\u6709\u4e9b\u60c5\u51b5\u4e0b\u6211\u4eec\u4e0d\u9700\u8981\u8fd9\u6837\u505a": 32, "\u4f8b\u5982": [32, 33, 34, 38, 40, 89, 92, 93, 95, 104, 238, 246, 250], "\u5f53\u6211\u4eec\u5df2\u7ecf\u8bad\u7ec3\u597d\u6a21\u578b\u5e76\u53ea\u60f3\u5c06\u5176\u5e94\u7528\u4e8e\u4e00\u4e9b\u8f93\u5165\u6570\u636e\u65f6": 32, "\u5373\u6211\u4eec\u53ea\u60f3\u901a\u8fc7\u7f51\u7edc\u8fdb\u884c": 32, "\u8ba1\u7b97": [32, 95], "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5c06\u6211\u4eec\u7684\u8ba1\u7b97\u4ee3\u7801\u5305\u88f9\u5728": 32, "\u5757\u4e2d\u6765\u505c\u6b62\u8ddf\u8e2a\u8ba1\u7b97": 32, "\u53e6\u4e00\u79cd\u5b9e\u73b0\u76f8\u540c\u7ed3\u679c\u7684\u65b9\u6cd5\u662f\u5bf9\u5f20\u91cf\u4f7f\u7528": 32, "\u65b9\u6cd5": [32, 33, 39, 89, 94, 95, 104, 233], "z_det": 32, "\u5e0c\u671b\u7981\u7528\u68af\u5ea6\u8ddf\u8e2a\u7684\u539f\u56e0\u53ef\u80fd\u5982\u4e0b": 32, "\u5c06\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u67d0\u4e9b\u53c2\u6570\u6807\u8bb0\u4e3a": 32, "\u51bb\u7ed3\u53c2\u6570": 32, "\u5728\u4ec5\u8fdb\u884c\u524d\u5411\u4f20\u9012\u65f6": 32, "\u52a0\u901f\u8ba1\u7b97": 32, "\u56e0\u4e3a\u4e0d\u8ddf\u8e2a\u68af\u5ea6\u7684\u5f20\u91cf\u4e0a\u7684\u8ba1\u7b97\u4f1a\u66f4\u9ad8\u6548": 32, "\u6982\u5ff5\u4e0a": 32, "\u5728\u4e00\u4e2a\u7531": 32, "\u5bf9\u8c61": [32, 92, 104, 246], "\u7ec4\u6210\u7684\u6709\u5411\u65e0\u73af\u56fe": 32, "dag": 32, "\u4e2d\u8bb0\u5f55\u6570\u636e": 32, "\u548c\u6240\u6709\u6267\u884c\u7684\u64cd\u4f5c": 32, "\u4ee5\u53ca\u4ea7\u751f\u7684\u65b0\u5f20\u91cf": 32, "\u5728\u8fd9\u4e2a": 32, "\u4e2d": [32, 34, 92, 104, 121, 233, 235, 236, 238, 246, 248, 251], "\u53f6\u5b50\u8282\u70b9\u662f\u8f93\u5165\u5f20\u91cf": 32, "\u6839\u8282\u70b9\u662f\u8f93\u51fa\u5f20\u91cf": 32, "\u901a\u8fc7\u4ece\u6839\u5230\u53f6\u8ddf\u8e2a\u8fd9\u4e2a\u56fe": 32, "\u53ef\u4ee5\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219\u81ea\u52a8\u8ba1\u7b97\u68af\u5ea6": 32, "\u5728\u524d\u5411\u4f20\u9012\u4e2d": 32, "\u540c\u65f6\u505a\u4e24\u4ef6\u4e8b": 32, "\u6267\u884c\u8bf7\u6c42\u7684\u64cd\u4f5c\u4ee5\u8ba1\u7b97\u7ed3\u679c\u5f20\u91cf": 32, "\u5728": [32, 33, 89, 92, 93, 94, 96, 104, 121, 139, 231, 246, 249], "\u4e2d\u7ef4\u62a4\u64cd\u4f5c\u7684": 32, "\u68af\u5ea6\u51fd\u6570": 32, "\u5f53\u5728": 32, "\u6839\u8282\u70b9\u4e0a\u8c03\u7528": 32, "\u65f6": [32, 89, 90, 95], "\u53cd\u5411\u4f20\u9012\u5f00\u59cb": 32, "\u7136\u540e": [32, 93, 104, 111], "\u4ece\u6bcf\u4e2a": 32, "\u5c06\u5b83\u4eec\u7d2f\u79ef\u5230\u5404\u81ea\u5f20\u91cf\u7684": 32, "\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219": 32, "\u4e00\u76f4\u4f20\u64ad\u5230\u53f6\u5b50\u5f20\u91cf": 32, "\u5728\u5f88\u591a\u60c5\u51b5\u4e0b": 32, "\u6211\u4eec\u6709\u4e00\u4e2a\u6807\u91cf\u635f\u5931\u51fd\u6570": 32, "\u9700\u8981\u8ba1\u7b97\u76f8\u5bf9\u4e8e\u67d0\u4e9b\u53c2\u6570\u7684\u68af\u5ea6": 32, "\u4e5f\u6709\u4e00\u4e9b\u60c5\u51b5\u4e0b": 32, "\u8f93\u51fa\u51fd\u6570\u662f\u4e00\u4e2a\u4efb\u610f\u7684\u5f20\u91cf": 32, "\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b": [32, 39, 95, 104, 240], "\u5141\u8bb8\u60a8\u8ba1\u7b97\u6240\u8c13\u7684": 32, "\u96c5\u53ef\u6bd4\u4e58\u79ef": 32, "\u800c\u4e0d\u662f\u5b9e\u9645\u7684\u68af\u5ea6": 32, "vec": [32, 43, 89, 98, 99, 144, 145, 150], "langl": 32, "x_1": [32, 101, 116, 150, 262, 271], "x_n": [32, 52], "rangl": 32, "y_1": [32, 101, 116], "y_m": 32, "ccc": [32, 43, 89], "y_": [32, 43, 89, 98], "x_": [32, 43, 89, 262, 271], "cdot": [32, 43, 52, 89, 103, 125], "vdot": [32, 43, 89], "ddot": [32, 43, 89], "v_1": 32, "v_m": 32, "retain_graph": [32, 76, 191, 205], "nsecond": 32, "ncall": 32, "accumul": [32, 43, 47, 49, 52, 69, 76, 98, 99, 101, 102, 103, 111, 115, 129, 130, 146, 152, 160, 161, 162, 163, 230, 234], "leaf": [32, 43, 183], "life": [32, 97, 113, 127, 128], "autogradqs_tutori": [32, 35, 40], "\u5f20\u91cf": [33, 34, 36, 37, 38, 39, 41, 70, 88, 89, 90, 93, 94, 95, 96, 104], "\u81ea\u52a8\u5fae\u5206": [33, 34, 36, 37, 38, 39, 40, 41, 88, 89, 90, 92, 93, 94, 95, 96, 111], "\u795e\u7ecf\u7f51\u7edc\u7531\u6267\u884c\u6570\u636e\u64cd\u4f5c\u7684": 33, "\u5c42": [33, 92, 93, 104, 111], "\u6a21\u5757": [33, 90, 231, 238], "\u7ec4\u6210": 33, "\u547d\u540d\u7a7a\u95f4\u63d0\u4f9b\u4e86\u6784\u5efa\u4f60\u81ea\u5df1\u7684\u795e\u7ecf\u7f51\u7edc\u6240\u9700\u7684\u6240\u6709\u6784\u5efa\u5757": 33, "\u4e2d\u7684\u6bcf\u4e2a\u6a21\u5757\u90fd\u662f": 33, "\u7684\u5b50\u7c7b": [33, 34, 92, 93], "\u795e\u7ecf\u7f51\u7edc\u672c\u8eab\u5c31\u662f\u4e00\u4e2a\u7531\u5176\u4ed6\u6a21\u5757": 33, "\u7ec4\u6210\u7684\u6a21\u5757": 33, "\u8fd9\u79cd\u5d4c\u5957\u7ed3\u6784\u5141\u8bb8\u8f7b\u677e\u6784\u5efa\u548c\u7ba1\u7406\u590d\u6742\u7684\u67b6\u6784": 33, "\u5728\u63a5\u4e0b\u6765\u7684\u90e8\u5206\u4e2d": 33, "\u6211\u4eec\u5c06\u6784\u5efa\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 33, "\u7528\u4e8e\u5bf9": 33, "fashionmnist": [33, 34, 37, 38, 41, 94, 96, 169], "\u6570\u636e\u96c6\u4e2d\u7684\u56fe\u50cf\u8fdb\u884c\u5206\u7c7b": 33, "\u6211\u4eec\u5e0c\u671b\u80fd\u591f\u5728\u786c\u4ef6\u52a0\u901f\u5668": 33, "\u5982": [33, 93, 104], "\u6216": [33, 38, 72, 93, 95, 96, 104, 236, 242], "\u4e0a\u8bad\u7ec3\u6211\u4eec\u7684\u6a21\u578b": 33, "\u5982\u679c\u53ef\u7528": [33, 38], "\u8ba9\u6211\u4eec\u68c0\u67e5\u4e00\u4e0b": 33, "\u662f\u5426\u53ef\u7528": 33, "\u5426\u5219\u6211\u4eec\u4f7f\u7528": 33, "\u6211\u4eec\u901a\u8fc7\u7ee7\u627f": 33, "\u6765\u5b9a\u4e49\u6211\u4eec\u7684\u795e\u7ecf\u7f51\u7edc": 33, "\u5e76\u5728": [33, 38], "\u65b9\u6cd5\u4e2d\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc\u5c42": 33, "\u6bcf\u4e2a": 33, "\u5b50\u7c7b\u90fd\u5728": 33, "\u65b9\u6cd5\u4e2d\u5b9e\u73b0\u5bf9\u8f93\u5165\u6570\u636e\u7684\u64cd\u4f5c": 33, "neuralnetwork": [33, 37, 38, 187], "linear_relu_stack": [33, 37, 38, 219], "logit": [33, 37, 38, 97, 118, 137, 148, 185, 219], "\u6211\u4eec\u521b\u5efa\u4e00\u4e2a": 33, "\u7684\u5b9e\u4f8b": [33, 93], "\u5e76\u5c06\u5176\u79fb\u52a8\u5230": 33, "\u4e0a": [33, 38, 89, 95, 104, 238], "\u7136\u540e\u6253\u5370\u5176\u7ed3\u6784": 33, "\u8981\u4f7f\u7528\u6a21\u578b": 33, "\u6211\u4eec\u5c06\u8f93\u5165\u6570\u636e\u4f20\u9012\u7ed9\u5b83": 33, "\u8fd9\u5c06\u6267\u884c\u6a21\u578b\u7684": 33, "\u4ee5\u53ca\u4e00\u4e9b": 33, "\u540e\u53f0\u64cd\u4f5c": 33, "270111b7b611d174967ed204776985cefca9c144": 33, "l866": 33, "\u4e0d\u8981\u76f4\u63a5\u8c03\u7528": 33, "\u5c06\u8f93\u5165\u4f20\u9012\u7ed9\u6a21\u578b\u4f1a\u8fd4\u56de\u4e00\u4e2a\u4e8c\u7ef4\u5f20\u91cf": 33, "\u5176\u4e2d": [33, 93, 95, 111], "\u5bf9\u5e94\u6bcf\u4e2a\u7c7b\u522b\u7684": 33, "\u4e2a\u539f\u59cb\u9884\u6d4b\u503c\u7684\u8f93\u51fa": 33, "\u5bf9\u5e94\u6bcf\u4e2a\u8f93\u51fa\u7684\u5404\u4e2a\u503c": 33, "\u6211\u4eec\u901a\u8fc7\u5c06\u5176\u4f20\u9012\u7ed9": 33, "\u6a21\u5757\u7684\u5b9e\u4f8b\u6765\u83b7\u5f97\u9884\u6d4b\u6982\u7387": 33, "pred_probab": [33, 219], "y_pred": [33, 63, 64, 65, 67, 68, 69, 71, 72, 111, 219], "argmax": [33, 37, 38, 98, 102, 104, 115, 119, 123, 129, 137, 146, 148, 162, 185, 219, 221], "\u8ba9\u6211\u4eec\u5206\u89e3\u4e00\u4e0b": 33, "\u6a21\u578b\u4e2d\u7684\u5404\u5c42": 33, "\u4e3a\u4e86\u89e3\u91ca\u5b83": 33, "\u6211\u4eec\u5c06\u53d6\u4e00\u4e2a\u5305\u542b": 33, "\u5f20": 33, "28x28": [33, 104, 169], "\u5c3a\u5bf8\u56fe\u50cf\u7684\u5c0f\u6279\u91cf\u6837\u672c": 33, "\u5e76\u89c2\u5bdf\u5b83\u5728\u901a\u8fc7\u7f51\u7edc\u65f6\u53d1\u751f\u4e86\u4ec0\u4e48": 33, "input_imag": [33, 58, 59], "\u6211\u4eec\u521d\u59cb\u5316": 33, "\u5c06\u6bcf\u4e2a\u4e8c\u7ef4": 33, "\u56fe\u50cf\u8f6c\u6362\u4e3a\u5305\u542b": 33, "784": [33, 94, 104, 138, 169], "\u4e2a\u50cf\u7d20\u503c\u7684\u8fde\u7eed\u6570\u7ec4": 33, "\u4fdd\u7559\u5c0f\u6279\u91cf\u7ef4\u5ea6": 33, "flat_imag": 33, "\u7ebf\u6027\u5c42": 33, "\u662f\u4e00\u4e2a\u6a21\u5757": 33, "\u5b83\u4f7f\u7528\u5b58\u50a8\u7684\u6743\u91cd": 33, "\u548c\u504f\u7f6e": [33, 104], "\u5bf9\u8f93\u5165\u5e94\u7528\u7ebf\u6027\u53d8\u6362": 33, "layer1": [33, 89, 149, 157, 160, 195], "in_featur": [33, 109, 117, 123, 157, 178, 179, 201, 202, 239], "hidden1": [33, 234], "\u975e\u7ebf\u6027\u6fc0\u6d3b\u51fd\u6570\u521b\u5efa\u4e86\u6a21\u578b\u8f93\u5165\u548c\u8f93\u51fa\u4e4b\u95f4\u7684\u590d\u6742\u6620\u5c04": 33, "\u5b83\u4eec\u5728\u7ebf\u6027\u53d8\u6362\u4e4b\u540e\u5e94\u7528": 33, "\u4ee5\u5f15\u5165": 33, "\u975e\u7ebf\u6027": [33, 93], "\u5e2e\u52a9\u795e\u7ecf\u7f51\u7edc\u5b66\u4e60\u5404\u79cd\u73b0\u8c61": 33, "\u5728\u8fd9\u4e2a\u6a21\u578b\u4e2d": 33, "\u6211\u4eec\u5728\u7ebf\u6027\u5c42\u4e4b\u95f4\u4f7f\u7528": 33, "\u4f46\u8fd8\u6709\u5176\u4ed6\u6fc0\u6d3b\u51fd\u6570\u53ef\u4ee5\u5728\u4f60\u7684\u6a21\u578b\u4e2d\u5f15\u5165\u975e\u7ebf\u6027": 33, "\u662f\u4e00\u4e2a\u6709\u5e8f\u7684\u6a21\u5757\u5bb9\u5668": 33, "\u6570\u636e\u6309\u7167\u5b9a\u4e49\u7684\u987a\u5e8f\u4f9d\u6b21\u901a\u8fc7\u6240\u6709\u6a21\u5757": 33, "\u60a8\u53ef\u4ee5\u4f7f\u7528\u5e8f\u5217\u5bb9\u5668\u6765\u5feb\u901f\u7ec4\u5408\u4e00\u4e2a\u7f51\u7edc": 33, "seq_modul": 33, "\u795e\u7ecf\u7f51\u7edc\u7684\u6700\u540e\u4e00\u4e2a\u7ebf\u6027\u5c42\u8fd4\u56de\u7684\u662f": 33, "\u5bf9\u6570\u51e0\u7387": 33, "infti": [33, 160], "\u8303\u56f4\u5185\u7684\u539f\u59cb\u503c": 33, "\u8fd9\u4e9b\u503c\u4f1a\u88ab\u4f20\u9012\u5230": 33, "\u5bf9\u6570\u51e0\u7387\u88ab\u7f29\u653e\u5230\u503c\u4e3a": 33, "\u7684\u8303\u56f4": 33, "\u8868\u793a\u6a21\u578b\u5bf9\u6bcf\u4e2a\u7c7b\u522b\u7684\u9884\u6d4b\u6982\u7387": 33, "\u53c2\u6570\u6307\u793a\u503c\u5fc5\u987b\u5728\u5176\u6cbf\u7740\u7684\u7ef4\u5ea6\u4e0a\u6c42\u548c\u4e3a": 33, "\u795e\u7ecf\u7f51\u7edc\u5185\u90e8\u7684\u8bb8\u591a\u5c42\u90fd\u662f": 33, "\u53c2\u6570\u5316": 33, "\u7684": [33, 34, 71, 72, 89, 90, 95, 104, 121, 231, 233, 238], "\u5373\u5728\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u4f1a\u4f18\u5316\u7684\u76f8\u5173\u6743\u91cd\u548c\u504f\u7f6e": 33, "\u901a\u8fc7\u5b50\u7c7b\u5316": 33, "\u53ef\u4ee5\u81ea\u52a8\u8ddf\u8e2a\u6a21\u578b\u5bf9\u8c61\u5185\u5b9a\u4e49\u7684\u6240\u6709\u5b57\u6bb5": 33, "\u5e76\u4f7f\u7528\u6a21\u578b\u7684": 33, "\u65b9\u6cd5\u8bbf\u95ee\u6240\u6709\u53c2\u6570": 33, "\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d": [33, 111, 241, 251], "\u6211\u4eec\u904d\u5386\u6bcf\u4e2a\u53c2\u6570": 33, "\u5e76\u6253\u5370\u5176\u5927\u5c0f\u4ee5\u53ca\u503c\u7684\u9884\u89c8": 33, "buildmodel_tutori": [33, 35, 37, 38], "\u5904\u7406\u6570\u636e\u6837\u672c\u7684\u4ee3\u7801\u53ef\u80fd\u4f1a\u53d8\u5f97\u6df7\u4e71\u4e14\u96be\u4ee5\u7ef4\u62a4": 34, "\u7406\u60f3\u60c5\u51b5\u4e0b": 34, "\u6211\u4eec\u5e0c\u671b\u6570\u636e\u96c6\u4ee3\u7801\u4e0e\u6a21\u578b\u8bad\u7ec3\u4ee3\u7801\u89e3\u8026": 34, "\u4ee5\u63d0\u9ad8\u53ef\u8bfb\u6027\u548c\u6a21\u5757\u5316": 34, "\u63d0\u4f9b\u4e86\u4e24\u4e2a\u6570\u636e\u5904\u7406\u7684\u57fa\u672c\u5de5\u5177": 34, "\u5b83\u4eec\u5141\u8bb8\u60a8\u4f7f\u7528\u9884\u52a0\u8f7d\u7684\u6570\u636e\u96c6\u4ee5\u53ca\u60a8\u81ea\u5df1\u7684\u6570\u636e": 34, "\u5b58\u50a8\u6837\u672c\u53ca\u5176\u5bf9\u5e94\u7684\u6807\u7b7e": [34, 38], "\u800c": [34, 38, 89], "\u5219\u4e3a": 34, "\u5305\u88c5\u4e86\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 34, "\u4ee5\u4fbf\u4e8e\u8bbf\u95ee\u6837\u672c": 34, "\u57df\u5e93\u63d0\u4f9b\u4e86\u8bb8\u591a\u9884\u52a0\u8f7d\u7684\u6570\u636e\u96c6": 34, "\u8fd9\u4e9b\u6570\u636e\u96c6\u662f": 34, "\u5e76\u5b9e\u73b0\u4e86\u7279\u5b9a\u4e8e\u8be5\u6570\u636e\u7684\u51fd\u6570": 34, "\u5b83\u4eec\u53ef\u4ee5\u7528\u4e8e\u6a21\u578b\u7684\u539f\u578b\u8bbe\u8ba1\u548c\u57fa\u51c6\u6d4b\u8bd5": 34, "\u60a8\u53ef\u4ee5\u5728\u4ee5\u4e0b\u94fe\u63a5\u627e\u5230\u8fd9\u4e9b\u6570\u636e\u96c6": 34, "\u56fe\u50cf\u6570\u636e\u96c6": 34, "\u6587\u672c\u6570\u636e\u96c6": 34, "\u97f3\u9891\u6570\u636e\u96c6": 34, "\u4e0b\u9762\u662f\u4e00\u4e2a\u4ece": 34, "\u52a0\u8f7d": [34, 39, 240, 242], "fashion": [34, 49, 60, 94, 96, 107, 122, 124, 126, 134, 162, 166, 169, 171, 220], "\u6570\u636e\u96c6\u7684\u793a\u4f8b": 34, "zalando": 34, "\u7684\u5546\u54c1\u56fe\u7247\u6570\u636e\u96c6": 34, "\u5305\u62ec": [34, 89, 90, 93, 96, 231, 233], "\u4e2a\u8bad\u7ec3\u6837\u672c\u548c": 34, "\u4e2a\u6d4b\u8bd5\u6837\u672c": 34, "\u6bcf\u4e2a\u6837\u672c\u5305\u542b\u4e00\u4e2a": 34, "\u7684\u7070\u5ea6\u56fe\u50cf\u548c\u4e00\u4e2a\u6765\u81ea": 34, "\u4e2a\u7c7b\u522b\u4e4b\u4e00\u7684\u6807\u7b7e": 34, "\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u53c2\u6570\u52a0\u8f7d": 34, "\u6570\u636e\u96c6": [34, 38, 92, 96, 104, 121, 233, 236], "\u662f\u5b58\u50a8\u8bad\u7ec3": 34, "\u6d4b\u8bd5\u6570\u636e\u7684\u8def\u5f84": 34, "\u6307\u5b9a\u662f\u8bad\u7ec3\u96c6\u8fd8\u662f\u6d4b\u8bd5\u96c6": 34, "\u8868\u793a\u5982\u679c\u6570\u636e\u5728": 34, "\u8def\u5f84\u4e2d\u4e0d\u53ef\u7528": 34, "\u5219\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u6570\u636e": 34, "target_transform": [34, 38, 41], "\u6307\u5b9a\u7279\u5f81\u548c\u6807\u7b7e\u7684\u8f6c\u6362": 34, "read_imag": [34, 178], "training_data": [34, 37, 38, 98, 102], "\u6211\u4eec\u53ef\u4ee5\u50cf\u5217\u8868\u4e00\u6837\u624b\u52a8\u7d22\u5f15": 34, "\u4f7f\u7528": [34, 88, 94, 95, 121, 139, 236, 242, 250], "\u6765\u53ef\u89c6\u5316\u8bad\u7ec3\u6570\u636e\u4e2d\u7684\u4e00\u4e9b\u6837\u672c": 34, "labels_map": 34, "shirt": [34, 38, 94, 96, 169], "trouser": [34, 38, 94, 96, 169], "pullov": [34, 38, 94, 96, 169], "dress": [34, 38, 94, 96, 169], "coat": [34, 38, 94, 96, 169], "sandal": [34, 38, 94, 96, 169], "sneaker": [34, 38, 94, 96, 169], "ankl": [34, 38, 94, 96, 169], "boot": [34, 38, 94, 96, 158, 169], "add_subplot": [34, 127, 165, 169], "\u81ea\u5b9a\u4e49\u6570\u636e\u96c6\u7c7b\u5fc5\u987b\u5b9e\u73b0\u4e09\u4e2a\u51fd\u6570": 34, "\u8bf7\u770b\u8fd9\u4e2a\u5b9e\u73b0\u793a\u4f8b": 34, "\u56fe\u50cf\u5b58\u50a8\u5728\u76ee\u5f55": 34, "img_dir": 34, "\u5b83\u4eec\u7684\u6807\u7b7e\u5355\u72ec\u5b58\u50a8\u5728": 34, "csv": [34, 49, 51, 122], "\u6587\u4ef6": [34, 90, 104], "annotations_fil": 34, "\u5177\u4f53\u4ee3\u7801\u5b9e\u73b0\u5982\u4e0b": 34, "customimagedataset": 34, "img_label": 34, "read_csv": [34, 51], "img_path": [34, 117, 178], "iloc": [34, 51], "\u51fd\u6570\u5728\u5b9e\u4f8b\u5316\u6570\u636e\u96c6\u5bf9\u8c61\u65f6\u8fd0\u884c\u4e00\u6b21": 34, "\u6211\u4eec\u521d\u59cb\u5316\u5305\u542b\u56fe\u50cf\u7684\u76ee\u5f55": 34, "\u6ce8\u91ca\u6587\u4ef6\u548c\u4e24\u79cd\u8f6c\u6362": 34, "\u5728\u4e0b\u4e00\u90e8\u5206\u4e2d\u5c06\u66f4\u8be6\u7ec6\u5730\u4ecb\u7ecd": 34, "\u6587\u4ef6\u7684\u5185\u5bb9\u5982\u4e0b": 34, "tshirt1": 34, "tshirt2": 34, "ankleboot999": 34, "\u51fd\u6570\u8fd4\u56de\u6570\u636e\u96c6\u4e2d\u7684\u6837\u672c\u6570\u91cf": 34, "\u51fd\u6570\u52a0\u8f7d\u5e76\u8fd4\u56de\u6570\u636e\u96c6\u4e2d\u7ed9\u5b9a\u7d22\u5f15": 34, "\u7684\u6837\u672c": 34, "\u6839\u636e\u7d22\u5f15": 34, "\u5b83\u786e\u5b9a\u56fe\u50cf\u5728\u78c1\u76d8\u4e0a\u7684\u4f4d\u7f6e": 34, "\u5c06\u5176\u8f6c\u6362\u4e3a\u5f20\u91cf": 34, "\u4ece": [34, 39, 71, 90, 92, 93, 96, 231], "\u4e2d\u7684": [34, 92, 104, 236], "\u6570\u636e\u4e2d\u68c0\u7d22\u76f8\u5e94\u7684\u6807\u7b7e": 34, "\u5bf9\u5b83\u4eec\u8c03\u7528\u8f6c\u6362\u51fd\u6570": 34, "\u5982\u679c\u9002\u7528": 34, "\u5e76\u4ee5\u5143\u7ec4\u5f62\u5f0f\u8fd4\u56de\u5f20\u91cf\u56fe\u50cf\u548c\u76f8\u5e94\u7684\u6807\u7b7e": 34, "\u4e00\u6b21\u68c0\u7d22\u6211\u4eec\u6570\u636e\u96c6\u7684\u4e00\u4e2a\u6837\u672c\u7684\u7279\u5f81\u548c\u6807\u7b7e": 34, "\u5728\u8bad\u7ec3\u6a21\u578b\u65f6": [34, 89], "\u6211\u4eec\u901a\u5e38\u5e0c\u671b\u4ee5": 34, "\u5c0f\u6279\u91cf": 34, "\u7684\u65b9\u5f0f\u4f20\u9012\u6837\u672c": 34, "\u5728\u6bcf\u4e2a\u5468\u671f\u91cd\u65b0\u968f\u673a\u6392\u5217\u6570\u636e\u4ee5\u51cf\u5c11\u6a21\u578b\u8fc7\u62df\u5408": 34, "\u5e76\u4f7f\u7528": [34, 104, 121, 241, 246], "\u52a0\u901f\u6570\u636e\u68c0\u7d22": 34, "\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 34, "\u5b83\u901a\u8fc7\u7b80\u5355\u7684": 34, "\u4e3a\u6211\u4eec\u62bd\u8c61\u4e86\u8fd9\u4e9b\u590d\u6742\u6027": 34, "train_dataload": [34, 37, 38, 75, 115, 118, 148, 165], "shuffl": [34, 44, 45, 51, 52, 55, 73, 87, 92, 94, 96, 97, 104, 113, 115, 116, 117, 122, 123, 129, 135, 157, 158, 162, 166, 168, 169, 178, 221, 236, 250], "test_dataload": [34, 37, 38, 115], "train_featur": 34, "train_label": 34, "\u6211\u4eec\u5df2\u7ecf\u5c06\u6570\u636e\u96c6\u52a0\u8f7d\u5230": 34, "\u5e76\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5bf9\u6570\u636e\u96c6\u8fdb\u884c\u8fed\u4ee3": 34, "\u4e0b\u9762\u7684\u6bcf\u6b21\u8fed\u4ee3\u90fd\u4f1a\u8fd4\u56de\u4e00\u4e2a\u6279\u6b21\u7684": 34, "\u5206\u522b\u5305\u542b": 34, "\u4e2a\u7279\u5f81\u548c\u6807\u7b7e": 34, "\u56e0\u4e3a\u6211\u4eec\u6307\u5b9a\u4e86": 34, "\u6240\u4ee5\u5728\u8fed\u4ee3\u5b8c\u6240\u6709\u6279\u6b21\u540e\u6570\u636e\u4f1a\u88ab\u91cd\u65b0\u6d17\u724c": 34, "\u5982\u679c\u60f3\u5bf9\u6570\u636e\u52a0\u8f7d\u987a\u5e8f\u8fdb\u884c\u66f4\u7cbe\u7ec6\u7684\u63a7\u5236": 34, "\u8bf7\u67e5\u770b": [34, 37, 94, 95], "data_tutori": [34, 35, 37, 38], "quickstart_tutori": [35, 36, 38], "tensorqs_tutori": [35, 40], "tensor_tutori": [35, 46, 48, 57], "dataquickstart_tutori": 35, "transforms_tutori": [35, 41], "autograd_tutori": [35, 37, 43, 46, 57], "optimization_tutori": [35, 37, 38], "saveloadrun_tutori": [35, 38, 39], "sphx_glr_beginner_basics_intro": 35, "sphx_glr_beginner_basics_saveloadrun_tutori": 35, "sphx_glr_beginner_basics_transforms_tutori": 35, "sphx_glr_beginner_basics_autogradqs_tutori": 35, "sphx_glr_beginner_basics_buildmodel_tutori": 35, "sphx_glr_beginner_basics_tensorqs_tutori": 35, "sphx_glr_beginner_basics_optimization_tutori": 35, "sphx_glr_beginner_basics_data_tutori": 35, "sphx_glr_beginner_basics_quickstart_tutori": 35, "suraj": [36, 53, 54, 55, 56, 109, 131, 132, 146, 176], "subramanian": [36, 53, 54, 55, 56, 109, 131, 132, 146, 176], "juarez": 36, "cassi": 36, "breviu": 36, "dmitri": 36, "soshnikov": 36, "ari": 36, "bornstein": 36, "\u5927\u591a\u6570\u673a\u5668\u5b66\u4e60\u5de5\u4f5c\u6d41\u6d89\u53ca\u5904\u7406\u6570\u636e": 36, "\u521b\u5efa\u6a21\u578b": 36, "\u4f18\u5316\u6a21\u578b\u53c2\u6570\u548c\u4fdd\u5b58\u8bad\u7ec3\u597d\u7684\u6a21\u578b": 36, "\u672c\u6559\u7a0b\u5c06\u5411\u60a8\u4ecb\u7ecd\u5728pytorch\u4e2d\u5b9e\u73b0\u7684\u5b8c\u6574ml\u5de5\u4f5c\u6d41": 36, "\u5e76\u63d0\u4f9b\u94fe\u63a5\u4ee5\u4e86\u89e3\u6709\u5173\u8fd9\u4e9b\u6982\u5ff5\u7684\u66f4\u591a\u4fe1\u606f": 36, "\u6211\u4eec\u5c06\u4f7f\u7528fashionmnist\u6570\u636e\u96c6\u6765\u8bad\u7ec3\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 36, "\u8be5\u7f51\u7edc\u53ef\u4ee5\u9884\u6d4b\u8f93\u5165\u56fe\u50cf\u662f\u5426\u5c5e\u4e8e\u4ee5\u4e0b\u7c7b\u522b\u4e4b\u4e00": 36, "t\u6064": 36, "\u4e0a\u8863": 36, "\u957f\u88e4": 36, "\u5957\u5934\u886b": 36, "\u8fde\u8863\u88d9": 36, "\u5916\u5957": 36, "\u51c9\u978b": 36, "\u886c\u886b": 36, "\u8fd0\u52a8\u978b": 36, "\u5305\u6216\u8e1d\u9774": 36, "\u672c\u6559\u7a0b\u5047\u8bbe\u60a8\u5bf9python\u548c\u6df1\u5ea6\u5b66\u4e60\u6982\u5ff5\u6709\u57fa\u672c\u7684\u4e86\u89e3": [36, 88], "\u60a8\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\u8fd0\u884c\u672c\u6559\u7a0b": [36, 88], "\u5728\u4e91\u7aef": [36, 88], "\u8fd9\u662f\u5f00\u59cb\u7684\u6700\u7b80\u5355\u65b9\u5f0f": [36, 88], "\u6bcf\u4e2a\u90e8\u5206\u7684\u9876\u90e8\u90fd\u6709\u4e00\u4e2a": 36, "\u5728microsoft": 36, "learn\u4e2d\u8fd0\u884c": 36, "\u5728googl": 36, "colab\u4e2d\u8fd0\u884c": [36, 236], "\u7684\u94fe\u63a5": 36, "\u5206\u522b\u4f1a\u5728microsoft": 36, "learn\u6216googl": 36, "colab\u4e2d\u6253\u5f00\u4e00\u4e2a\u96c6\u6210\u7684\u7b14\u8bb0\u672c": 36, "\u63d0\u4f9b\u5e26\u6709\u4ee3\u7801\u7684\u5b8c\u5168\u6258\u7ba1\u73af\u5883": 36, "\u672c\u5730\u8fd0\u884c": 36, "\u6b64\u9009\u9879\u9700\u8981\u60a8\u9996\u5148\u5728\u672c\u5730\u673a\u5668\u4e0a\u8bbe\u7f6epytorch\u548ctorchvis": [36, 88], "\u5b89\u88c5\u8bf4\u660e": [36, 88], "\u4e0b\u8f7d\u7b14\u8bb0\u672c\u6216\u5c06\u4ee3\u7801\u590d\u5236\u5230\u60a8\u559c\u6b22\u7684ide\u4e2d": 36, "\u5982\u679c\u60a8\u719f\u6089\u5176\u4ed6\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6": 36, "\u8bf7\u5148\u67e5\u770b": 36, "\u4ee5\u5feb\u901f\u719f\u6089pytorch\u7684api": 36, "\u5982\u679c\u60a8\u662f\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u65b0\u624b": 36, "\u8bf7\u76f4\u63a5\u8fdb\u5165\u6211\u4eec\u9010\u6b65\u6307\u5357\u7684\u7b2c\u4e00\u90e8\u5206": 36, "\u4f18\u5316\u6a21\u578b": 36, "\u4fdd\u5b58": [36, 240, 242], "\u52a0\u8f7d\u548c\u4f7f\u7528\u6a21\u578b": 36, "\u73b0\u5728\u6211\u4eec\u6709\u4e86\u6a21\u578b\u548c\u6570\u636e": 37, "\u662f\u65f6\u5019\u901a\u8fc7\u5728\u6570\u636e\u4e0a\u4f18\u5316\u6a21\u578b\u53c2\u6570\u6765\u8bad\u7ec3": 37, "\u9a8c\u8bc1\u548c\u6d4b\u8bd5\u6211\u4eec\u7684\u6a21\u578b\u4e86": 37, "\u8bad\u7ec3\u6a21\u578b\u662f\u4e00\u4e2a\u8fed\u4ee3\u8fc7\u7a0b": 37, "\u5728\u6bcf\u6b21\u8fed\u4ee3\u4e2d": 37, "\u6a21\u578b\u4f1a\u5bf9\u8f93\u51fa\u8fdb\u884c\u731c\u6d4b": 37, "\u8ba1\u7b97\u5176\u731c\u6d4b\u7684\u8bef\u5dee": 37, "\u635f\u5931": [37, 89, 96], "\u6536\u96c6\u8bef\u5dee\u76f8\u5bf9\u4e8e\u5176\u53c2\u6570\u7684\u5bfc\u6570": 37, "\u5982\u6211\u4eec\u5728": 37, "\u524d\u4e00\u8282": 37, "_\u4e2d\u6240\u89c1": 37, "\u5e76\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u6cd5": 37, "\u4f18\u5316": [37, 92, 250], "\u8fd9\u4e9b\u53c2\u6570": 37, "\u6709\u5173\u6b64\u8fc7\u7a0b\u7684\u66f4\u8be6\u7ec6\u8bb2\u89e3": 37, "3blue1brown": [37, 43], "\u7684\u8fd9\u4e2a\u89c6\u9891": 37, "www": [37, 49, 94, 104, 137, 165, 178, 236, 260, 262, 269, 271], "youtub": [37, 53, 54, 55, 56, 89, 90, 92, 93, 94, 95, 96, 121, 131, 132, 175], "tiehlnjs5u8": 37, "\u6211\u4eec\u52a0\u8f7d\u524d\u51e0\u8282\u4e2d\u7684": 37, "\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668": 37, "_\u548c": 37, "\u6784\u5efa\u6a21\u578b": [37, 88, 89, 90, 92, 94, 95, 96], "_\u7684\u4ee3\u7801": 37, "flatten": [37, 38, 44, 47, 68, 69, 73, 87, 97, 105, 111, 118, 123, 124, 129, 134, 136, 138, 146, 148, 150, 154, 157, 162, 193, 195, 203, 209, 219, 231, 233, 239], "\u8d85\u53c2\u6570\u662f\u53ef\u8c03\u53c2\u6570": 37, "\u5b83\u4eec\u53ef\u4ee5\u8ba9\u60a8\u63a7\u5236\u6a21\u578b\u7684\u4f18\u5316\u8fc7\u7a0b": 37, "\u4e0d\u540c\u7684\u8d85\u53c2\u6570\u503c\u4f1a\u5f71\u54cd\u6a21\u578b\u7684\u8bad\u7ec3\u548c\u6536\u655b\u901f\u5ea6": 37, "\u9605\u8bfb\u66f4\u591a": 37, "\u5173\u4e8e\u8d85\u53c2\u6570\u8c03\u6574\u7684\u5185\u5bb9": 37, "\u6211\u4eec\u4e3a\u8bad\u7ec3\u5b9a\u4e49\u4ee5\u4e0b\u8d85\u53c2\u6570": 37, "epoch\u6570\u91cf": 37, "\u8fed\u4ee3\u6574\u4e2a\u6570\u636e\u96c6\u7684\u6b21\u6570": 37, "\u6279\u91cf\u5927\u5c0f": 37, "\u5728\u66f4\u65b0\u53c2\u6570\u4e4b\u524d": 37, "\u901a\u8fc7\u7f51\u7edc\u4f20\u64ad\u7684\u6570\u636e\u6837\u672c\u6570\u91cf": 37, "\u5b66\u4e60\u7387": 37, "\u5728\u6bcf\u4e2a\u6279\u6b21": 37, "epoch\u4e2d\u66f4\u65b0\u6a21\u578b\u53c2\u6570\u7684\u5e45\u5ea6": 37, "\u8f83\u5c0f\u7684\u503c\u4f1a\u5bfc\u81f4\u5b66\u4e60\u901f\u5ea6\u7f13\u6162": 37, "\u800c\u8f83\u5927\u7684\u503c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u4e0d\u53ef\u9884\u6d4b\u7684\u884c\u4e3a": 37, "learning_r": [37, 47, 49, 63, 64, 68, 69, 71, 72, 97, 111, 126, 127, 128, 137, 148, 165], "\u4e00\u65e6\u8bbe\u7f6e\u597d\u8d85\u53c2\u6570": 37, "\u6211\u4eec\u5c31\u53ef\u4ee5\u7528\u4f18\u5316\u5faa\u73af\u6765\u8bad\u7ec3\u548c\u4f18\u5316\u6211\u4eec\u7684\u6a21\u578b": 37, "\u4f18\u5316\u5faa\u73af\u7684\u6bcf\u6b21\u8fed\u4ee3\u79f0\u4e3a\u4e00\u4e2a": 37, "\u6bcf\u4e2aepoch\u7531\u4e24\u4e2a\u4e3b\u8981\u90e8\u5206\u7ec4\u6210": 37, "\u8bad\u7ec3\u5faa\u73af": 37, "\u8fed\u4ee3\u8bad\u7ec3\u6570\u636e\u96c6\u5e76\u5c1d\u8bd5\u6536\u655b\u5230\u6700\u4f73\u53c2\u6570": 37, "\u9a8c\u8bc1": [37, 96], "\u6d4b\u8bd5\u5faa\u73af": 37, "\u8fed\u4ee3\u6d4b\u8bd5\u6570\u636e\u96c6\u4ee5\u68c0\u67e5\u6a21\u578b\u6027\u80fd\u662f\u5426\u6709\u63d0\u9ad8": 37, "\u8ba9\u6211\u4eec\u7b80\u8981\u4e86\u89e3\u8bad\u7ec3\u5faa\u73af\u4e2d\u4f7f\u7528\u7684\u4e00\u4e9b\u6982\u5ff5": 37, "\u8df3\u5230\u524d\u9762\u67e5\u770b\u4f18\u5316\u5faa\u73af\u7684": 37, "\u5f53\u9762\u5bf9\u4e00\u4e9b\u8bad\u7ec3\u6570\u636e\u65f6": 37, "\u6211\u4eec\u672a\u8bad\u7ec3\u7684\u7f51\u7edc\u53ef\u80fd\u4e0d\u4f1a\u7ed9\u51fa\u6b63\u786e\u7684\u7b54\u6848": 37, "\u8861\u91cf\u83b7\u5f97\u7684\u7ed3\u679c\u4e0e\u76ee\u6807\u503c\u7684\u5dee\u5f02\u7a0b\u5ea6": 37, "\u8fd9\u662f\u6211\u4eec\u5728\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u5e0c\u671b\u6700\u5c0f\u5316\u7684": 37, "\u8981\u8ba1\u7b97\u635f\u5931": 37, "\u6211\u4eec\u4f7f\u7528\u7ed9\u5b9a\u6570\u636e\u6837\u672c\u7684\u8f93\u5165\u8fdb\u884c\u9884\u6d4b": 37, "\u5e76\u5c06\u5176\u4e0e\u771f\u5b9e\u7684\u6570\u636e\u6807\u7b7e\u503c\u8fdb\u884c\u6bd4\u8f83": 37, "\u5e38\u89c1\u7684\u635f\u5931\u51fd\u6570\u5305\u62ec\u7528\u4e8e\u56de\u5f52\u4efb\u52a1\u7684": 37, "\u5747\u65b9\u8bef\u5dee": [37, 93], "\u4ee5\u53ca\u7528\u4e8e\u5206\u7c7b\u7684": 37, "nllloss": [37, 99, 102, 103, 110, 115, 127, 128, 165], "\u8d1f\u5bf9\u6570\u4f3c\u7136": 37, "_\u7ed3\u5408\u4e86": 37, "logsoftmax": [37, 78, 110, 115, 127, 128], "\u6211\u4eec\u5c06\u6a21\u578b\u7684\u8f93\u51falogits\u4f20\u9012\u7ed9": 37, "\u5b83\u5c06\u6807\u51c6\u5316logits\u5e76\u8ba1\u7b97\u9884\u6d4b\u8bef\u5dee": 37, "loss_fn": [37, 38, 68, 69, 78, 96, 111, 118, 133, 134, 136, 146, 149, 154, 161, 214, 230, 258], "\u4f18\u5316\u662f\u8c03\u6574\u6a21\u578b\u53c2\u6570\u4ee5\u51cf\u5c11\u6bcf\u6b21\u8bad\u7ec3\u6b65\u9aa4\u4e2d\u7684\u6a21\u578b\u8bef\u5dee\u7684\u8fc7\u7a0b": 37, "\u4f18\u5316\u7b97\u6cd5": 37, "\u5b9a\u4e49\u4e86\u8fd9\u4e2a\u8fc7\u7a0b\u5982\u4f55\u8fdb\u884c": 37, "\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u6211\u4eec\u4f7f\u7528\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u6cd5": 37, "\u6240\u6709\u4f18\u5316\u903b\u8f91\u90fd\u5c01\u88c5\u5728": 37, "\u5bf9\u8c61\u4e2d": 37, "\u5728\u8fd9\u91cc": [37, 90, 92, 96, 111, 242], "\u6211\u4eec\u4f7f\u7528sgd\u4f18\u5316\u5668": 37, "\u6b64\u5916": [37, 93, 231], "pytorch\u4e2d\u8fd8\u6709\u8bb8\u591a": 37, "\u4e0d\u540c\u7684\u4f18\u5316\u5668": 37, "\u5982adam\u548crmsprop": 37, "\u5b83\u4eec\u5bf9\u4e0d\u540c\u7c7b\u578b\u7684\u6a21\u578b\u548c\u6570\u636e\u6548\u679c\u66f4\u597d": 37, "\u6211\u4eec\u901a\u8fc7\u6ce8\u518c\u9700\u8981\u8bad\u7ec3\u7684\u6a21\u578b\u53c2\u6570\u5e76\u4f20\u5165\u5b66\u4e60\u7387\u8d85\u53c2\u6570\u6765\u521d\u59cb\u5316\u4f18\u5316\u5668": 37, "\u5728\u8bad\u7ec3\u5faa\u73af\u4e2d": 37, "\u4f18\u5316\u5206\u4e3a\u4e09\u4e2a\u6b65\u9aa4": 37, "\u8c03\u7528": [37, 95, 104, 240, 241, 246], "\u6765\u91cd\u7f6e\u6a21\u578b\u53c2\u6570\u7684\u68af\u5ea6": 37, "\u68af\u5ea6\u4f1a\u7d2f\u52a0": 37, "\u4e3a\u9632\u6b62\u91cd\u590d\u8ba1\u7b97": 37, "\u6211\u4eec\u5728\u6bcf\u6b21\u8fed\u4ee3\u65f6\u663e\u5f0f\u5c06\u5176\u5f52\u96f6": 37, "\u53cd\u5411\u4f20\u64ad\u9884\u6d4b\u635f\u5931": 37, "pytorch\u4f1a\u5c06\u635f\u5931\u76f8\u5bf9\u4e8e\u6bcf\u4e2a\u53c2\u6570\u7684\u68af\u5ea6\u5b58\u50a8\u4e0b\u6765": 37, "\u4e00\u65e6\u6211\u4eec\u6709\u4e86\u68af\u5ea6": 37, "\u5c31\u8c03\u7528": 37, "\u901a\u8fc7\u53cd\u5411\u4f20\u64ad\u4e2d\u6536\u96c6\u7684\u68af\u5ea6\u6765\u8c03\u6574\u53c2\u6570": 37, "\u6211\u4eec\u5b9a\u4e49\u4e86": 37, "train_loop": 37, "\u6765\u5faa\u73af\u6267\u884c\u4f18\u5316\u4ee3\u7801": 37, "\u5e76\u5b9a\u4e49\u4e86": 37, "test_loop": 37, "\u6765\u8bc4\u4f30\u6a21\u578b\u5728\u6d4b\u8bd5\u6570\u636e\u4e0a\u7684\u6027\u80fd": 37, "unnecessari": [37, 171, 177, 212], "7f": [37, 38], "8f": [37, 38], "\u6211\u4eec\u521d\u59cb\u5316\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668": 37, "\u5e76\u5c06\u5b83\u4eec\u4f20\u9012\u7ed9": 37, "\u60a8\u53ef\u4ee5\u5c1d\u8bd5\u589e\u52a0epoch\u7684\u6570\u91cf\u4ee5\u89c2\u5bdf\u6a21\u578b\u6027\u80fd\u7684\u63d0\u5347": 37, "warmstart": [37, 235], "\u672c\u8282\u5c06\u4ecb\u7ecd\u673a\u5668\u5b66\u4e60\u4efb\u52a1\u4e2d\u5e38\u7528\u7684api": 38, "\u60f3\u66f4\u6df1\u5165\u4e86\u89e3\u5404\u6a21\u5757\u5185\u5bb9": 38, "\u53ef\u53c2\u8003\u6bcf\u8282\u6587\u672b\u5904\u7684\u94fe\u63a5": 38, "\u63d0\u4f9b\u4e86\u4e24\u4e2a\u7528\u4e8e": 38, "\u5904\u7406\u6570\u636e\u7684\u539f\u8bed": 38, "\u5219\u5728": 38, "\u5916\u90e8\u5c01\u88c5\u4e00\u5c42": 38, "\u53d8\u4e3a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 38, "\u63d0\u4f9b\u4e86\u7279\u5b9a\u9886\u57df\u7684\u5e93": 38, "torchaudio": [38, 50, 92, 96, 121, 122, 158, 168, 184, 187, 236], "\u6240\u6709\u8fd9\u4e9b\u5e93\u90fd\u5305\u542b\u4e86\u5bf9\u5e94\u6570\u636e\u96c6": 38, "\u5728\u672c\u6559\u7a0b\u4e2d": [38, 233, 238, 240, 242, 243, 246, 248, 249, 250], "\u6211\u4eec\u5c06\u4f7f\u7528": [38, 89, 90, 96, 104, 233, 236, 238, 240, 241, 242, 243, 248, 249], "\u6a21\u5757\u5305\u542b\u8bb8\u591a\u73b0\u5b9e\u4e16\u754c\u89c6\u89c9\u6570\u636e": 38, "cifar": [38, 44, 92, 169], "coco": [38, 178], "\u6570\u636e\u96c6\u5217\u8868": 38, "\u6211\u4eec\u4f7f\u7528": [38, 41, 96, 104, 111, 249], "\u6bcf\u4e2atorchvis": 38, "\u5305\u62ec\u4e24\u4e2a\u53c2\u6570": 38, "\u5206\u522b\u7528\u4e8e\u4fee\u6539\u6837\u672c\u6570\u636e\u548c\u6807\u7b7e": 38, "\u6211\u4eec\u5c06": [38, 90, 95], "\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9": 38, "\u5728\u6570\u636e\u96c6\u4e0a\u5c01\u88c5\u4e86\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 38, "\u652f\u6301\u81ea\u52a8\u6279\u5904\u7406": 38, "\u91c7\u6837": 38, "\u6253\u4e71\u548c\u591a\u8fdb\u7a0b\u6570\u636e\u52a0\u8f7d": 38, "\u8fd9\u91cc\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u6279\u5904\u7406\u5927\u5c0f\u4e3a": 38, "\u5373": [38, 89, 104], "\u6bcf\u6279\u5c06\u8fd4\u56de\u5927\u5c0f\u4e3a": 38, "\u7684\u7279\u5f81\u6570\u636e\u548c\u6807\u7b7e": 38, "\u83b7\u53d6\u66f4\u591a\u5173\u4e8e": 38, "pytorch\u6570\u636e\u52a0\u8f7d": 38, "\u7684\u4fe1\u606f": 38, "\u8981\u5728": [38, 72], "\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 38, "\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u7ee7\u627f\u81ea": 38, "\u7684\u7c7b": [38, 93], "\u6211\u4eec\u5728": [38, 94, 104], "\u51fd\u6570\u4e2d\u5b9a\u4e49\u7f51\u7edc\u7684\u5c42": 38, "\u51fd\u6570\u4e2d\u6307\u5b9a\u6570\u636e\u5982\u4f55\u7ecf\u8fc7\u7f51\u7edc": 38, "\u4e3a\u4e86\u52a0\u901f\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u8fd0\u7b97": 38, "\u6211\u4eec\u5c06\u5176\u79fb\u5230": 38, "pytorch\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": 38, "\u7684\u5185\u5bb9": 38, "\u7ec3\u4e00\u4e2a\u6a21\u578b": 38, "\u6211\u4eec\u9700\u8981\u4e00\u4e2a": 38, "\u635f\u5931\u51fd\u6570": [38, 89, 92, 104], "\u548c\u4e00\u4e2a": 38, "\u4f18\u5316\u5668": [38, 92, 241, 242, 249], "\u5728\u5355\u4e2a\u8bad\u7ec3\u5faa\u73af\u4e2d": 38, "\u6a21\u578b\u5bf9\u8bad\u7ec3\u6570\u636e\u96c6": 38, "\u5206\u6279\u8f93\u5165": 38, "\u8fdb\u884c\u9884\u6d4b": 38, "\u5e76\u901a\u8fc7\u53cd\u5411\u4f20\u64ad\u9884\u6d4b\u8bef\u5dee\u6765\u8c03\u6574\u6a21\u578b\u7684\u53c2\u6570": 38, "\u6211\u4eec\u8fd8\u9700\u68c0\u67e5\u6a21\u578b\u5728\u6d4b\u8bd5\u6570\u636e\u96c6\u4e0a\u7684\u6548\u679c": 38, "\u4ee5\u786e\u4fdd\u5b83\u5728\u6301\u7eed\u5b66\u4e60": 38, "\u901a\u8fc7\u591a\u6b21\u8fed\u4ee3": 38, "\u8fdb\u884c\u8bad\u7ec3": 38, "\u5728\u6bcf\u4e2a\u8fed\u4ee3\u8fc7\u7a0b\u4e2d": 38, "\u6a21\u578b\u901a\u8fc7\u5bf9\u53c2\u6570\u7684\u5b66\u4e60\u4ee5\u63d0\u9ad8\u9884\u6d4b\u51c6\u786e\u6027": 38, "\u6211\u4eec\u5728\u6bcf\u4e2a": [38, 104], "\u6253\u5370\u6a21\u578b\u7684\u51c6\u786e\u7387\u548c\u635f\u5931": 38, "\u6211\u4eec\u5e0c\u671b\u770b\u5230\u968f\u7740\u6bcf\u4e2a": 38, "\u8bad\u7ec3": [38, 96, 236], "\u6a21\u578b\u9884\u6d4b\u51c6\u786e\u7387\u4e0d\u65ad\u63d0\u9ad8": 38, "\u635f\u5931\u9010\u6e10\u51cf\u5c11": 38, "\u8bad\u7ec3\u6a21\u578b": [38, 88, 89, 90, 92, 93, 94, 95], "\u4fdd\u5b58\u6a21\u578b\u7684\u5e38\u89c1\u65b9\u6cd5\u662f\u5c06\u5185\u90e8\u72b6\u6001\u5b57\u5178": 38, "\u5305\u542b\u6a21\u578b\u53c2\u6570": 38, "\u5e8f\u5217\u5316": 38, "\u52a0\u8f7d\u6a21\u578b\u7684\u8fc7\u7a0b\u5305\u62ec\u91cd\u65b0\u521b\u5efa\u6a21\u578b\u7ed3\u6784\u5e76\u52a0\u8f7d\u5176\u5185\u90e8\u72b6\u6001\u5b57\u5178": 38, "\u8fd9\u4e2a\u6a21\u578b\u73b0\u5728\u53ef\u4ee5\u7528\u6765\u8fdb\u884c\u9884\u6d4b\u4e86": 38, "\u83b7\u53d6\u66f4\u591a\u6709\u5173": 38, "\u5728\u672c\u8282\u4e2d": 39, "\u6211\u4eec\u5c06\u5b66\u4e60\u5982\u4f55\u901a\u8fc7\u4fdd\u5b58": 39, "\u52a0\u8f7d\u4ee5\u53ca\u8fd0\u884c\u6a21\u578b\u9884\u6d4b": 39, "\u6765\u6301\u4e45\u5316\u6a21\u578b": 39, "pytorch\u6a21\u578b\u5c06\u5b66\u4e60\u5230\u7684\u53c2\u6570\u5b58\u50a8\u5728\u4e00\u4e2a\u5185\u90e8\u72b6\u6001\u5b57\u5178\u4e2d": 39, "\u8fd9\u4e9b\u53c2\u6570\u53ef\u4ee5\u901a\u8fc7": 39, "\u8fdb\u884c\u6301\u4e45\u5316": 39, "vgg16": [39, 147], "imagenet1k_v1": [39, 90, 117, 139, 168, 195, 229], "model_weight": 39, "\u8981\u52a0\u8f7d\u6a21\u578b\u6743\u91cd": 39, "\u60a8\u9700\u8981\u5148\u521b\u5efa\u4e00\u4e2a\u76f8\u540c\u6a21\u578b\u7684\u5b9e\u4f8b": 39, "\u7136\u540e\u4f7f\u7528": [39, 241, 243], "\u65b9\u6cd5\u52a0\u8f7d\u53c2\u6570": 39, "untrain": 39, "\u6ce8\u610f": [39, 89, 90, 95, 96, 104, 238, 240, 242, 250], "\u5728\u8fdb\u884c\u63a8\u7406\u4e4b\u524d": 39, "\u8bf7\u786e\u4fdd\u8c03\u7528": [39, 240], "\u65b9\u6cd5\u4ee5\u5c06": 39, "layers\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": [39, 242], "\u5982\u679c\u4e0d\u8fd9\u6837\u505a": [39, 241], "\u5c06\u5bfc\u81f4\u4e0d\u4e00\u81f4\u7684\u63a8\u7406\u7ed3\u679c": 39, "\u5728\u52a0\u8f7d\u6a21\u578b\u6743\u91cd\u65f6": 39, "\u6211\u4eec\u9700\u8981\u5148\u5b9e\u4f8b\u5316\u6a21\u578b\u7c7b": 39, "\u56e0\u4e3a\u7c7b\u5b9a\u4e49\u4e86\u7f51\u7edc\u7684\u7ed3\u6784": 39, "\u6211\u4eec\u53ef\u80fd\u5e0c\u671b\u5c06\u8fd9\u4e2a\u7c7b\u7684\u7ed3\u6784\u4e0e\u6a21\u578b\u4e00\u8d77\u4fdd\u5b58": 39, "\u6211\u4eec\u53ef\u4ee5\u5c06": 39, "\u800c\u4e0d\u662f": [39, 89, 95, 96, 104, 111, 231], "\u4f20\u9012\u7ed9": [39, 238, 240], "\u51fd\u6570": [39, 41, 89, 92, 104, 111, 233, 238, 240, 242], "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u65b9\u5f0f\u52a0\u8f7d\u6a21\u578b": 39, "\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528checkpoint": 39, "\u7684\u5b9e\u7528\u6280\u5de7": 39, "\u7c7b\u4f3c\u4e8e\u6570\u7ec4\u548c\u77e9\u9635": 40, "\u5f20\u91cf\u4e5f\u662f\u4e00\u79cd\u7279\u5b9a\u7684\u6570\u636e\u7ed3\u6784": 40, "\u5728pytorch\u4e2d": [40, 111, 233, 242], "\u6211\u4eec\u4f7f\u7528\u5f20\u91cf\u5bf9\u4e00\u4e2a\u6a21\u578b\u7684\u53c2\u6570": 40, "\u8f93\u5165\u548c\u8f93\u51fa\u8fdb\u884c\u7f16\u7801": 40, "\u5f20\u91cf\u7684\u7ed3\u6784\u7c7b\u4f3c\u4e8e": 40, "\u4e2d\u7684ndarrai": 40, "\u800c\u5f20\u91cf\u53ef\u4ee5\u8fd0\u884c\u5728gpu\u53ca\u5176\u4ed6\u76f8\u4f3c\u7684\u786c\u4ef6\u52a0\u901f\u5668\u4e0a": 40, "\u4e8b\u5b9e\u4e0a": [40, 92, 93], "\u4e3a\u4e86\u51cf\u5c11\u6570\u636e\u7684\u62f7\u8d1d": 40, "\u5f20\u91cf\u548cnumpi": 40, "arrays\u5728\u5e95\u5c42\u5e38\u5e38\u5171\u4eab\u540c\u4e00\u5757\u5185\u5b58": 40, "bridg": [40, 85, 225], "role": [40, 103, 156, 163, 177, 262, 271], "\u5728\u81ea\u52a8\u5fae\u5206": 40, "\u7684\u8fc7\u7a0b\u4e2d\u4e5f\u4f7f\u7528\u5f20\u91cf\u8fdb\u884c\u4f18\u5316": 40, "\u5728\u540e\u7eed": 40, "\u7ae0\u8282\u53ef\u4ee5\u770b\u5230\u66f4\u591a\u6709\u5173\u5185\u5bb9": 40, "\u5982\u679c\u5df2\u7ecf\u5bf9ndarrays\u5341\u5206\u719f\u6089\u4e86": 40, "\u90a3\u5bf9\u5f20\u91cf\u7684api\u4e5f\u53ef\u4ee5\u8fd0\u7528\u81ea\u5982": 40, "\u5982\u679c\u8fd8\u4e0d\u719f\u6089": 40, "\u4e0b\u9762\u7684\u6559\u7a0b\u4f1a\u5e2e\u52a9\u4f60\u4e0a\u624b": 40, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u65b9\u5f0f\u521b\u5efa\u4e00\u4e2a\u5f20\u91cf": 40, "\u4f7f\u7528\u6570\u636e\u521b\u5efa": 40, "\u901a\u8fc7\u5df2\u5b9a\u4e49\u7684\u6570\u636e\u53ef\u4ee5\u76f4\u63a5\u521b\u5efa\u51fa\u6765\u5f20\u91cf": 40, "\u521b\u5efa\u65f6\u4f1a\u81ea\u52a8\u63a8\u65ad\u6570\u636e\u7c7b\u578b": 40, "x_data": [40, 48], "\u4f7f\u7528numpi": 40, "array\u521b\u5efa": 40, "\u53ef\u4ee5\u4f7f\u7528numpi": 40, "array\u521b\u5efa\u5f20\u91cf": 40, "\u53cd\u4e4b\u4ea6\u53ef": 40, "np_arrai": [40, 48], "x_np": [40, 48], "\u4f7f\u7528\u5df2\u6709\u5f20\u91cf\u521b\u5efa": 40, "\u65b0\u7684\u5f20\u91cf\u4f1a\u4fdd\u7559\u539f\u5f20\u91cf\u7684\u5c5e\u6027": 40, "\u5f62\u72b6": [40, 95], "\u6570\u636e\u7c7b\u578b": [40, 72], "\u9664\u975e\u521b\u5efa\u65f6\u663e\u793a\u58f0\u660e": 40, "x_one": [40, 48], "Ones": [40, 48], "x_rand": [40, 48], "rand_lik": [40, 48, 95, 141, 153], "\u901a\u8fc7\u968f\u673a\u6216\u5e38\u91cf\u521b\u5efa": 40, "\u63cf\u8ff0\u4e86\u5f20\u91cf\u7684\u7ef4\u5ea6": 40, "\u5728\u4e0b\u9762\u7684\u65b9\u6cd5\u8c03\u7528\u65f6": 40, "\u901a\u8fc7\u5b83\u6765\u58f0\u660e\u521b\u5efa\u5f20\u91cf\u7684\u7ef4\u5ea6": 40, "rand_tensor": [40, 48], "ones_tensor": [40, 48], "zeros_tensor": [40, 48], "\u5f20\u91cf\u7684\u5c5e\u6027\u4fdd\u5b58\u4e86\u5176\u5f62\u72b6": 40, "\u4ee5\u53ca\u5176\u5b58\u50a8\u8bbe\u5907\u7c7b\u578b": 40, "\u5f20\u91cf\u6709\u8d85\u8fc7100\u4e2a\u64cd\u4f5c\u65b9\u6cd5": 40, "\u5305\u62ec\u7b97\u6570": 40, "\u7ebf\u6027\u4ee3\u6570": 40, "\u77e9\u9635\u64cd\u4f5c": 40, "\u8f6c\u7f6e": 40, "\u7d22\u5f15": 40, "\u5207\u7247": 40, "\u91c7\u6837\u7b49": 40, "\u90fd\u5728": 40, "\u8fd9\u91cc": [40, 41, 90, 93, 95, 96, 104], "\u6709\u8be6\u7ec6\u7684\u63cf\u8ff0": 40, "\u6bcf\u4e2a\u64cd\u4f5c\u90fd\u53ef\u4ee5\u5728gpu\u4e0a\u8fd0\u884c": 40, "\u901a\u5e38\u6bd4\u5728cpu\u4e0a\u901f\u5ea6\u66f4\u5feb": 40, "\u5982\u679c\u4f60\u5728\u4f7f\u7528colab": 40, "\u53ef\u4ee5\u901a\u8fc7\u4fee\u6539runtim": 40, "gpu\u6765\u5206\u914d\u4e00\u4e2agpu": 40, "\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5f20\u91cf\u662f\u5728cpu\u4e0a\u521b\u5efa\u7684": 40, "\u53ef\u4ee5\u901a\u8fc7": [40, 93, 231], "\u65b9\u6cd5\u5c06\u5f20\u91cf\u663e\u793a\u7684\u8f6c\u79fb\u5230gpu\u4e0a": 40, "\u5982\u679cgpu\u5728\u4f60\u7684\u73af\u5883\u91cc\u53ef\u7528\u7684\u8bdd": 40, "\u9700\u8981\u6ce8\u610f\u7684\u662f": 40, "\u5728\u4e0d\u540c\u8bbe\u5907\u95f4\u590d\u5236\u5927\u578b\u5f20\u91cf\u9700\u8981\u6d88\u8017\u5927\u91cf\u5185\u5b58": 40, "\u5e76\u4e14\u8017\u65f6\u8f83\u957f": 40, "\u5c1d\u8bd5\u4e0b\u5217\u64cd\u4f5c": 40, "\u5982\u679c\u4f60\u5df2\u7ecf\u5bf9numpi": 40, "api\u5341\u5206\u719f\u6089": 40, "\u4e0a\u624b\u5f20\u91cfapi\u5c06\u4f1a\u5f88\u7b80\u5355": 40, "\u7c7b\u4f3cnumpy\u7684\u7d22\u5f15\u548c\u5207\u7247\u64cd\u4f5c": 40, "\u8fde\u63a5\u5f20\u91cf": 40, "\u4f60\u53ef\u4ee5\u4f7f\u7528": [40, 95], "\u6cbf\u7740\u7ed9\u5b9a\u7684\u7ef4\u5ea6\u8fde\u63a5\u4e00\u7cfb\u5217\u5f20\u91cf": 40, "\u53e6\u4e00\u4e2a\u5f20\u91cf\u8fde\u63a5\u64cd\u4f5c\u7b26": 40, "\u4e0e": [40, 92, 93, 95, 111], "\u7a0d\u6709\u4e0d\u540c": 40, "\u8bf7\u53c2\u9605": [40, 89, 94, 95, 246], "\u8fd0\u7b97\u64cd\u4f5c": 40, "y1": [40, 178, 245], "y2": 40, "y3": 40, "wise": [40, 48, 73, 95, 99, 110, 124, 135, 144, 147, 150], "z1": [40, 144], "z2": 40, "z3": 40, "\u5355\u4e2a\u5143\u7d20\u7684\u5f20\u91cf": 40, "\u5728\u805a\u5408\u8fd0\u7b97\u573a\u666f\u4e2d": 40, "\u4f60\u53ef\u80fd\u4f1a\u5f97\u5230\u4e00\u4e2a\u5355\u5143\u7d20\u7684\u5f20\u91cf": 40, "\u53ef\u4f7f\u7528": 40, "\u5c06\u5176\u4f20\u5524\u4e3apython\u6570\u503c": 40, "agg": [40, 149, 165], "agg_item": 40, "\u539f\u5730\u64cd\u4f5c": 40, "\u4fee\u6539\u5f20\u91cf\u4e2d\u7684\u539f\u503c\u64cd\u4f5c\u79f0\u4e3a\u539f\u5730\u64cd\u4f5c": 40, "\u5b83\u4eec\u4ee5": 40, "\u540e\u7f00\u8868\u793a": 40, "t_": [40, 48, 262, 271], "\u4f1a\u6539\u53d8": 40, "add_": [40, 48, 80, 95, 127, 128, 173, 174, 189, 206, 216], "\u5f20\u91cf\u5728\u4f7f\u7528cpu\u65f6": 40, "\u53ef\u4e0enumpi": 40, "arrays\u5171\u4eab\u5185\u5b58\u7a7a\u95f4": 40, "\u4fee\u6539\u5176\u4e2d\u4e00\u4e2a\u4f1a\u540c\u6b65\u6620\u5c04\u5230\u53e6\u4e00\u4e2a\u4e0a": 40, "\u5bf9\u4e8e\u5f20\u91cf\u7684\u4fee\u6539\u4f53\u73b0\u5230\u4e86numpi": 40, "array\u4e0a": 40, "\u6570\u636e\u5e76\u4e0d\u603b\u662f\u4ee5\u8bad\u7ec3\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u6240\u9700\u7684\u6700\u7ec8\u5904\u7406\u5f62\u5f0f\u5448\u73b0": 41, "\u6765\u5bf9\u6570\u636e\u8fdb\u884c\u4e00\u4e9b\u5904\u7406": 41, "\u4f7f\u5176\u9002\u7528\u4e8e\u8bad\u7ec3": 41, "\u6240\u6709": [41, 95], "\u6570\u636e\u96c6\u90fd\u6709\u4e24\u4e2a\u53c2\u6570": 41, "\u7528\u4e8e\u4fee\u6539\u7279\u5f81": 41, "\u7528\u4e8e\u4fee\u6539\u6807\u7b7e": 41, "\u5b83\u4eec\u63a5\u53d7\u5305\u542b\u8f6c\u6362\u903b\u8f91\u7684\u53ef\u8c03\u7528\u5bf9\u8c61": 41, "\u6a21\u5757\u63d0\u4f9b\u4e86\u51e0\u79cd\u5e38\u7528\u7684\u8f6c\u6362": 41, "\u7684\u7279\u5f81\u662f\u4ee5": 41, "\u56fe\u50cf\u683c\u5f0f\u5448\u73b0\u7684": 41, "\u6807\u7b7e\u662f\u6574\u6570": 41, "\u5bf9\u4e8e\u8bad\u7ec3": 41, "\u6211\u4eec\u9700\u8981\u5c06\u7279\u5f81\u8f6c\u6362\u4e3a\u5f52\u4e00\u5316\u7684\u5f20\u91cf": 41, "\u5c06\u6807\u7b7e\u8f6c\u6362\u4e3a\u7f16\u7801\u7684\u5f20\u91cf": 41, "\u4e3a\u4e86\u8fdb\u884c\u8fd9\u4e9b\u8f6c\u6362": 41, "\u6211\u4eec\u4f7f\u7528\u4e86": 41, "ds": [41, 127, 128, 165], "scatter_": [41, 134, 149, 161], "\u5c06": [41, 92, 121, 242, 243], "\u56fe\u50cf\u6216": 41, "ndarrai": [41, 48, 51, 95, 110, 171], "\u8f6c\u6362\u4e3a": 41, "floattensor": [41, 49, 60, 95], "\u5e76\u5c06\u56fe\u50cf\u7684\u50cf\u7d20\u5f3a\u5ea6\u503c\u7f29\u653e\u5230\u8303\u56f4": 41, "\u5e94\u7528\u4efb\u4f55\u7528\u6237\u5b9a\u4e49\u7684": 41, "\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u5c06\u6574\u6570\u8f6c\u6362\u4e3a\u72ec\u70ed\u7f16\u7801\u7684\u5f20\u91cf": 41, "\u5b83\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u5927\u5c0f\u4e3a": 41, "\u6211\u4eec\u6570\u636e\u96c6\u4e2d\u6807\u7b7e\u7684\u6570\u91cf": 41, "\u7684\u96f6\u5f20\u91cf": 41, "\u7136\u540e\u8c03\u7528": 41, "\u5728\u7531\u6807\u7b7e": 41, "\u6307\u5b9a\u7684\u7d22\u5f15\u4e0a\u8d4b\u503c\u4e3a": 41, "gschwind": 42, "bt": 42, "fastpath": 42, "acceler": [42, 48, 50, 57, 75, 95, 121, 149, 177, 188, 194, 196, 207, 211, 219, 220, 234, 247, 257], "multiheadattent": [42, 164, 193], "mha": [42, 190, 193], "exploit": [42, 97, 146, 165], "sparsiti": [42, 103, 121, 156, 189, 191, 196], "criteria": [42, 52], "blog": [42, 122, 123, 127, 131, 176, 219, 229], "xlm": [42, 137, 185], "predefin": [42, 49, 97, 136, 200, 221, 247], "robertaclassificationhead": 42, "xlmr_larg": 42, "xlmr_large_encod": 42, "classifier_head": 42, "input_dim": [42, 146, 218, 223], "get_model": [42, 104, 113, 161], "small_input_batch": 42, "hello": [42, 49, 58, 59, 60, 99, 103, 139, 152], "big_input_batch": 42, "princ": 42, "genoa": 42, "lucca": 42, "famili": [42, 219], "estat": 42, "buonapart": 42, "war": 42, "defend": [42, 73], "infami": 42, "horror": 42, "perpetr": 42, "antichrist": 42, "believ": [42, 190], "he": [42, 113, 115, 142, 146, 165], "friend": [42, 49, 152], "faith": 42, "slave": 42, "frighten": 42, "juli": 42, "1805": 42, "speaker": [42, 49], "anna": 42, "pavlovna": 42, "scherer": 42, "maid": 42, "honor": 42, "empress": 42, "marya": 42, "fedorovna": 42, "she": [42, 113, 165], "greet": 42, "vasili": 42, "kuragin": 42, "man": [42, 113, 115, 262, 263, 271, 272], "recept": 42, "cough": 42, "suffer": [42, 61, 113, 168, 216], "la": [42, 99], "gripp": 42, "st": [42, 103, 115], "petersburg": 42, "elit": [42, 261, 263, 265, 270, 272, 274], "input_batch": [42, 49, 58, 59, 60, 158], "model_input": [42, 113], "padding_valu": [42, 118], "_transformer_encoder_layer_fwd": 42, "use_cuda": [42, 49, 73, 89, 119, 129, 146, 232, 238], "enable_nested_tensor": 42, "prop": 43, "proportion": [43, 152], "travers": [43, 163, 221], "walkthrough": [43, 48, 82, 109, 225], "resnet18_weight": [43, 195, 229], "3a": [43, 158], "9a": 43, "2b": 43, "dq": [43, 197], "external_grad": 43, "deposit": 43, "bf": 43, "chain": [43, 99, 100, 115, 129, 144, 161, 191, 200], "acycl": [43, 76], "finetun": [43, 75, 125, 152], "unfrozen": 43, "exclusionari": 43, "autodiff": [43, 121, 145], "pillow": [44, 92, 213], "scipi": [44, 121, 130, 172], "librosa": 44, "cython": 44, "nltk": 44, "spaci": [44, 116, 118], "viz": [44, 90, 229], "huge": [44, 99, 103, 124, 133, 136, 149], "airplan": [44, 97], "automobil": [44, 97], "bird": [44, 92, 250], "deer": [44, 92, 250], "dog": [44, 58, 59, 92, 97, 102, 113, 178, 188, 204, 229, 250, 257], "frog": [44, 92, 250], "hors": [44, 92, 250], "truck": [44, 92, 97, 250], "3x32x32": 44, "color": [44, 51, 52, 58, 59, 90, 94, 126, 146, 147, 158, 169, 171, 178, 213, 231, 262, 271], "32x32": [44, 47, 92, 97, 105, 169], "extrem": [44, 103, 147, 262, 271], "pilimag": 44, "brokenpipeerror": 44, "trainset": [44, 87, 92, 169, 250], "trainload": [44, 87, 92, 169, 250], "testset": [44, 87, 92, 169, 250], "testload": [44, 87, 92, 169, 250], "plane": [44, 92, 134, 250], "car": [44, 58, 59, 92, 113, 250], "fun": [44, 49, 105, 107, 108, 159, 234], "unnorm": [44, 92, 118, 169], "npimg": [44, 92, 94, 96, 169], "datait": [44, 92, 94, 96, 169], "make_grid": [44, 51, 52, 92, 94, 96, 117, 157, 166, 169], "5s": [44, 92], "fc1": [44, 47, 73, 78, 87, 92, 93, 94, 96, 105, 112, 123, 129, 138, 154, 156, 162, 166, 169, 185, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "fc2": [44, 47, 73, 78, 87, 92, 93, 94, 96, 105, 112, 123, 129, 138, 154, 156, 162, 166, 169, 185, 203, 221, 233, 239, 240, 241, 242, 243, 248, 249, 250], "84": [44, 47, 51, 87, 92, 93, 94, 96, 105, 109, 112, 136, 146, 156, 169, 176, 187, 239, 240, 241, 242, 243, 248, 249, 250], "fc3": [44, 47, 87, 92, 93, 94, 96, 105, 112, 138, 156, 169, 239, 240, 241, 242, 243, 248, 249, 250], "classif": [44, 52, 58, 59, 73, 75, 87, 97, 99, 115, 117, 119, 123, 128, 137, 148, 158, 166, 171, 178, 185, 206, 224, 225], "entropi": [44, 52, 118, 124], "running_loss": [44, 87, 92, 94, 96, 97, 117, 157, 169, 250], "2000": [44, 63, 64, 65, 67, 68, 69, 71, 72, 87, 92, 97, 111, 169, 171, 173, 174, 231, 250, 258], "1999": [44, 65, 87, 92, 111, 250], "mini": [44, 47, 49, 52, 78, 79, 87, 102, 104, 139, 146, 154, 158, 169, 204, 221], "cifar_net": 44, "learnt": 44, "truth": [44, 73, 105, 178, 196], "okai": 44, "groundtruth": 44, "wasn": [44, 98, 101], "energi": [44, 49, 60, 262, 271], "chanc": [44, 49, 97, 146, 252], "hmmm": 44, "correct_pr": 44, "classnam": [44, 52], "total_pr": 44, "correct_count": 44, "chat": [44, 49, 60, 79, 165], "cifar10_tutori": [44, 46, 57], "sung": 45, "kim": 45, "jenni": 45, "kang": 45, "mytensor": 45, "my_tensor": [45, 93, 112, 240], "parallelli": 45, "output_s": [45, 49, 51, 60, 78, 127, 128, 136, 165, 178], "data_s": [45, 78], "getitem": [45, 115], "randomdataset": 45, "__getitem__": [45, 51, 104, 135, 178], "rand_load": 45, "capsul": 45, "monitor": [45, 113, 135, 177], "tin": 45, "former_torchi": [45, 77], "parallelism_tutori": [45, 77, 79], "data_parallel_tutori": [45, 46], "neural_networks_tutori": [46, 47, 57], "gentl": [46, 56, 57, 120], "glimps": 47, "convnet": [47, 81, 136, 146, 157, 162], "5x5": [47, 92, 93, 156], "affin": [47, 92, 102, 129, 166, 176, 179, 218, 247], "wx": [47, 92, 93], "c1": [47, 89, 92, 144, 191], "subsampl": 47, "2x2": [47, 93], "c3": [47, 89, 92], "s4": [47, 92], "f5": [47, 92], "f6": [47, 92], "lenet": [47, 73, 92, 93, 96, 156, 221], "nsampl": [47, 49, 78, 236], "nchannel": [47, 78], "next_funct": [47, 89], "clear": [47, 51, 73, 98, 99, 102, 103, 125, 144, 163, 171, 186, 191, 213], "sub_": 47, "nesterov": [47, 112], "overridden": [48, 136, 237], "breez": [48, 80], "subtli": 48, "problemat": [48, 144, 153, 247, 262, 271], "matthew": [49, 60, 86, 112], "inkawhich": [49, 52, 60, 73, 85, 86, 112], "movi": [49, 50, 60, 113], "cornel": [49, 50, 60], "dialog": [49, 50, 60], "hot": [49, 73, 103, 127, 128, 136, 165], "artifici": [49, 60, 97], "intellig": 49, "onlin": [49, 136, 137, 146, 159, 162, 257], "helpdesk": 49, "bot": [49, 60], "compani": [49, 115], "IT": 49, "teach": [49, 52, 97, 165], "boom": 49, "am": [49, 60, 101, 113, 128, 165, 208], "hospit": [49, 113], "lawyer": 49, "arrest": 49, "kid": 49, "sorri": [49, 95], "san": [49, 113], "francisco": [49, 104, 113], "goodby": [49, 193], "luong": [49, 60, 165], "jointli": [49, 165], "acknowledg": [49, 135], "borrow": [49, 61, 123, 134, 163], "yuan": [49, 60, 222], "kuei": [49, 60], "wu": [49, 60, 186], "ywk991112": [49, 60], "sean": [49, 60, 127, 128, 165], "robertson": [49, 60, 127, 128, 165], "spro": [49, 60], "floydhub": [49, 60], "textutil": [49, 60], "unicodedata": [49, 60, 127, 128, 165], "codec": 49, "itertool": [49, 160, 163, 200, 231], "reformat": 49, "rich": [49, 226], "charact": [49, 60, 103, 113, 127, 128, 131, 159, 165, 262, 271], "220": [49, 163], "579": [49, 147], "292": [49, 87], "035": 49, "617": 49, "713": [49, 92], "utter": [49, 50], "divers": 49, "variat": [49, 130, 189, 203], "formal": [49, 189], "sentiment": 49, "datafil": 49, "corpus_nam": [49, 50, 60], "printlin": 49, "readlin": [49, 75, 127, 128], "jsonl": [49, 50], "tab": [49, 116, 165, 169, 188, 226], "sentenc": [49, 60, 93, 98, 99, 102, 103, 113, 118, 128, 135, 137, 165, 193, 262, 271], "loadlinesandconvers": 49, "lineid": 49, "characterid": 49, "conversationid": 49, "movieid": 49, "extractsentencepair": 49, "iso": 49, "8859": 49, "linejson": 49, "lineobj": 49, "conversation_id": 49, "convobj": 49, "movie_id": 49, "qa_pair": 49, "inputlin": 49, "targetlin": 49, "wrong": [49, 52, 73, 99, 127, 144, 172, 195], "formatted_movie_lin": 49, "delimit": [49, 115, 116], "unescap": 49, "unicode_escap": 49, "nprocess": 49, "nwrite": 49, "outputfil": 49, "writer": [49, 94, 96, 127, 137, 142, 158, 159, 169, 185, 245], "linetermin": 49, "writerow": 49, "busi": [49, 115, 128, 176], "implicit": [49, 226, 247, 262, 271], "discret": [49, 220, 262, 271], "voc": [49, 60], "addword": [49, 60, 165], "addsent": [49, 60, 165], "infrequ": 49, "pad_token": [49, 60, 137], "sos_token": [49, 60, 165, 252], "eos_token": [49, 60, 165], "word2index": [49, 60, 165], "word2count": [49, 60, 165], "index2word": [49, 60, 165], "min_count": [49, 60], "keep_word": [49, 60], "reiniti": [49, 52, 60], "unicod": [49, 127, 128, 165], "ascii": [49, 103, 127, 128, 165], "unicodetoascii": [49, 127, 128, 165], "letter": [49, 60, 127, 128, 165, 263, 272], "lowercas": [49, 60, 165], "punctuat": [49, 165], "normalizestr": [49, 60, 165], "aid": [49, 112, 113, 237], "filterpair": [49, 165], "stackoverflow": [49, 127, 128, 160, 165, 231], "518232": [49, 127, 128, 165], "2809427": [49, 127, 128, 165], "nfd": [49, 127, 128, 165], "mn": [49, 127, 128, 165], "za": [49, 60, 165], "readvoc": 49, "loadpreparedata": 49, "save_dir": [49, 60, 146, 171], "npair": 49, "tactic": 49, "benefici": [49, 60, 120], "soften": [49, 97], "difficulti": [49, 159], "trimrareword": 49, "keep_pair": 49, "input_sent": [49, 60, 165], "output_sent": [49, 165], "keep_input": 49, "keep_output": 49, "massag": 49, "accommod": 49, "shorter": [49, 51, 116, 165, 168, 189], "english": [49, 99, 102, 113, 116, 118, 127, 165], "indexesfromsent": [49, 60, 165], "zeropad": 49, "inputvar": 49, "outputvar": 49, "batch2traindata": 49, "bunch": [49, 127, 128, 226], "aforement": [49, 82, 97, 221], "fillvalu": 49, "zip_longest": 49, "binarymatrix": 49, "seq": [49, 98, 102, 124, 134, 136], "indexes_batch": [49, 60], "padlist": 49, "padvar": 49, "max_target_len": 49, "booltensor": 49, "pair_batch": 49, "output_batch": 49, "small_batch_s": 49, "input_vari": 49, "target_vari": 49, "brain": 49, "sutskev": 49, "discov": [49, 108, 113, 135, 162], "accomplish": [49, 52, 150, 202, 215], "jeddy92": [49, 60], "ts_seq2seq_intro": [49, 60], "invent": [49, 52, 159], "cho": [49, 176, 177], "2014": [49, 52], "bidirect": [49, 60, 98, 121, 136, 137], "gru": [49, 60, 93, 110, 127, 128, 165], "past": [49, 50, 101, 194, 213, 262, 271], "colah": 49, "2015": [49, 97], "unpack": [49, 60, 137, 141, 183, 185, 206, 208], "pack_padded_sequ": [49, 60], "pad_packed_sequ": [49, 60], "input_seq": [49, 60, 252], "input_length": [49, 60, 122, 252], "n_layer": [49, 60, 252], "num_direct": 49, "encoderrnn": [49, 60, 165, 252], "sole": [49, 168], "combat": [49, 103], "bahdanau": [49, 165], "groundwork": 49, "h_t": [49, 102], "_s": 49, "attn": [49, 60, 165], "softmax": [49, 60, 90, 93, 97, 102, 103, 104, 110, 127, 128, 158, 161, 163, 165, 169, 193, 219, 256], "concat": [49, 60, 101, 110, 119, 182, 200], "dot_scor": [49, 60], "encoder_output": [49, 60, 165], "general_scor": [49, 60], "concat_scor": [49, 60], "attn_energi": [49, 60], "unidirect": [49, 60], "input_step": [49, 60], "last_hidden": [49, 60, 78], "luongattndecoderrnn": [49, 60, 252], "attn_model": [49, 60], "embedding_dropout": [49, 60], "rnn_output": [49, 60], "attn_weight": [49, 60, 165], "bmm": [49, 60, 144, 165, 193, 207, 231], "concat_input": [49, 60], "concat_output": [49, 60], "masknllloss": 49, "ntotal": 49, "crossentropi": 49, "masked_select": [49, 238], "clever": [49, 99, 113], "teacher": [49, 97, 121, 165], "teacher_forcing_ratio": [49, 165], "wheel": [49, 97, 159, 168, 196], "instabl": [49, 165], "craft": [49, 73, 103, 128], "essenc": [49, 101, 262, 271], "nan": [49, 190], "overshoot": 49, "steep": 49, "cliff": 49, "goodfellow": [49, 52, 73], "2016": 49, "deeplearningbook": 49, "realiti": [49, 52, 60, 73, 101, 157, 164], "encoder_optim": [49, 165], "decoder_optim": [49, 165], "print_loss": 49, "n_total": 49, "encoder_hidden": [49, 60, 165, 252], "decoder_input": [49, 60, 165], "decoder_hidden": [49, 60, 165], "use_teacher_forc": 49, "decoder_output": [49, 60, 165], "mask_loss": 49, "topi": [49, 127, 128, 165], "tie": 49, "trainit": [49, 165], "n_iter": [49, 127, 128, 172], "explanatori": 49, "lift": [49, 58, 59, 113, 205, 223], "tarbal": 49, "encoder_n_lay": [49, 60], "decoder_n_lay": [49, 60, 252], "print_everi": [49, 127, 128, 165], "save_everi": [49, 53, 55, 146], "loadfilenam": [49, 60], "training_batch": 49, "start_iter": 49, "print_loss_avg": [49, 165], "percent": [49, 103, 143, 145, 154, 165, 234], "makedir": [49, 137, 185], "en_opt": [49, 60], "de_opt": [49, 60], "voc_dict": [49, 60], "tar": [49, 60, 75, 112, 118, 236, 241, 262, 271], "NOT": [49, 60, 80, 85, 98, 102, 112, 130, 131, 133, 152, 208], "greedysearchdecod": [49, 252], "all_token": [49, 60], "all_scor": [49, 60], "decoder_scor": [49, 60], "searcher": [49, 60], "evaluateinput": [49, 60], "press": [49, 52, 262, 271], "gracefulli": [49, 53, 162, 214], "prompt": [49, 50, 60, 184, 213, 257], "decoded_word": [49, 60, 165], "output_word": [49, 60, 165], "keyerror": [49, 60], "regardless": [49, 98, 145, 162, 263, 272], "cb_model": [49, 60], "checkpoint_it": [49, 60], "_checkpoint": [49, 60, 122], "encoder_sd": [49, 60], "decoder_sd": [49, 60], "encoder_optimizer_sd": [49, 60], "decoder_optimizer_sd": [49, 60], "embedding_sd": [49, 60], "decoder_learning_ratio": 49, "uncom": [49, 51, 60, 64, 72, 101, 111], "folk": 49, "congratul": [49, 108, 125, 241], "tailor": [49, 135], "cool": [49, 52, 152, 154, 188, 205], "chatbot_tutori": 49, "uninstal": [50, 137], "reinstal": 50, "chatbot": [50, 60, 252], "browser": [50, 105, 168, 262, 271], "subfold": 50, "visit": [50, 112, 113, 127, 184, 221], "in_": 50, "_colab": 50, "_name": 50, "mount": 50, "gdrive": 50, "upload": 50, "rerun": [50, 152], "evolv": [50, 103, 144, 150], "t4": 50, "sasank": [51, 117, 157], "chilamkurthi": [51, 117, 157], "scikit": [51, 137], "skimag": 51, "facial": 51, "pose": [51, 215], "landmark": 51, "dlib": 51, "part_0_x": 51, "part_0_i": 51, "part_1_x": 51, "part_1_i": 51, "part_2_x": 51, "part_67_x": 51, "part_67_i": 51, "0805personali01": 51, "83": [51, 176, 219, 246], "134": [51, 204], "1084239450_e76e00b7e7": 51, "70": [51, 147, 163, 177, 191, 201, 231], "236": 51, "257": [51, 231], "312": [51, 147], "person": [51, 58, 59, 113, 178], "img_nam": 51, "landmarks_fram": 51, "face_landmark": 51, "asarrai": [51, 75, 90], "show_landmark": 51, "scatter": [51, 79, 123, 133, 135, 171], "imread": 51, "facelandmarksdataset": 51, "csv_file": 51, "root_dir": 51, "is_tensor": 51, "face_dataset": 51, "fig": [51, 52, 117, 127, 149, 157, 165, 169], "set_titl": [51, 117, 157, 166, 169], "randomcrop": [51, 157], "crop": [51, 126, 166, 178, 213], "tsfm": 51, "transformed_sampl": 51, "edg": [51, 98, 105, 119, 121, 143, 168, 179, 197, 200, 262, 271], "new_w": 51, "extern": [51, 97, 112, 126, 143, 144, 186, 199, 209, 247, 260, 262, 269, 271], "safer": 51, "stick": [51, 113, 135, 147, 260, 269], "tsfrm": 51, "transformed_dataset": 51, "lose": [51, 53, 97, 146, 227, 234, 251, 260, 269], "collate_fn": [51, 115, 118, 178], "show_landmarks_batch": 51, "sample_batch": 51, "images_batch": 51, "landmarks_batch": 51, "im_siz": 51, "grid_border_s": 51, "indent": [51, 147, 231, 262, 271], "i_batch": 51, "4th": [51, 80, 207], "imagefold": [51, 52, 92, 117, 157], "ant": [51, 117, 157, 265, 274], "xxy": 51, "jpeg": [51, 139, 213], "xxz": 51, "bee": [51, 117, 157, 262, 271], "123": [51, 163, 219, 263, 272], "nsdf3": 51, "asd932_": 51, "data_transform": [51, 117, 157], "randomsizedcrop": 51, "hymenoptera_dataset": 51, "hymenoptera_data": [51, 117, 157], "dataset_load": 51, "\u8ba1\u7b97\u673a\u89c6\u89c9\u8fc1\u79fb\u5b66\u4e60\u6559\u7a0b": [51, 121], "data_loading_tutori": 51, "nathan": [52, 73, 85, 86], "celebr": [52, 121], "pictur": [52, 73, 124, 165], "thorough": [52, 176, 177], "shed": [52, 229], "spend": [52, 82, 152], "sake": [52, 127, 136, 156, 160], "ian": 52, "constantli": [52, 73, 160], "outsmart": 52, "equilibrium": 52, "perfect": [52, 191], "notat": [52, 73, 110], "chw": [52, 158], "3x64x64": 52, "thought": [52, 83, 113, 116, 190, 262, 271], "latent": [52, 103], "p_": 52, "p_g": 52, "minimax": 52, "logd": 52, "underset": 52, "mathbb": [52, 85, 150, 160], "sim": 52, "radford": 52, "unsupervis": 52, "compris": [52, 60, 112], "drawn": [52, 159], "volum": [52, 123], "tip": [52, 58, 59, 103, 169, 235, 251], "dset": 52, "vutil": 52, "anim": 52, "manualse": 52, "use_deterministic_algorithm": 52, "dataroot": 52, "image_s": [52, 152], "spatial": [52, 121, 178], "64x64": 52, "nc": [52, 89], "nz": 52, "ngf": 52, "ndf": 52, "num_epoch": [52, 117, 118, 157, 159, 178, 198], "0002": 52, "ngpu": 52, "celeba": 52, "celeb": 52, "img_align_celeba": 52, "188242": 52, "173822": 52, "284702": 52, "537394": 52, "real_batch": 52, "stdev": 52, "weights_init": 52, "netg": 52, "netd": 52, "constant_": [52, 134], "dataparallel": [52, 120, 121, 125, 137, 149, 185, 230, 247], "downsampl": [52, 134, 146], "promot": 52, "healthi": 52, "bceloss": [52, 110], "ell": [52, 165], "l_1": 52, "l_n": 52, "quad": [52, 160], "y_n": 52, "bce": 52, "gt": [52, 78, 109, 252], "fixed_nois": 52, "establish": [52, 60, 234], "optimizerd": 52, "optimizerg": 52, "Be": 52, "somewhat": 52, "incorrect": [52, 125, 130, 172, 252], "collaps": 52, "went": [52, 144, 197], "ganhack": 52, "secondli": [52, 187], "loss_d": 52, "loss_g": 52, "img_list": 52, "real_cpu": 52, "b_size": 52, "errd_real": 52, "errd_fak": 52, "d_g_z1": 52, "errd": 52, "errg": 52, "d_g_z2": 52, "stat": [52, 55, 122, 159, 168, 195, 198, 238, 246], "tloss_d": 52, "tloss_g": 52, "versu": [52, 73, 121, 207], "im": [52, 75, 113], "artistanim": 52, "repeat_delai": 52, "blit": 52, "to_jshtml": 52, "music": 52, "dcgan_faces_tutori": 52, "mingpt": [53, 54, 55, 56, 131, 132], "aw": [53, 55, 123, 131, 132, 176, 177, 251], "p3": [53, 54, 55, 64, 111, 131, 132], "8xlarg": [53, 55], "failur": [53, 61, 132, 133, 144, 173, 174, 211], "disrupt": 53, "suscept": [53, 215], "elast": [53, 122, 133, 215], "attempt": [53, 99, 122, 173, 174, 207, 237], "minutia": 53, "multinod": [53, 131, 175], "load_snapshot": 53, "snapshot_path": 53, "train_step": 53, "should_checkpoint": 53, "save_snapshot": 53, "membership": [53, 132], "intervent": [53, 97, 185], "diff": [53, 55, 60, 82, 121, 197, 231], "multigpu": [53, 55, 132], "multigpu_torchrun": 53, "envvari": 53, "ddp_setup": [53, 55], "12355": [53, 55, 123, 133, 214], "local_rank": [53, 122, 132, 137, 185], "gpu_id": [53, 55, 132], "_save_snapshot": 53, "model_st": 53, "epochs_run": 53, "_load_snapshot": 53, "max_epoch": [53, 148], "_run_epoch": [53, 55], "total_epoch": [53, 55], "nproc_per_nod": [53, 122, 124, 133, 215], "migrat": [53, 55, 176], "fault": [54, 55, 56, 60, 61, 87, 131, 132], "toler": [54, 55, 56, 61, 87, 131, 132], "cluster": [54, 122, 126, 131, 132, 133, 135, 214, 215], "torchrun": [54, 122, 124, 131, 132, 215], "amazon": 54, "ec2": [54, 123], "gentli": 54, "convert_sync_batchnorm": 55, "single_gpu": 55, "mytraindataset": 55, "distributedsampl": [55, 56, 122, 123, 137, 185], "destroy_process_group": [55, 122, 123, 133, 214], "excess": [55, 82, 124, 220, 230], "set_epoch": [55, 122, 123], "b_sz": 55, "_run_batch": 55, "ckp": 55, "_save_checkpoint": 55, "load_train_obj": 55, "prepare_dataload": 55, "shorthand": [55, 262, 271], "ring": [56, 124], "destroi": [56, 141, 263, 272], "soumith": [57, 81, 135], "chintala": [57, 81, 135], "scientif": [57, 95], "blitz": [57, 105, 110, 169], "jeff": [58, 59, 119], "tang": [58, 59, 119], "review": [58, 59, 78, 113, 131, 137, 157, 173, 174, 176, 177, 189, 190, 192, 220], "jeremiah": [58, 59], "chung": [58, 59, 126], "region": [58, 59, 126, 143, 166, 171, 176, 177, 178, 226, 230, 247], "bicycl": [58, 59], "bu": [58, 59], "autonom": [58, 59], "favor": [58, 126, 150, 159], "pitfal": [58, 59], "beyond": [58, 59, 61, 101, 155, 156, 209], "ndk": [58, 208, 224, 227], "recip": [58, 59, 61, 109, 119, 120, 177, 188, 194, 204, 206, 208, 210, 212, 213, 216, 222, 226, 229, 230, 232, 234, 237, 244, 251, 254, 256, 257, 258], "deeplabv3_script": [58, 59, 204, 222], "deeplabv3_resnet50": [58, 59, 204, 222, 223], "resnet101": [58, 147], "hub": [58, 59, 119, 168, 204, 222, 223], "v0": [58, 59, 121, 146, 160, 178, 204, 222, 223, 259, 268], "scriptedm": [58, 59], "168mb": [58, 59], "deeplab": [58, 59, 121, 204], "input_tensor": [58, 59, 158, 165, 166, 194, 213], "400x400": [58, 59], "oncreat": [58, 208], "mainact": [58, 206, 208, 222], "assetfilepath": [58, 208, 222], "ioexcept": [58, 208], "imagesegment": [58, 204, 222], "breakpoint": [58, 59], "73": [58, 144, 163, 176, 201, 231], "inputtensor": [58, 128, 155, 206], "tensorimageutil": [58, 223], "bitmaptofloat32tensor": 58, "bitmap": 58, "torchvision_norm_mean_rgb": [58, 223], "torchvision_norm_std_rgb": [58, 223], "getdataasfloatarrai": 58, "outtensor": 58, "todictstringkei": 58, "pytorch_vision_deeplabv3_resnet101": [58, 59], "outputtensor": [58, 59, 155, 187, 188, 206, 223], "getwidth": 58, "getheight": 58, "emul": [58, 146, 185, 204], "consum": [58, 59, 75, 107, 109, 125, 144, 149, 159, 161, 163, 164, 182, 188, 195, 200, 213, 247, 256, 257], "bulk": [58, 59, 129], "heaviest": [58, 59], "intvalu": 58, "classnum": [58, 59], "maxi": [58, 59], "maxj": [58, 59], "maxnum": [58, 59], "green": [58, 59, 60, 98, 113, 122, 124, 169], "sheep": [58, 59], "black": [58, 59, 73, 82, 124, 126, 161, 165], "0xffff0000": 58, "0xff00ff00": 58, "0xff0000ff": 58, "0xff000000": 58, "outputbitmap": 58, "imageview": 58, "bmpsegment": 58, "createscaledbitmap": 58, "getconfig": 58, "setpixel": 58, "setimagebitmap": 58, "textview": 58, "helloworld": [59, 119, 187, 188, 224, 225], "deeplabv3_resnet101": 59, "viewcontrol": [59, 222], "swift": [59, 222, 225], "uiviewcontrol": 59, "var": [59, 80, 129, 187, 208], "uiimag": 59, "func": [59, 104, 118, 121, 138, 141, 144, 145, 150, 154, 193, 205, 244], "viewdidload": 59, "torchmodul": [59, 188, 222, 225], "filepath": [59, 222], "forresourc": [59, 222], "oftyp": [59, 222], "fileatpath": [59, 222], "fatalerror": [59, 222], "predictimag": [59, 188], "unsign": [59, 144, 231], "imagebuff": [59, 188], "autogradmod": [59, 208], "non_var_type_mod": 59, "nsmutablearrai": 59, "floatinput": 59, "nil": [59, 222], "addobject": 59, "outputdict": 59, "_impl": [59, 187, 188, 222], "togenericdict": 59, "floatbuff": [59, 206, 223], "temporarili": 59, "nsmutabledata": 59, "datawithlength": 59, "sizeof": [59, 208], "mutablebyt": 59, "floatvalu": 59, "uiimageview": 59, "convertrgbbuffertouiimag": 59, "uiimagehelp": 59, "uitextview": 59, "segmentimag": 59, "phase": [60, 76, 78, 117, 135, 157, 163, 187, 194, 200, 204, 255], "imper": 60, "idiomat": 60, "defer": 60, "optimiz": 60, "decor": [60, 61, 85, 110, 120, 146, 161, 172, 247], "caveat": [60, 113, 133, 161, 200, 237], "remind": [60, 113, 176], "necessarili": [60, 105, 107, 108, 130], "cooper": [60, 220], "chronolog": 60, "attend": 60, "greedili": 60, "_length": 60, "adher": [60, 202], "stem": 60, "surround": 60, "freedom": [60, 165], "__constants__": [60, 252], "liter": [60, 263, 272], "_devic": [60, 252], "_sos_token": [60, 252], "pep": [60, 262, 271], "3107": 60, "mypi": 60, "_decoder_n_lay": [60, 252], "evaluateexampl": 60, "stdin": 60, "4000_checkpoint": 60, "test_seq": 60, "num": [60, 104, 129, 137, 161, 185], "_word": 60, "test_seq_length": 60, "traced_encod": [60, 252], "presenc": [60, 172, 199, 229], "unscript": [60, 256], "test_encoder_output": 60, "test_encoder_hidden": 60, "test_decoder_hidden": 60, "test_decoder_input": 60, "traced_decod": [60, 252], "scripted_search": 60, "script_modul": [60, 85], "scripted_chatbot": 60, "deploy_seq2seq_hybrid_frontend_tutori": 60, "shen": [61, 123, 133, 134, 149, 155, 161, 163], "li": [61, 103, 123, 127, 128, 133, 134, 135, 149, 155, 161, 163, 172, 176, 177], "categor": [61, 82, 136, 161, 163, 177], "lifetim": [61, 163], "c10d": [61, 133, 155, 247], "all_gath": [61, 122, 123, 135, 155], "p2p": 61, "isend": [61, 135], "gradual": [61, 85, 152], "willing": [61, 113], "hurdl": 61, "vldb": 61, "starter": 61, "unbalanc": 61, "zeroredundancyoptim": [61, 155, 251], "footprint": [61, 109, 122, 123, 131, 152, 218, 219, 228, 230, 258], "uneven": [61, 120], "fsdp": [61, 121, 124, 131, 214, 215], "growth": [61, 171, 192], "recoveri": [61, 133], "sometim": [61, 125, 130, 132, 133, 136, 145, 160, 163, 165, 184, 191, 192, 247], "inevit": [61, 133], "oom": [61, 122, 152, 230], "desynchron": 61, "pillar": 61, "protocol": [61, 115], "spirit": [61, 103, 137, 262, 271], "hogwild": 61, "async_execut": [61, 120, 121, 161], "polynomi": [63, 64, 65, 67, 68, 69, 111], "euclidean": [63, 64, 67, 68, 69, 97, 111], "linspac": [63, 64, 65, 67, 68, 69, 71, 72, 89, 111], "held": [63, 78, 97, 103, 111, 127, 162], "polynomial_autograd": 63, "bx": [64, 111], "cx": [64, 99, 111], "p_3": [64, 111], "5x": [64, 111], "legendr": 64, "legendrepolynomial3": [64, 111], "polynomial_custom_funct": 64, "strang": [65, 85, 111, 262, 271], "fifth": [65, 263, 272], "dynamicnet": [65, 111], "tough": [65, 111, 113], "30000": [65, 111, 135], "dynamic_net": 65, "polynomial3": [67, 111], "polynomial_modul": 67, "xx": [68, 69, 111, 144], "flaten": [68, 111], "mse": [68, 93, 97, 111], "linear_lay": [68, 69, 111], "polynomial_nn": 68, "overwritten": [69, 111, 185, 237], "checkout": [69, 111, 117, 188, 206], "polynomial_optim": 69, "\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f": [71, 72], "\u5230": [71, 72, 89, 95, 231], "\u901a\u8fc7\u6700\u5c0f\u5316\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb\u7684\u5e73\u65b9\u6765\u8bad\u7ec3\u9884\u6d4b": 71, "\u8be5\u5b9e\u73b0\u4f7f\u7528": [71, 72], "\u624b\u52a8\u8ba1\u7b97\u524d\u5411\u4f20\u9012": 71, "\u635f\u5931\u548c\u53cd\u5411\u4f20\u9012": [71, 72], "numpy\u6570\u7ec4\u662f\u4e00\u4e2a\u901a\u7528\u7684n\u7ef4\u6570\u7ec4": 71, "\u5b83\u4e0d\u4e86\u89e3\u6df1\u5ea6\u5b66\u4e60": [71, 72], "\u68af\u5ea6\u6216\u8ba1\u7b97\u56fe": 71, "\u53ea\u662f\u7528\u4e8e\u6267\u884c\u901a\u7528\u6570\u503c\u8ba1\u7b97\u7684\u4e00\u4e2a\u5e93": 71, "grad_y_pr": [71, 72, 111], "grad_a": [71, 72, 111], "grad_b": [71, 72, 111], "grad_c": [71, 72, 111], "grad_d": [71, 72, 111], "polynomial_numpi": 71, "\u901a\u8fc7\u6700\u5c0f\u5316\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb\u7684\u5e73\u65b9\u6765\u8bad\u7ec3\u9884\u6d4b\u4ece": 72, "\u5f20\u91cf\u624b\u52a8\u8ba1\u7b97\u524d\u5411\u4f20\u9012": 72, "\u5f20\u91cf\u57fa\u672c\u4e0a\u4e0e": 72, "\u6570\u7ec4\u76f8\u540c": 72, "\u8ba1\u7b97\u56fe\u6216\u68af\u5ea6": 72, "\u53ea\u662f\u7528\u4e8e\u4efb\u610f\u6570\u503c\u8ba1\u7b97\u7684\u901a\u7528n\u7ef4\u6570\u7ec4": 72, "\u6570\u7ec4\u548c": 72, "\u5f20\u91cf\u4e4b\u95f4\u6700\u5927\u7684\u533a\u522b\u662f": 72, "\u5f20\u91cf\u53ef\u4ee5\u5728": 72, "\u4e0a\u8fd0\u884c": 72, "\u4e0a\u8fd0\u884c\u64cd\u4f5c": 72, "\u53ea\u9700\u5c06\u5f20\u91cf\u8f6c\u6362\u4e3a": 72, "polynomial_tensor": 72, "appreci": [73, 98, 113], "overlook": 73, "secur": [73, 168], "awar": [73, 124, 126, 135, 136, 137, 147, 164, 173, 174, 176, 183, 187, 188, 189, 196, 254], "vulner": 73, "surpris": [73, 153], "impercept": 73, "perturb": 73, "drastic": 73, "overarch": 73, "misclassif": 73, "alter": [73, 112, 184, 234, 239], "har": 73, "remark": [73, 172], "jump": [73, 102, 105, 107, 108, 139, 146], "mathbf": 73, "nabla_": [73, 99], "007": 73, "misclassifi": 73, "gibbon": 73, "clearli": [73, 126, 189, 190], "pretrained_model": [73, 171], "lenet_mnist_model": [73, 221], "dropout1": [73, 123, 162, 203, 233], "dropout2": [73, 123, 162, 203, 233], "9216": [73, 123, 129, 154, 162, 203, 233], "log_softmax": [73, 93, 97, 99, 102, 103, 104, 123, 129, 148, 154, 162, 165, 166, 203, 221, 233], "test_load": [73, 97, 123, 129, 162, 166, 221], "1307": [73, 123, 129, 135, 148, 162, 166, 221], "3081": [73, 123, 129, 135, 148, 162, 166, 221], "fgsm_attack": 73, "clean": [73, 102, 122, 123, 133, 152, 187, 189, 195, 262, 271], "data_grad": 73, "_imag": 73, "_grad": 73, "sign_data_grad": 73, "perturbed_imag": 73, "denorm": 73, "strength": [73, 169, 195], "adv_exampl": 73, "init_pr": 73, "bother": 73, "datagrad": 73, "data_denorm": 73, "perturbed_data": 73, "reappli": 73, "perturbed_data_norm": 73, "final_pr": 73, "adv_ex": 73, "adv": 73, "final_acc": 73, "ttest": 73, "trend": [73, 83, 168], "curv": [73, 149, 168, 169], "linearli": 73, "ytick": [73, 169], "xtick": [73, 169], "lunch": [73, 194], "BUT": [73, 101], "percept": 73, "tradeoff": [73, 121, 125, 126, 135, 159], "evid": 73, "fontsiz": 73, "orig": [73, 142], "nip": [73, 118], "defens": 73, "competit": [73, 138, 154], "defenc": 73, "perhap": [73, 127, 156, 214, 252], "dirti": 73, "fgsm_tutori": 73, "torchvision_tutori": [74, 178], "multimod": [75, 121], "ow": 75, "ubiquit": 75, "caption": [75, 262, 265, 271, 274], "vqa": 75, "unimod": 75, "contrast": [75, 128, 149, 154, 177, 189], "textvqa": 75, "bert": [75, 93, 121, 123, 177, 196, 199, 228, 234], "dl": [75, 104, 177, 184, 207, 208, 221, 262, 271], "fbaipublicfil": [75, 184], "pythia": 75, "gz": [75, 104, 118, 236, 262, 263, 271, 272], "xf": 75, "prepend": [75, 154], "exclam": 75, "34602": 75, "answers_textvqa_more_than_1": 75, "answer_to_idx": 75, "uniform": [75, 113, 176, 202], "berttoken": [75, 137, 185], "functool": [75, 87, 113, 122, 123, 141, 145], "image_transform": 75, "return_tensor": 75, "ans_to_count": 75, "max_valu": 75, "ans_idx": 75, "uncas": [75, 137, 144, 177, 185], "set_transform": 75, "flava_model_for_classif": 75, "mlp": [75, 124, 138, 176], "toi": [75, 98, 102, 123, 133, 142, 149, 163, 175, 199, 214, 244], "mdetr": 75, "omnivor": 75, "multitask": 75, "flava_finetuning_tutori": 75, "flush": [76, 94, 96, 188, 203, 208, 230, 245, 262, 271], "twice": [76, 130, 184, 219, 231, 258], "retain_vari": 76, "freed": [76, 122, 152, 197], "fail": [76, 112, 125, 144, 147, 158, 160, 164, 172, 190, 196, 198, 200, 208, 220, 222, 230, 241], "autograd_tutorial_old": [76, 77], "tensor_tutorial_old": [77, 80], "nnft_tutori": [77, 78], "redesign": 78, "concatt": 78, "caddtabl": 78, "nngraph": 78, "input1": 78, "input2": 78, "pdb": 78, "debugg": [78, 104], "mnistconvnet": 78, "pool1": 78, "pool2": 78, "crazi": 78, "legal": [78, 193], "ephemer": [78, 152], "classnll": 78, "err": 78, "printnorm": 78, "register_forward_hook": [78, 239], "printgradnorm": 78, "register_backward_hook": 78, "i2h": [78, 127, 128], "h2o": [78, 127], "penn": [78, 178], "bank": 78, "timestep": [78, 98, 102, 127, 128, 160], "dataparallelmodel": 79, "block2": 79, "block3": 79, "becam": [79, 208], "inaccess": 79, "clash": 79, "mydataparallel": 79, "__getattr__": [79, 85], "attributeerror": 79, "getattr": [79, 146, 147, 185, 209, 247], "primit": [79, 121, 124, 145, 177, 197, 207], "mpi": [79, 135], "parallel_appli": 79, "clariti": [79, 142, 234], "output_devic": [79, 133], "distributedmodel": 79, "\u6df1\u5ea6\u5b66\u4e60": [79, 127, 128, 165], "60\u5206\u949f\u5165\u95e8": [79, 127, 128, 165], "uniniti": [80, 136, 202], "postfix": 80, "narrow_": 80, "lua": [80, 81, 127, 128, 165], "1st": [80, 97, 102, 123], "5th": 80, "camelcas": 80, "anymor": [80, 245], "indexadd": 80, "index_add_": 80, "chartensor": 80, "anupam": [82, 83, 116], "bhatnagar": [82, 83], "holistictraceanalysi": 82, "deactiv": 82, "trace_dir": 82, "trace_analysi": 82, "traceanalysi": 82, "engag": [82, 196], "time_spent_df": 82, "get_temporal_breakdown": 82, "enqueu": 82, "slowdown": [82, 122, 125], "consecut": [82, 128, 136, 146, 149, 158, 171, 177], "insuffici": [82, 160, 176], "delai": [82, 133, 161, 176], "stall": [82, 176, 177], "gap": [82, 85], "nanosecond": 82, "consecutive_kernel_delai": 82, "get_idle_time_breakdown": 82, "idle_time_df": 82, "show_idle_interval_stat": 82, "percentag": [82, 119, 143, 156, 176, 193], "visualize_pctg": 82, "comm": 82, "comp": 82, "mem": [82, 109, 238], "proport": [82, 152], "pie": [82, 152], "chart": 82, "kernel_type_metrics_df": 82, "kernel_metrics_df": 82, "get_gpu_kernel_breakdown": 82, "bottleneck": [82, 109, 122, 124, 132, 134, 149, 152, 161, 168, 172, 176, 177, 210, 226], "plotli": [82, 126], "hover": [82, 126, 158], "pan": 82, "num_kernel": 82, "duration_ratio": 82, "preced": [82, 129, 136, 142, 177, 182, 197, 199, 262, 271], "lab": [82, 169, 184], "image_render": 82, "jupyterlab": 82, "gpu_kernel_breakdown": 82, "tflop": 82, "oversubscrib": 82, "unresolv": [82, 191], "extent": 82, "overlap_df": 82, "get_comm_comp_overlap": 82, "h2d": [82, 212], "d2h": [82, 212], "d2d": 82, "memcpi": 82, "memset": 82, "outstand": [82, 199], "generate_trace_with_count": 82, "_with_count": 82, "screenshot": [82, 226], "get_memory_bw_summari": 82, "get_queue_length_summari": 82, "get_memory_bw_time_seri": 82, "get_queue_length_time_seri": 82, "mem_bw_summari": 82, "queue_len_summari": 82, "mem_bw_seri": 82, "queue_len_seri": 82, "get_queue_length_seri": 82, "25th": 82, "50th": 82, "75th": 82, "percentil": 82, "cudalaunchkernel": 82, "cudamemcpyasync": 82, "cudamemsetasync": 82, "kernel_info_df": 82, "get_cuda_kernel_launch_stat": 82, "outlier": [82, 160], "microsecond": [82, 145, 164, 218, 223, 231], "cutoff": 82, "runtime_cutoff": 82, "launch_delay_cutoff": 82, "occasion": [83, 162, 165], "hta": [83, 168], "tracediff": 83, "cumul": [83, 159, 160, 175], "compare_trac": 83, "ops_diff": 83, "absent": 83, "visualize_counts_diff": 83, "visualize_duration_diff": 83, "ten": [83, 97], "compare_traces_output": 83, "sort_valu": [83, 126], "diff_count": 83, "diff_dur": 83, "differer": 83, "overshadow": 83, "profilerstep": [83, 144], "trace_diff_demo": 83, "learning_hybrid_frontend_through_example_tutori": [84, 85], "hybrid_frontend": 84, "introduction_to_hybrid_frontend_tutori": 84, "intens": [85, 144, 177, 207, 247], "shini": 85, "enjoi": [85, 146], "aquaint": 85, "refin": 85, "proven": [85, 192, 199], "resouc": 85, "consumpt": [85, 109, 122, 124, 126, 144, 156, 168, 213, 251, 258], "discrep": 85, "interwork": 85, "intrus": [85, 152], "broken": [85, 101, 118, 177], "epsilon": [85, 129, 136, 146, 159, 160], "biggl": 85, "lfloor": 85, "prod_": 85, "biggr": 85, "rfloor": 85, "hline": 85, "190": [85, 163, 171, 231], "4377": 85, "59051": 85, "traced_fn": 85, "script_fn": 85, "floor": [85, 95, 127, 128, 165], "accomod": [85, 131], "fmod": [85, 191], "traced_modul": 85, "n_trace": 85, "onnx": [85, 121], "dramat": 87, "industri": 87, "tensorboard": [87, 88, 91, 96, 121, 126, 148, 235, 238, 251], "slight": [87, 130, 219, 232], "pathlib": [87, 104, 122, 126, 146, 171, 194], "random_split": [87, 115], "get_checkpoint": 87, "ashaschedul": 87, "cloudpickl": 87, "trial": [87, 126, 148, 230], "load_data": 87, "train_cifar": 87, "as_directori": 87, "checkpoint_dir": [87, 214], "pkl": [87, 104, 222], "checkpoint_st": 87, "start_epoch": 87, "net_state_dict": 87, "optimizer_state_dict": [87, 112, 214, 220, 241], "luckili": [87, 144, 191], "fraction": 87, "checkpoint_data": 87, "wb": [87, 104, 152, 257], "dump": [87, 144, 152, 188, 207, 222, 231, 246], "from_directori": 87, "val_step": 87, "bad": [87, 113, 125, 139, 173, 174, 177, 184], "wast": [87, 168, 193, 196, 202, 237, 239], "test_ab": 87, "train_subset": 87, "val_subset": 87, "valload": 87, "epoch_step": 87, "test_accuraci": 87, "loguniform": [87, 231], "gpus_per_tri": 87, "resources_per_tri": 87, "num_sampl": [87, 122], "checkpoint_at_end": 87, "max_num_epoch": 87, "abspath": [87, 155], "max_t": 87, "grace_period": 87, "reduction_factor": 87, "best_trial": 87, "get_best_tri": 87, "last_result": 87, "best_trained_model": 87, "best_checkpoint": 87, "get_best_checkpoint": 87, "best_checkpoint_data": 87, "test_acc": 87, "000668163": 87, "31479": 87, "0977": 87, "0331514": 87, "31605": 87, "0983": 87, "000150295": 87, "30755": 87, "1023": 87, "0128248": 87, "66912": 87, "4391": 87, "00464561": 87, "7316": 87, "3463": 87, "00031556": 87, "19409": 87, "1736": 87, "00574329": 87, "85679": 87, "3368": 87, "00325652": 87, "30272": 87, "0984": 87, "000342987": 87, "76044": 87, "003734": 87, "53101": 87, "4761": 87, "0037339984519545164": 87, "5310075663924216": 87, "4737": 87, "hyperparameter_tuning_tutori": 87, "\u7b80\u4ecb": [88, 89, 90, 91, 93, 94], "tensorboard\u652f\u6301": [88, 89, 90, 92, 93, 94, 95, 96], "\u6a21\u578b\u7406\u89e3": [88, 89, 90, 92, 93, 94, 95, 96], "\u4f5c\u8005": 88, "brad": 88, "heintz": 88, "\u672c\u6559\u7a0b\u4e0eyoutube\u4e0a\u7684": 88, "\u521d\u5b66\u8005\u7cfb\u5217": 88, "\u540c\u6b65": 88, "\u6bcf\u4e2a\u90e8\u5206\u7684\u9876\u90e8\u90fd\u6709\u4e00\u4e2acolab\u94fe\u63a5": 88, "\u5b83\u4f1a\u5728\u5b8c\u5168\u6258\u7ba1\u7684\u73af\u5883\u4e2d\u6253\u5f00\u4e00\u4e2a\u5305\u542b\u4ee3\u7801\u7684\u7b14\u8bb0\u672c": 88, "\u4e13\u4e1a\u63d0\u793a": 88, "\u4f7f\u7528gpu\u8fd0\u884c\u65f6\u7684colab\u53ef\u4ee5\u52a0\u901f\u64cd\u4f5c": 88, "\u8fd0\u884c\u65f6": 88, "\u66f4\u6539\u8fd0\u884c\u65f6\u7c7b\u578b": 88, "\u672c\u5730": 88, "\u4e0b\u8f7dnotebook\u6216\u5c06\u4ee3\u7801\u590d\u5236\u5230\u60a8\u559c\u6b22\u7684ide\u4e2d": 88, "\u81ea\u52a8\u5fae\u5206\u57fa\u7840": 88, "\u652f\u6301": [88, 96], "captum": [88, 91, 235, 251], "\u8fdb\u884c\u6a21\u578b\u7406\u89e3": 88, "\u8ddf\u968f\u4e0b\u9762\u7684\u89c6\u9891\u6216\u5728": [89, 90, 92, 93, 94, 95, 96], "\u4e0a\u89c2\u770b": [89, 90, 92, 93, 94, 95, 96], "\u529f\u80fd\u662f\u4f7f": 89, "\u5728\u6784\u5efa\u673a\u5668\u5b66\u4e60\u9879\u76ee\u65f6\u7075\u6d3b\u4e14\u5feb\u901f\u7684\u90e8\u5206\u539f\u56e0": 89, "\u5b83\u5141\u8bb8\u5bf9\u590d\u6742\u8ba1\u7b97\u5feb\u901f\u8f7b\u677e\u5730\u8ba1\u7b97\u591a\u4e2a\u504f\u5bfc\u6570": 89, "\u4e5f\u79f0\u4e3a": 89, "\u8fd9\u4e2a\u64cd\u4f5c\u662f\u57fa\u4e8e\u53cd\u5411\u4f20\u64ad\u7684\u795e\u7ecf\u7f51\u7edc\u5b66\u4e60\u7684\u6838\u5fc3": 89, "\u7684\u5f3a\u5927\u4e4b\u5904\u5728\u4e8e\u5b83\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u5730": 89, "\u8ddf\u8e2a\u4f60\u7684\u8ba1\u7b97": 89, "\u8fd9\u610f\u5473\u7740\u5982\u679c\u4f60\u7684\u6a21\u578b\u6709\u51b3\u7b56\u5206\u652f\u6216\u957f\u5ea6\u5728\u8fd0\u884c\u65f6\u624d\u77e5\u9053\u7684\u5faa\u73af": 89, "\u8ba1\u7b97\u4ecd\u7136\u4f1a\u88ab\u6b63\u786e\u8ddf\u8e2a": 89, "\u4f60\u4f1a\u5f97\u5230\u6b63\u786e\u7684\u68af\u5ea6\u6765\u9a71\u52a8\u5b66\u4e60": 89, "\u7ed3\u5408\u4f60\u7684\u6a21\u578b\u662f\u7528": 89, "\u6784\u5efa\u7684\u4e8b\u5b9e": 89, "\u8fd9\u6bd4\u4f9d\u8d56\u4e8e\u5bf9\u66f4\u52a0\u4e25\u683c\u7ed3\u6784\u5316\u7684\u6a21\u578b\u8fdb\u884c\u9759\u6001\u5206\u6790\u6765\u8ba1\u7b97\u68af\u5ea6\u7684\u6846\u67b6\u63d0\u4f9b\u4e86\u66f4\u5927\u7684\u7075\u6d3b\u6027": 89, "\u673a\u5668\u5b66\u4e60\u6a21\u578b\u662f\u4e00\u4e2a": 89, "\u6709\u8f93\u5165\u548c\u8f93\u51fa": 89, "\u5728\u672c\u8ba8\u8bba\u4e2d": 89, "\u6211\u4eec\u5c06\u628a\u8f93\u5165\u89c6\u4e3a\u4e00\u4e2a": 89, "\u7ef4\u5411\u91cf": 89, "\u5176\u5143\u7d20\u4e3a": 89, "\u7136\u540e\u6211\u4eec\u53ef\u4ee5\u5c06\u6a21\u578b": 89, "\u8868\u793a\u4e3a\u8f93\u5165\u7684\u5411\u91cf\u503c\u51fd\u6570": 89, "\u6211\u4eec\u5c06\u6a21\u578b": 89, "\u7684\u8f93\u51fa\u503c\u89c6\u4e3a\u5411\u91cf": 89, "\u56e0\u4e3a\u4e00\u822c\u6765\u8bf4": 89, "\u4e00\u4e2a\u6a21\u578b\u53ef\u80fd\u6709\u4efb\u610f\u6570\u91cf\u7684\u8f93\u51fa": 89, "\u7531\u4e8e\u6211\u4eec\u4e3b\u8981\u5728\u8bad\u7ec3\u7684\u80cc\u666f\u4e0b\u8ba8\u8bba\u81ea\u52a8\u5fae\u5206": 89, "\u6211\u4eec\u611f\u5174\u8da3\u7684\u8f93\u51fa\u5c06\u662f\u6a21\u578b\u7684\u635f\u5931": 89, "\u662f\u6a21\u578b\u8f93\u51fa\u7684\u5355\u503c\u6807\u91cf\u51fd\u6570": 89, "\u8be5\u51fd\u6570\u8868\u793a\u6211\u4eec\u6a21\u578b\u5bf9\u7279\u5b9a\u8f93\u5165\u7684": 89, "\u7406\u60f3": 89, "\u8f93\u51fa\u7684\u9884\u6d4b\u504f\u5dee\u6709\u591a\u5927": 89, "\u4ece\u8fd9\u4e00\u70b9\u5f00\u59cb": 89, "\u6211\u4eec\u901a\u5e38\u4f1a\u7701\u7565\u5411\u91cf\u7b26\u53f7": 89, "\u4f8b\u5982\u4f7f\u7528": 89, "\u6211\u4eec\u5e0c\u671b\u6700\u5c0f\u5316\u635f\u5931": 89, "\u5728\u7406\u60f3\u60c5\u51b5\u4e0b": [89, 95], "\u5373\u5b8c\u7f8e\u6a21\u578b\u7684\u60c5\u51b5\u4e0b": 89, "\u8fd9\u610f\u5473\u7740\u8c03\u6574\u5176\u5b66\u4e60\u6743\u91cd": 89, "\u4e5f\u5c31\u662f\u8be5\u51fd\u6570\u7684\u53ef\u8c03\u53c2\u6570": 89, "\u4f7f\u5f97\u5bf9\u4e8e\u6240\u6709\u8f93\u5165": 89, "\u635f\u5931\u4e3a\u96f6": 89, "\u5728\u73b0\u5b9e\u4e16\u754c\u4e2d": 89, "\u8fd9\u610f\u5473\u7740\u4e00\u4e2a\u8fed\u4ee3\u8fc7\u7a0b": 89, "\u4e0d\u65ad\u5fae\u8c03\u5b66\u4e60\u6743\u91cd": 89, "\u76f4\u5230\u6211\u4eec\u770b\u5230\u5bf9\u4e8e\u5e7f\u6cdb\u7684\u8f93\u5165": 89, "\u5f97\u5230\u53ef\u63a5\u53d7\u7684\u635f\u5931": 89, "\u6211\u4eec\u5982\u4f55\u51b3\u5b9a\u6743\u91cd\u5e94\u8be5\u671d\u54ea\u4e2a\u65b9\u5411\u5fae\u8c03\u591a\u8fdc\u5462": 89, "\u6211\u4eec\u5e0c\u671b": 89, "\u6700\u5c0f\u5316": 89, "\u8fd9\u610f\u5473\u7740\u4f7f\u5176\u5173\u4e8e\u8f93\u5165\u7684\u4e00\u9636\u5bfc\u6570\u7b49\u4e8e0": 89, "\u4f46\u662f\u8bf7\u8bb0\u4f4f": 89, "\u635f\u5931\u4e0d\u662f": 89, "\u76f4\u63a5": 89, "\u7531\u8f93\u5165\u5bfc\u51fa\u7684": 89, "\u800c\u662f\u7531\u6a21\u578b\u8f93\u51fa\u7684\u51fd\u6570\u5bfc\u51fa\u7684": 89, "\u800c\u6a21\u578b\u8f93\u51fa\u53c8\u662f\u8f93\u5165\u7684\u76f4\u63a5\u51fd\u6570": 89, "\u6839\u636e\u5fae\u79ef\u5206\u7684\u94fe\u5f0f\u6cd5\u5219": 89, "\u6211\u4eec\u6709": [89, 95], "\u662f\u590d\u6742\u7684\u5730\u65b9": 89, "\u5982\u679c\u6211\u4eec\u518d\u6b21\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219\u5c55\u5f00\u6a21\u578b\u8f93\u51fa\u5173\u4e8e\u8f93\u5165\u7684\u504f\u5bfc\u6570\u7684\u8868\u8fbe\u5f0f": 89, "\u5b83\u5c06\u6d89\u53ca\u6bcf\u4e2a\u4e58\u4ee5\u7684\u5b66\u4e60\u6743\u91cd": 89, "\u6bcf\u4e2a\u6fc0\u6d3b\u51fd\u6570\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u6bcf\u4e2a\u5176\u4ed6\u6570\u5b66\u53d8\u6362\u7684\u8bb8\u591a\u5c40\u90e8\u504f\u5bfc\u6570": 89, "\u6211\u4eec\u8bd5\u56fe\u6d4b\u91cf\u5176\u68af\u5ea6\u7684\u6bcf\u4e2a\u53d8\u91cf\u7684\u5b8c\u6574\u8868\u8fbe\u5f0f": 89, "\u90fd\u662f\u901a\u8fc7\u8ba1\u7b97\u56fe\u4e2d\u6240\u6709\u53ef\u80fd\u8def\u5f84\u7684\u5c40\u90e8\u68af\u5ea6\u4e4b\u548c\u7684\u4e58\u79ef": 89, "\u7279\u522b\u611f\u5174\u8da3\u7684\u662f\u5b66\u4e60\u6743\u91cd\u4e0a\u7684\u68af\u5ea6": 89, "\u5b83\u4eec\u544a\u8bc9\u6211\u4eec": 89, "\u5e94\u8be5\u671d\u54ea\u4e2a\u65b9\u5411\u6539\u53d8\u6bcf\u4e2a\u6743\u91cd": 89, "\u4ee5\u4f7f\u635f\u5931\u51fd\u6570\u66f4\u63a5\u8fd1\u4e8e\u96f6": 89, "\u7531\u4e8e\u8fd9\u4e9b\u5c40\u90e8\u5bfc\u6570\u7684\u6570\u91cf": 89, "\u6bcf\u4e2a\u5bf9\u5e94\u4e8e\u8ba1\u7b97\u56fe\u4e2d\u7684\u5355\u72ec\u8def\u5f84": 89, "\u5f80\u5f80\u4f1a\u968f\u7740\u795e\u7ecf\u7f51\u7edc\u7684\u6df1\u5ea6\u5448\u6307\u6570\u589e\u957f": 89, "\u56e0\u6b64\u8ba1\u7b97\u5b83\u4eec\u7684\u590d\u6742\u5ea6\u4e5f\u4f1a\u589e\u52a0": 89, "\u8fd9\u5c31\u662f\u81ea\u52a8\u5fae\u5206\u53d1\u6325\u4f5c\u7528\u7684\u5730\u65b9": 89, "\u5b83\u8ddf\u8e2a\u6bcf\u4e00\u6b65\u8ba1\u7b97\u7684\u5386\u53f2": 89, "\u4f60\u5728pytorch\u6a21\u578b\u4e2d\u8ba1\u7b97\u7684\u6bcf\u4e2a\u5f20\u91cf\u90fd\u4fdd\u7559\u4e86\u5176\u8f93\u5165\u5f20\u91cf\u548c\u521b\u5efa\u5b83\u7684\u51fd\u6570\u7684\u5386\u53f2\u8bb0\u5f55": 89, "\u7ed3\u5408pytorch\u4e2d\u7528\u4e8e\u5bf9\u5f20\u91cf\u8fdb\u884c\u64cd\u4f5c\u7684\u6bcf\u4e2a\u51fd\u6570\u90fd\u5185\u7f6e\u4e86\u8ba1\u7b97\u81ea\u8eab\u5bfc\u6570\u7684\u5b9e\u73b0\u8fd9\u4e00\u4e8b\u5b9e": 89, "\u8fd9\u6781\u5927\u5730\u52a0\u5feb\u4e86\u5b66\u4e60\u6240\u9700\u7684\u5c40\u90e8\u5bfc\u6570\u7684\u8ba1\u7b97\u901f\u5ea6": 89, "\u8fd9\u662f\u5f88\u591a\u7406\u8bba": 89, "\u4f46\u5728\u5b9e\u8df5\u4e2d\u4f7f\u7528\u81ea\u52a8\u5fae\u5206\u662f\u4ec0\u4e48\u6837\u7684\u5462": 89, "\u8ba9\u6211\u4eec\u4ece\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u5f00\u59cb": 89, "\u9996\u5148": [89, 90, 92, 95, 104, 231], "\u6211\u4eec\u5c06\u5bfc\u5165\u4e00\u4e9b\u5185\u5bb9": 89, "\u4ee5\u4fbf\u53ef\u4ee5\u7ed8\u5236\u7ed3\u679c": 89, "ticker": [89, 127, 165], "\u63a5\u4e0b\u6765": [89, 92, 95, 104], "\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u8f93\u5165\u5f20\u91cf": 89, "\u5176\u503c\u5747\u5300\u5206\u5e03\u5728\u533a\u95f4": 89, "2\u03c0": 89, "\u5e76\u6307\u5b9a": 89, "\u4e0e\u5927\u591a\u6570\u521b\u5efa\u5f20\u91cf\u7684\u51fd\u6570\u4e00\u6837": 89, "\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u7684": 89, "\u9009\u9879": 89, "\u8bbe\u7f6e\u6b64\u6807\u5fd7\u610f\u5473\u7740\u5728\u968f\u540e\u7684\u6bcf\u4e2a\u8ba1\u7b97\u4e2d": 89, "\u90fd\u4f1a\u5728\u8be5\u8ba1\u7b97\u7684\u8f93\u51fa\u5f20\u91cf\u4e2d\u7d2f\u79ef\u8ba1\u7b97\u5386\u53f2": 89, "\u6211\u4eec\u5c06\u6267\u884c\u4e00\u4e2a\u8ba1\u7b97": 89, "\u5e76\u7ed8\u5236\u5176\u8f93\u51fa\u4e0e\u8f93\u5165\u7684\u5173\u7cfb\u56fe": 89, "\u8ba9\u6211\u4eec\u4ed4\u7ec6\u770b\u770b\u5f20\u91cf": 89, "\u5f53\u6211\u4eec\u6253\u5370\u5b83\u65f6": 89, "\u6211\u4eec\u770b\u5230\u4e00\u4e2a\u6307\u793a\u5b83\u6b63\u5728\u8ddf\u8e2a\u5176\u8ba1\u7b97\u5386\u53f2\u7684\u6307\u793a\u7b26": 89, "\u8fd9\u4e2a": [89, 92], "\u7ed9\u4e86\u6211\u4eec\u4e00\u4e2a\u63d0\u793a": 89, "\u5f53\u6211\u4eec\u6267\u884c\u53cd\u5411\u4f20\u64ad\u6b65\u9aa4\u5e76\u8ba1\u7b97\u68af\u5ea6\u65f6": 89, "\u6211\u4eec\u9700\u8981\u8ba1\u7b97\u6240\u6709\u8fd9\u4e2a\u5f20\u91cf\u8f93\u5165\u7684": 89, "\u7684\u5bfc\u6570": 89, "\u8ba9\u6211\u4eec\u6267\u884c\u66f4\u591a\u8ba1\u7b97": 89, "\u6700\u540e": [89, 92, 96, 104, 240], "\u8ba9\u6211\u4eec\u8ba1\u7b97\u4e00\u4e2a\u5355\u5143\u7d20\u8f93\u51fa": 89, "\u5f53\u4f60\u5728\u4e0d\u5e26\u53c2\u6570\u7684\u60c5\u51b5\u4e0b\u5bf9\u4e00\u4e2a\u5f20\u91cf\u8c03\u7528": 89, "\u5b83\u671f\u671b\u8c03\u7528\u5f20\u91cf\u53ea\u5305\u542b\u4e00\u4e2a\u5143\u7d20": 89, "\u5c31\u50cf\u5728\u8ba1\u7b97\u635f\u5931\u51fd\u6570\u65f6\u4e00\u6837": 89, "\u6bcf\u4e2a\u5b58\u50a8\u5728\u6211\u4eec\u5f20\u91cf\u4e2d\u7684": 89, "\u5141\u8bb8\u4f60\u4f7f\u7528\u5176": 89, "\u6cbf\u7740\u8ba1\u7b97\u8def\u5f84\u4e00\u76f4\u56de\u6eaf\u5230\u5176\u8f93\u5165": 89, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230": 89, "\u4e0a\u6df1\u5165\u94bb\u7814\u8fd9\u4e2a\u5c5e\u6027\u4f1a\u663e\u793a\u6211\u4eec\u4e4b\u524d\u6240\u6709\u5f20\u91cf\u7684\u68af\u5ea6\u51fd\u6570": 89, "\u88ab\u62a5\u544a\u4e3a": 89, "\u8868\u793a\u8fd9\u662f\u4e00\u4e2a\u6ca1\u6709\u81ea\u8eab\u5386\u53f2\u7684\u51fd\u6570\u8f93\u5165": 89, "na": [89, 92], "\u6709\u4e86\u8fd9\u4e9b\u673a\u5236": 89, "\u6211\u4eec\u5982\u4f55\u83b7\u53d6\u5bfc\u6570\u5462": 89, "\u60a8\u5728\u8f93\u51fa\u4e0a\u8c03\u7528": 89, "\u5e76\u68c0\u67e5\u8f93\u5165\u7684": 89, "\u5c5e\u6027\u6765\u68c0\u67e5\u68af\u5ea6": 89, "\u56de\u987e\u4e00\u4e0b\u6211\u4eec\u4e3a\u4e86\u8fbe\u5230\u8fd9\u4e00\u6b65\u6240\u91c7\u53d6\u7684\u8ba1\u7b97\u6b65\u9aa4": 89, "\u6dfb\u52a0\u4e00\u4e2a\u5e38\u6570": 89, "\u5c31\u50cf\u6211\u4eec\u8ba1\u7b97": 89, "\u65f6\u6240\u505a\u7684\u90a3\u6837": 89, "\u4e0d\u4f1a\u6539\u53d8\u5bfc\u6570": 89, "\u5269\u4e0b\u7684\u5c31\u662f": 89, "\u5b83\u7684\u5bfc\u6570\u5e94\u8be5\u662f": 89, "\u4ece\u4e0a\u9762\u7684\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa": 89, "\u8fd9\u6b63\u662f\u6211\u4eec\u6240\u770b\u5230\u7684": 89, "\u8bf7\u6ce8\u610f": [89, 96, 104, 249], "\u53ea\u6709\u8ba1\u7b97\u56fe\u7684": 89, "\u53f6\u5b50\u8282\u70b9": 89, "\u624d\u4f1a\u8ba1\u7b97\u5b83\u4eec\u7684\u68af\u5ea6": 89, "\u5982\u679c\u4f60\u5c1d\u8bd5": 89, "\u4f60\u4f1a\u5f97\u5230": 89, "\u5728\u8fd9\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u4e2d": 89, "\u53ea\u6709\u8f93\u5165\u662f\u53f6\u5b50\u8282\u70b9": 89, "\u6240\u4ee5\u53ea\u6709\u5b83\u6709\u8ba1\u7b97\u68af\u5ea6": 89, "\u6211\u4eec\u5df2\u7ecf\u7b80\u5355\u5730\u770b\u4e86\u4e00\u4e0b\u81ea\u52a8\u6c42\u5bfc\u662f\u5982\u4f55\u5de5\u4f5c\u7684": 89, "\u4f46\u662f\u5f53\u5b83\u5728\u5b9e\u9645\u5e94\u7528\u4e2d": 89, "\u770b\u8d77\u6765\u4f1a\u662f\u4ec0\u4e48\u6837\u5b50\u5462": 89, "\u8ba9\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u5c0f\u6a21\u578b\u5e76\u68c0\u67e5\u5b83\u5728\u5355\u4e2a\u8bad\u7ec3\u6279\u6b21\u540e\u662f\u5982\u4f55\u53d8\u5316\u7684": 89, "\u5b9a\u4e49\u4e00\u4e9b\u5e38\u91cf": 89, "\u6211\u4eec\u7684\u6a21\u578b": 89, "\u4ee5\u53ca\u4e00\u4e9b\u8f93\u5165\u548c\u8f93\u51fa": 89, "dim_in": 89, "dim_out": 89, "tinymodel": [89, 93], "layer2": [89, 149, 157, 160], "some_input": 89, "ideal_output": 89, "\u4f60\u53ef\u80fd\u4f1a\u6ce8\u610f\u5230": 89, "\u6211\u4eec\u4ece\u672a\u4e3a\u6a21\u578b\u7684\u5c42\u8bbe\u7f6e": 89, "\u7684\u5b50\u7c7b\u4e2d": 89, "\u5047\u5b9a\u6211\u4eec\u5e0c\u671b\u8ddf\u8e2a\u5c42\u6743\u91cd\u7684\u68af\u5ea6\u4ee5\u8fdb\u884c\u5b66\u4e60": 89, "\u5982\u679c\u6211\u4eec\u67e5\u770b\u6a21\u578b\u7684\u5c42": 89, "\u6211\u4eec\u53ef\u4ee5\u68c0\u67e5\u6743\u91cd\u7684\u503c": 89, "\u5e76\u9a8c\u8bc1\u5c1a\u672a\u8ba1\u7b97\u4efb\u4f55\u68af\u5ea6": 89, "\u53ea\u6253\u5370\u4e00\u5c0f\u90e8\u5206": 89, "\u8ba9\u6211\u4eec\u770b\u770b\u5f53\u6211\u4eec\u8fd0\u884c\u4e00\u4e2a\u8bad\u7ec3\u6279\u6b21\u65f6\u4f1a\u53d1\u751f\u4ec0\u4e48\u53d8\u5316": 89, "\u4f5c\u4e3a\u635f\u5931\u51fd\u6570": [89, 104], "\u4e4b\u95f4\u7684\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb\u7684\u5e73\u65b9": 89, "\u5e76\u4f7f\u7528\u57fa\u672c\u7684\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u4f18\u5316\u5668": 89, "\u73b0\u5728": [89, 90, 94, 104, 236], "\u8ba9\u6211\u4eec\u8c03\u7528": 89, "\u5e76\u770b\u770b\u4f1a\u53d1\u751f\u4ec0\u4e48": 89, "\u6bcf\u4e2a\u5b66\u4e60\u6743\u91cd\u7684\u68af\u5ea6\u90fd\u5df2\u7ecf\u8ba1\u7b97\u51fa\u6765\u4e86": 89, "\u4f46\u6743\u91cd\u4fdd\u6301\u4e0d\u53d8": 89, "\u56e0\u4e3a\u6211\u4eec\u8fd8\u6ca1\u6709\u8fd0\u884c\u4f18\u5316\u5668": 89, "\u4f18\u5316\u5668\u8d1f\u8d23\u6839\u636e\u8ba1\u7b97\u51fa\u7684\u68af\u5ea6\u66f4\u65b0\u6a21\u578b\u6743\u91cd": 89, "\u4f60\u5e94\u8be5\u770b\u5230": 89, "\u7684\u6743\u91cd\u5df2\u7ecf\u6539\u53d8": 89, "\u5173\u4e8e\u8fd9\u4e2a\u8fc7\u7a0b\u7684\u4e00\u4e2a\u91cd\u8981\u4e8b\u9879": 89, "\u5728\u8c03\u7528": 89, "\u4e4b\u540e": [89, 104], "\u4f60\u9700\u8981\u8c03\u7528": 89, "\u5426\u5219\u6bcf\u6b21\u4f60\u8fd0\u884c": 89, "\u5b66\u4e60\u6743\u91cd\u4e0a\u7684\u68af\u5ea6\u5c06\u4f1a\u7d2f\u79ef": 89, "set_to_non": [89, 230, 247], "\u5728\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u540e": 89, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u5728\u591a\u6b21\u8fd0\u884c": 89, "\u5927\u591a\u6570\u68af\u5ea6\u7684\u5e45\u5ea6\u4f1a\u53d8\u5f97\u66f4\u5927": 89, "\u5982\u679c\u5728\u8fd0\u884c\u4e0b\u4e00\u4e2a\u8bad\u7ec3\u6279\u6b21\u4e4b\u524d": 89, "\u6ca1\u6709\u5c06\u68af\u5ea6\u6e05\u96f6": 89, "\u68af\u5ea6\u5c31\u4f1a\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u81a8\u80c0": 89, "\u4ece\u800c\u5bfc\u81f4\u4e0d\u6b63\u786e\u548c": 89, "\u4e0d\u53ef\u9884\u6d4b\u7684\u5b66\u4e60\u7ed3\u679c": 89, "\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b": [89, 240, 250], "\u4f60\u9700\u8981\u5bf9\u662f\u5426\u542f\u7528\u81ea\u52a8\u6c42\u5bfc\u8fdb\u884c\u7ec6\u7c92\u5ea6\u63a7\u5236": 89, "\u6709\u591a\u79cd\u65b9\u6cd5\u53ef\u4ee5\u505a\u5230\u8fd9\u4e00\u70b9": 89, "\u5177\u4f53\u53d6\u51b3\u4e8e\u60c5\u51b5": 89, "\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u76f4\u63a5\u66f4\u6539\u5f20\u91cf\u4e0a\u7684": 89, "\u6807\u5fd7": 89, "b1": 89, "b2": 89, "\u5728\u4e0a\u9762\u7684\u5355\u5143\u683c\u4e2d": [89, 95], "\u6709\u4e00\u4e2a": [89, 93], "\u4e00\u4e2a": [89, 92, 233, 249], "\u8ba1\u7b97\u5386\u53f2\u7684\u8ddf\u8e2a\u8bb0\u5f55": 89, "\u8fd9\u662f\u6211\u4eec\u6240\u671f\u671b\u7684": 89, "\u56e0\u4e3a\u5b83\u662f\u4ece\u4e00\u4e2a\u542f\u7528\u4e86": 89, "\u7684\u5f20\u91cf": [89, 92, 95, 111], "\u6d3e\u751f\u51fa\u6765\u7684": 89, "\u5f53\u6211\u4eec\u4f7f\u7528": 89, "\u663e\u5f0f\u5730\u5173\u95ed": 89, "\u8ba1\u7b97\u5386\u53f2\u5c31\u4e0d\u518d\u88ab\u8ddf\u8e2a\u4e86": 89, "\u6b63\u5982\u6211\u4eec\u5728\u8ba1\u7b97": 89, "\u6240\u770b\u5230\u7684\u90a3\u6837": 89, "\u5982\u679c\u4f60\u53ea\u9700\u8981\u4e34\u65f6\u5173\u95ed": 89, "\u4e00\u4e2a\u66f4\u597d\u7684\u65b9\u6cd5\u662f\u4f7f\u7528": 89, "c2": 89, "\u4e5f\u53ef\u4ee5\u7528\u4f5c\u51fd\u6570\u6216\u65b9\u6cd5\u88c5\u9970\u5668": 89, "add_tensors1": 89, "add_tensors2": 89, "\u6709\u4e00\u4e2a\u5bf9\u5e94\u7684\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668": 89, "enable_grad": 89, "\u7528\u4e8e\u5728\u5c1a\u672a\u542f\u7528\u65f6": 89, "\u6253\u5f00": [89, 95, 121], "\u5b83\u4e5f\u53ef\u4ee5\u7528\u4f5c\u88c5\u9970\u5668": 89, "\u4f60\u53ef\u80fd\u6709\u4e00\u4e2a\u9700\u8981\u68af\u5ea6\u8ddf\u8e2a\u7684\u5f20\u91cf": 89, "\u4f46\u4f60\u60f3\u8981\u4e00\u4e2a\u4e0d\u9700\u8981\u7684\u526f\u672c": 89, "\u4e3a\u6b64": [89, 90, 94, 95, 104], "\u6211\u4eec\u6709\u5f20\u91cf\u5bf9\u8c61\u7684": 89, "\u5b83\u521b\u5efa\u4e00\u4e2a\u4e0e\u8ba1\u7b97\u5386\u53f2": 89, "\u5206\u79bb": 89, "\u7684\u5f20\u91cf\u526f\u672c": 89, "\u6211\u4eec\u4e4b\u524d\u8fd9\u6837\u505a\u662f\u56e0\u4e3a\u6211\u4eec\u60f3\u8981\u7ed8\u5236\u4e00\u4e9b\u5f20\u91cf\u7684\u56fe\u50cf": 89, "\u8fd9\u662f\u56e0\u4e3a": [89, 90, 231], "\u671f\u671b\u8f93\u5165\u662f\u4e00\u4e2a": 89, "\u6570\u7ec4": [89, 104], "\u800c\u4ece\u5177\u6709": 89, "\u6570\u7ec4\u7684\u9690\u5f0f\u8f6c\u6362\u662f\u4e0d\u5141\u8bb8\u7684": 89, "\u5236\u4f5c\u4e00\u4e2a\u5206\u79bb\u7684\u526f\u672c\u8ba9\u6211\u4eec\u53ef\u4ee5\u7ee7\u7eed\u524d\u8fdb": 89, "\u5728\u672c\u7ec3\u4e60\u4e2d\u5230\u76ee\u524d\u4e3a\u6b62\u7684\u6bcf\u4e2a\u793a\u4f8b\u4e2d": 89, "\u6211\u4eec\u90fd\u4f7f\u7528\u4e86\u53d8\u91cf\u6765\u6355\u83b7\u8ba1\u7b97\u7684\u4e2d\u95f4\u503c": 89, "\u9700\u8981\u8fd9\u4e9b\u4e2d\u95f4\u503c\u6765\u6267\u884c\u68af\u5ea6\u8ba1\u7b97": 89, "\u5728\u4f7f\u7528": 89, "\u4f60\u5fc5\u987b": 89, "\u5c0f\u5fc3\u4f7f\u7528\u539f\u4f4d\u64cd\u4f5c": 89, "\u8fd9\u6837\u505a\u53ef\u80fd\u4f1a\u7834\u574f\u8ba1\u7b97\u5bfc\u6570\u6240\u9700\u7684\u4fe1\u606f": 89, "\u8c03\u7528\u65f6\u9700\u8981\u8fd9\u4e9b\u4fe1\u606f": 89, "\u5982\u679c\u4f60\u5c1d\u8bd5\u5bf9\u9700\u8981": 89, "\u7684\u53f6\u53d8\u91cf\u8fdb\u884c\u539f\u4f4d\u64cd\u4f5c": 89, "\u751a\u81f3\u4f1a\u963b\u6b62\u4f60": 89, "\u5982\u4e0b\u6240\u793a": [89, 104], "\u4f1a\u8be6\u7ec6\u8ddf\u8e2a\u4f60\u7684\u6bcf\u4e00\u6b65\u8ba1\u7b97": 89, "\u8fd9\u79cd\u8ba1\u7b97\u5386\u53f2": 89, "\u7ed3\u5408\u65f6\u95f4\u4fe1\u606f": 89, "\u5c06\u6784\u6210\u4e00\u4e2a\u65b9\u4fbf\u7684\u5206\u6790\u5668": 89, "\u5c31\u5185\u7f6e\u4e86\u8fd9\u4e2a\u529f\u80fd": 89, "\u8fd9\u91cc\u6709\u4e00\u4e2a\u5feb\u901f\u4f7f\u7528\u793a\u4f8b": 89, "run_on_gpu": 89, "prf": 89, "key_averag": [89, 109, 144, 164, 219, 238], "sort_bi": [89, 109, 144, 164, 219, 238], "self_cpu_time_tot": [89, 109, 119, 144, 219, 238], "\u5206\u6790\u5668\u53ef\u4ee5\u6807\u8bb0\u4ee3\u7801\u7684\u5355\u4e2a\u5b50\u5757": 89, "\u6309\u8f93\u5165\u5f20\u91cf\u5f62\u72b6\u5206\u89e3\u6570\u636e": 89, "\u5e76\u5c06\u6570\u636e\u5bfc\u51fa\u4e3a": 89, "\u8ddf\u8e2a\u5de5\u5177\u6587\u4ef6": 89, "\u6709\u5173": 89, "\u7684\u5b8c\u6574\u8be6\u7ec6\u4fe1\u606f": 89, "\u5982\u679c\u4f60\u6709\u4e00\u4e2a\u5177\u6709": 89, "\u7ef4\u8f93\u5165\u548c": 89, "\u7ef4\u8f93\u51fa\u7684\u51fd\u6570": 89, "\u5b8c\u6574\u7684\u68af\u5ea6\u662f\u6bcf\u4e2a\u8f93\u51fa\u76f8\u5bf9\u4e8e\u6bcf\u4e2a\u8f93\u5165\u7684": 89, "\u5bfc\u6570\u7684\u77e9\u9635": 89, "\u5982\u679c\u4f60\u6709\u7b2c\u4e8c\u4e2a\u51fd\u6570": 89, "\u5b83": [89, 95, 96], "\u63a5\u53d7": 89, "\u7ef4\u8f93\u5165": 89, "\u4e5f\u5c31\u662f\u4e0e\u4e0a\u9762\u7684\u8f93\u51fa\u5177\u6709\u76f8\u540c\u7684\u7ef4\u5ea6": 89, "\u5e76\u8fd4\u56de\u4e00\u4e2a": 89, "\u6807\u91cf\u8f93\u51fa": 89, "\u4f60\u53ef\u4ee5\u7528\u4e00\u4e2a\u5217\u5411\u91cf\u6765\u8868\u793a\u5b83\u76f8\u5bf9\u4e8e": 89, "\u7684\u68af\u5ea6": 89, "\u8fd9\u5b9e\u9645\u4e0a\u53ea\u662f\u4e00\u4e2a\u4e00\u5217\u7684": 89, "\u66f4\u5177\u4f53\u5730\u8bf4": 89, "\u60f3\u8c61\u7b2c\u4e00\u4e2a\u51fd\u6570\u662f\u4f60\u7684": 89, "\u6a21\u578b": [89, 93, 121, 139, 233, 240], "\u53ef\u80fd\u6709\u8bb8\u591a\u8f93\u5165\u548c\u8bb8\u591a\u8f93\u51fa": 89, "\u7b2c\u4e8c\u4e2a\u51fd\u6570\u662f\u4e00\u4e2a\u635f\u5931\u51fd\u6570": 89, "\u4ee5\u6a21\u578b\u7684\u8f93\u51fa\u4f5c\u4e3a\u8f93\u5165": 89, "\u635f\u5931\u503c\u4f5c\u4e3a\u6807\u91cf\u8f93\u51fa": 89, "\u5982\u679c\u6211\u4eec\u5c06\u7b2c\u4e00\u4e2a\u51fd\u6570\u7684": 89, "\u4e0e\u7b2c\u4e8c\u4e2a\u51fd\u6570\u7684\u68af\u5ea6\u76f8\u4e58": 89, "\u5e76\u5e94\u7528\u94fe\u5f0f\u6cd5\u5219": 89, "\u6211\u4eec\u5f97\u5230": 89, "\u4f60\u4e5f\u53ef\u4ee5\u4f7f\u7528\u7b49\u4ef7\u7684\u64cd\u4f5c": 89, "\u5e76\u5f97\u5230\u4e00\u4e2a\u884c\u5411\u91cf": 89, "\u6240\u5f97\u5230\u7684\u5217\u5411\u91cf\u5c31\u662f": 89, "\u7b2c\u4e8c\u4e2a\u51fd\u6570\u76f8\u5bf9\u4e8e\u7b2c\u4e00\u4e2a\u51fd\u6570\u7684\u8f93\u5165\u7684\u68af\u5ea6": 89, "\u6216\u8005\u5728\u6211\u4eec\u7684": 89, "\u6a21\u578b\u548c\u635f\u5931\u51fd\u6570\u7684\u60c5\u51b5\u4e0b": 89, "\u5c31\u662f\u635f\u5931\u76f8\u5bf9\u4e8e\u6a21\u578b\u8f93\u5165\u7684\u68af\u5ea6": 89, "\u662f\u4e00\u4e2a\u7528\u4e8e\u8ba1\u7b97\u8fd9\u4e9b\u4e58\u79ef\u7684\u5f15\u64ce": 89, "\u8fd9\u5c31\u662f\u6211\u4eec\u5728": 89, "\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u5982\u4f55\u7d2f\u79ef\u5b66\u4e60\u6743\u91cd\u7684\u68af\u5ea6": 89, "\u8c03\u7528\u4e5f\u53ef\u4ee5": 89, "\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u7684\u5411\u91cf\u8f93\u5165": 89, "\u8be5\u5411\u91cf\u8868\u793a": 89, "\u5f20\u91cf\u4e0a\u7684\u4e00\u7ec4\u68af\u5ea6": 89, "\u8fd9\u4e9b\u68af\u5ea6\u5c06\u4e58\u4ee5\u524d\u9762\u7684": 89, "\u8ddf\u8e2a\u5f20\u91cf\u7684": 89, "\u8ba9\u6211\u4eec\u7528\u4e00\u4e2a\u5c0f\u5411\u91cf\u5c1d\u8bd5\u4e00\u4e2a\u5177\u4f53\u7684\u4f8b\u5b50": 89, "\u5982\u679c\u6211\u4eec\u5c1d\u8bd5\u73b0\u5728\u8c03\u7528": 89, "\u6211\u4eec\u4f1a\u5f97\u5230\u4e00\u4e2a\u8fd0\u884c\u65f6\u9519\u8bef\u548c\u4e00\u6761": 89, "\u6d88\u606f": 89, "\u8bf4\u660e\u53ea\u80fd": 89, "\u9690\u5f0f\u5730": 89, "\u4e3a\u6807\u91cf\u8f93\u51fa\u8ba1\u7b97\u68af\u5ea6": 89, "\u5bf9\u4e8e\u591a\u7ef4\u8f93\u51fa": 89, "\u671f\u671b\u6211\u4eec": 89, "\u63d0\u4f9b\u8fd9\u4e09\u4e2a\u8f93\u51fa\u7684\u68af\u5ea6": 89, "\u5b83\u53ef\u4ee5\u5c06\u8fd9\u4e9b\u68af\u5ea6\u4e58\u4ee5jacobian\u77e9\u9635": 89, "\u4ee3\u66ff\u68af\u5ea6": 89, "\u8f93\u51fa\u68af\u5ea6\u90fd\u4e0e2\u7684\u5e42\u6709\u5173": 89, "\u8fd9\u6b63\u662f\u6211\u4eec\u4ece\u91cd\u590d\u7684\u53cc\u500d\u64cd\u4f5c\u4e2d\u6240\u671f\u671b\u7684": 89, "\u53ef\u4ee5\u76f4\u63a5\u8bbf\u95ee\u91cd\u8981\u7684\u5dee\u5206\u77e9\u9635\u548c\u5411\u91cf\u8fd0\u7b97": 89, "\u7279\u522b\u662f": 89, "\u5b83\u5141\u8bb8\u4f60\u8ba1\u7b97\u7279\u5b9a\u51fd\u6570\u5728\u7279\u5b9a\u8f93\u5165\u4e0b\u7684jacobian\u77e9\u9635\u548c": 89, "hessian\u77e9\u9635": 89, "\u7c7b\u4f3c\u4e8ejacobian\u77e9\u9635": 89, "\u4f46\u8868\u793a\u6240\u6709\u504f\u5bfc\u6570\u7684": 89, "\u7b2c\u4e8c\u9636": 89, "\u5bfc\u6570": 89, "\u5b83\u8fd8\u63d0\u4f9b\u4e86\u4e0e\u8fd9\u4e9b\u77e9\u9635": 89, "\u8fdb\u884c\u5411\u91cf\u4e58\u79ef\u7684\u65b9\u6cd5": 89, "\u8ba9\u6211\u4eec\u8ba1\u7b97\u4e00\u4e2a\u7b80\u5355\u51fd\u6570\u7684jacobian\u77e9\u9635": 89, "\u5bf9\u4e8e\u4e24\u4e2a\u5355\u5143\u7d20\u8f93\u5165\u8fdb\u884c\u8bc4\u4f30": 89, "exp_add": 89, "\u5982\u679c\u4f60\u4ed4\u7ec6\u89c2\u5bdf": 89, "\u7b2c\u4e00\u4e2a\u8f93\u51fa\u5e94\u8be5\u7b49\u4e8e": 89, "\u56e0\u4e3a": [89, 104, 246], "\u5bfc\u6570\u662f": 89, "\u7b2c\u4e8c\u4e2a\u503c\u5e94\u8be5\u662f3": 89, "\u4f60\u5f53\u7136\u4e5f\u53ef\u4ee5\u5bf9\u66f4\u9ad8\u9636\u7684\u5f20\u91cf\u8fd9\u6837\u505a": 89, "hessian": [89, 121, 205], "\u65b9\u6cd5\u7684\u5de5\u4f5c\u65b9\u5f0f\u5b8c\u5168\u76f8\u540c": 89, "\u5047\u8bbe\u4f60\u7684": 89, "\u51fd\u6570\u662f\u4e24\u6b21\u53ef\u5fae\u7684": 89, "\u4f46\u8fd4\u56de\u6240\u6709\u4e8c\u9636\u5bfc\u6570\u7684\u77e9\u9635": 89, "\u5982\u679c\u4f60\u63d0\u4f9b\u4e86\u5411\u91cf": 89, "\u8fd8\u6709\u4e00\u4e2a\u76f4\u63a5\u8ba1\u7b97\u5411\u91cf": 89, "\u96c5\u53ef\u6bd4\u4e58\u79ef\u7684\u51fd\u6570": 89, "do_some_doubl": 89, "my_gradi": 89, "vjp": [89, 145, 150, 205], "jvp": [89, 141, 145, 150], "\u65b9\u6cd5\u6267\u884c\u4e0e": 89, "\u76f8\u540c\u7684\u77e9\u9635\u4e58\u6cd5": 89, "\u4f46\u64cd\u4f5c\u6570\u987a\u5e8f\u76f8\u53cd": 89, "vhp": [89, 121], "hvp": [89, 121], "\u65b9\u6cd5\u5bf9\u4e8e\u5411\u91cf": 89, "\u6d77\u68ee\u77e9\u9635\u4e58\u79ef\u4e5f\u662f\u5982\u6b64": 89, "\u6709\u5173\u66f4\u591a\u4fe1\u606f": [89, 94, 95, 250], "\u529f\u80fd": 89, "\u4e2d\u7684\u6027\u80fd\u8bf4\u660e": 89, "autogradyt_tutori": [89, 91], "\u4e0b\u8f7d\u7b14\u8bb0\u672c\u548c\u76f8\u5e94\u6587\u4ef6": 90, "\u62c9\u4e01\u8bed\u4e2d\u7684": 90, "\u7406\u89e3": 90, "\u662f\u4e00\u4e2a\u5f00\u6e90\u7684": 90, "\u53ef\u6269\u5c55\u7684\u6a21\u578b\u53ef\u89e3\u91ca\u6027\u5e93": 90, "\u5efa\u7acb\u5728pytorch\u4e4b\u4e0a": 90, "\u968f\u7740\u6a21\u578b\u590d\u6742\u6027\u7684\u589e\u52a0\u548c\u7531\u6b64\u5e26\u6765\u7684\u900f\u660e\u5ea6\u7684\u7f3a\u4e4f": 90, "\u6a21\u578b\u53ef\u89e3\u91ca\u6027\u65b9\u6cd5\u53d8\u5f97\u8d8a\u6765\u8d8a\u91cd\u8981": 90, "\u6a21\u578b\u7406\u89e3\u662f\u4e00\u4e2a\u6d3b\u8dc3\u7684\u7814\u7a76\u9886\u57df": 90, "\u4e5f\u662f\u8de8\u884c\u4e1a\u4f7f\u7528\u673a\u5668\u5b66\u4e60\u7684\u5b9e\u9645\u5e94\u7528\u7684\u4e00\u4e2a\u5173\u6ce8\u9886\u57df": 90, "captum\u63d0\u4f9b\u4e86\u6700\u5148\u8fdb\u7684\u7b97\u6cd5": 90, "\u5305\u62ec\u96c6\u6210\u68af\u5ea6": 90, "\u4e3a\u7814\u7a76\u4eba\u5458\u548c\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u4e86\u4e00\u79cd\u7b80\u5355\u7684\u65b9\u5f0f\u6765\u7406\u89e3\u54ea\u4e9b\u7279\u5f81\u5bf9\u6a21\u578b\u7684\u8f93\u51fa\u505a\u51fa\u4e86\u8d21\u732e": 90, "\u5b8c\u6574\u7684\u6587\u6863": 90, "api\u53c2\u8003\u548c\u4e00\u5957\u5173\u4e8e\u7279\u5b9a\u4e3b\u9898\u7684\u6559\u7a0b\u53ef\u5728": 90, "\u7f51\u7ad9\u4e0a\u627e\u5230": 90, "captum\u5bf9\u6a21\u578b\u53ef\u89e3\u91ca\u6027\u7684\u65b9\u6cd5\u662f\u57fa\u4e8e": 90, "\u5f52\u56e0": 90, "captum\u4e2d\u6709\u4e09\u79cd\u7c7b\u578b\u7684\u5f52\u56e0": 90, "\u7279\u5f81\u5f52\u56e0": 90, "\u8bd5\u56fe\u89e3\u91ca\u7279\u5b9a\u8f93\u51fa\u662f\u7531\u751f\u6210\u5b83\u7684\u8f93\u5165\u7684\u54ea\u4e9b\u7279\u5f81\u4ea7\u751f\u7684": 90, "\u7528\u67d0\u4e9b\u8bcd\u6765\u89e3\u91ca\u4e00\u7bc7\u7535\u5f71\u8bc4\u8bba\u662f\u6b63\u9762\u8fd8\u662f\u8d1f\u9762\u7684": 90, "\u5c31\u662f\u7279\u5f81\u5f52\u56e0\u7684\u4e00\u4e2a\u4f8b\u5b50": 90, "\u5c42\u5f52\u56e0": 90, "\u68c0\u67e5\u6a21\u578b\u7684\u9690\u85cf\u5c42\u5728\u7279\u5b9a\u8f93\u5165\u4e0b\u7684\u6d3b\u52a8": 90, "\u68c0\u67e5\u5377\u79ef\u5c42\u5bf9\u8f93\u5165\u56fe\u50cf\u7684\u7a7a\u95f4\u6620\u5c04\u8f93\u51fa\u5c31\u662f\u5c42\u5f52\u56e0\u7684\u4e00\u4e2a\u4f8b\u5b50": 90, "\u795e\u7ecf\u5143\u5f52\u56e0": 90, "\u7c7b\u4f3c\u4e8e\u5c42\u5f52\u56e0": 90, "\u4f46\u5173\u6ce8\u5355\u4e2a\u795e\u7ecf\u5143\u7684\u6d3b\u52a8": 90, "\u5728\u8fd9\u4e2a\u4ea4\u4e92\u5f0f\u7b14\u8bb0\u672c\u4e2d": 90, "\u6211\u4eec\u5c06\u770b\u770b\u7279\u5f81\u5f52\u56e0\u548c\u5c42\u5f52\u56e0": 90, "\u6bcf\u79cd\u5f52\u56e0\u7c7b\u578b\u90fd\u6709\u591a\u79cd": 90, "\u5f52\u56e0\u7b97\u6cd5": 90, "\u4e0e\u4e4b\u76f8\u5173\u8054": 90, "\u8bb8\u591a\u5f52\u56e0\u7b97\u6cd5\u53ef\u5206\u4e3a\u4e24\u5927\u7c7b": 90, "\u57fa\u4e8e\u68af\u5ea6\u7684\u7b97\u6cd5": 90, "\u8ba1\u7b97\u6a21\u578b\u8f93\u51fa": 90, "\u5c42\u8f93\u51fa\u6216\u795e\u7ecf\u5143\u6fc0\u6d3b\u76f8\u5bf9\u4e8e\u8f93\u5165\u7684\u53cd\u5411\u68af\u5ea6": 90, "\u96c6\u6210\u68af\u5ea6": 90, "\u7528\u4e8e\u7279\u5f81": 90, "\u5c42\u68af\u5ea6": 90, "\u6fc0\u6d3b": 90, "\u795e\u7ecf\u5143\u4f20\u5bfc": 90, "\u90fd\u662f\u57fa\u4e8e\u68af\u5ea6\u7684\u7b97\u6cd5": 90, "\u57fa\u4e8e\u6270\u52a8\u7684\u7b97\u6cd5": 90, "\u68c0\u67e5\u6a21\u578b": 90, "\u5c42\u6216\u795e\u7ecf\u5143\u7684\u8f93\u51fa\u5728\u8f93\u5165\u53d1\u751f\u53d8\u5316\u65f6\u7684\u53d8\u5316\u60c5\u51b5": 90, "\u8f93\u5165\u6270\u52a8\u53ef\u80fd\u662f\u6709\u9488\u5bf9\u6027\u7684\u6216\u968f\u673a\u7684": 90, "\u906e\u6321": 90, "\u7279\u5f81\u6d88\u878d": 90, "\u7279\u5f81\u7f6e\u6362": 90, "\u90fd\u662f\u57fa\u4e8e\u6270\u52a8\u7684\u7b97\u6cd5": 90, "\u6211\u4eec\u5c06\u5728\u4e0b\u9762\u68c0\u67e5\u8fd9\u4e24\u79cd\u7c7b\u578b\u7684\u7b97\u6cd5": 90, "\u7279\u522b\u662f\u5bf9\u4e8e\u5927\u578b\u6a21\u578b": 90, "\u4ee5\u4e0e\u88ab\u68c0\u67e5\u7684\u8f93\u5165\u7279\u5f81\u76f4\u63a5\u76f8\u5173\u7684\u65b9\u5f0f\u53ef\u89c6\u5316\u5f52\u56e0\u6570\u636e\u662f\u5f88\u6709\u4ef7\u503c\u7684": 90, "\u867d\u7136\u5f53\u7136\u53ef\u4ee5\u4f7f\u7528matplotlib": 90, "plotly\u6216\u7c7b\u4f3c\u5de5\u5177\u521b\u5efa\u81ea\u5df1\u7684\u53ef\u89c6\u5316": 90, "\u4f46captum\u63d0\u4f9b\u4e86\u4e13\u95e8\u7528\u4e8e\u5176\u5f52\u56e0\u7684\u589e\u5f3a\u5de5\u5177": 90, "attr": [90, 147, 155, 207, 229], "\u4e0b\u9762\u5bfc\u5165\u4e3a": 90, "\u63d0\u4f9b\u4e86\u6709\u52a9\u4e8e\u53ef\u89c6\u5316\u4e0e\u56fe\u50cf\u76f8\u5173\u7684\u5f52\u56e0\u7684\u51fd\u6570": 90, "\u662f\u5efa\u7acb\u5728captum\u4e4b\u4e0a\u7684\u4e00\u4e2a\u6613\u4e8e\u4f7f\u7528\u7684\u53ef\u89e3\u91ca\u6027\u53ef\u89c6\u5316\u5c0f\u90e8\u4ef6": 90, "\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5e26\u6709\u73b0\u6210\u53ef\u89c6\u5316\u5de5\u5177\u7684\u5c0f\u90e8\u4ef6": 90, "\u7528\u4e8e\u56fe\u50cf": 90, "\u6587\u672c\u548c\u4efb\u610f\u6a21\u578b\u7c7b\u578b": 90, "\u8fd9\u4e24\u79cd\u53ef\u89c6\u5316\u5de5\u5177\u96c6\u90fd\u5c06\u5728\u672c\u7b14\u8bb0\u672c\u4e2d\u8fdb\u884c\u6f14\u793a": 90, "\u524d\u51e0\u4e2a\u793a\u4f8b\u5c06\u96c6\u4e2d\u5728\u8ba1\u7b97\u673a\u89c6\u89c9\u7528\u4f8b\u4e0a": 90, "\u4f46\u6700\u540e\u7684captum": 90, "insights\u90e8\u5206\u5c06\u6f14\u793a\u89c6\u89c9\u95ee\u7b54\u6a21\u578b\u4e2d\u7684\u5f52\u56e0\u53ef\u89c6\u5316": 90, "\u5728\u5f00\u59cb\u4e4b\u524d": [90, 231, 233, 236, 241, 242, 243, 248, 249, 250], "\u4f60\u9700\u8981\u6709\u4e00\u4e2apython\u73af\u5883": 90, "6\u6216\u66f4\u9ad8\u7248\u672c": 90, "\u5bf9\u4e8ecaptum": 90, "insights\u793a\u4f8b": 90, "\u9700\u8981flask": 90, "1\u6216\u66f4\u9ad8\u7248\u672c\u548cflask": 90, "\u63a8\u8350\u4f7f\u7528\u6700\u65b0\u7248\u672c": 90, "2\u6216\u66f4\u9ad8\u7248\u672c": 90, "4\u7248\u672c": 90, "\u56e0\u4e3acaptum\u76ee\u524d\u4f7f\u7528\u4e86\u4e00\u4e2a\u5728\u66f4\u9ad8\u7248\u672c\u4e2d\u53c2\u6570\u5df2\u88ab\u91cd\u547d\u540d\u7684matplotlib\u51fd\u6570": 90, "\u8981\u5728anaconda\u6216pip\u865a\u62df\u73af\u5883\u4e2d\u5b89\u88c5captum": 90, "\u8bf7\u4f7f\u7528\u4e0b\u9762\u9002\u7528\u4e8e\u60a8\u73af\u5883\u7684\u547d\u4ee4": 90, "flask": [90, 113, 121, 139, 251], "\u5728\u60a8\u8bbe\u7f6e\u7684\u73af\u5883\u4e2d\u91cd\u65b0\u542f\u52a8\u6b64\u7b14\u8bb0\u672c": 90, "\u60a8\u5c31\u53ef\u4ee5\u5f00\u59cb\u4e86": 90, "\u8ba9\u6211\u4eec\u770b\u4e00\u4e2a\u7b80\u5355\u7684\u89c6\u89c9\u793a\u4f8b": 90, "\u6211\u4eec\u5c06\u4ece\u4e00\u4e2a\u5728imagenet\u6570\u636e\u96c6\u4e0a\u9884\u8bad\u7ec3\u7684resnet\u6a21\u578b\u5f00\u59cb": 90, "\u6211\u4eec\u5c06\u83b7\u53d6\u4e00\u4e2a\u6d4b\u8bd5\u8f93\u5165": 90, "\u5e76\u4f7f\u7528\u4e0d\u540c\u7684": 90, "\u7b97\u6cd5\u6765\u68c0\u67e5\u8f93\u5165\u56fe\u50cf\u5982\u4f55\u5f71\u54cd\u8f93\u51fa": 90, "\u5e76\u67e5\u770b\u4e00\u4e9b\u6d4b\u8bd5\u56fe\u50cf\u7684\u8f93\u5165\u5f52\u56e0\u6620\u5c04\u7684\u6709\u7528\u53ef\u89c6\u5316": 90, "\u5bfc\u5165\u4e00\u4e9b\u5305": 90, "integratedgradi": 90, "occlus": [90, 229], "layergradcam": 90, "layerattribut": 90, "linearsegmentedcolormap": 90, "\u73b0\u5728\u6211\u4eec\u5c06\u4f7f\u7528torchvision\u6a21\u578b\u5e93\u4e0b\u8f7d\u4e00\u4e2a\u9884\u8bad\u7ec3\u7684resnet": 90, "\u7531\u4e8e\u6211\u4eec\u4e0d\u8fdb\u884c\u8bad\u7ec3": 90, "\u6211\u4eec\u5c06\u6682\u65f6\u5c06\u5176\u7f6e\u4e8e\u8bc4\u4f30\u6a21\u5f0f": 90, "\u4f60\u4ece\u4e2d\u83b7\u53d6\u8fd9\u4e2a\u4ea4\u4e92\u5f0f\u7b14\u8bb0\u672c\u7684\u5730\u65b9\u5e94\u8be5\u4e5f\u6709\u4e00\u4e2a": 90, "\u6587\u4ef6\u5939": 90, "\u5176\u4e2d\u5305\u542b\u4e00\u4e2a": 90, "test_img": 90, "test_img_data": 90, "\u6211\u4eec\u7684resnet\u6a21\u578b\u662f\u5728imagenet\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3\u7684": 90, "\u5b83\u671f\u671b\u56fe\u50cf\u5177\u6709\u4e00\u5b9a\u7684\u5927\u5c0f": 90, "\u5e76\u4e14\u901a\u9053\u6570\u636e\u88ab\u5f52\u4e00\u5316\u5230\u7279\u5b9a\u7684\u503c\u8303\u56f4": 90, "\u6211\u4eec\u8fd8\u5c06\u83b7\u53d6\u6a21\u578b\u8bc6\u522b\u7684\u7c7b\u522b\u7684\u4eba\u7c7b\u53ef\u8bfb\u6807\u7b7e\u5217\u8868": 90, "\u5b83\u5e94\u8be5\u4e5f\u5728": 90, "\u6587\u4ef6\u5939\u4e2d": 90, "\u6a21\u578b\u671f\u671b224x224": 90, "3\u8272\u5f69\u56fe\u50cf": 90, "\u6807\u51c6imagenet\u5f52\u4e00\u5316": 90, "transform_norm": 90, "transformed_img": 90, "\u6a21\u578b\u9700\u8981\u4e00\u4e2a\u865a\u62df\u7684\u6279\u6b21\u7ef4\u5ea6": 90, "labels_path": 90, "imagenet_class_index": [90, 139], "json_data": 90, "idx_to_label": 90, "\u6211\u4eec\u53ef\u4ee5\u95ee": 90, "\u8fd9\u4e2a\u6a21\u578b\u8ba4\u4e3a\u8fd9\u5f20\u56fe\u50cf\u4ee3\u8868\u4ec0\u4e48": 90, "prediction_scor": 90, "pred_label_idx": 90, "squeeze_": [90, 95], "predicted_label": [90, 115], "\u9884\u6d4b": 90, "\u6211\u4eec\u5df2\u7ecf\u786e\u8ba4resnet\u8ba4\u4e3a\u6211\u4eec\u7684\u732b\u7684\u56fe\u50cf\u786e\u5b9e\u662f\u4e00\u53ea\u732b": 90, "\u4f46\u662f": [90, 93, 95, 231], "\u4e3a\u4ec0\u4e48": 90, "\u6a21\u578b\u8ba4\u4e3a\u8fd9\u662f\u4e00\u5f20\u732b\u7684\u56fe\u50cf\u5462": 90, "\u8981\u56de\u7b54\u8fd9\u4e2a\u95ee\u9898": 90, "\u6211\u4eec\u5c31\u8981\u6c42\u52a9\u4e8ecaptum": 90, "\u8bd5\u56fe\u7528\u751f\u6210\u7279\u5b9a\u8f93\u51fa\u7684\u8f93\u5165\u7684\u7279\u5f81\u6765\u89e3\u91ca\u8be5\u8f93\u51fa": 90, "\u5b83\u4f7f\u7528\u7279\u5b9a\u7684\u8f93\u5165": 90, "\u5728\u8fd9\u91cc\u662f\u6211\u4eec\u7684\u6d4b\u8bd5\u56fe\u50cf": 90, "\u6765\u751f\u6210\u4e00\u4e2a\u8f93\u5165\u7279\u5f81\u5bf9\u7279\u5b9a\u8f93\u51fa\u7279\u5f81\u7684\u76f8\u5bf9\u91cd\u8981\u6027\u7684\u6620\u5c04": 90, "\u662fcaptum\u4e2d\u53ef\u7528\u7684\u7279\u5f81\u5f52\u56e0\u7b97\u6cd5\u4e4b\u4e00": 90, "\u96c6\u6210\u68af\u5ea6\u901a\u8fc7\u8fd1\u4f3c\u6a21\u578b\u8f93\u51fa\u76f8\u5bf9\u4e8e\u8f93\u5165\u7684\u68af\u5ea6\u7684\u79ef\u5206": 90, "\u4e3a\u6bcf\u4e2a\u8f93\u5165\u7279\u5f81\u5206\u914d\u4e00\u4e2a\u91cd\u8981\u6027\u5206\u6570": 90, "\u5728\u6211\u4eec\u7684\u4f8b\u5b50\u4e2d": [90, 95], "\u6211\u4eec\u5c06\u4f7f\u7528\u8f93\u51fa\u5411\u91cf\u7684\u4e00\u4e2a\u7279\u5b9a\u5143\u7d20": 90, "\u4e5f\u5c31\u662f\u8868\u793a\u6a21\u578b\u5bf9\u6240\u9009\u7c7b\u522b\u7684\u7f6e\u4fe1\u5ea6\u7684\u90a3\u4e2a\u5143\u7d20": 90, "\u5e76\u4f7f\u7528\u96c6\u6210\u68af\u5ea6\u6765\u7406\u89e3\u54ea\u4e9b\u8f93\u5165\u56fe\u50cf\u90e8\u5206\u5bf9\u8fd9\u4e2a\u8f93\u51fa\u505a\u51fa\u4e86\u8d21\u732e": 90, "\u4e00\u65e6\u6211\u4eec\u4ece\u96c6\u6210\u68af\u5ea6\u83b7\u5f97\u4e86\u91cd\u8981\u6027\u6620\u5c04": 90, "\u6211\u4eec\u5c06\u4f7f\u7528captum\u4e2d\u7684\u53ef\u89c6\u5316\u5de5\u5177\u6765\u63d0\u4f9b\u4e0e\u88ab\u68c0\u67e5\u7684\u8f93\u5165\u7279\u5f81\u76f4\u63a5\u76f8\u5173\u7684\u91cd\u8981\u6027\u6620\u5c04\u7684\u6709\u7528\u8868\u793a": 90, "captum\u7684": 90, "visualize_image_attr": 90, "\u51fd\u6570\u63d0\u4f9b\u4e86\u5404\u79cd\u81ea\u5b9a\u4e49\u663e\u793a\u5f52\u56e0\u6570\u636e\u7684\u9009\u9879": 90, "\u6211\u4eec\u4f20\u5165\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684matplotlib\u989c\u8272\u6620\u5c04": 90, "\u8fd0\u884c\u5e26\u6709": 90, "integrated_gradi": 90, "\u8c03\u7528\u7684\u5355\u5143\u683c\u901a\u5e38\u9700\u8981\u4e00\u4e24\u5206\u949f": 90, "\u7528\u6a21\u578b\u521d\u59cb\u5316\u5f52\u56e0\u7b97\u6cd5": 90, "\u8981\u6c42\u7b97\u6cd5\u5c06\u6211\u4eec\u7684\u8f93\u51fa\u76ee\u6807\u5f52\u56e0\u4e8e": 90, "attributions_ig": 90, "n_step": [90, 159, 161, 163], "\u663e\u793a\u539f\u59cb\u56fe\u50cf\u4ee5\u4f9b\u6bd4\u8f83": 90, "original_imag": [90, 229], "default_cmap": 90, "from_list": 90, "ffffff": 90, "0000ff": 90, "heat_map": [90, 229], "show_colorbar": [90, 229], "sign": [90, 153, 204], "\u5728\u4e0a\u9762\u7684\u56fe\u50cf\u4e2d": 90, "\u4f60\u5e94\u8be5\u53ef\u4ee5\u770b\u5230\u96c6\u6210\u68af\u5ea6\u5728\u56fe\u50cf\u4e2d\u732b\u7684\u4f4d\u7f6e\u7ed9\u51fa\u4e86\u6700\u5f3a\u7684\u4fe1\u53f7": 90, "\u57fa\u4e8e\u68af\u5ea6\u7684\u5f52\u56e0\u65b9\u6cd5\u6709\u52a9\u4e8e\u901a\u8fc7\u76f4\u63a5\u8ba1\u7b97\u8f93\u51fa\u76f8\u5bf9\u4e8e\u8f93\u5165\u7684\u53d8\u5316\u6765\u7406\u89e3\u6a21\u578b": 90, "\u57fa\u4e8e\u6270\u52a8\u7684\u5f52\u56e0": 90, "\u65b9\u6cd5\u5219\u66f4\u76f4\u63a5\u5730\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898": 90, "\u901a\u8fc7\u5bf9\u8f93\u5165\u8fdb\u884c\u53d8\u5316\u6765\u6d4b\u91cf\u5bf9\u8f93\u51fa\u7684\u5f71\u54cd": 90, "\u5c31\u662f\u8fd9\u6837\u4e00\u79cd\u65b9\u6cd5": 90, "\u5b83\u6d89\u53ca\u66ff\u6362\u8f93\u5165\u56fe\u50cf\u7684\u90e8\u5206\u533a\u57df": 90, "\u5e76\u68c0\u67e5\u5bf9\u8f93\u51fa\u4fe1\u53f7\u7684\u5f71\u54cd": 90, "\u4e0b\u9762": [90, 92, 94, 95, 96], "\u6211\u4eec\u8bbe\u7f6e\u906e\u6321\u5f52\u56e0": 90, "\u4e0e\u914d\u7f6e\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u7c7b\u4f3c": 90, "\u4f60\u53ef\u4ee5\u6307\u5b9a\u76ee\u6807\u533a\u57df\u7684\u5927\u5c0f": 90, "\u4ee5\u53ca\u786e\u5b9a\u5355\u4e2a\u6d4b\u91cf\u95f4\u8ddd\u7684\u6b65\u957f\u957f\u5ea6": 90, "visualize_image_attr_multipl": [90, 229], "\u6765\u53ef\u89c6\u5316\u6211\u4eec\u7684\u906e\u6321\u5f52\u56e0\u8f93\u51fa": 90, "\u663e\u793a\u6bcf\u4e2a\u533a\u57df\u7684\u6b63\u9762\u548c\u8d1f\u9762\u5f52\u56e0\u7684\u70ed\u56fe": 90, "\u5e76\u7528\u6b63\u9762\u5f52\u56e0\u533a\u57df\u63a9\u7801\u539f\u59cb\u56fe\u50cf": 90, "\u63a9\u7801\u53ef\u4ee5\u7ed9\u51fa\u4e00\u4e2a\u975e\u5e38\u6709\u542f\u53d1\u6027\u7684\u89c6\u56fe": 90, "\u663e\u793a\u6a21\u578b\u53d1\u73b0\u54ea\u4e9b\u533a\u57df\u6700": 90, "\u50cf\u732b": 90, "attributions_occ": 90, "sliding_window_shap": [90, 229], "masked_imag": 90, "fig_siz": 90, "18": [90, 107, 108, 109, 118, 127, 144, 157, 158, 163, 173, 174, 184, 193, 219, 228, 231, 266, 275], "\u540c\u6837": [90, 95, 104], "\u6211\u4eec\u770b\u5230\u56fe\u50cf\u4e2d\u5305\u542b\u732b\u7684\u533a\u57df\u88ab\u8d4b\u4e88\u4e86\u66f4\u5927\u7684\u91cd\u8981\u6027": 90, "\u5141\u8bb8\u4f60\u5c06\u6a21\u578b\u4e2d\u9690\u85cf\u5c42\u7684\u6d3b\u52a8\u5f52\u56e0\u4e8e\u8f93\u5165\u7684\u7279\u5f81": 90, "\u5c42\u5f52\u56e0\u7b97\u6cd5\u6765\u68c0\u67e5\u6a21\u578b\u4e2d\u4e00\u4e2a\u5377\u79ef\u5c42\u7684\u6d3b\u52a8": 90, "gradcam\u8ba1\u7b97\u76ee\u6807\u8f93\u51fa\u76f8\u5bf9\u4e8e\u7ed9\u5b9a\u5c42\u7684\u68af\u5ea6": 90, "\u5bf9\u6bcf\u4e2a\u8f93\u51fa\u901a\u9053": 90, "\u8f93\u51fa\u7684\u7b2c2\u7ef4": 90, "\u8fdb\u884c\u5e73\u5747": 90, "\u5e76\u5c06\u6bcf\u4e2a\u901a\u9053\u7684\u5e73\u5747\u68af\u5ea6\u4e58\u4ee5\u5c42\u6fc0\u6d3b": 90, "\u7ed3\u679c\u5728\u6240\u6709\u901a\u9053\u4e0a\u6c42\u548c": 90, "gradcam\u4e13\u4e3a\u5377\u79ef\u7f51\u7edc": 90, "\u8bbe\u8ba1": 90, "\u7531\u4e8e\u5377\u79ef\u5c42\u7684\u6d3b\u52a8\u901a\u5e38\u5728\u7a7a\u95f4\u4e0a\u6620\u5c04\u5230\u8f93\u5165": 90, "\u56e0\u6b64gradcam\u5f52\u56e0\u901a\u5e38\u4f1a\u88ab\u4e0a\u91c7\u6837": 90, "\u5e76\u7528\u4e8e\u63a9\u76d6\u8f93\u5165": 90, "\u5c42\u5f52\u56e0\u7684\u8bbe\u7f6e\u7c7b\u4f3c\u4e8e\u8f93\u5165\u5f52\u56e0": 90, "\u9664\u4e86\u9664\u4e86\u6a21\u578b\u4e4b\u5916": 90, "\u4f60\u8fd8\u5fc5\u987b\u6307\u5b9a\u6a21\u578b\u4e2d\u4f60\u5e0c\u671b\u68c0\u67e5\u7684": 90, "\u9690\u85cf\u5c42": 90, "\u4e0e\u4e0a\u9762\u4e00\u6837": 90, "\u5f53\u6211\u4eec\u8c03\u7528": 90, "\u6211\u4eec\u6307\u5b9a\u611f\u5174\u8da3\u7684\u76ee\u6807\u7c7b": 90, "layer_gradcam": 90, "layer3": [90, 149, 157, 160], "attributions_lgc": 90, "base_class": 90, "\u57fa\u7c7b\u4e2d\u7684\u4fbf\u5229\u65b9\u6cd5": 90, "interpol": [90, 119, 262, 271], "\u6765\u4e0a\u91c7\u6837\u8fd9\u4e9b\u5f52\u56e0\u6570\u636e": 90, "\u4ee5\u4fbf\u4e0e\u8f93\u5165\u56fe\u50cf\u8fdb\u884c\u6bd4\u8f83": 90, "upsamp_attr_lgc": 90, "blended_heat_map": 90, "\u8fd9\u6837\u7684\u53ef\u89c6\u5316\u53ef\u4ee5\u8ba9\u4f60\u6df1\u5165\u4e86\u89e3\u9690\u85cf\u5c42\u5982\u4f55\u54cd\u5e94\u4f60\u7684\u8f93\u5165": 90, "insights\u662f\u4e00\u4e2a\u5efa\u7acb\u5728captum\u4e4b\u4e0a\u7684\u53ef\u89e3\u91ca\u6027\u53ef\u89c6\u5316\u5c0f\u90e8\u4ef6": 90, "\u65e8\u5728\u4fc3\u8fdb\u6a21\u578b\u7406\u89e3": 90, "insights\u53ef\u7528\u4e8e\u56fe\u50cf": 90, "\u6587\u672c\u548c\u5176\u4ed6\u7279\u5f81": 90, "\u5e2e\u52a9\u7528\u6237\u7406\u89e3\u7279\u5f81\u5f52\u56e0": 90, "\u5b83\u5141\u8bb8\u4f60\u53ef\u89c6\u5316": 90, "\u591a\u4e2a\u8f93\u5165": 90, "\u8f93\u51fa\u5bf9\u7684\u5f52\u56e0": 90, "\u5e76\u63d0\u4f9b\u7528\u4e8e\u56fe\u50cf": 90, "\u6587\u672c\u548c\u4efb\u610f\u6570\u636e\u7684\u53ef\u89c6\u5316\u5de5\u5177": 90, "\u5728\u672c\u7b14\u8bb0\u672c\u7684\u8fd9\u4e00\u90e8\u5206": 90, "\u6211\u4eec\u5c06\u4f7f\u7528captum": 90, "insights\u53ef\u89c6\u5316\u591a\u4e2a\u56fe\u50cf\u5206\u7c7b\u63a8\u7406": 90, "\u8ba9\u6211\u4eec\u6536\u96c6\u4e00\u4e9b\u56fe\u50cf": 90, "\u770b\u770b\u6a21\u578b\u5bf9\u5b83\u4eec\u7684\u770b\u6cd5": 90, "\u4e3a\u4e86\u589e\u52a0\u591a\u6837\u6027": 90, "\u6211\u4eec\u5c06\u4f7f\u7528\u732b": 90, "\u8336\u58f6\u548c\u4e09\u53f6\u866b\u5316\u77f3": 90, "teapot": 90, "trilobit": 90, "\u770b\u8d77\u6765\u6211\u4eec\u7684\u6a21\u578b\u90fd\u6b63\u786e\u8bc6\u522b\u4e86\u5b83\u4eec": 90, "\u6211\u4eec\u5f53\u7136\u5e0c\u671b\u6df1\u5165\u6316\u6398": 90, "insights\u5c0f\u90e8\u4ef6": 90, "\u6211\u4eec\u7528\u4e0b\u9762\u5bfc\u5165\u7684": 90, "attributionvisu": 90, "\u5bf9\u8c61\u5bf9\u5176\u8fdb\u884c\u914d\u7f6e": 90, "\u671f\u671b\u6279\u91cf\u6570\u636e": 90, "\u6240\u4ee5\u6211\u4eec\u5c06\u5f15\u5165captum\u7684": 90, "\u8f85\u52a9\u7c7b": 90, "\u6211\u4eec\u5c06\u67e5\u770b\u56fe\u50cf": 90, "\u56e0\u6b64\u6211\u4eec\u8fd8\u5c06\u5bfc\u5165": 90, "imagefeatur": 90, "\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u53c2\u6570\u914d\u7f6e": 90, "\u8981\u68c0\u67e5\u7684\u6a21\u578b\u6570\u7ec4": 90, "\u53ea\u6709\u4e00\u4e2a": 90, "\u4e00\u4e2a\u8bc4\u5206\u51fd\u6570": 90, "\u5141\u8bb8captum": 90, "insights\u4ece\u6a21\u578b\u4e2d\u63d0\u53d6\u524dk\u4e2a\u9884\u6d4b": 90, "\u6211\u4eec\u6a21\u578b\u8bad\u7ec3\u7684\u7c7b\u522b\u7684\u6709\u5e8f": 90, "\u4eba\u7c7b\u53ef\u8bfb\u5217\u8868": 90, "\u8981\u67e5\u627e\u7684\u7279\u5f81\u5217\u8868": 90, "\u662f\u4e00\u4e2a": 90, "\u4e00\u4e2a\u6570\u636e\u96c6": 90, "\u5b83\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 90, "\u8fd4\u56de\u8f93\u5165\u548c\u6807\u7b7e\u7684\u6279\u6b21": 90, "\u5c31\u50cf\u4f60\u7528\u4e8e\u8bad\u7ec3\u4e00\u6837": 90, "attr_vi": 90, "\u57fa\u7ebf\u662f\u5168\u96f6\u8f93\u5165": 90, "\u8fd9\u53ef\u80fd\u4f1a\u56e0\u4f60\u7684\u6570\u636e\u800c\u6709\u6240\u4e0d\u540c": 90, "baseline_func": 90, "\u5408\u5e76\u4e0a\u9762\u7684\u56fe\u50cf\u53d8\u6362": 90, "full_img_transform": 90, "score_func": 90, "\u7167\u7247": 90, "baseline_transform": 90, "input_transform": [90, 213], "282": 90, "849": [90, 219, 231], "\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u5e76\u6ca1\u6709\u82b1\u8d39\u592a\u591a\u65f6\u95f4": 90, "\u4e0d\u50cf\u6211\u4eec\u4e4b\u524d\u7684\u5f52\u56e0\u90a3\u6837": 90, "insights\u5141\u8bb8\u4f60\u5728\u53ef\u89c6\u5316\u5c0f\u90e8\u4ef6\u4e2d\u914d\u7f6e\u4e0d\u540c\u7684\u5f52\u56e0\u7b97\u6cd5": 90, "\u4e4b\u540e\u5b83\u5c06\u8ba1\u7b97\u5e76\u663e\u793a": 90, "\u90a3\u4e2a": 90, "\u8fc7\u7a0b\u5c06\u9700\u8981\u51e0\u5206\u949f\u65f6\u95f4": 90, "\u8fd0\u884c\u4e0b\u9762\u7684\u5355\u5143\u683c\u5c06\u6e32\u67d3captum": 90, "\u7136\u540e\u4f60\u53ef\u4ee5\u9009\u62e9\u5f52\u56e0\u65b9\u6cd5\u53ca\u5176\u53c2\u6570": 90, "\u6839\u636e\u9884\u6d4b\u7684\u7c7b\u6216\u9884\u6d4b\u7684\u6b63\u786e\u6027\u8fc7\u6ee4\u6a21\u578b\u54cd\u5e94": 90, "\u67e5\u770b\u6a21\u578b\u7684\u9884\u6d4b\u53ca\u76f8\u5173\u6982\u7387": 90, "\u67e5\u770b\u5f52\u56e0\u4e0e": 90, "\u539f\u59cb\u56fe\u50cf\u7684\u70ed\u529b\u56fe": 90, "captumyt": 90, "introyt": 91, "rst": [91, 260, 262, 269, 271], "introyt1_tutori": [91, 92], "tensors_deeper_tutori": [91, 95], "modelsyt_tutori": [91, 93], "tensorboardyt_tutori": [91, 94], "trainingyt_tutori": 91, "captumyt_tutori": 91, "sphx_glr_beginner_introyt_modelsyt_tutori": 91, "sphx_glr_beginner_introyt_autogradyt_tutori": 91, "sphx_glr_beginner_introyt_trainingyt": 91, "sphx_glr_beginner_introyt_tensorboardyt_tutori": 91, "sphx_glr_beginner_introyt_captumyt": 91, "sphx_glr_beginner_introyt_tensors_deeper_tutori": 91, "sphx_glr_beginner_introyt_introyt1_tutori": 91, "\u4ece\u89c6\u9891\u7684": 92, "\u5f00\u59cb": [92, 93], "\u6211\u4eec\u5c06\u5bfc\u5165": 92, "\u8ba9\u6211\u4eec\u770b\u4e00\u4e9b\u57fa\u672c\u7684\u5f20\u91cf\u64cd\u4f5c": 92, "\u521b\u5efa\u5f20\u91cf\u7684\u51e0\u79cd\u65b9\u5f0f": 92, "\u4e0a\u9762": [92, 93, 94], "\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a": 92, "5x3": 92, "\u7684\u96f6\u77e9\u9635": 92, "\u5e76\u67e5\u8be2\u5176\u6570\u636e\u7c7b\u578b": 92, "\u53d1\u73b0\u96f6\u662f": 92, "\u4f4d\u6d6e\u70b9\u6570": 92, "\u8fd9\u662f": [92, 93, 95], "\u7684\u9ed8\u8ba4\u8bbe\u7f6e": [92, 231], "\u5982\u679c\u4f60\u60f3\u8981\u6574\u6570\u5462": 92, "\u53ef\u4ee5\u8986\u76d6\u9ed8\u8ba4\u8bbe\u7f6e": 92, "int16": [92, 95, 197, 234], "\u4f60\u53ef\u4ee5\u770b\u5230": [92, 93, 95], "\u5f53\u6211\u4eec\u6539\u53d8\u9ed8\u8ba4\u8bbe\u7f6e\u65f6": 92, "\u5728\u6253\u5370\u5f20\u91cf\u65f6\u4f1a\u6709\u6240\u63d0\u793a": 92, "\u901a\u5e38\u60c5\u51b5\u4e0b": 92, "\u4f1a\u4f7f\u7528\u7279\u5b9a\u7684\u79cd\u5b50\u521d\u59cb\u5316\u5b66\u4e60\u6743\u91cd": 92, "\u4ee5\u786e\u4fdd\u7ed3\u679c\u7684\u53ef\u91cd\u590d\u6027": 92, "1729": [92, 95], "r1": 92, "r2": 92, "\u65b0\u7684\u503c": 92, "r3": 92, "nshould": 92, "\u7531\u4e8e\u91cd\u65b0\u8bbe\u7f6e\u79cd\u5b50": 92, "\u6240\u4ee5\u4e0e": 92, "\u7684\u503c\u76f8\u540c": 92, "\u5f20\u91cf\u6267\u884c\u7b97\u672f\u8fd0\u7b97\u5f88\u76f4\u89c2": 92, "\u5f62\u72b6\u76f8\u4f3c\u7684\u5f20\u91cf\u53ef\u4ee5\u76f8\u52a0": 92, "\u76f8\u4e58\u7b49": 92, "\u4e0e\u6807\u91cf\u7684\u8fd0\u7b97\u4f1a\u5728\u6574\u4e2a\u5f20\u91cf\u4e0a\u5206\u5e03\u5f0f\u8fdb\u884c": 92, "\u6bcf\u4e2a\u5143\u7d20\u90fd\u4e58\u4ee5": 92, "\u5f62\u72b6\u76f8\u4f3c": 92, "\u56e0\u6b64\u5141\u8bb8\u76f8\u52a0": 92, "\u5f20\u91cf\u6309\u5143\u7d20\u76f8\u52a0": 92, "\u8fd9\u4e0e\u8f93\u5165\u5f20\u91cf\u5177\u6709\u76f8\u540c\u7684\u7ef4\u5ea6": 92, "\u53d6\u6d88\u6ce8\u91ca\u8fd9\u4e00\u884c\u4f1a\u5bfc\u81f4\u8fd0\u884c\u65f6\u9519\u8bef": 92, "\u8fd9\u91cc\u662f\u4e00\u4e9b\u53ef\u7528\u7684\u6570\u5b66\u8fd0\u7b97\u793a\u4f8b": 92, "\u503c\u5728": 92, "\u4e4b\u95f4": [92, 231], "\u652f\u6301\u5e38\u89c1\u7684\u6570\u5b66\u8fd0\u7b97": 92, "nabsolut": 92, "\u4ee5\u53ca\u4e09\u89d2\u51fd\u6570": 92, "ninvers": 92, "asin": [92, 95], "\u548c\u7ebf\u6027\u4ee3\u6570\u8fd0\u7b97": 92, "\u5982\u884c\u5217\u5f0f\u548c\u5947\u5f02\u503c\u5206\u89e3": 92, "ndetermin": 92, "det": [92, 102, 153], "nsingular": 92, "decomposit": [92, 144], "svd": [92, 95], "\u4ee5\u53ca\u7edf\u8ba1\u548c\u805a\u5408\u8fd0\u7b97": 92, "naverag": 92, "std_mean": 92, "nmaximum": 92, "\u5173\u4e8e": 92, "\u5f20\u91cf\u7684\u5f3a\u5927\u529f\u80fd\u8fd8\u6709\u5f88\u591a\u9700\u8981\u4e86\u89e3": 92, "\u5305\u62ec\u5982\u4f55\u4e3a": 92, "\u4e0a\u7684\u5e76\u884c\u8ba1\u7b97\u8bbe\u7f6e\u5b83\u4eec": 92, "\u6211\u4eec\u5c06\u5728\u53e6\u4e00\u4e2a\u89c6\u9891\u4e2d\u6df1\u5165\u63a2\u8ba8": 92, "\u8ba9\u6211\u4eec\u8ba8\u8bba\u4e00\u4e0b\u5982\u4f55\u5728": 92, "\u4e2d\u8868\u793a\u6a21\u578b": 92, "\u6a21\u578b\u7684\u7236\u5bf9\u8c61": 92, "\u7528\u4e8e\u6fc0\u6d3b\u51fd\u6570": 92, "\u56fe": 92, "\u4e0a\u56fe\u662f": 92, "\u7684\u793a\u610f\u56fe": 92, "\u5b83\u662f\u6700\u65e9\u7684\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u4e4b\u4e00": 92, "\u4e5f\u662f\u6df1\u5ea6\u5b66\u4e60\u7206\u53d1\u5f0f\u53d1\u5c55\u7684\u9a71\u52a8\u529b\u4e4b\u4e00": 92, "\u5b83\u88ab\u6784\u5efa\u7528\u4e8e\u8bfb\u53d6\u624b\u5199\u6570\u5b57\u7684\u5c0f\u56fe\u50cf": 92, "\u5e76\u6b63\u786e\u5206\u7c7b\u56fe\u50cf\u4e2d\u8868\u793a\u7684\u6570\u5b57": 92, "\u5b83\u5de5\u4f5c\u539f\u7406\u7684\u7b80\u8ff0\u4e3a": 92, "\u662f\u4e00\u4e2a\u5377\u79ef\u5c42": 92, "\u5b83\u5728\u8f93\u5165\u56fe\u50cf\u4e2d\u626b\u63cf\u5b83\u5728\u8bad\u7ec3\u671f\u95f4\u5b66\u4e60\u5230\u7684\u7279\u5f81": 92, "\u5b83\u8f93\u51fa\u4e00\u4e2a\u7279\u5f81\u6fc0\u6d3b\u56fe": 92, "\u63cf\u8ff0\u5b83\u5728\u56fe\u50cf\u4e2d\u770b\u5230\u6bcf\u4e2a\u5b66\u4e60\u5230\u7684\u7279\u5f81\u7684\u4f4d\u7f6e": 92, "\u6fc0\u6d3b\u56fe": 92, "\u5728\u5c42": 92, "\u4e2d\u88ab\u4e0b\u91c7\u6837": 92, "\u662f\u53e6\u4e00\u4e2a\u5377\u79ef\u5c42": 92, "\u8fd9\u6b21\u626b\u63cf": 92, "\u7684\u6fc0\u6d3b\u56fe\u4ee5\u67e5\u627e\u7279\u5f81\u7ec4\u5408": 92, "\u5b83\u4e5f\u8f93\u51fa\u4e00\u4e2a\u6fc0\u6d3b\u56fe": 92, "\u63cf\u8ff0\u8fd9\u4e9b\u7279\u5f81\u7ec4\u5408\u7684\u7a7a\u95f4\u4f4d\u7f6e": 92, "\u8be5\u6fc0\u6d3b\u56fe\u5728\u5c42": 92, "\u6700\u540e\u7684\u5168\u8fde\u63a5\u5c42": 92, "\u662f\u4e00\u4e2a\u5206\u7c7b\u5668": 92, "\u5b83\u5c06\u6700\u7ec8\u7684\u6fc0\u6d3b\u56fe\u5206\u7c7b\u4e3a": 92, "\u4e2a": 92, "\u4e2d\u7684\u4e00\u4e2a": 92, "\u8868\u793a": 92, "\u4e2a\u6570\u5b57": 92, "\u6211\u4eec\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u8868\u793a\u8fd9\u4e2a\u7b80\u5355\u7684\u795e\u7ecf\u7f51\u7edc\u5462": 92, "\u4e2a\u8f93\u5165\u56fe\u50cf\u901a\u9053": 92, "\u9ed1\u767d": [92, 93], "\u4e2a\u8f93\u51fa\u901a\u9053": [92, 93], "\u7684\u6b63\u65b9\u5f62\u5377\u79ef\u6838": 92, "\u4e00\u4e2a\u4eff\u5c04\u64cd\u4f5c": [92, 93], "\u7a97\u53e3\u4e0a\u8fdb\u884c\u6700\u5927\u6c60\u5316": [92, 93], "\u5982\u679c\u5c3a\u5bf8\u662f\u6b63\u65b9\u5f62": [92, 93], "\u4f60\u53ea\u9700\u6307\u5b9a\u4e00\u4e2a\u6570\u5b57": [92, 93], "num_flat_featur": [92, 93], "\u9664\u6279\u6b21\u7ef4\u5ea6\u5916\u7684\u6240\u6709\u7ef4\u5ea6": [92, 93], "num_featur": [92, 93, 129], "\u67e5\u770b\u8fd9\u6bb5\u4ee3\u7801": 92, "\u4f60\u5e94\u8be5\u80fd\u591f\u53d1\u73b0\u4e00\u4e9b\u4e0e\u4e0a\u56fe\u7ed3\u6784\u76f8\u4f3c\u7684\u5730\u65b9": 92, "\u8fd9\u6f14\u793a\u4e86\u5178\u578b": 92, "\u6a21\u578b\u7684\u7ed3\u6784": 92, "\u5b83\u7ee7\u627f\u81ea": 92, "\u6a21\u5757\u53ef\u4ee5\u5d4c\u5957": 92, "\u5373\u4f7f": 92, "\u5c42\u7c7b\u4e5f\u7ee7\u627f\u81ea": 92, "\u4e00\u4e2a\u6a21\u578b\u5c06\u6709\u4e00\u4e2a": 92, "\u5728\u8fd9\u91cc\u5b83\u5b9e\u4f8b\u5316\u5176\u5c42": 92, "\u5e76\u52a0\u8f7d\u4efb\u4f55\u5b83\u53ef\u80fd\u9700\u8981\u7684\u6570\u636e\u7ec4\u4ef6": 92, "\u6a21\u578b\u53ef\u80fd\u52a0\u8f7d\u8bcd\u6c47\u8868": 92, "\u8fd9\u662f\u5b9e\u9645\u8ba1\u7b97\u53d1\u751f\u7684\u5730\u65b9": 92, "\u8f93\u5165\u901a\u8fc7\u7f51\u7edc\u5c42\u548c\u5404\u79cd\u51fd\u6570\u751f\u6210\u8f93\u51fa": 92, "\u9664\u6b64\u4e4b\u5916": 92, "\u4f60\u53ef\u4ee5\u50cf\u6784\u5efa\u4efb\u4f55\u5176\u4ed6": 92, "\u7c7b\u4e00\u6837\u6784\u5efa\u4f60\u7684\u6a21\u578b\u7c7b": 92, "\u6dfb\u52a0\u4efb\u4f55\u4f60\u9700\u8981\u652f\u6301\u6a21\u578b\u8ba1\u7b97\u7684\u5c5e\u6027\u548c\u65b9\u6cd5": 92, "\u8ba9\u6211\u4eec\u5b9e\u4f8b\u5316\u8fd9\u4e2a\u5bf9\u8c61\u5e76\u8fd0\u884c\u4e00\u4e2a\u793a\u4f8b\u8f93\u5165": 92, "\u5bf9\u8c61\u6253\u5370\u4e86\u4ec0\u4e48\u4fe1\u606f": 92, "\u7684\u9ed1\u767d\u56fe\u50cf": [92, 93, 104], "nimag": 92, "\u4e0d\u76f4\u63a5\u8c03\u7528": 92, "nraw": 92, "\u5982\u4e0a\u4ee3\u7801\u5b58\u5728\u4e00\u4e9b\u8981\u70b9": 92, "\u6211\u4eec\u5b9e\u4f8b\u5316": 92, "\u7c7b": [92, 93, 104, 246], "\u5e76\u6253\u5370": 92, "\u7684\u5b50\u7c7b\u5c06\u62a5\u544a\u5b83\u521b\u5efa\u7684\u5c42\u53ca\u5176\u5f62\u72b6\u548c\u53c2\u6570": 92, "\u8fd9\u53ef\u4ee5\u63d0\u4f9b\u4e00\u4e2a\u6a21\u578b\u7684\u6982\u89c8": 92, "\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u5b83\u7684\u5904\u7406\u8fc7\u7a0b": 92, "\u5728\u4e0b\u9762": [92, 95], "\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u865a\u62df\u8f93\u5165": 92, "\u8868\u793a\u4e00\u4e2a": 92, "\u7684\u5355\u901a\u9053\u56fe\u50cf": 92, "\u4f60\u4f1a\u52a0\u8f7d\u4e00\u4e2a\u56fe\u50cf\u5207\u7247\u5e76\u5c06\u5176\u8f6c\u6362\u4e3a\u8fd9\u79cd\u5f62\u72b6\u7684\u5f20\u91cf": 92, "\u4f60\u53ef\u80fd\u5df2\u7ecf\u6ce8\u610f\u5230\u6211\u4eec\u7684\u5f20\u91cf\u6709\u4e00\u4e2a\u989d\u5916\u7684\u7ef4\u5ea6": 92, "\u6279\u6b21\u7ef4\u5ea6": 92, "\u6a21\u578b\u5047\u8bbe\u5b83\u4eec\u6b63\u5728\u5904\u7406\u6570\u636e": 92, "\u6279\u6b21": [92, 95, 96], "\u5305\u542b": [92, 104], "\u4e2a\u56fe\u50cf\u5207\u7247\u7684\u6279\u6b21\u5c06\u5177\u6709\u5f62\u72b6": 92, "\u7531\u4e8e\u6211\u4eec\u53ea\u4f7f\u7528\u4e00\u4e2a\u56fe\u50cf": 92, "\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u5f62\u72b6\u4e3a": 92, "\u7684\u6279\u6b21": 92, "\u6211\u4eec\u901a\u8fc7\u50cf\u51fd\u6570\u4e00\u6837\u8c03\u7528\u5b83\u6765\u8981\u6c42\u6a21\u578b\u8fdb\u884c\u63a8\u7406": 92, "\u8fd9\u4e2a\u8c03\u7528\u7684\u8f93\u51fa\u8868\u793a\u6a21\u578b\u5bf9\u8f93\u5165\u8868\u793a\u7279\u5b9a\u6570\u5b57\u7684\u7f6e\u4fe1\u5ea6": 92, "\u7531\u4e8e\u8fd9\u4e2a\u6a21\u578b\u5b9e\u4f8b\u8fd8\u6ca1\u6709\u5b66\u4e60\u4efb\u4f55\u4e1c\u897f": 92, "\u6211\u4eec\u4e0d\u5e94\u8be5\u671f\u671b\u5728\u8f93\u51fa\u4e2d\u770b\u5230\u4efb\u4f55\u4fe1\u53f7": 92, "\u67e5\u770b": [92, 236], "\u7684\u5f62\u72b6": 92, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5b83\u4e5f\u6709\u4e00\u4e2a\u6279\u6b21\u7ef4\u5ea6": 92, "\u5176\u5927\u5c0f\u5e94\u8be5\u59cb\u7ec8\u4e0e\u8f93\u5165\u6279\u6b21\u7ef4\u5ea6\u76f8\u5339\u914d": 92, "\u5982\u679c\u6211\u4eec\u4f20\u5165\u4e86\u4e00\u4e2a\u5305\u542b": 92, "\u4e2a\u5b9e\u4f8b\u7684\u8f93\u5165\u6279\u6b21": 92, "\u5c06\u5177\u6709": 92, "\u6211\u4eec\u5c06\u6f14\u793a\u5982\u4f55\u4f7f\u7528": 92, "\u4e2d\u7684\u4e00\u4e2a\u53ef\u4e0b\u8f7d\u7684\u5f00\u653e\u8bbf\u95ee\u6570\u636e\u96c6": 92, "\u5982\u4f55\u8f6c\u6362\u56fe\u50cf\u4ee5\u4f9b\u4f60\u7684\u6a21\u578b\u4f7f\u7528": 92, "\u4ee5\u53ca\u5982\u4f55\u4f7f\u7528": 92, "\u5c06\u6570\u636e\u6279\u6b21\u63d0\u4f9b\u7ed9\u4f60\u7684\u6a21\u578b": 92, "\u6211\u4eec\u9700\u8981\u505a\u7684\u7b2c\u4e00\u4ef6\u4e8b\u662f\u5c06\u4f20\u5165\u7684\u56fe\u50cf\u8f6c\u6362\u4e3a": 92, "4914": 92, "4822": 92, "4465": 92, "2470": 92, "2435": 92, "2616": 92, "\u6211\u4eec\u4e3a\u8f93\u5165\u6307\u5b9a\u4e86\u4e24\u79cd\u8f6c\u6362": 92, "\u52a0\u8f7d\u7684\u56fe\u50cf\u8f6c\u6362\u4e3a": 92, "\u8c03\u6574\u5f20\u91cf\u7684\u503c": 92, "\u4f7f\u5176\u5e73\u5747\u503c\u4e3a\u96f6": 92, "\u6807\u51c6\u5dee\u4e3a": 92, "\u5927\u591a\u6570\u6fc0\u6d3b\u51fd\u6570\u5728": 92, "\u9644\u8fd1\u5177\u6709\u6700\u5f3a\u68af\u5ea6": [92, 93], "\u56e0\u6b64\u5c06\u6211\u4eec\u7684\u6570\u636e\u5c45\u4e2d\u53ef\u4ee5\u52a0\u5feb\u5b66\u4e60\u901f\u5ea6": 92, "\u4f20\u9012\u7ed9\u8f6c\u6362\u7684\u503c\u662f\u6570\u636e\u96c6\u4e2d\u56fe\u50cf\u7684": 92, "\u503c\u7684\u5747\u503c": 92, "\u7b2c\u4e00\u4e2a\u5143\u7ec4": 92, "\u548c\u6807\u51c6\u5dee": 92, "\u7b2c\u4e8c\u4e2a\u5143\u7ec4": 92, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u51e0\u884c\u4ee3\u7801\u81ea\u5df1\u8ba1\u7b97\u8fd9\u4e9b\u503c": 92, "concatdataset": 92, "\u5c06\u6240\u6709\u8bad\u7ec3\u56fe\u50cf\u5806\u53e0\u6210\u5f62\u72b6\u4e3a": 92, "50000": 92, "\u83b7\u53d6\u6bcf\u4e2a\u901a\u9053\u7684\u5747\u503c": 92, "\u8fd8\u6709\u8bb8\u591a\u5176\u4ed6\u53ef\u7528\u7684\u8f6c\u6362": 92, "\u5305\u62ec\u88c1\u526a": 92, "\u5c45\u4e2d": 92, "\u65cb\u8f6c\u548c\u53cd\u5c04": 92, "\u6211\u4eec\u5c06\u521b\u5efa": 92, "\u6570\u636e\u96c6\u7684\u4e00\u4e2a\u5b9e\u4f8b": 92, "\u8fd9\u662f\u4e00\u7ec4": 92, "\u7684\u5f69\u8272\u56fe\u50cf\u5207\u7247": 92, "\u4ee3\u8868": [92, 95], "\u7c7b\u7269\u4f53": 92, "\u79cd\u52a8\u7269": 92, "\u9e1f": 92, "\u732b": 92, "\u9e7f": 92, "\u72d7": 92, "\u9752\u86d9": 92, "\u9a6c": 92, "\u79cd\u8f66\u8f86": 92, "\u98de\u673a": 92, "\u6c7d\u8f66": 92, "\u8239": 92, "\u5361\u8f66": 92, "\u5f53\u4f60\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u65f6": 92, "\u5b83\u53ef\u80fd\u9700\u8981\u4e00\u4e9b\u65f6\u95f4\u6765\u4e0b\u8f7d\u6570\u636e\u96c6": 92, "\u8fd9\u662f\u5728": 92, "\u4e2d\u521b\u5efa\u6570\u636e\u96c6\u5bf9\u8c61\u7684\u4e00\u4e2a\u793a\u4f8b": 92, "\u53ef\u4e0b\u8f7d\u7684\u6570\u636e\u96c6": 92, "\u5982\u4e0a\u9762\u7684": 92, "\u7c7b\u5305\u62ec": 92, "\u4e2d\u7684\u53ef\u4e0b\u8f7d\u6570\u636e\u96c6": 92, "\u4ee5\u53ca\u8bf8\u5982": 92, "\u4e4b\u7c7b\u7684\u5b9e\u7528\u7a0b\u5e8f\u6570\u636e\u96c6\u7c7b": 92, "\u5b83\u5c06\u8bfb\u53d6\u4e00\u4e2a\u6807\u8bb0\u8fc7\u7684\u56fe\u50cf\u6587\u4ef6\u5939": 92, "\u4f60\u4e5f\u53ef\u4ee5\u521b\u5efa": 92, "\u7684\u81ea\u5df1\u7684\u5b50\u7c7b": 92, "\u5f53\u6211\u4eec\u5b9e\u4f8b\u5316\u6211\u4eec\u7684\u6570\u636e\u96c6\u65f6": 92, "\u6211\u4eec\u9700\u8981\u544a\u8bc9\u5b83\u4e00\u4e9b\u4e8b\u60c5": 92, "\u6211\u4eec\u5e0c\u671b\u6570\u636e\u5b58\u653e\u7684\u6587\u4ef6\u7cfb\u7edf\u8def\u5f84": 92, "\u6211\u4eec\u662f\u5426\u4f7f\u7528\u8fd9\u4e2a\u96c6\u5408\u8fdb\u884c\u8bad\u7ec3": 92, "\u5927\u591a\u6570\u6570\u636e\u96c6\u5c06\u88ab\u5206\u4e3a\u8bad\u7ec3\u548c\u6d4b\u8bd5\u5b50\u96c6": 92, "\u5982\u679c\u6211\u4eec\u8fd8\u6ca1\u6709\u4e0b\u8f7d\u6570\u636e\u96c6": 92, "\u6211\u4eec\u662f\u5426\u5e0c\u671b\u4e0b\u8f7d\u5b83": 92, "\u6211\u4eec\u60f3\u5bf9\u6570\u636e\u5e94\u7528\u54ea\u4e9b\u8f6c\u6362": 92, "\u4e00\u65e6\u4f60\u7684\u6570\u636e\u96c6\u51c6\u5907\u5c31\u7eea": 92, "\u4f60\u5c31\u53ef\u4ee5\u5c06\u5b83\u4ea4\u7ed9": 92, "\u7684\u5b50\u7c7b\u5305\u88c5\u4e86\u5bf9\u6570\u636e\u7684\u8bbf\u95ee": 92, "\u5e76\u4e13\u95e8\u9488\u5bf9\u5b83\u6b63\u5728\u670d\u52a1\u7684\u6570\u636e\u7c7b\u578b": 92, "\u5bf9\u5b83\u6b63\u5728\u670d\u52a1\u7684\u6570\u636e\u4e00\u65e0\u6240\u77e5": 92, "\u4f46\u4f1a\u6839\u636e\u4f60\u6307\u5b9a\u7684\u53c2\u6570\u5c06": 92, "\u63d0\u4f9b\u7684\u8f93\u5165\u5f20\u91cf\u7ec4\u7ec7\u6210\u6279\u6b21": 92, "\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d": [92, 111, 238], "\u6211\u4eec\u8981\u6c42\u4e00\u4e2a": 92, "\u4e2d\u7ed9\u6211\u4eec\u6279\u6b21\u5927\u5c0f\u4e3a": 92, "\u968f\u673a\u6253\u4e71\u5b83\u4eec\u7684\u987a\u5e8f": 92, "\u5e76\u544a\u8bc9\u5b83\u542f\u52a8\u4e24\u4e2a\u5de5\u4f5c\u8fdb\u7a0b\u4ece\u78c1\u76d8\u52a0\u8f7d\u6570\u636e": 92, "\u53ef\u89c6\u5316\u4f60\u7684": 92, "\u63d0\u4f9b\u7684\u6279\u6b21\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u505a\u6cd5": 92, "\u83b7\u53d6\u4e00\u4e9b\u968f\u673a\u8bad\u7ec3\u56fe\u50cf": 92, "\u663e\u793a\u56fe\u50cf": 92, "\u6253\u5370\u6807\u7b7e": 92, "\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c\u5e94\u8be5\u4f1a\u663e\u793a\u4f60\u4e00\u6761\u56db\u5f20\u56fe\u50cf\u7684\u6761\u5e26": 92, "\u4ee5\u53ca\u6bcf\u5f20\u56fe\u50cf\u7684\u6b63\u786e\u6807\u7b7e": 92, "\u8ba9\u6211\u4eec\u628a\u6240\u6709\u7684\u90e8\u5206\u653e\u5728\u4e00\u8d77": 92, "\u8bad\u7ec3\u4e00\u4e2a\u6a21\u578b": 92, "\u6211\u4eec\u9700\u8981\u8bad\u7ec3\u548c\u6d4b\u8bd5\u6570\u636e\u96c6": 92, "\u5982\u679c\u4f60\u8fd8\u6ca1\u6709": 92, "\u8fd0\u884c\u4e0b\u9762\u7684\u5355\u5143\u683c\u6765\u786e\u4fdd\u6570\u636e\u96c6\u5df2\u4e0b\u8f7d": 92, "\u53ef\u80fd\u9700\u8981\u4e00\u5206\u949f": 92, "\u8fd0\u884c\u5bf9": 92, "\u8f93\u51fa\u7684\u68c0\u67e5": 92, "\u8fd9\u662f\u6211\u4eec\u5c06\u8981\u8bad\u7ec3\u7684\u6a21\u578b": 92, "\u5982\u679c\u5b83\u770b\u8d77\u6765\u5f88\u719f\u6089": 92, "\u90a3\u662f\u56e0\u4e3a\u5b83\u662f": 92, "\u7684\u4e00\u4e2a\u53d8\u4f53": 92, "\u5728\u672c\u89c6\u9891\u524d\u9762\u8ba8\u8bba\u8fc7": 92, "\u9002\u7528\u4e8e": 92, "\u8272\u56fe\u50cf": 92, "\u6211\u4eec\u6700\u540e\u9700\u8981\u7684\u662f\u4e00\u4e2a\u635f\u5931\u51fd\u6570\u548c\u4e00\u4e2a\u4f18\u5316\u5668": 92, "\u5982\u672c\u89c6\u9891\u524d\u9762\u6240\u8ba8\u8bba\u7684": 92, "\u662f\u8861\u91cf\u6a21\u578b\u9884\u6d4b\u4e0e\u7406\u60f3\u8f93\u51fa\u4e4b\u95f4\u5dee\u8ddd\u7684\u6307\u6807": 92, "\u4ea4\u53c9\u71b5\u635f\u5931\u662f\u50cf\u6211\u4eec\u8fd9\u6837\u7684\u5206\u7c7b\u6a21\u578b\u7684\u5178\u578b\u635f\u5931\u51fd\u6570": 92, "\u662f\u9a71\u52a8\u5b66\u4e60\u7684\u5173\u952e": 92, "\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u5b9e\u73b0": 92, "\u968f\u673a\u68af\u5ea6\u4e0b\u964d": 92, "\u7684\u4f18\u5316\u5668": 92, "\u8fd9\u662f\u6700\u76f4\u63a5\u7684\u4f18\u5316\u7b97\u6cd5\u4e4b\u4e00": 92, "\u9664\u4e86\u7b97\u6cd5\u7684\u53c2\u6570": 92, "\u5982\u5b66\u4e60\u7387": 92, "\u548c\u52a8\u91cf": 92, "\u4e4b\u5916": [92, 93], "\u6211\u4eec\u8fd8\u4f20\u5165\u4e86": 92, "\u5b83\u662f\u6a21\u578b\u4e2d\u6240\u6709\u5b66\u4e60\u6743\u91cd\u7684\u96c6\u5408": 92, "\u8fd9\u662f\u4f18\u5316\u5668\u8981\u8c03\u6574\u7684\u5bf9\u8c61": 92, "\u6240\u6709\u8fd9\u4e9b\u90fd\u88ab\u7ec4\u88c5\u5230\u8bad\u7ec3\u5faa\u73af\u4e2d": 92, "\u7ee7\u7eed\u8fd0\u884c\u8fd9\u4e2a\u5355\u5143\u683c": 92, "\u5b83\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u624d\u80fd\u6267\u884c": 92, "\u5728\u6570\u636e\u96c6\u4e0a\u5faa\u73af\u591a\u6b21": [92, 94], "\u83b7\u53d6\u8f93\u5165": [92, 250], "\u5c06\u53c2\u6570\u68af\u5ea6\u5f52\u96f6": 92, "\u53cd\u5411": [92, 250], "\u6253\u5370\u7edf\u8ba1\u4fe1\u606f": [92, 250], "\u6bcf": 92, "\u4e2a\u5c0f\u6279\u6b21\u6253\u5370\u4e00\u6b21": 92, "\u6211\u4eec\u53ea\u8fdb\u884c\u4e86": 92, "\u4e2a\u8bad\u7ec3\u8f6e\u6b21": 92, "\u7b2c": 92, "\u884c": 92, "\u4e5f\u5c31\u662f\u5728\u8bad\u7ec3\u6570\u636e\u96c6\u4e0a\u8fdb\u884c\u4e86\u4e24\u6b21\u5b8c\u6574\u904d\u5386": 92, "\u6bcf\u6b21\u904d\u5386\u90fd\u6709\u4e00\u4e2a\u5185\u90e8\u5faa\u73af": 92, "\u904d\u5386\u8bad\u7ec3\u6570\u636e": 92, "\u63d0\u4f9b\u7ecf\u8fc7\u8f6c\u6362\u7684\u8f93\u5165\u56fe\u50cf\u6279\u6b21\u53ca\u5176\u6b63\u786e\u6807\u7b7e": 92, "\u5c06\u68af\u5ea6\u5f52\u96f6": [92, 96], "\u662f\u4e00\u4e2a\u91cd\u8981\u6b65\u9aa4": 92, "\u68af\u5ea6\u4f1a\u5728\u4e00\u4e2a\u6279\u6b21\u4e0a\u7d2f\u79ef": 92, "\u5982\u679c\u6211\u4eec\u4e0d\u4e3a\u6bcf\u4e2a\u6279\u6b21\u91cd\u7f6e\u5b83\u4eec": 92, "\u5b83\u4eec\u5c06\u7ee7\u7eed\u7d2f\u79ef": 92, "\u4ece\u800c\u63d0\u4f9b\u9519\u8bef\u7684\u68af\u5ea6\u503c": 92, "\u4f7f\u5b66\u4e60\u53d8\u5f97\u4e0d\u53ef\u80fd": 92, "\u5728\u7b2c": 92, "\u6211\u4eec": 92, "\u8981\u6c42\u6a21\u578b\u5bf9\u8fd9\u4e2a\u6279\u6b21\u8fdb\u884c\u9884\u6d4b": 92, "\u5728\u4e0b\u4e00\u884c": 92, "\u6211\u4eec\u8ba1\u7b97\u635f\u5931": 92, "\u6a21\u578b\u9884\u6d4b": 92, "\u6b63\u786e\u8f93\u51fa": 92, "\u4e4b\u95f4\u7684\u5dee\u5f02": 92, "\u6211\u4eec\u8fdb\u884c": 92, "\u4f20\u64ad": 92, "\u8ba1\u7b97\u5c06\u6307\u5bfc\u5b66\u4e60\u7684\u68af\u5ea6": 92, "\u4f18\u5316\u5668\u6267\u884c\u4e00\u6b65\u5b66\u4e60": 92, "\u5b83\u4f7f\u7528": 92, "\u8c03\u7528\u5f97\u5230\u7684\u68af\u5ea6\u6765\u8c03\u6574\u5b66\u4e60\u6743\u91cd": 92, "\u4ee5\u51cf\u5c0f\u635f\u5931": 92, "\u5faa\u73af\u7684\u5176\u4f59\u90e8\u5206\u5bf9\u8f6e\u6b21\u53f7": 92, "\u5df2\u5b8c\u6210\u7684\u8bad\u7ec3\u5b9e\u4f8b\u6570\u4ee5\u53ca\u8bad\u7ec3\u5faa\u73af\u4e2d\u6536\u96c6\u7684\u635f\u5931\u8fdb\u884c\u4e86\u4e00\u4e9b\u8f7b\u91cf\u7ea7\u62a5\u544a": 92, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u7c7b\u4f3c\u8fd9\u6837\u7684\u8f93\u51fa": 92, "235": [92, 109], "940": 92, "6000": 92, "8000": [92, 246], "573": 92, "507": 92, "12000": 92, "442": 92, "378": 92, "364": 92, "319": [92, 219, 238], "284": [92, 163], "267": 92, "\u6ce8\u610f\u635f\u5931\u503c\u662f\u5355\u8c03\u4e0b\u964d\u7684": 92, "\u8868\u660e\u6211\u4eec\u7684\u6a21\u578b\u5728\u7ee7\u7eed\u63d0\u9ad8\u5176\u5728\u8bad\u7ec3\u6570\u636e\u96c6\u4e0a\u7684\u6027\u80fd": 92, "\u4f5c\u4e3a\u6700\u540e\u4e00\u6b65": 92, "\u6211\u4eec\u5e94\u8be5\u68c0\u67e5\u6a21\u578b\u662f\u5426\u771f\u6b63\u505a\u5230\u4e86": 92, "\u6cdb\u5316": 92, "\u5b66\u4e60": [92, 104], "\u800c\u4e0d\u662f\u7b80\u5355\u5730": 92, "\u8bb0\u4f4f": 92, "\u4e86\u6570\u636e\u96c6": 92, "\u8fd9\u88ab\u79f0\u4e3a": 92, "\u8fc7\u62df\u5408": 92, "\u901a\u5e38\u8868\u660e\u6570\u636e\u96c6\u592a\u5c0f": 92, "\u6ca1\u6709\u8db3\u591f\u7684\u6837\u672c\u8fdb\u884c\u6cdb\u5316\u5b66\u4e60": 92, "\u6216\u8005\u6a21\u578b\u7684\u5b66\u4e60\u53c2\u6570\u6bd4\u6b63\u786e\u5efa\u6a21\u6570\u636e\u96c6\u6240\u9700\u7684\u66f4\u591a": 92, "\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u6570\u636e\u96c6\u88ab\u5206\u4e3a\u8bad\u7ec3\u548c\u6d4b\u8bd5\u5b50\u96c6\u7684\u539f\u56e0": 92, "\u4e3a\u4e86\u6d4b\u8bd5\u6a21\u578b\u7684\u6cdb\u5316\u80fd\u529b": 92, "\u6211\u4eec\u8981\u6c42\u5b83\u5bf9\u4ece\u672a\u8bad\u7ec3\u8fc7\u7684\u6570\u636e\u8fdb\u884c\u9884\u6d4b": 92, "\u5982\u679c\u4f60\u4e00\u76f4\u8ddf\u968f\u4e0b\u6765": 92, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u6a21\u578b\u5728\u8fd9\u4e00\u70b9\u4e0a\u7684\u51c6\u786e\u7387\u5927\u7ea6\u4e3a": 92, "\u8fd9\u5e76\u4e0d\u662f\u6700\u5148\u8fdb\u7684\u6c34\u5e73": 92, "\u4f46\u6bd4\u968f\u673a\u8f93\u51fa\u7684": 92, "\u51c6\u786e\u7387\u8981\u597d\u5f97\u591a": 92, "\u8fd9\u8bc1\u660e\u4e86\u6a21\u578b\u786e\u5b9e\u53d1\u751f\u4e86\u4e00\u4e9b\u6cdb\u5316\u5b66\u4e60": 92, "\u5728\u8fd9\u4e2a\u89c6\u9891\u4e2d": 93, "\u6211\u4eec\u5c06\u8ba8\u8bba": 93, "\u63d0\u4f9b\u7684\u4e00\u4e9b\u7528\u4e8e\u6784\u5efa\u6df1\u5ea6\u5b66\u4e60\u7f51\u7edc\u7684\u5de5\u5177": 93, "\u9664\u4e86": 93, "\u6211\u4eec\u5728\u672c\u89c6\u9891\u4e2d\u8ba8\u8bba\u7684\u6240\u6709\u7c7b\u90fd\u662f": 93, "\u7684\u57fa\u7c7b": 93, "\u65e8\u5728\u5c01\u88c5\u7279\u5b9a\u4e8e": 93, "\u6a21\u578b\u53ca\u5176\u7ec4\u4ef6\u7684\u884c\u4e3a": 93, "\u7684\u4e00\u4e2a\u91cd\u8981\u884c\u4e3a\u662f\u6ce8\u518c\u53c2\u6570": 93, "\u5982\u679c\u7279\u5b9a\u7684": 93, "\u5b50\u7c7b\u5177\u6709\u5b66\u4e60\u6743\u91cd": 93, "\u8fd9\u4e9b\u6743\u91cd\u5c06\u8868\u793a\u4e3a": 93, "\u7c7b\u662f": 93, "\u5177\u6709\u7279\u6b8a\u884c\u4e3a": 93, "\u5373\u5f53\u5b83\u4eec\u88ab\u5206\u914d\u4e3a": 93, "\u7684\u5c5e\u6027\u65f6": 93, "\u5b83\u4eec\u5c06\u88ab\u6dfb\u52a0\u5230\u8be5\u6a21\u5757\u7684\u53c2\u6570\u5217\u8868\u4e2d": 93, "\u7c7b\u4e0a\u7684": 93, "\u65b9\u6cd5\u8bbf\u95ee\u8fd9\u4e9b\u53c2\u6570": 93, "\u4f5c\u4e3a\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50": 93, "\u8fd9\u91cc\u6709\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684\u6a21\u578b": 93, "\u5305\u542b\u4e24\u4e2a\u7ebf\u6027\u5c42\u548c\u4e00\u4e2a\u6fc0\u6d3b\u51fd\u6570": 93, "\u6211\u4eec\u5c06\u521b\u5efa\u5b83\u7684\u4e00\u4e2a\u5b9e\u4f8b": 93, "\u5e76\u8981\u6c42\u5b83\u62a5\u544a\u5176\u53c2\u6570": 93, "linear1": [93, 103], "linear2": [93, 103], "njust": 93, "nmodel": 93, "\u8fd9\u663e\u793a\u4e86": 93, "\u6a21\u578b\u7684\u57fa\u672c\u7ed3\u6784": 93, "\u65b9\u6cd5\u5b9a\u4e49\u6a21\u578b\u7684\u5c42\u548c\u5176\u4ed6\u7ec4\u4ef6": 93, "\u8fd8\u6709\u4e00\u4e2a": 93, "\u65b9\u6cd5\u6267\u884c\u8ba1\u7b97": 93, "\u6ce8\u610f\u6211\u4eec\u53ef\u4ee5\u6253\u5370\u6a21\u578b\u6216\u4efb\u4f55\u5b50\u6a21\u5757": 93, "\u4ee5\u4e86\u89e3\u5176\u7ed3\u6784": 93, "\u6700\u57fa\u672c\u7684\u795e\u7ecf\u7f51\u7edc\u5c42\u7c7b\u578b\u662f": 93, "\u7ebf\u6027": 93, "\u5168\u8fde\u63a5": 93, "\u8fd9\u662f\u4e00\u79cd\u6bcf\u4e2a\u8f93\u5165\u90fd\u4f1a\u5f71\u54cd\u8be5\u5c42\u6bcf\u4e2a\u8f93\u51fa\u7684\u5c42": 93, "\u5176\u5f71\u54cd\u7a0b\u5ea6\u7531\u5c42\u7684\u6743\u91cd\u6307\u5b9a": 93, "\u5982\u679c\u4e00\u4e2a\u6a21\u578b\u6709": 93, "\u4e2a\u8f93\u5165\u548c": 93, "\u4e2a\u8f93\u51fa": 93, "\u6743\u91cd\u5c06\u662f\u4e00\u4e2a": 93, "\u77e9\u9635": [93, 95], "lin": [93, 99, 104, 137, 157, 172, 173, 174, 209], "nweight": 93, "noutput": 93, "\u5982\u679c\u4f60\u5c06": 93, "\u4e0e\u7ebf\u6027\u5c42\u7684\u6743\u91cd\u76f8\u4e58": 93, "\u5e76\u52a0\u4e0a\u504f\u7f6e": 93, "\u4f60\u4f1a\u53d1\u73b0\u5f97\u5230\u7684\u662f\u8f93\u51fa\u5411\u91cf": 93, "\u53e6\u4e00\u4e2a\u9700\u8981\u6ce8\u610f\u7684\u91cd\u8981\u7279\u6027\u662f": 93, "\u5f53\u6211\u4eec\u7528": 93, "\u68c0\u67e5\u5c42\u7684\u6743\u91cd\u65f6": 93, "\u5b83\u5c06\u81ea\u5df1\u62a5\u544a\u4e3a\u4e00\u4e2a": 93, "\u5e76\u8ba9\u6211\u4eec\u77e5\u9053\u5b83\u6b63\u5728\u4f7f\u7528": 93, "\u8ddf\u8e2a\u68af\u5ea6": 93, "\u4e0d\u540c\u7684\u9ed8\u8ba4\u884c\u4e3a": 93, "\u7ebf\u6027\u5c42\u5728\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\u4e2d\u88ab\u5e7f\u6cdb\u4f7f\u7528": 93, "\u4f60\u4f1a\u7ecf\u5e38\u5728\u5206\u7c7b\u5668\u6a21\u578b\u7684\u672b\u7aef\u770b\u5230\u5b83\u4eec": 93, "\u5176\u4e2d\u6700\u540e\u4e00\u5c42\u5c06\u6709": 93, "\u662f\u5206\u7c7b\u5668\u6240\u5904\u7406\u7684\u7c7b\u522b\u6570": 93, "\u5377\u79ef": 93, "\u5c42\u88ab\u8bbe\u8ba1\u7528\u4e8e\u5904\u7406\u5177\u6709\u9ad8\u5ea6\u7a7a\u95f4\u76f8\u5173\u6027\u7684\u6570\u636e": 93, "\u5b83\u4eec\u5728\u8ba1\u7b97\u673a\u89c6\u89c9\u9886\u57df\u975e\u5e38\u5e38\u7528": 93, "\u7528\u4e8e\u68c0\u6d4b\u7ec4\u6210\u66f4\u9ad8\u7ea7\u7279\u5f81\u7684\u7d27\u5bc6\u7279\u5f81\u7ec4": 93, "\u5b83\u4eec\u4e5f\u51fa\u73b0\u5728\u5176\u4ed6\u4e0a\u4e0b\u6587\u4e2d": 93, "\u5e94\u7528\u7a0b\u5e8f\u4e2d": 93, "\u4e00\u4e2a\u5355\u8bcd\u7684\u76f4\u63a5\u4e0a\u4e0b\u6587": 93, "\u5373\u5e8f\u5217\u4e2d\u9644\u8fd1\u7684\u5176\u4ed6\u5355\u8bcd": 93, "\u53ef\u80fd\u4f1a\u5f71\u54cd\u53e5\u5b50\u7684\u542b\u4e49": 93, "\u6211\u4eec\u5728\u4e4b\u524d\u7684\u89c6\u9891\u4e2d\u770b\u5230\u4e86": 93, "lenet5": 93, "\u4e2d\u7684\u5377\u79ef\u5c42": 93, "\u8f93\u5165\u56fe\u50cf\u901a\u9053": 93, "\u8f93\u51fa\u901a\u9053": 93, "\u5e73\u65b9\u5377\u79ef\u6838": 93, "\u6765\u81ea\u56fe\u50cf\u7ef4\u5ea6": 93, "\u8ba9\u6211\u4eec\u5206\u89e3\u4e00\u4e0b\u8fd9\u4e2a\u6a21\u578b\u4e2d\u5377\u79ef\u5c42\u7684\u5de5\u4f5c\u539f\u7406": 93, "\u65e8\u5728\u63a5\u53d7": 93, "1x32x32": 93, "\u5377\u79ef\u5c42\u6784\u9020\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u8f93\u5165\u901a\u9053\u6570": 93, "\u8fd9\u91cc\u662f": 93, "\u5982\u679c\u6211\u4eec\u6784\u5efa\u8fd9\u4e2a\u6a21\u578b\u6765\u67e5\u770b": 93, "\u8272\u5f69\u901a\u9053": 93, "\u5b83\u5c06\u662f": 93, "\u5377\u79ef\u5c42\u5c31\u50cf\u4e00\u4e2a\u626b\u63cf\u56fe\u50cf\u7684\u7a97\u53e3": 93, "\u5bfb\u627e\u5b83\u80fd\u8bc6\u522b\u7684\u6a21\u5f0f": 93, "\u8fd9\u4e9b\u6a21\u5f0f\u88ab\u79f0\u4e3a": 93, "\u7279\u5f81": 93, "\u5377\u79ef\u5c42\u7684\u4e00\u4e2a\u53c2\u6570\u662f\u6211\u4eec\u5e0c\u671b\u5b83\u5b66\u4e60\u7684\u7279\u5f81\u6570\u91cf": 93, "\u6784\u9020\u51fd\u6570\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u8f93\u51fa\u7279\u5f81\u7684\u6570\u91cf": 93, "\u6211\u4eec\u8981\u6c42\u6211\u4eec\u7684\u5c42\u5b66\u4e60": 93, "\u4e2a\u7279\u5f81": 93, "\u5c31\u5728\u4e0a\u9762": 93, "\u6211\u5c06\u5377\u79ef\u5c42\u6bd4\u4f5c\u4e00\u4e2a\u7a97\u53e3": 93, "\u4f46\u662f\u7a97\u53e3\u6709\u591a\u5927": 93, "\u7b2c\u4e09\u4e2a\u53c2\u6570\u662f\u7a97\u53e3\u6216\u5185\u6838\u5927\u5c0f": 93, "\u6570\u5b57": 93, "\u610f\u5473\u7740\u6211\u4eec\u9009\u62e9\u4e86\u4e00\u4e2a": 93, "\u7684\u5185\u6838": 93, "\u5982\u679c\u4f60\u5e0c\u671b\u5185\u6838\u7684\u9ad8\u5ea6\u4e0e\u5bbd\u5ea6\u4e0d\u540c": 93, "\u4f60\u53ef\u4ee5\u4e3a\u6b64\u53c2\u6570\u6307\u5b9a\u4e00\u4e2a\u5143\u7ec4": 93, "\u6765\u83b7\u5f97\u4e00\u4e2a": 93, "3x5": 93, "\u7684\u5377\u79ef\u6838": 93, "\u5377\u79ef\u5c42\u7684\u8f93\u51fa\u662f\u4e00\u4e2a": 93, "\u6fc0\u6d3b\u6620\u5c04": 93, "\u8f93\u5165\u5f20\u91cf\u4e2d\u7279\u5f81\u5b58\u5728\u7684\u7a7a\u95f4\u8868\u793a": 93, "\u5c06\u7ed9\u6211\u4eec\u4e00\u4e2a": 93, "6x28x28": 93, "\u7684\u8f93\u51fa\u5f20\u91cf": [93, 95], "\u662f\u7279\u5f81\u6570": 93, "\u662f\u6620\u5c04\u7684\u9ad8\u5ea6\u548c\u5bbd\u5ea6": 93, "\u6765\u81ea\u4e8e\u5f53\u5728": 93, "\u50cf\u7d20\u884c\u4e0a\u626b\u63cf": 93, "\u50cf\u7d20\u7a97\u53e3\u65f6": 93, "\u53ea\u6709": 93, "\u4e2a\u6709\u6548\u4f4d\u7f6e\u7684\u4e8b\u5b9e": 93, "\u6211\u4eec\u5c06\u5377\u79ef\u7684\u8f93\u51fa\u901a\u8fc7": 93, "\u7a0d\u540e\u5c06\u8ba8\u8bba\u6fc0\u6d3b\u51fd\u6570": 93, "\u7136\u540e\u901a\u8fc7\u6700\u5927\u6c60\u5316\u5c42": 93, "\u6700\u5927\u6c60\u5316\u5c42\u5c06\u6fc0\u6d3b\u6620\u5c04\u4e2d\u5f7c\u6b64\u9760\u8fd1\u7684\u7279\u5f81\u7ec4\u5408\u5728\u4e00\u8d77": 93, "\u5b83\u901a\u8fc7\u51cf\u5c0f\u5f20\u91cf\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9": 93, "\u5c06\u8f93\u51fa\u4e2d\u6bcf\u4e2a": 93, "\u7ec4\u7684\u5355\u5143\u683c\u5408\u5e76\u4e3a\u4e00\u4e2a\u5355\u5143\u683c": 93, "\u5e76\u5c06\u8be5\u5355\u5143\u683c\u7684\u503c\u5206\u914d\u4e3a\u7ec4\u6210\u5b83\u7684": 93, "\u4e2a\u5355\u5143\u683c\u4e2d\u7684\u6700\u5927\u503c": 93, "\u8fd9\u7ed9\u4e86\u6211\u4eec\u4e00\u4e2a\u8f83\u4f4e\u5206\u8fa8\u7387\u7684\u6fc0\u6d3b\u6620\u5c04": 93, "\u5c3a\u5bf8\u4e3a": 93, "6x14x14": 93, "\u6211\u4eec\u7684\u4e0b\u4e00\u4e2a\u5377\u79ef\u5c42": 93, "\u671f\u671b": 93, "\u4e2a\u8f93\u5165\u901a\u9053": 93, "\u5bf9\u5e94\u4e8e\u7b2c\u4e00\u5c42\u5bfb\u627e\u7684": 93, "\u6709": 93, "\u5e76\u4e14\u5185\u6838\u5927\u5c0f\u4e3a": 93, "3x3": 93, "\u5b83\u8f93\u51fa\u4e00\u4e2a": 93, "16x12x12": 93, "\u7684\u6fc0\u6d3b\u6620\u5c04": 93, "\u518d\u6b21\u901a\u8fc7\u6700\u5927\u6c60\u5316\u5c42\u51cf\u5c0f\u5230": 93, "16x6x6": 93, "\u5728\u5c06\u6b64\u8f93\u51fa\u4f20\u9012\u7ed9\u7ebf\u6027\u5c42\u4e4b\u524d": 93, "\u5b83\u88ab\u91cd\u65b0\u6574\u5f62\u4e3a\u4e00\u4e2a": 93, "576": 93, "\u5143\u7d20\u5411\u91cf": 93, "\u4f9b\u4e0b\u4e00\u5c42\u4f7f\u7528": 93, "\u6709\u9488\u5bf9": 93, "\u5f20\u91cf\u7684\u5377\u79ef\u5c42": 93, "\u5377\u79ef\u5c42\u6784\u9020\u51fd\u6570\u8fd8\u6709\u8bb8\u591a\u5176\u4ed6\u53ef\u9009\u53c2\u6570": 93, "\u5305\u62ec\u6b65\u957f\u957f\u5ea6": 93, "\u53ea\u626b\u63cf\u6bcf\u7b2c\u4e8c\u4e2a\u6216\u6bcf\u7b2c\u4e09\u4e2a\u4f4d\u7f6e": 93, "\u586b\u5145": 93, "\u56e0\u6b64\u4f60\u53ef\u4ee5\u626b\u63cf\u5230\u8f93\u5165\u7684\u8fb9\u7f18": 93, "\u7b49\u7b49": 93, "\u66f4\u591a\u4fe1\u606f\u8bf7\u53c2\u89c1": 93, "\u5faa\u73af\u795e\u7ecf\u7f51\u7edc": 93, "\u7528\u4e8e\u5e8f\u5217\u6570\u636e": 93, "\u4ece\u79d1\u5b66\u4eea\u5668\u7684\u65f6\u95f4\u5e8f\u5217\u6d4b\u91cf\u5230\u81ea\u7136\u8bed\u8a00\u53e5\u5b50\u518d\u5230": 93, "dna": 93, "\u6838\u82f7\u9178": 93, "\u901a\u8fc7\u7ef4\u62a4\u4e00\u4e2a": 93, "\u9690\u85cf\u72b6\u6001": 93, "\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9": 93, "\u8be5\u9690\u85cf\u72b6\u6001\u5145\u5f53\u4e00\u79cd\u8bb0\u5fc6": 93, "\u8bb0\u5f55\u5230\u76ee\u524d\u4e3a\u6b62\u5b83\u5728\u5e8f\u5217\u4e2d\u770b\u5230\u7684\u5185\u5bb9": 93, "\u5c42\u7684\u5185\u90e8\u7ed3\u6784": 93, "\u6216\u5176\u53d8\u4f53": 93, "\u957f\u77ed\u671f\u8bb0\u5fc6": 93, "\u95e8\u63a7\u5faa\u73af\u5355\u5143": 93, "\u76f8\u5f53\u590d\u6742": 93, "\u8d85\u51fa\u4e86\u672c\u89c6\u9891\u7684\u8303\u56f4": 93, "\u4f46\u6211\u4eec\u5c06\u5411\u4f60\u5c55\u793a\u57fa\u4e8e": 93, "\u7684\u8bcd\u6027\u6807\u6ce8\u5668": 93, "\u4e00\u79cd\u5206\u7c7b\u5668": 93, "\u7528\u4e8e\u544a\u8bc9\u4f60\u4e00\u4e2a\u5355\u8bcd\u662f\u540d\u8bcd": 93, "\u52a8\u8bcd\u7b49": 93, "\u7684\u6837\u5b50": 93, "lstmtagger": [93, 102], "vocab_s": [93, 98, 99, 102, 103, 115, 118, 137, 144, 185, 220], "tagset_s": [93, 98, 102], "word_embed": [93, 102], "\u63a5\u53d7\u8bcd\u5d4c\u5165\u4f5c\u4e3a\u8f93\u5165": 93, "\u5e76\u8f93\u51fa\u7ef4\u5ea6\u4e3a": 93, "\u7684\u9690\u85cf\u72b6\u6001": 93, "\u5c06\u4ece\u9690\u85cf\u72b6\u6001\u7a7a\u95f4\u6620\u5c04\u5230\u6807\u8bb0\u7a7a\u95f4\u7684\u7ebf\u6027\u5c42": 93, "hidden2tag": [93, 98, 102], "lstm_out": [93, 98, 102], "tag_spac": [93, 102], "tag_scor": [93, 102], "\u6784\u9020\u51fd\u6570\u6709\u56db\u4e2a\u53c2\u6570": 93, "\u662f\u8f93\u5165\u8bcd\u6c47\u8868\u4e2d\u5355\u8bcd\u7684\u6570\u91cf": 93, "\u6bcf\u4e2a\u5355\u8bcd\u662f\u4e00\u4e2a": 93, "\u7ef4\u7684\u4e00\u70ed\u5411\u91cf": 93, "\u6216\u5355\u4f4d\u5411\u91cf": 93, "\u662f\u8f93\u51fa\u6807\u7b7e\u96c6\u7684\u5927\u5c0f": 93, "\u662f\u8bcd\u6c47\u7684": 93, "\u5d4c\u5165": 93, "\u7a7a\u95f4\u7684\u5927\u5c0f": 93, "\u5d4c\u5165\u5c06\u8bcd\u6c47\u6620\u5c04\u5230\u4e00\u4e2a\u4f4e\u7ef4\u7a7a\u95f4": 93, "\u5728\u8be5\u7a7a\u95f4\u4e2d": 93, "\u610f\u4e49\u76f8\u4f3c\u7684\u5355\u8bcd\u5f7c\u6b64\u63a5\u8fd1": 93, "\u7684\u8bb0\u5fc6\u5927\u5c0f": 93, "\u8f93\u5165\u5c06\u662f\u4e00\u4e2a\u53e5\u5b50": 93, "\u5355\u8bcd\u8868\u793a\u4e3a\u4e00\u70ed\u5411\u91cf\u7684\u7d22\u5f15": 93, "\u5d4c\u5165\u5c42\u5c06\u628a\u8fd9\u4e9b\u6620\u5c04\u5230\u4e00\u4e2a": 93, "\u7ef4\u7684\u7a7a\u95f4": 93, "\u63a5\u6536\u8fd9\u4e2a\u5d4c\u5165\u5e8f\u5217\u5e76\u5bf9\u5176\u8fdb\u884c\u8fed\u4ee3": 93, "\u4ea7\u751f\u4e00\u4e2a\u957f\u5ea6\u4e3a": 93, "\u7684\u8f93\u51fa\u5411\u91cf": 93, "\u6700\u540e\u7684\u7ebf\u6027\u5c42\u5145\u5f53\u5206\u7c7b\u5668": 93, "\u5c06\u6700\u540e\u4e00\u5c42\u7684\u8f93\u51fa\u901a\u8fc7": 93, "\u8f6c\u6362\u4e3a\u4e00\u7ec4\u5f52\u4e00\u5316\u7684\u4f30\u8ba1\u6982\u7387": 93, "\u8868\u793a\u7ed9\u5b9a\u5355\u8bcd\u6620\u5c04\u5230\u7ed9\u5b9a\u6807\u7b7e\u7684\u6982\u7387": 93, "\u5982\u679c\u4f60\u60f3\u770b\u770b\u8fd9\u4e2a\u7f51\u7edc\u7684\u5b9e\u9645\u8fd0\u884c\u60c5\u51b5": 93, "\u53ef\u4ee5\u67e5\u770b": 93, "\u4e0a\u7684": [93, 121], "\u5e8f\u5217\u6a21\u578b\u548c": 93, "\u7f51\u7edc": 93, "\u6559\u7a0b": [93, 104, 238], "\u662f\u591a\u7528\u9014\u7f51\u7edc": 93, "\u9886\u57df\u53d6\u5f97\u4e86\u6700\u5148\u8fdb\u7684\u6210\u679c": 93, "\u8ba8\u8bba\u8f6c\u6362\u5668\u67b6\u6784\u8d85\u51fa\u4e86\u672c\u89c6\u9891\u7684\u8303\u56f4": 93, "\u5141\u8bb8\u4f60\u5b9a\u4e49\u8f6c\u6362\u5668\u6a21\u578b\u7684\u6574\u4f53\u53c2\u6570": 93, "\u6ce8\u610f\u529b\u5934\u7684\u6570\u91cf": 93, "\u7f16\u7801\u5668\u548c\u89e3\u7801\u5668\u5c42\u7684\u6570\u91cf": 93, "\u548c\u6fc0\u6d3b\u51fd\u6570\u7b49": 93, "\u4f60\u751a\u81f3\u53ef\u4ee5\u7528\u6b63\u786e\u7684\u53c2\u6570\u4ece\u8fd9\u4e2a\u5355\u4e00\u7c7b\u6784\u5efa": 93, "\u7c7b\u8fd8\u5305\u542b\u5c01\u88c5\u5355\u4e2a\u7ec4\u4ef6": 93, "transformerdecod": 93, "\u548c\u5b50\u7ec4\u4ef6": 93, "transformerdecoderlay": 93, "\u8be6\u60c5\u8bf7\u67e5\u770b": 93, "\u4e2d\u5173\u4e8e\u8f6c\u6362\u5668\u7c7b\u7684\u5185\u5bb9": 93, "\u4ee5\u53ca": [93, 104, 231], "\u4e0a\u76f8\u5173\u7684": 93, "\u8fd8\u6709\u5176\u4ed6\u7c7b\u578b\u7684\u5c42\u6267\u884c\u6a21\u578b\u4e2d\u7684\u91cd\u8981\u529f\u80fd": 93, "\u4f46\u5b83\u4eec\u81ea\u8eab\u4e0d\u53c2\u4e0e\u5b66\u4e60\u8fc7\u7a0b": 93, "\u6700\u5927\u6c60\u5316": 93, "\u53ca\u5176\u5b6a\u751f\u5c42\u6700\u5c0f\u6c60\u5316": 93, "\u901a\u8fc7\u7ec4\u5408\u5355\u5143\u5e76\u5c06\u8f93\u5165\u5355\u5143\u7684\u6700\u5927\u503c\u5206\u914d\u7ed9\u8f93\u51fa\u5355\u5143\u6765\u51cf\u5c0f\u5f20\u91cf": 93, "\u6211\u4eec\u4e4b\u524d\u770b\u5230\u8fc7\u8fd9\u4e00\u70b9": 93, "maxpool_lay": 93, "\u5982\u679c\u4f60\u4ed4\u7ec6\u89c2\u5bdf\u4e0a\u9762\u7684\u503c": 93, "\u4f60\u4f1a\u53d1\u73b0\u6700\u5927\u6c60\u5316\u8f93\u51fa\u4e2d\u7684\u6bcf\u4e2a\u503c\u90fd\u662f": 93, "6x6": 93, "\u8f93\u5165\u7684\u6bcf\u4e2a\u8c61\u9650\u7684\u6700\u5927\u503c": 93, "\u5f52\u4e00\u5316\u5c42": 93, "\u5728\u5c06\u4e00\u5c42\u7684\u8f93\u51fa\u9988\u9001\u5230\u53e6\u4e00\u5c42\u4e4b\u524d": 93, "\u91cd\u65b0\u5c45\u4e2d\u5e76\u5f52\u4e00\u5316\u8f93\u51fa": 93, "\u5c45\u4e2d\u548c\u7f29\u653e\u4e2d\u95f4\u5f20\u91cf\u6709\u8bb8\u591a\u6709\u76ca\u7684\u6548\u679c": 93, "\u4f8b\u5982\u8ba9\u4f60\u53ef\u4ee5\u4f7f\u7528\u66f4\u9ad8\u7684\u5b66\u4e60\u7387\u800c\u4e0d\u4f1a\u51fa\u73b0\u68af\u5ea6\u7206\u70b8": 93, "\u6d88\u5931": 93, "norm_lay": [93, 134], "batchnorm1d": 93, "normed_tensor": 93, "\u8fd0\u884c\u4e0a\u9762\u7684\u5355\u5143\u683c": 93, "\u6211\u4eec\u4e3a\u8f93\u5165\u5f20\u91cf\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5927\u7684\u7f29\u653e\u56e0\u5b50\u548c\u504f\u79fb\u91cf": 93, "\u4f60\u5e94\u8be5\u4f1a\u770b\u5230\u8f93\u5165\u5f20\u91cf\u7684": 93, "\u5de6\u53f3": 93, "\u7ecf\u8fc7\u5f52\u4e00\u5316\u5c42\u5904\u7406\u540e": 93, "\u4f60\u53ef\u4ee5\u770b\u5230\u503c\u53d8\u5c0f\u4e86": 93, "\u5e76\u4e14\u56f4\u7ed5\u7740": 93, "\u5206\u5e03": 93, "\u5e73\u5747\u503c\u5e94\u8be5\u975e\u5e38\u5c0f": 93, "\u8fd9\u662f\u6709\u76ca\u7684": 93, "\u56e0\u4e3a\u8bb8\u591a\u6fc0\u6d3b\u51fd\u6570": 93, "\u4e0b\u9762\u5c06\u8ba8\u8bba": 93, "\u4f46\u6709\u65f6\u5bf9\u4e8e\u5c06\u5b83\u4eec\u63a8\u79bb": 93, "\u5f88\u8fdc\u7684\u8f93\u5165\u4f1a\u9047\u5230\u68af\u5ea6\u6d88\u5931\u6216\u7206\u70b8\u7684\u95ee\u9898": 93, "\u5c06\u6570\u636e\u4fdd\u6301\u5728\u6700\u9661\u68af\u5ea6\u533a\u57df\u5468\u56f4\u5c06\u503e\u5411\u4e8e\u610f\u5473\u7740\u66f4\u5feb": 93, "\u66f4\u597d\u7684\u5b66\u4e60\u548c\u66f4\u9ad8\u7684\u53ef\u884c\u5b66\u4e60\u7387": 93, "\u662f\u4e00\u79cd\u9f13\u52b1\u6a21\u578b": 93, "\u7a00\u758f\u8868\u793a": 93, "\u7684\u5de5\u5177": 93, "\u4e5f\u5c31\u662f\u8bf4": [93, 95], "\u63a8\u52a8\u5b83\u5728\u63a8\u7406\u65f6\u4f7f\u7528\u8f83\u5c11\u7684\u6570\u636e": 93, "\u5c42\u7684\u5de5\u4f5c\u539f\u7406\u662f\u5728": 93, "\u8bad\u7ec3\u671f\u95f4": 93, "\u968f\u673a\u8bbe\u7f6e\u8f93\u5165\u5f20\u91cf\u7684\u4e00\u90e8\u5206": 93, "\u5c42\u5728\u63a8\u7406\u65f6\u603b\u662f\u5173\u95ed\u7684": 93, "\u8fd9\u8feb\u4f7f\u6a21\u578b\u9488\u5bf9\u8fd9\u79cd\u63a9\u7801\u6216\u51cf\u5c11\u7684\u6570\u636e\u96c6\u8fdb\u884c\u5b66\u4e60": 93, "\u5bf9\u793a\u4f8b\u5f20\u91cf\u7684\u5f71\u54cd": 93, "\u4f60\u53ef\u4ee5\u4f7f\u7528\u53ef\u9009\u7684": 93, "\u53c2\u6570\u8bbe\u7f6e\u5355\u4e2a\u6743\u91cd\u4e22\u5f03\u7684\u6982\u7387": 93, "\u5982\u679c\u4e0d\u8bbe\u7f6e": 93, "\u9ed8\u8ba4\u4e3a": 93, "\u6fc0\u6d3b\u51fd\u6570\u4f7f\u6df1\u5ea6\u5b66\u4e60\u6210\u4e3a\u53ef\u80fd": 93, "\u795e\u7ecf\u7f51\u7edc\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u7a0b\u5e8f": 93, "\u6709\u8bb8\u591a\u53c2\u6570": 93, "\u7528\u4e8e": 93, "\u6a21\u62df\u4e00\u4e2a\u6570\u5b66\u51fd\u6570": 93, "\u5982\u679c\u6211\u4eec\u53ea\u662f\u91cd\u590d\u5730\u5c06\u5f20\u91cf\u4e0e\u5c42\u6743\u91cd\u76f8\u4e58": 93, "\u6211\u4eec\u53ea\u80fd\u6a21\u62df": 93, "\u7ebf\u6027\u51fd\u6570": 93, "\u6709\u591a\u5c42\u4e5f\u6ca1\u6709\u610f\u4e49": 93, "\u56e0\u4e3a\u6574\u4e2a\u7f51\u7edc\u53ef\u4ee5\u7b80\u5316\u4e3a\u5355\u4e2a\u77e9\u9635\u4e58\u6cd5": 93, "\u5728\u5c42\u4e4b\u95f4\u63d2\u5165": 93, "\u6fc0\u6d3b\u51fd\u6570\u4f7f\u5f97\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\u80fd\u591f\u6a21\u62df\u4efb\u4f55\u51fd\u6570": 93, "\u800c\u4e0d\u4ec5\u4ec5\u662f\u7ebf\u6027\u51fd\u6570": 93, "\u6709\u5c01\u88c5\u6240\u6709\u4e3b\u8981\u6fc0\u6d3b\u51fd\u6570\u7684\u5bf9\u8c61": 93, "\u53ca\u5176\u8bb8\u591a\u53d8\u4f53": 93, "hardtanh": [93, 110, 252], "\u7b49": [93, 95, 104, 111, 231], "\u5b83\u8fd8\u5305\u62ec\u5176\u4ed6\u51fd\u6570": 93, "\u8fd9\u4e9b\u51fd\u6570\u5728\u6a21\u578b\u7684\u8f93\u51fa\u9636\u6bb5\u6700\u6709\u7528": 93, "\u635f\u5931\u51fd\u6570\u544a\u8bc9\u6211\u4eec\u6a21\u578b\u7684\u9884\u6d4b\u4e0e\u6b63\u786e\u7b54\u6848\u76f8\u5dee\u591a\u8fdc": 93, "\u5305\u542b\u5404\u79cd\u635f\u5931\u51fd\u6570": 93, "\u5305\u62ec\u5e38\u89c1\u7684": 93, "\u8303\u6570": 93, "\u4ea4\u53c9\u71b5\u635f\u5931\u548c\u8d1f\u5bf9\u6570\u4f3c\u7136\u635f\u5931": 93, "\u5bf9\u4e8e\u5206\u7c7b\u5668\u5f88\u6709\u7528": 93, "\u8981\u8fd0\u884c\u6b64\u6559\u7a0b": 94, "\u60a8\u9700\u8981\u5b89\u88c5pytorch": 94, "matplotlib\u548ctensorboard": 94, "\u5b89\u88c5\u5b8c\u4f9d\u8d56\u9879\u540e": 94, "\u8bf7\u5728\u5b89\u88c5\u5b83\u4eec\u7684python\u73af\u5883\u4e2d\u91cd\u65b0\u542f\u52a8\u6b64\u7b14\u8bb0\u672c": 94, "\u5728\u672c\u7b14\u8bb0\u672c\u4e2d": 94, "\u6211\u4eec\u5c06\u8bad\u7ec3lenet": 94, "5\u7684\u53d8\u4f53": 94, "\u9488\u5bf9fashion": 94, "mnist\u6570\u636e\u96c6": 94, "mnist\u662f\u4e00\u7ec4\u63cf\u7ed8\u5404\u79cd\u670d\u88c5\u7684\u56fe\u50cf\u74e6\u7247": 94, "\u6709\u5341\u4e2a\u7c7b\u6807\u7b7e\u6307\u793a\u6240\u63cf\u7ed8\u7684\u670d\u88c5\u7c7b\u578b": 94, "pytorch\u6a21\u578b\u548c\u8bad\u7ec3\u5fc5\u9700\u54c1": 94, "\u56fe\u50cf\u6570\u636e\u96c6\u548c\u56fe\u50cf\u64cd\u4f5c": 94, "\u56fe\u50cf\u663e\u793a": 94, "summarywrit": [94, 96, 169, 245], "\u5982\u679c\u60a8\u4f7f\u7528\u7684\u73af\u5883\u5b89\u88c5\u4e86tensorflow": 94, "\u5982googl": 94, "\u8bf7\u53d6\u6d88\u6ce8\u91ca\u4ee5\u4e0b\u4ee3\u7801\u4ee5\u907f\u514d\u5c06\u5d4c\u5165\u4fdd\u5b58\u5230tensorboard\u76ee\u5f55\u65f6\u51fa\u73b0\u9519\u8bef": 94, "tb": [94, 172, 173, 174], "gfile": 94, "tensorflow_stub": 94, "\u8ba9\u6211\u4eec\u4ece\u5c06\u6570\u636e\u96c6\u4e2d\u7684\u793a\u4f8b\u56fe\u50cf\u6dfb\u52a0\u5230tensorboard\u5f00\u59cb": 94, "\u6536\u96c6\u6570\u636e\u96c6\u5e76\u51c6\u5907\u6d88\u8d39": 94, "data\u4e2d\u5b58\u50a8\u5355\u72ec\u7684\u8bad\u7ec3\u548c\u9a8c\u8bc1\u5206\u5272": 94, "training_set": [94, 96], "validation_set": [94, 96], "training_load": [94, 96], "validation_load": [94, 96], "\u7c7b\u6807\u7b7e": 94, "\u5185\u8054\u56fe\u50cf\u663e\u793a\u7684\u8f85\u52a9\u51fd\u6570": [94, 96], "matplotlib_imshow": [94, 96, 169], "one_channel": [94, 96, 169], "\u53cd\u5f52\u4e00\u5316": 94, "grei": [94, 96, 119, 169, 188], "\u63d0\u53d6\u4e00\u62794\u5f20\u56fe\u50cf": 94, "\u4ece\u56fe\u50cf\u521b\u5efa\u7f51\u683c\u5e76\u663e\u793a\u5b83\u4eec": [94, 96], "img_grid": [94, 96, 169], "\u6211\u4eec\u4f7f\u7528torchvision\u548cmatplotlib\u521b\u5efa\u4e86\u4e00\u4e2a\u8f93\u5165\u6570\u636e\u5c0f\u6279\u91cf\u7684\u53ef\u89c6\u7f51\u683c": 94, "\u4e0a\u4f7f\u7528": 94, "add_imag": [94, 169], "\u8c03\u7528\u6765\u8bb0\u5f55\u56fe\u50cf": 94, "\u4ee5\u4f9btensorboard\u4f7f\u7528": 94, "\u6211\u4eec\u8fd8\u8c03\u7528": 94, "\u4ee5\u786e\u4fdd\u5b83\u7acb\u5373\u5199\u5165\u78c1\u76d8": 94, "\u9ed8\u8ba4log_dir\u53c2\u6570\u4e3a": 94, "\u4f46\u6700\u597d\u660e\u786e\u6307\u5b9a": 94, "summarywriter\u5728\u4e0a\u9762\u5bfc\u5165": 94, "fashion_mnist_experiment_1": [94, 169], "\u5c06\u56fe\u50cf\u6570\u636e\u5199\u5165tensorboard\u65e5\u5fd7\u76ee\u5f55": 94, "\u8981\u67e5\u770b": 94, "\u8bf7\u5728\u547d\u4ee4\u884c\u4e0a\u542f\u52a8tensorboard": 94, "logdir": [94, 168, 169, 245], "\u5e76\u5728\u65b0\u7684\u6d4f\u89c8\u5668\u9009\u9879\u5361\u4e2d\u6253\u5f00http": 94, "6006": [94, 168, 169, 245], "\u5982\u679c\u60a8\u5728\u547d\u4ee4\u884c\u542f\u52a8tensorboard\u5e76\u5728\u65b0\u7684\u6d4f\u89c8\u5668\u9009\u9879\u5361\u4e2d\u6253\u5f00\u5b83": 94, "\u901a\u5e38\u5728": 94, "\u60a8\u5e94\u8be5\u5728images\u9009\u9879\u5361\u4e0b\u770b\u5230\u56fe\u50cf\u7f51\u683c": 94, "tensorboard\u5bf9\u4e8e\u8ddf\u8e2a\u8bad\u7ec3\u7684\u8fdb\u5ea6\u548c\u6548\u679c\u5f88\u6709\u7528": 94, "\u6211\u4eec\u5c06\u8fd0\u884c\u4e00\u4e2a\u8bad\u7ec3\u5faa\u73af": 94, "\u8ddf\u8e2a\u4e00\u4e9b\u6307\u6807": 94, "\u5e76\u4fdd\u5b58\u6570\u636e\u4ee5\u4f9btensorboard\u4f7f\u7528": 94, "\u8ba9\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u6a21\u578b\u6765\u5bf9\u6211\u4eec\u7684\u56fe\u50cf\u74e6\u7247\u8fdb\u884c\u5206\u7c7b": 94, "\u4ee5\u53ca\u7528\u4e8e\u8bad\u7ec3\u7684\u4f18\u5316\u5668\u548c\u635f\u5931\u51fd\u6570": 94, "\u73b0\u5728\u8ba9\u6211\u4eec\u8bad\u7ec3\u4e00\u4e2aepoch": 94, "\u5e76\u6bcf1000\u6279\u6b21\u8bc4\u4f30\u4e00\u6b21\u8bad\u7ec3\u4e0e\u9a8c\u8bc1\u96c6\u7684\u635f\u5931": 94, "\u57fa\u672c\u8bad\u7ec3\u5faa\u73af": 94, "\u6bcf1000\u4e2a\u5c0f\u6279\u91cf": 94, "\u5bf9\u7167\u9a8c\u8bc1\u96c6": 94, "running_vloss": [94, 96], "\u5728\u8bc4\u4f30\u6a21\u5f0f\u4e0b": 94, "\u53ef\u4ee5\u7701\u7565\u4e00\u4e9b\u7279\u5b9a\u4e8e\u6a21\u578b\u7684\u64cd\u4f5c": 94, "\u4f8b\u5982dropout\u5c42": 94, "\u5207\u6362\u5230\u8bc4\u4f30\u6a21\u5f0f": 94, "\u4f8b\u5982\u5173\u95ed\u6b63\u5219\u5316": 94, "vdata": [94, 96], "vinput": [94, 96], "vlabel": [94, 96], "voutput": [94, 96], "vloss": [94, 96], "\u5207\u6362\u56de\u8bad\u7ec3\u6a21\u5f0f": 94, "\u4f8b\u5982\u6253\u5f00\u6b63\u5219\u5316": 94, "avg_loss": [94, 96], "avg_vloss": [94, 96], "\u8bb0\u5f55\u6bcf\u6279\u6b21\u5e73\u5747\u7684\u8fd0\u884c\u635f\u5931": [94, 96], "add_scalar": [94, 96, 169, 245], "\u5207\u6362\u5230\u60a8\u6253\u5f00\u7684tensorboard": 94, "\u67e5\u770bscalars\u9009\u9879\u5361": 94, "tensorboard\u8fd8\u53ef\u7528\u4e8e\u68c0\u67e5\u6a21\u578b\u5185\u7684\u6570\u636e\u6d41": 94, "\u8bf7\u4f7f\u7528\u6a21\u578b\u548c\u793a\u4f8b\u8f93\u5165\u8c03\u7528": 94, "add_graph": [94, 169], "\u518d\u6b21\u83b7\u53d6\u4e00\u4e2a\u5c0f\u6279\u91cf\u7684\u56fe\u50cf": 94, "\u5c06\u901a\u8fc7\u60a8\u7684\u6a21\u578b\u8ddf\u8e2a\u793a\u4f8b\u8f93\u5165": 94, "\u5e76\u5c06\u5176\u6e32\u67d3\u4e3a\u56fe\u5f62": 94, "\u5f53\u60a8\u5207\u6362\u5230tensorboard\u65f6": 94, "\u60a8\u5e94\u8be5\u4f1a\u770b\u5230\u4e00\u4e2agraphs\u9009\u9879\u5361": 94, "\u53cc\u51fb": 94, "\u8282\u70b9\u53ef\u67e5\u770b\u6a21\u578b\u5185\u7684\u5c42\u548c\u6570\u636e\u6d41": 94, "\u6211\u4eec\u4f7f\u7528\u768428x28\u56fe\u50cf\u74e6\u7247\u53ef\u4ee5\u5efa\u6a21\u4e3a784\u7ef4\u5411\u91cf": 94, "\u5c06\u5176\u6295\u5f71\u5230\u8f83\u4f4e\u7ef4\u5ea6\u7684\u8868\u793a\u5f62\u5f0f\u53ef\u80fd\u4f1a\u5f88\u6709\u542f\u53d1\u6027": 94, "add_embed": [94, 169], "\u65b9\u6cd5\u5c06\u4e00\u7ec4\u6570\u636e\u6295\u5f71\u5230\u5177\u6709\u6700\u9ad8\u65b9\u5dee\u7684\u4e09\u4e2a\u7ef4\u5ea6\u4e0a": 94, "\u5e76\u5c06\u5b83\u4eec\u663e\u793a\u4e3a\u4ea4\u4e92\u5f0f3d\u56fe\u8868": 94, "\u65b9\u6cd5\u901a\u8fc7\u6295\u5f71\u5230\u5177\u6709\u6700\u9ad8\u65b9\u5dee\u7684\u4e09\u4e2a\u7ef4\u5ea6\u6765\u81ea\u52a8\u6267\u884c\u6b64\u64cd\u4f5c": 94, "\u6211\u4eec\u5c06\u91c7\u6837\u6570\u636e": 94, "\u5e76\u751f\u6210\u8fd9\u6837\u4e00\u4e2a\u5d4c\u5165": 94, "\u9009\u62e9\u968f\u673a\u5b50\u96c6\u7684\u6570\u636e\u548c\u76f8\u5e94\u7684\u6807\u7b7e": 94, "select_n_random": [94, 169], "perm": [94, 169], "randperm": [94, 169, 178], "\u63d0\u53d6\u968f\u673a\u5b50\u96c6\u7684\u6570\u636e": 94, "\u83b7\u53d6\u6bcf\u4e2a\u56fe\u50cf\u7684\u7c7b\u6807\u7b7e": 94, "class_label": [94, 169, 171], "\u8bb0\u5f55\u5d4c\u5165": 94, "label_img": [94, 169], "\u5982\u679c\u60a8\u5207\u6362\u5230tensorboard\u5e76\u9009\u62e9projector\u9009\u9879\u5361": 94, "\u60a8\u5e94\u8be5\u4f1a\u770b\u5230\u6295\u5f71\u76843d\u8868\u793a": 94, "\u60a8\u53ef\u4ee5\u65cb\u8f6c\u548c\u7f29\u653e\u6a21\u578b": 94, "\u5728\u5927\u5c0f\u4e0d\u540c\u7684\u5c3a\u5ea6\u4e0a\u68c0\u67e5\u5b83": 94, "\u770b\u770b\u60a8\u662f\u5426\u53ef\u4ee5\u53d1\u73b0\u6295\u5f71\u6570\u636e\u548c\u6807\u7b7e\u805a\u7c7b\u4e2d\u7684\u6a21\u5f0f": 94, "\u4e3a\u4e86\u66f4\u597d\u7684\u53ef\u89c1\u6027": 94, "\u5efa\u8bae": 94, "\u4ece\u5de6\u4fa7\u7684": 94, "\u4e0b\u62c9\u83dc\u5355\u4e2d\u9009\u62e9": 94, "\u5207\u6362\u9876\u90e8\u7684night": 94, "mode\u56fe\u6807": 94, "\u5c06\u6d45\u8272\u56fe\u50cf\u7f6e\u4e8e\u6df1\u8272\u80cc\u666f\u4e0a": 94, "pytorch\u5173\u4e8e": 94, "__\u7684\u6587\u6863": 94, "org\u6559\u7a0b": 94, "\u4e2d\u7684tensorboard\u6559\u7a0b\u5185\u5bb9": 94, "\u6709\u5173tensorboard\u7684\u66f4\u591a\u4fe1\u606f": 94, "tensorboard\u6587\u6863": 94, "\u5f20\u91cf\u662fpytorch\u4e2d\u7684\u4e2d\u5fc3\u6570\u636e\u62bd\u8c61": 95, "\u8fd9\u4e2a\u4ea4\u4e92\u5f0f\u7b14\u8bb0\u672c\u63d0\u4f9b\u4e86\u5bf9": 95, "\u7c7b\u7684\u6df1\u5165\u4ecb\u7ecd": 95, "\u8ba9\u6211\u4eec\u5bfc\u5165pytorch\u6a21\u5757": 95, "\u6211\u4eec\u8fd8\u5c06\u6dfb\u52a0python\u7684\u6570\u5b66\u6a21\u5757": 95, "\u4ee5\u4fbf\u4e8e\u4e00\u4e9b\u793a\u4f8b": 95, "\u521b\u5efa\u5f20\u91cf\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u4f7f\u7528": 95, "\u8ba9\u6211\u4eec\u89e3\u91ca\u4e0b\u521a\u624d\u53d1\u751f\u7684\u4e8b\u60c5": 95, "\u6211\u4eec\u4f7f\u7528\u9644\u52a0\u5230": 95, "\u6a21\u5757\u7684\u4f17\u591a\u5de5\u5382\u65b9\u6cd5\u4e4b\u4e00\u521b\u5efa\u4e86\u4e00\u4e2a\u5f20\u91cf": 95, "\u8be5\u5f20\u91cf\u662f\u4e8c\u7ef4\u7684": 95, "\u67093\u884c4\u5217": 95, "\u8fd4\u56de\u5bf9\u8c61\u7684\u7c7b\u578b\u662f": 95, "\u7684\u522b\u540d": 95, "pytorch\u5f20\u91cf\u752832\u4f4d\u6d6e\u70b9\u6570\u586b\u5145": 95, "\u66f4\u591a\u5173\u4e8e\u6570\u636e\u7c7b\u578b\u7684\u5185\u5bb9\u89c1\u4e0b\u6587": 95, "\u5f53\u6253\u5370\u4f60\u7684\u5f20\u91cf\u65f6": 95, "\u4f60\u53ef\u80fd\u4f1a\u770b\u5230\u4e00\u4e9b\u968f\u673a\u7684\u503c": 95, "\u8c03\u7528\u4e3a\u5f20\u91cf\u5206\u914d\u5185\u5b58": 95, "\u4f46\u4e0d\u4f1a\u7528\u4efb\u4f55\u503c\u521d\u59cb\u5316\u5b83": 95, "\u6240\u4ee5\u4f60\u770b\u5230\u7684\u662f\u5206\u914d\u65f6\u5185\u5b58\u4e2d\u7684\u4efb\u4f55\u503c": 95, "\u5173\u4e8e\u5f20\u91cf\u53ca\u5176\u7ef4\u6570\u548c\u672f\u8bed\u7684\u7b80\u8981\u8bf4\u660e": 95, "\u4f60\u6709\u65f6\u4f1a\u770b\u5230\u4e00\u7ef4\u5f20\u91cf\u88ab\u79f0\u4e3a": 95, "\u5411\u91cf": 95, "\u4e8c\u7ef4\u5f20\u91cf\u901a\u5e38\u88ab\u79f0\u4e3a": 95, "\u4efb\u4f55\u8d85\u8fc7\u4e24\u4e2a\u7ef4\u5ea6\u7684\u5f20\u91cf\u901a\u5e38\u90fd\u88ab\u79f0\u4e3a\u5f20\u91cf": 95, "\u5927\u591a\u6570\u60c5\u51b5\u4e0b": 95, "\u4f60\u4f1a\u5e0c\u671b\u7528\u4e00\u4e9b\u503c\u521d\u59cb\u5316\u4f60\u7684\u5f20\u91cf": 95, "\u5e38\u89c1\u7684\u60c5\u51b5\u662f\u5168\u96f6": 95, "\u5168\u4e00\u6216\u968f\u673a\u503c": 95, "\u6a21\u5757\u4e3a\u6240\u6709\u8fd9\u4e9b\u60c5\u51b5\u63d0\u4f9b\u4e86\u5de5\u5382\u65b9\u6cd5": 95, "\u5de5\u5382\u65b9\u6cd5\u90fd\u505a\u4e86\u4f60\u671f\u671b\u7684\u4e8b\u60c5": 95, "\u6211\u4eec\u6709\u4e00\u4e2a\u5168\u96f6\u5f20\u91cf": 95, "\u4e00\u4e2a\u5168\u4e00\u5f20\u91cf\u548c\u4e00\u4e2a\u968f\u673a\u503c\u57280\u52301\u4e4b\u95f4\u7684\u5f20\u91cf": 95, "\u8bf4\u5230\u968f\u673a\u5f20\u91cf": 95, "\u4f60\u662f\u5426\u6ce8\u610f\u5230\u5728\u5b83\u4e4b\u524d\u7acb\u5373\u8c03\u7528\u4e86": 95, "\u7528\u968f\u673a\u503c\u521d\u59cb\u5316\u5f20\u91cf": 95, "\u5982\u6a21\u578b\u7684\u5b66\u4e60\u6743\u91cd": 95, "\u662f\u5f88\u5e38\u89c1\u7684": 95, "\u4f46\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b": 95, "\u7279\u522b\u662f\u5728\u7814\u7a76\u73af\u5883\u4e2d": 95, "\u4f60\u53ef\u80fd\u5e0c\u671b\u5bf9\u7ed3\u679c\u7684\u53ef\u91cd\u590d\u6027\u6709\u4e00\u4e9b\u4fdd\u8bc1": 95, "\u624b\u52a8\u8bbe\u7f6e\u968f\u673a\u6570\u751f\u6210\u5668\u7684\u79cd\u5b50\u5c31\u662f\u8fd9\u6837\u505a\u7684\u65b9\u6cd5": 95, "\u8ba9\u6211\u4eec\u4ed4\u7ec6\u770b\u770b": 95, "random1": 95, "random2": 95, "random3": 95, "random4": 95, "\u4f60\u5e94\u8be5\u770b\u5230\u4e0a\u9762": 95, "\u5305\u542b\u76f8\u540c\u7684\u503c": 95, "\u4e5f\u662f\u5982\u6b64": 95, "\u624b\u52a8\u8bbe\u7f6erng\u7684\u79cd\u5b50\u4f1a\u91cd\u7f6e\u5b83": 95, "\u56e0\u6b64\u76f8\u540c\u7684\u968f\u673a\u6570\u8ba1\u7b97\u5728\u5927\u591a\u6570\u8bbe\u7f6e\u4e0b\u5e94\u8be5\u63d0\u4f9b\u76f8\u540c\u7684\u7ed3\u679c": 95, "\u8bf7\u53c2\u9605pytorch\u5173\u4e8e\u53ef\u91cd\u590d\u6027\u7684": 95, "\u5f53\u4f60\u5728\u4e24\u4e2a\u6216\u591a\u4e2a\u5f20\u91cf\u4e0a\u6267\u884c\u64cd\u4f5c\u65f6": 95, "\u5b83\u4eec\u901a\u5e38\u9700\u8981\u5177\u6709\u76f8\u540c\u7684": 95, "\u5177\u6709\u76f8\u540c\u7684\u7ef4\u6570\u548c\u6bcf\u4e2a\u7ef4\u5ea6\u4e2d\u7684\u76f8\u540c\u6570\u91cf\u7684\u5355\u5143": 95, "_like": [95, 147], "empty_like_x": 95, "empty_lik": [95, 108, 147, 173, 174, 189, 209], "zeros_like_x": 95, "ones_like_x": 95, "rand_like_x": 95, "\u4e0a\u9762\u4ee3\u7801\u5355\u5143\u4e2d\u7684\u7b2c\u4e00\u4e2a\u65b0\u4e8b\u7269\u662f\u5728\u5f20\u91cf\u4e0a\u4f7f\u7528": 95, "\u8fd9\u4e2a\u5c5e\u6027\u5305\u542b\u4e86\u6bcf\u4e2a\u7ef4\u5ea6\u5f20\u91cf\u7684\u8303\u56f4\u7684\u5217\u8868": 95, "\u662f\u4e00\u4e2a\u4e09\u7ef4\u5f20\u91cf": 95, "\u5f62\u72b6\u4e3a": 95, "\u6211\u4eec\u53ef\u4ee5\u9a8c\u8bc1\u6bcf\u4e2a\u8fd9\u4e9b\u65b9\u6cd5\u90fd\u8fd4\u56de\u4e00\u4e2a\u5177\u6709\u76f8\u540c\u7ef4\u6570\u548c\u8303\u56f4\u7684\u5f20\u91cf": 95, "\u521b\u5efa\u5f20\u91cf\u7684\u6700\u540e\u4e00\u79cd\u65b9\u5f0f\u662f\u76f4\u63a5\u4ecepytorch\u96c6\u5408\u4e2d\u6307\u5b9a\u5176\u6570\u636e": 95, "some_const": 95, "1415926": 95, "71828": 95, "61803": 95, "0072897": 95, "some_integ": 95, "more_integ": 95, "\u662f\u5728\u4f60\u5df2\u7ecf\u6709python\u5143\u7ec4\u6216\u5217\u8868\u6570\u636e\u7684\u60c5\u51b5\u4e0b\u521b\u5efa\u5f20\u91cf\u7684\u6700\u76f4\u63a5\u65b9\u5f0f": 95, "\u5982\u4e0a\u6240\u793a": 95, "\u5d4c\u5957\u96c6\u5408\u4f1a\u751f\u6210\u591a\u7ef4\u5f20\u91cf": 95, "\u521b\u5efa\u6570\u636e\u7684\u526f\u672c": 95, "\u8bbe\u7f6e\u5f20\u91cf\u7684\u6570\u636e\u7c7b\u578b\u6709\u4e24\u79cd\u65b9\u5f0f": 95, "int32": [95, 137, 165, 184, 185, 197, 200, 234], "\u8bbe\u7f6e\u5f20\u91cf\u5e95\u5c42\u6570\u636e\u7c7b\u578b\u7684\u6700\u7b80\u5355\u65b9\u5f0f\u662f\u5728\u521b\u5efa\u65f6\u4f7f\u7528\u53ef\u9009\u53c2\u6570": 95, "\u5728\u4e0a\u9762\u5355\u5143\u683c\u7684\u7b2c\u4e00\u884c\u4e2d": 95, "\u8bbe\u7f6e\u4e3a\u5f20\u91cf": 95, "\u5f53\u6211\u4eec\u6253\u5370": 95, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5b83\u662f\u7531": 95, "\u586b\u5145\u7684": 95, "python\u7684\u4e00\u4e2a\u5fae\u5999\u63d0\u793a": 95, "\u8fd9\u662f\u4e00\u4e2a\u6574\u6570\u7c7b\u578b\u800c\u4e0d\u662f\u6d6e\u70b9\u6570": 95, "\u4f60\u53ef\u80fd\u8fd8\u6ce8\u610f\u5230": 95, "\u6253\u5370": 95, "\u4e0e\u6211\u4eec\u5c06": 95, "\u4fdd\u7559\u4e3a\u9ed8\u8ba4\u503c": 95, "32\u4f4d\u6d6e\u70b9\u6570": 95, "\u65f6\u4e0d\u540c": 95, "\u6253\u5370\u5f20\u91cf\u65f6\u4e5f\u6307\u5b9a\u4e86\u5176": 95, "\u6211\u4eec\u4ece\u6307\u5b9a\u5f20\u91cf\u5f62\u72b6\u4e3a\u4e00\u7cfb\u5217\u6574\u6570\u53c2\u6570": 95, "\u8f6c\u4e3a\u5c06\u8fd9\u4e9b\u53c2\u6570\u5206\u7ec4\u5230\u4e00\u4e2a\u5143\u7ec4\u4e2d": 95, "\u8fd9\u4e0d\u662f\u7edd\u5bf9\u5fc5\u8981\u7684": 95, "pytorch\u4f1a\u5c06\u4e00\u7cfb\u5217\u521d\u59cb\u7684": 95, "\u672a\u6807\u8bb0\u7684\u6574\u6570\u53c2\u6570\u89c6\u4e3a\u5f20\u91cf\u5f62\u72b6": 95, "\u4f46\u662f\u5f53\u6dfb\u52a0\u53ef\u9009\u53c2\u6570\u65f6": 95, "\u5b83\u53ef\u4ee5\u4f7f\u4f60\u7684\u610f\u56fe\u66f4\u52a0\u53ef\u8bfb": 95, "\u8bbe\u7f6e\u6570\u636e\u7c7b\u578b\u7684\u53e6\u4e00\u79cd\u65b9\u5f0f\u662f\u4f7f\u7528": 95, "\u6211\u4eec\u4ee5\u901a\u5e38\u7684\u65b9\u5f0f\u521b\u5efa\u4e86\u4e00\u4e2a\u968f\u673a\u6d6e\u70b9\u5f20\u91cf": 95, "\u6211\u4eec\u901a\u8fc7\u5c06": 95, "\u8f6c\u6362\u4e3a32\u4f4d\u6574\u6570\u6765\u521b\u5efa": 95, "\u5305\u542b\u4e0e": 95, "\u76f8\u540c\u7684\u503c": 95, "\u4f46\u88ab\u622a\u65ad\u4e3a\u6574\u6570": 95, "\u53ef\u7528\u7684\u6570\u636e\u7c7b\u578b\u5305\u62ec": 95, "bfloat": 95, "\u73b0\u5728\u4f60\u77e5\u9053\u4e86\u4e00\u4e9b\u521b\u5efa\u5f20\u91cf\u7684\u65b9\u6cd5": 95, "\u90a3\u4f60\u80fd\u5bf9\u5b83\u4eec\u505a\u4ec0\u4e48\u5462": 95, "\u8ba9\u6211\u4eec\u9996\u5148\u770b\u57fa\u672c\u7b97\u672f\u8fd0\u7b97": 95, "\u4ee5\u53ca\u5f20\u91cf\u5982\u4f55\u4e0e\u7b80\u5355\u7684\u6807\u91cf\u4ea4\u4e92": 95, "sqrt2": 95, "\u5982\u4f60\u6240\u89c1": [95, 104], "\u5f20\u91cf\u548c\u6807\u91cf\u4e4b\u95f4\u7684\u52a0\u6cd5": 95, "\u51cf\u6cd5": 95, "\u4e58\u6cd5": 95, "\u9664\u6cd5\u548c\u6307\u6570\u8fd0\u7b97\u90fd\u662f\u5728\u5f20\u91cf\u7684\u6bcf\u4e2a\u5143\u7d20\u4e0a\u5206\u5e03\u5f0f\u8fdb\u884c\u7684": 95, "\u7531\u4e8e\u8fd9\u79cd\u64cd\u4f5c\u7684\u8f93\u51fa\u5c06\u662f\u4e00\u4e2a\u5f20\u91cf": 95, "\u4f60\u53ef\u4ee5\u50cf\u901a\u5e38\u7684\u8fd0\u7b97\u7b26\u4f18\u5148\u7ea7\u89c4\u5219\u4e00\u6837\u5c06\u5b83\u4eec\u94fe\u63a5\u5728\u4e00\u8d77": 95, "\u5c31\u50cf\u6211\u4eec\u5728\u521b\u5efa": 95, "\u7684\u90a3\u4e00\u884c\u4e2d\u6240\u505a\u7684\u90a3\u6837": 95, "\u4e24\u4e2a\u5f20\u91cf\u4e4b\u95f4\u7684\u7c7b\u4f3c\u8fd0\u7b97\u4e5f\u50cf\u4f60\u76f4\u89c9\u4e0a\u671f\u671b\u7684\u90a3\u6837": 95, "powers2": 95, "dozen": [95, 165], "\u8fd9\u91cc\u9700\u8981\u6ce8\u610f\u7684\u662f": 95, "\u524d\u9762\u4ee3\u7801\u5355\u5143\u4e2d\u7684\u6240\u6709\u5f20\u91cf\u90fd\u5177\u6709\u76f8\u540c\u7684\u5f62\u72b6": 95, "\u5982\u679c\u6211\u4eec\u5c1d\u8bd5\u5728\u4e0d\u540c\u5f62\u72b6\u7684\u5f20\u91cf\u4e0a\u6267\u884c\u4e8c\u5143\u8fd0\u7b97\u4f1a\u600e\u6837": 95, "\u4e0b\u9762\u7684\u5355\u5143\u683c\u4f1a\u629b\u51fa\u4e00\u4e2a\u8fd0\u884c\u65f6\u9519\u8bef": 95, "\u8fd9\u662f\u6709\u610f\u7684": 95, "\u4e00\u822c\u60c5\u51b5\u4e0b": 95, "\u4f60\u4e0d\u80fd\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u5bf9\u4e0d\u540c\u5f62\u72b6\u7684\u5f20\u91cf\u8fdb\u884c\u64cd\u4f5c": 95, "\u5373\u4f7f\u5728\u4e0a\u9762\u7684\u5355\u5143\u683c\u4e2d": 95, "\u5f20\u91cf\u5177\u6709\u76f8\u540c\u6570\u91cf\u7684\u5143\u7d20": 95, "\u5982\u679c\u4f60\u719f\u6089numpi": 95, "ndarrays\u4e2d\u7684\u5e7f\u64ad\u8bed\u4e49": 95, "\u4f60\u4f1a\u53d1\u73b0\u8fd9\u91cc\u5e94\u7528\u7684\u662f\u76f8\u540c\u7684\u89c4\u5219": 95, "\u540c\u5f62\u89c4\u5219\u7684\u4f8b\u5916\u662f": 95, "\u8fd9\u91cc\u6709\u4e00\u4e2a\u4f8b\u5b50": 95, "\u8fd9\u91cc\u7684\u6280\u5de7\u662f\u4ec0\u4e48": 95, "\u6211\u4eec\u662f\u5982\u4f55\u5c06": 95, "\u5f20\u91cf\u4e0e": 95, "\u5f20\u91cf\u76f8\u4e58\u7684": 95, "\u5e7f\u64ad\u662f\u4e00\u79cd\u5728\u5177\u6709\u76f8\u4f3c\u5f62\u72b6\u7684\u5f20\u91cf\u4e4b\u95f4\u6267\u884c\u64cd\u4f5c\u7684\u65b9\u5f0f": 95, "\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d": 95, "\u4e00\u884c\u56db\u5217\u7684\u5f20\u91cf\u4e0e\u4e24\u884c\u56db\u5217\u5f20\u91cf\u7684": 95, "\u4e24\u884c": 95, "\u76f8\u4e58": 95, "\u8fd9\u662f\u6df1\u5ea6\u5b66\u4e60\u4e2d\u4e00\u4e2a\u91cd\u8981\u7684\u64cd\u4f5c": 95, "\u5e38\u89c1\u7684\u4f8b\u5b50\u662f\u5c06\u4e00\u6279\u8f93\u5165\u5f20\u91cf\u7684\u5b66\u4e60\u6743\u91cd\u5f20\u91cf\u76f8\u4e58": 95, "\u5206\u522b\u5bf9\u6279\u6b21\u4e2d\u7684\u6bcf\u4e2a\u5b9e\u4f8b\u5e94\u7528\u8be5\u64cd\u4f5c": 95, "\u5e76\u8fd4\u56de\u4e00\u4e2a\u5f62\u72b6\u76f8\u540c\u7684\u5f20\u91cf": 95, "\u5c31\u50cf\u6211\u4eec\u4e0a\u9762\u7684": 95, "\u793a\u4f8b\u4e00\u6837": 95, "\u8fd4\u56de\u4e86\u4e00\u4e2a\u5f62\u72b6\u4e3a": 95, "\u5e7f\u64ad\u7684\u89c4\u5219\u662f": 95, "\u6bcf\u4e2a\u5f20\u91cf\u5fc5\u987b\u81f3\u5c11\u6709\u4e00\u4e2a\u7ef4\u5ea6": 95, "\u4e0d\u5141\u8bb8\u7a7a\u5f20\u91cf": 95, "\u6bd4\u8f83\u4e24\u4e2a\u5f20\u91cf\u7684\u7ef4\u5ea6\u5927\u5c0f": 95, "\u4ece\u6700\u540e\u4e00\u4e2a\u5230\u7b2c\u4e00\u4e2a": 95, "\u6bcf\u4e2a\u7ef4\u5ea6\u5fc5\u987b\u76f8\u7b49": 95, "\u5176\u4e2d\u4e00\u4e2a\u7ef4\u5ea6\u5fc5\u987b\u4e3a1": 95, "\u8be5\u7ef4\u5ea6\u5728\u5176\u4e2d\u4e00\u4e2a\u5f20\u91cf\u4e2d\u4e0d\u5b58\u5728": 95, "\u5f53\u7136": 95, "\u76f8\u540c\u5f62\u72b6\u7684\u5f20\u91cf\u662f": 95, "\u53ef\u5e7f\u64ad": 95, "\u6b63\u5982\u4f60\u4e4b\u524d\u770b\u5230\u7684\u90a3\u6837": 95, "\u8fd9\u91cc\u6709\u4e00\u4e9b\u7b26\u5408\u4e0a\u8ff0\u89c4\u5219\u5e76\u5141\u8bb8\u5e7f\u64ad\u7684\u60c5\u51b5\u793a\u4f8b": 95, "\u7b2c3\u548c\u7b2c2\u7ef4\u4e0ea\u76f8\u540c": 95, "\u7b2c1\u7ef4\u4e0d\u5b58\u5728": 95, "\u7b2c3\u7ef4\u4e3a1": 95, "\u7b2c2\u7ef4\u4e0ea\u76f8\u540c": 95, "\u7b2c3\u7ef4\u4e0ea\u76f8\u540c": 95, "\u7b2c2\u7ef4\u4e3a1": 95, "\u4ed4\u7ec6\u89c2\u5bdf\u4e0a\u9762\u6bcf\u4e2a\u5f20\u91cf\u7684\u503c": 95, "\u521b\u5efa": 95, "\u7684\u4e58\u6cd5\u8fd0\u7b97\u662f\u5728": 95, "\u7684\u6bcf\u4e00\u5c42\u4e0a\u5e7f\u64ad\u7684": 95, "\u5bf9\u4e8e": 95, "\u8be5\u8fd0\u7b97\u5728": 95, "\u7684\u6bcf\u4e00\u5c42\u548c\u6bcf\u4e00\u884c\u4e0a\u90fd\u8fdb\u884c\u4e86\u5e7f\u64ad": 95, "\u6bcf\u4e00\u52173\u4e2a\u5143\u7d20\u90fd\u662f\u76f8\u540c\u7684": 95, "\u6211\u4eec\u98a0\u5012\u4e86\u4e00\u4e0b": 95, "\u73b0\u5728\u6bcf\u4e00\u884c\u5728\u5c42\u4e0e\u5217\u4e4b\u95f4\u90fd\u662f\u76f8\u540c\u7684": 95, "\u6709\u5173\u5e7f\u64ad\u7684\u66f4\u591a\u4fe1\u606f": 95, "\u8bf7\u53c2\u9605pytorch\u5173\u4e8e\u6b64\u7684": 95, "\u8fd9\u91cc\u6709\u4e00\u4e9b\u5c1d\u8bd5\u5e7f\u64ad\u4f46\u4f1a\u5931\u8d25\u7684\u4f8b\u5b50": 95, "\u7ef4\u5ea6\u5fc5\u987b\u4ece\u6700\u540e\u5230\u7b2c\u4e00\u4e2a\u5339\u914d": 95, "\u7b2c3\u548c\u7b2c2\u7ef4\u90fd\u4e0d\u540c": 95, "\u4e0d\u80fd\u4e0e\u7a7a\u5f20\u91cf\u8fdb\u884c\u5e7f\u64ad": 95, "\u5f20\u91cf\u6709\u8d85\u8fc7\u4e09\u767e\u79cd\u53ef\u4ee5\u6267\u884c\u7684\u64cd\u4f5c": 95, "\u8fd9\u91cc\u662f\u4e00\u4e9b\u4e3b\u8981\u64cd\u4f5c\u7c7b\u522b\u7684\u793a\u4f8b": 95, "\u5e38\u7528\u65b9\u6cd5": 95, "ceil": [95, 135], "\u4e09\u89d2\u51fd\u6570\u53ca\u5176\u53cd\u51fd\u6570": 95, "nsine": 95, "arcsin": 95, "\u4f4d\u8fd0\u7b97": 95, "nbitwis": 95, "xor": 95, "bitwise_xor": 95, "\u6bd4\u8f83\u64cd\u4f5c": 95, "nbroadcast": 95, "\u8fd4\u56de\u5e03\u5c14\u7c7b\u578b\u5f20\u91cf": 95, "\u5f52\u7ea6\u64cd\u4f5c": 95, "n\u5f52\u7ea6\u64cd\u4f5c": 95, "\u8fd4\u56de\u5355\u5143\u7d20\u5f20\u91cf": 95, "\u4ece\u8fd4\u56de\u7684\u5f20\u91cf\u4e2d\u63d0\u53d6\u503c": 95, "\u5e73\u5747\u503c": 95, "\u6807\u51c6\u5dee": 95, "prod": [95, 190], "\u6240\u6709\u6570\u5b57\u7684\u4e58\u79ef": 95, "\u8fc7\u6ee4\u552f\u4e00\u5143\u7d20": 95, "\u5411\u91cf\u548c\u7ebf\u6027\u4ee3\u6570\u8fd0\u7b97": 95, "\u5355\u4f4d\u5411\u91cf": 95, "m1": [95, 231], "\u968f\u673a\u77e9\u9635": 95, "m2": 95, "\u4e09\u500d\u5355\u4f4d\u77e9\u9635": 95, "n\u5411\u91cf\u548c\u77e9\u9635": 95, "\u5355\u4f4d\u5411\u91cf\u7684\u8d1f\u503c": 95, "m3": 95, "\u7684\u4e09\u500d": 95, "\u5947\u5f02\u503c\u5206\u89e3": 95, "\u6709\u5173\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\u548c\u5b8c\u6574\u7684\u6570\u5b66\u51fd\u6570\u6e05\u5355": 95, "\u5927\u591a\u6570\u5f20\u91cf\u7684\u4e8c\u5143\u8fd0\u7b97\u5c06\u8fd4\u56de\u7b2c\u4e09\u4e2a\u65b0\u5f20\u91cf": 95, "\u5f53\u6211\u4eec\u8bf4": 95, "\u662f\u5f20\u91cf": 95, "\u65b0\u5f20\u91cf": 95, "\u5c06\u5360\u7528\u4e0e\u5176\u4ed6\u5f20\u91cf\u4e0d\u540c\u7684\u5185\u5b58\u533a\u57df": 95, "\u6709\u65f6\u60a8\u53ef\u80fd\u5e0c\u671b\u5c31\u5730\u4fee\u6539\u5f20\u91cf": 95, "\u5982\u679c\u60a8\u6b63\u5728\u6267\u884c\u5143\u7d20wise\u8ba1\u7b97": 95, "\u53ef\u4ee5\u4e22\u5f03\u4e2d\u95f4\u503c": 95, "\u5927\u591a\u6570\u6570\u5b66\u51fd\u6570\u90fd\u6709\u4e00\u4e2a\u5e26\u6709\u9644\u52a0\u4e0b\u5212\u7ebf": 95, "\u7684\u7248\u672c": 95, "\u5b83\u5c06\u5c31\u5730\u4fee\u6539\u5f20\u91cf": 95, "\u6b64\u64cd\u4f5c\u5728\u5185\u5b58\u4e2d\u521b\u5efa\u65b0\u5f20\u91cf": 95, "\u672a\u66f4\u6539": 95, "sin_": 95, "\u6ce8\u610f\u4e0b\u5212\u7ebf": 95, "\u88ab\u4fee\u6539": 95, "\u5bf9\u4e8e\u7b97\u672f\u8fd0\u7b97": 95, "\u6709\u4e00\u4e9b\u51fd\u6570\u7684\u884c\u4e3a\u7c7b\u4f3c": 95, "nafter": [95, 153], "\u8fd9\u4e9b\u5c31\u5730\u7b97\u672f\u51fd\u6570\u662f": 95, "\u5bf9\u8c61\u4e0a\u7684\u65b9\u6cd5": 95, "\u800c\u4e0d\u662f\u50cf\u8bb8\u591a\u5176\u4ed6\u51fd\u6570": 95, "\u90a3\u6837\u9644\u52a0\u5230": 95, "\u6a21\u5757\u4e0a": 95, "\u6b63\u5982\u4f60\u4ece": 95, "\u4e2d\u770b\u5230\u7684": 95, "\u88ab\u8c03\u7528\u7684\u5f20\u91cf\u662f\u5c31\u5730\u6539\u53d8\u7684\u90a3\u4e2a": 95, "\u8fd8\u6709\u53e6\u4e00\u79cd\u9009\u62e9": 95, "\u53ef\u4ee5\u5c06\u8ba1\u7b97\u7ed3\u679c\u653e\u5728\u4e00\u4e2a\u5df2\u7ecf\u5206\u914d\u7684\u5f20\u91cf\u4e2d": 95, "\u6211\u4eec\u5230\u76ee\u524d\u4e3a\u6b62\u770b\u5230\u7684\u8bb8\u591a\u65b9\u6cd5\u548c\u51fd\u6570": 95, "\u5305\u62ec\u521b\u5efa\u65b9\u6cd5": 95, "\u90fd\u6709\u4e00\u4e2a": 95, "\u8ba9\u4f60\u6307\u5b9a\u4e00\u4e2a\u5f20\u91cf\u6765\u63a5\u6536\u8f93\u51fa": 95, "\u5982\u679c": [95, 111, 246], "\u5f20\u91cf\u7684\u5f62\u72b6\u548c": 95, "\u6b63\u786e": 95, "\u8fd9\u53ef\u4ee5\u5728\u4e0d\u5206\u914d\u65b0\u5185\u5b58\u7684\u60c5\u51b5\u4e0b\u53d1\u751f": 95, "old_id": 95, "\u7684\u5185\u5bb9\u5df2\u7ecf\u6539\u53d8": 95, "\u6d4b\u8bd5": [95, 236], "\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61": 95, "\u800c\u4e0d\u53ea\u662f\u5305\u542b\u76f8\u7b49\u7684\u503c": 95, "\u786e\u4fdd\u6211\u4eec\u7684\u65b0": 95, "\u662f\u65e7": 95, "\u7684\u540c\u4e00\u4e2a\u5bf9\u8c61": 95, "\u5bf9\u4e8e\u521b\u5efa\u4e5f\u53ef\u4ee5": 95, "\u53c8\u4e00\u6b21\u6539\u53d8": 95, "\u4ecd\u7136\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61": 95, "\u4e2d\u7684\u4efb\u4f55\u5bf9\u8c61\u4e00\u6837": 95, "\u5c06\u5f20\u91cf\u8d4b\u503c\u7ed9\u53d8\u91cf\u4f1a\u4f7f\u8be5\u53d8\u91cf\u6210\u4e3a\u5f20\u91cf\u7684": 95, "\u6807\u7b7e": [95, 236, 250], "\u800c\u4e0d\u4f1a\u590d\u5236\u5b83": 95, "561": [95, 177], "\u6211\u4eec\u6539\u53d8": 95, "\u4e5f\u88ab\u6539\u53d8\u4e86": 95, "\u5982\u679c\u4f60\u60f3\u8981\u4e00\u4e2a\u5355\u72ec\u7684\u6570\u636e\u526f\u672c\u6765\u5904\u7406\u5462": 95, "\u8fd9\u65f6\u5c31\u53ef\u4ee5\u4f7f\u7528": 95, "\u5185\u5b58\u4e2d\u7684\u4e0d\u540c\u5bf9\u8c61": 95, "\u4f46\u4ecd\u7136\u5177\u6709\u76f8\u540c\u7684\u5185\u5bb9": 95, "\u6539\u53d8\u4e86": 95, "\u4f46": [95, 231], "\u4ecd\u7136\u662f\u5168": 95, "\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u4e8b\u60c5\u9700\u8981\u6ce8\u610f": 95, "\u5982\u679c\u4f60\u7684\u6e90\u5f20\u91cf\u542f\u7528\u4e86\u81ea\u52a8\u6c42\u5bfc": 95, "\u90a3\u4e48\u514b\u9686\u5f20\u91cf\u4e5f\u4f1a\u542f\u7528\u81ea\u52a8\u6c42\u5bfc": 95, "\u8fd9\u5c06\u5728\u5173\u4e8e\u81ea\u52a8\u6c42\u5bfc\u7684\u89c6\u9891\u4e2d\u66f4\u6df1\u5165\u5730\u4ecb\u7ecd": 95, "\u4f46\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u7ec6\u8282\u7684\u7b80\u5355\u7248\u672c": 95, "\u8bf7\u7ee7\u7eed\u9605\u8bfb": 95, "\u5728\u8bb8\u591a\u60c5\u51b5\u4e0b": 95, "\u8fd9\u6b63\u662f\u4f60\u6240\u9700\u8981\u7684": 95, "\u5982\u679c\u4f60\u7684\u6a21\u578b\u5728\u5176": 95, "\u65b9\u6cd5\u4e2d\u6709\u591a\u4e2a\u8ba1\u7b97\u8def\u5f84": 95, "\u5e76\u4e14": 95, "\u539f\u59cb\u5f20\u91cf\u548c\u5b83\u7684\u514b\u9686": 95, "\u90fd\u4f1a\u5f71\u54cd\u6a21\u578b\u7684\u8f93\u51fa": 95, "\u90a3\u4e48\u4e3a\u4e86\u542f\u7528\u6a21\u578b\u5b66\u4e60": 95, "\u4f60\u5e0c\u671b\u4e24\u4e2a\u5f20\u91cf\u90fd\u542f\u7528\u81ea\u52a8\u6c42\u5bfc": 95, "\u901a\u5e38\u5982\u679c\u5b83\u662f\u4e00\u7ec4\u5b66\u4e60\u6743\u91cd\u6216\u6e90\u81ea\u6d89\u53ca\u6743\u91cd\u7684\u8ba1\u7b97": 95, "\u90a3\u4e48\u4f60\u5c31\u4f1a\u5f97\u5230\u6240\u9700\u7684\u7ed3\u679c": 95, "\u53e6\u4e00\u65b9\u9762": 95, "\u5982\u679c\u4f60\u6b63\u5728\u8fdb\u884c\u4e00\u4e2a\u8ba1\u7b97": 95, "\u90fd\u4e0d\u9700\u8981\u8ddf\u8e2a\u68af\u5ea6": 95, "\u90a3\u4e48\u53ea\u8981\u6e90\u5f20\u91cf\u5173\u95ed\u4e86\u81ea\u52a8\u6c42\u5bfc": 95, "\u4f60\u5c31\u53ef\u4ee5\u7ee7\u7eed\u4e86": 95, "\u8fd8\u6709\u7b2c\u4e09\u79cd\u60c5\u51b5": 95, "\u5047\u8bbe\u4f60\u5728\u6a21\u578b\u7684": 95, "\u51fd\u6570\u4e2d\u6267\u884c\u4e00\u4e2a\u8ba1\u7b97": 95, "\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6240\u6709\u5185\u5bb9\u7684\u68af\u5ea6\u90fd\u6253\u5f00": 95, "\u4f46\u4f60\u60f3\u5728\u4e2d\u95f4\u63d0\u53d6\u4e00\u4e9b\u503c\u6765\u751f\u6210\u4e00\u4e9b\u6307\u6807": 95, "\u4f60": 95, "\u4e0d\u5e0c\u671b": 95, "\u514b\u9686\u7684\u6e90\u5f20\u91cf\u526f\u672c\u8ddf\u8e2a\u68af\u5ea6": 95, "\u5173\u95ed\u81ea\u52a8\u6c42\u5bfc\u7684\u5386\u53f2\u8bb0\u5f55\u8ddf\u8e2a\u53ef\u4ee5\u63d0\u9ad8\u6027\u80fd": 95, "\u4f60\u53ef\u4ee5\u5728\u6e90\u5f20\u91cf\u4e0a\u4f7f\u7528": 95, "\u6253\u5f00\u81ea\u52a8\u6c42\u5bfc": 95, "\u6b64\u5904\u53d1\u751f\u4e86\u4ec0\u4e48": 95, "\u6211\u4eec\u521b\u5efa\u4e86": 95, "\u5e76\u5c06": 95, "\u6211\u4eec\u8fd8\u6ca1\u6709\u4ecb\u7ecd\u8fd9\u4e2a\u53ef\u9009\u53c2\u6570": 95, "\u4f46\u5c06\u5728\u5173\u4e8e\u81ea\u52a8\u6c42\u5bfc\u7684\u5355\u5143\u4e2d\u4ecb\u7ecd": 95, "\u5b83\u544a\u8bc9\u6211\u4eec\u5c5e\u6027": 95, "\u8fd9\u610f\u5473\u7740\u81ea\u52a8\u6c42\u5bfc\u548c\u8ba1\u7b97\u5386\u53f2\u8ddf\u8e2a\u5df2\u6253\u5f00": 95, "\u6211\u4eec\u514b\u9686": 95, "\u5e76\u5c06\u5176\u6807\u8bb0\u4e3a": 95, "\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5b83\u6b63\u5728\u8ddf\u8e2a\u5176\u8ba1\u7b97\u5386\u53f2": 95, "\u5b83\u7ee7\u627f\u4e86": 95, "\u7684\u81ea\u52a8\u6c42\u5bfc\u8bbe\u7f6e": 95, "\u5e76\u6dfb\u52a0\u5230\u4e86\u8ba1\u7b97\u5386\u53f2\u4e2d": 95, "\u4f46\u9996\u5148\u8c03\u7528": 95, "\u6211\u4eec\u770b\u4e0d\u5230\u4efb\u4f55\u8ba1\u7b97\u5386\u53f2": 95, "\u4e5f\u6ca1\u6709": 95, "\u5c06\u5f20\u91cf\u4e0e\u5176\u8ba1\u7b97\u5386\u53f2\u5206\u79bb": 95, "\u5b83\u8bf4": 95, "\u65e0\u8bba\u63a5\u4e0b\u6765\u53d1\u751f\u4ec0\u4e48": 95, "\u90fd\u50cf\u81ea\u52a8\u6c42\u5bfc\u5173\u95ed\u65f6\u90a3\u6837\u8fdb\u884c": 95, "\u5b83\u8fd9\u6837\u505a": 95, "\u5e76\u4e0d\u4f1a\u6539\u53d8": 95, "\u5f53\u6211\u4eec\u5728\u6700\u540e\u518d\u6b21\u6253\u5370": 95, "\u5b83\u4fdd\u7559\u4e86\u5176": 95, "\u7684\u4e3b\u8981\u4f18\u52bf\u4e4b\u4e00\u662f\u5728": 95, "\u517c\u5bb9\u7684": 95, "\u4e0a\u6709\u5f3a\u5927\u7684\u52a0\u901f\u80fd\u529b": 95, "\u7684\u5e76\u884c\u8ba1\u7b97\u5e73\u53f0": 95, "\u5230\u76ee\u524d\u4e3a\u6b62": [95, 231], "\u6211\u4eec\u6240\u505a\u7684\u4e00\u5207\u90fd\u662f\u5728": 95, "\u6211\u4eec\u5982\u4f55\u79fb\u52a8\u5230\u66f4\u5feb\u7684\u786c\u4ef6\u4e0a\u5462": 95, "\u6211\u4eec\u5e94\u8be5\u4f7f\u7528": 95, "\u65b9\u6cd5\u68c0\u67e5\u662f\u5426\u6709": 95, "\u53ef\u7528": 95, "\u5982\u679c\u4f60\u6ca1\u6709\u5b89\u88c5": 95, "\u9a71\u52a8\u7a0b\u5e8f": 95, "\u672c\u8282\u4e2d\u7684\u53ef\u6267\u884c\u5355\u5143\u683c\u5c06\u4e0d\u4f1a\u6267\u884c\u4efb\u4f55": 95, "\u76f8\u5173\u7684\u4ee3\u7801": 95, "\u4e00\u65e6\u6211\u4eec\u786e\u5b9a\u6709\u4e00\u4e2a\u6216\u591a\u4e2agpu\u53ef\u7528": 95, "\u6211\u4eec\u9700\u8981\u5c06\u6570\u636e\u653e\u5728gpu\u53ef\u4ee5\u8bbf\u95ee\u7684\u5730\u65b9": 95, "\u4f60\u7684cpu\u5728\u8ba1\u7b97\u673a\u7684ram\u4e0a\u5bf9\u6570\u636e\u8fdb\u884c\u8ba1\u7b97": 95, "\u4f60\u7684gpu\u6709\u4e13\u7528\u7684\u5185\u5b58\u8fde\u63a5\u5230\u5b83": 95, "\u6bcf\u5f53\u4f60\u60f3\u5728\u4e00\u4e2a\u8bbe\u5907\u4e0a\u6267\u884c\u8ba1\u7b97\u65f6": 95, "\u4f60\u5fc5\u987b\u5c06\u8be5\u8ba1\u7b97\u6240\u9700\u7684": 95, "\u6570\u636e\u79fb\u52a8\u5230\u8be5\u8bbe\u5907\u53ef\u8bbf\u95ee\u7684\u5185\u5b58\u4e2d": 95, "\u4fd7\u79f0": 95, "\u5c06\u6570\u636e\u79fb\u52a8\u5230gpu\u53ef\u8bbf\u95ee\u7684\u5185\u5b58": 95, "\u88ab\u7b80\u79f0\u4e3a": 95, "\u5c06\u6570\u636e\u79fb\u52a8\u5230gpu": 95, "\u6709\u591a\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5c06\u6570\u636e\u79fb\u52a8\u5230\u76ee\u6807\u8bbe\u5907": 95, "\u4f60\u53ef\u4ee5\u5728\u521b\u5efa\u65f6\u8fd9\u6837\u505a": 95, "gpu_rand": 95, "\u65b0\u7684\u5f20\u91cf\u662f\u5728cpu\u4e0a\u521b\u5efa\u7684": 95, "\u6240\u4ee5\u6211\u4eec\u5fc5\u987b\u4f7f\u7528\u53ef\u9009\u7684": 95, "\u53c2\u6570\u6765\u6307\u5b9a\u6211\u4eec\u60f3\u5728gpu\u4e0a\u521b\u5efa\u5f20\u91cf": 95, "\u5f53\u6211\u4eec\u6253\u5370\u65b0\u7684\u5f20\u91cf\u65f6": 95, "\u4f60\u53ef\u4ee5\u770b\u5230pytorch\u4f1a\u544a\u8bc9\u6211\u4eec\u5b83\u5728\u54ea\u4e2a\u8bbe\u5907\u4e0a": 95, "\u5982\u679c\u4e0d\u5728cpu\u4e0a": 95, "\u67e5\u8be2gpu\u7684\u6570\u91cf": 95, "\u5982\u679c\u4f60\u6709\u591a\u4e2agpu": 95, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u7d22\u5f15\u6307\u5b9a\u5b83\u4eec": 95, "\u4f5c\u4e3a\u7f16\u7801\u5b9e\u8df5": 95, "\u5728\u4efb\u4f55\u5730\u65b9\u90fd\u4f7f\u7528\u5b57\u7b26\u4e32\u5e38\u91cf\u6765\u6307\u5b9a\u8bbe\u5907\u662f\u76f8\u5f53\u8106\u5f31\u7684": 95, "\u65e0\u8bba\u4f60\u5728cpu\u8fd8\u662fgpu\u786c\u4ef6\u4e0a": 95, "\u4f60\u7684\u4ee3\u7801\u90fd\u5e94\u8be5\u7a33\u5065\u5730\u6267\u884c": 95, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u4e00\u4e2a\u8bbe\u5907\u53e5\u67c4\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9": 95, "\u800c\u4e0d\u662f\u4f7f\u7528\u5b57\u7b26\u4e32\u4f20\u9012\u7ed9\u4f60\u7684\u5f20\u91cf": 95, "my_devic": 95, "\u5982\u679c\u4f60\u6709\u4e00\u4e2a\u5df2\u7ecf\u5b58\u5728\u4e8e\u4e00\u4e2a\u8bbe\u5907\u4e0a\u7684\u5f20\u91cf": 95, "\u65b9\u6cd5\u5c06\u5b83\u79fb\u52a8\u5230\u53e6\u4e00\u4e2a\u8bbe\u5907": 95, "\u4e0b\u9762\u4e00\u884c\u4ee3\u7801\u5728cpu\u4e0a\u521b\u5efa\u4e00\u4e2a\u5f20\u91cf": 95, "\u5e76\u5c06\u5b83\u79fb\u52a8\u5230\u4f60\u5728\u4e0a\u4e00\u4e2a\u5355\u5143\u683c\u4e2d\u83b7\u53d6\u7684\u4efb\u4f55\u8bbe\u5907\u53e5\u67c4\u4e0a": 95, "\u91cd\u8981\u7684\u662f\u8981\u77e5\u9053": 95, "\u4e3a\u4e86\u8fdb\u884c\u6d89\u53ca\u4e24\u4e2a\u6216\u591a\u4e2a\u5f20\u91cf\u7684\u8ba1\u7b97": 95, "\u6240\u6709\u5f20\u91cf\u5fc5\u987b\u5728\u540c\u4e00\u8bbe\u5907\u4e0a": 95, "\u65e0\u8bba\u4f60\u662f\u5426\u6709gpu\u8bbe\u5907\u53ef\u7528": 95, "\u4ee5\u4e0b\u4ee3\u7801\u90fd\u4f1a\u629b\u51fa\u8fd0\u884c\u65f6\u9519\u8bef": 95, "thrown": [95, 192, 206], "\u6709\u65f6": 95, "\u4f60\u9700\u8981\u6539\u53d8\u5f20\u91cf\u7684\u5f62\u72b6": 95, "\u6211\u4eec\u5c06\u770b\u4e00\u4e9b\u5e38\u89c1\u7684\u60c5\u51b5": 95, "\u4ee5\u53ca\u5982\u4f55\u5904\u7406\u5b83\u4eec": 95, "\u4f60\u53ef\u80fd\u9700\u8981\u6539\u53d8\u7ef4\u5ea6\u6570\u91cf\u7684\u4e00\u79cd\u60c5\u51b5\u662f\u5c06\u5355\u4e2a\u5b9e\u4f8b\u8f93\u5165\u5230\u4f60\u7684\u6a21\u578b\u4e2d": 95, "pytorch\u6a21\u578b": 95, "\u901a\u5e38\u671f\u671b\u8f93\u5165": 95, "\u6570\u636e": [95, 236], "\u5047\u8bbe\u6709\u4e00\u4e2a\u6a21\u578b\u53ef\u4ee5\u5904\u74063x226x226\u7684\u56fe\u50cf": 95, "\u4e00\u4e2a226\u50cf\u7d20\u7684\u6b63\u65b9\u5f62": 95, "\u67093\u4e2a\u989c\u8272\u901a\u9053": 95, "\u5f53\u4f60\u52a0\u8f7d\u548c\u8f6c\u6362\u5b83\u65f6": 95, "\u4f60\u4f1a\u5f97\u5230\u4e00\u4e2a\u5f62\u72b6\u4e3a": 95, "226": 95, "\u4f46\u662f\u4f60\u7684\u6a21\u578b": 95, "\u671f\u671b\u8f93\u5165\u5f62\u72b6\u4e3a": 95, "\u662f\u6279\u6b21\u4e2d\u56fe\u50cf\u7684\u6570\u91cf": 95, "\u90a3\u4e48\u5982\u4f55\u521b\u5efa\u4e00\u4e2a\u6279\u6b21\u5927\u5c0f\u4e3a1\u7684\u8f93\u5165\u5462": 95, "\u65b9\u6cd5\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6": 95, "\u5728\u6700\u524d\u9762\u6dfb\u52a0\u4e86\u4e00\u4e2a\u65b0\u76840\u7ef4\u5ea6": 95, "\u73b0\u5728\u4f60\u6709\u4e86\u4e00\u4e2a\u6279\u6b21\u5927\u5c0f\u4e3a1\u7684\u8f93\u5165": 95, "\u90a3\u4e48\u5982\u679c\u662f": 95, "\u53bb\u9664": 95, "\u591a\u4f59\u76841\u7ef4\u5ea6\u5462": 95, "\u6211\u4eec\u6240\u8bf4\u7684\u6324\u538b": 95, "\u5c31\u662f\u5229\u7528\u4e86": 95, "\u4efb\u4f55\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6": 95, "\u4e0d\u4f1a": 95, "\u6539\u53d8\u5f20\u91cf\u4e2d\u5143\u7d20\u7684\u6570\u91cf\u8fd9\u4e00\u4e8b\u5b9e": 95, "\u7ee7\u7eed\u4e0a\u9762\u7684\u4f8b\u5b50": 95, "\u5047\u8bbe\u6a21\u578b\u7684\u8f93\u51fa\u662f\u4e00\u4e2a20\u5143\u7d20\u7684\u5411\u91cf": 95, "\u5bf9\u4e8e\u6bcf\u4e2a\u8f93\u5165": 95, "\u90a3\u4e48\u4f60\u4f1a\u671f\u671b\u8f93\u51fa\u7684\u5f62\u72b6\u4e3a": 95, "\u662f\u8f93\u5165\u6279\u6b21\u4e2d\u7684\u5b9e\u4f8b\u6570\u91cf": 95, "\u8fd9\u610f\u5473\u7740\u5bf9\u4e8e\u6211\u4eec\u7684\u5355\u8f93\u5165\u6279\u6b21": 95, "\u6211\u4eec\u4f1a\u5f97\u5230\u5f62\u72b6\u4e3a": 95, "\u7684\u8f93\u51fa": [95, 236], "\u5982\u679c\u4f60\u60f3\u5bf9\u8be5\u8f93\u51fa\u8fdb\u884c\u4e00\u4e9b": 95, "\u975e\u6279\u6b21": 95, "\u4e00\u4e9b\u53ea\u671f\u671b20\u5143\u7d20\u5411\u91cf\u7684\u8ba1\u7b97": 95, "\u8be5\u600e\u4e48\u529e": 95, "\u4f60\u53ef\u4ee5\u4ece\u5f62\u72b6\u770b\u51fa": 95, "\u6211\u4eec\u7684\u4e8c\u7ef4\u5f20\u91cf\u73b0\u5728\u53d8\u6210\u4e86\u4e00\u7ef4\u7684": 95, "\u5982\u679c\u4f60\u4ed4\u7ec6\u89c2\u5bdf\u4e0a\u9762\u5355\u5143\u683c\u7684\u8f93\u51fa": 95, "\u4f60\u4f1a\u53d1\u73b0\u6253\u5370": 95, "\u65f6\u4f1a\u663e\u793a\u4e00\u7ec4": 95, "\u989d\u5916": 95, "\u7684\u65b9\u62ec\u53f7": 95, "\u8fd9\u662f\u56e0\u4e3a\u591a\u4e86\u4e00\u4e2a\u7ef4\u5ea6": 95, "\u4f60\u53ea\u80fd\u5bf9\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6\u6267\u884c": 95, "\u770b\u4e0a\u9762\u6211\u4eec\u5c1d\u8bd5\u5bf9\u5927\u5c0f\u4e3a2\u7684\u7ef4\u5ea6": 95, "\u8fdb\u884c\u6324\u538b": 95, "\u5f97\u5230\u7684\u5f62\u72b6\u4e0e\u5f00\u59cb\u65f6\u76f8\u540c": 95, "\u7684\u8c03\u7528\u53ea\u80fd\u4f5c\u7528\u4e8e\u5927\u5c0f\u4e3a1\u7684\u7ef4\u5ea6": 95, "\u56e0\u4e3a\u5bf9\u5176\u4ed6\u7ef4\u5ea6\u64cd\u4f5c\u4f1a\u6539\u53d8\u5f20\u91cf\u4e2d\u5143\u7d20\u7684\u6570\u91cf": 95, "\u4f60\u53ef\u80fd\u4f1a\u4f7f\u7528": 95, "\u7684\u53e6\u4e00\u4e2a\u573a\u666f\u662f\u4e3a\u4e86\u65b9\u4fbf\u5e7f\u64ad\u64cd\u4f5c": 95, "\u56de\u60f3\u4e00\u4e0b\u4e0a\u9762\u7684\u4f8b\u5b50": 95, "\u6211\u4eec\u6709\u4ee5\u4e0b\u4ee3\u7801": 95, "\u5176\u51c0\u6548\u679c\u662f\u5728\u7ef4\u5ea60\u548c2\u4e0a\u8fdb\u884c\u5e7f\u64ad\u64cd\u4f5c": 95, "\u5bfc\u81f4\u5f62\u72b6\u4e3a3x1\u7684\u968f\u673a\u5f20\u91cf\u4e0e": 95, "\u4e2d\u7684\u6bcf\u4e00\u52173\u5143\u7d20\u9010\u5143\u7d20\u76f8\u4e58": 95, "\u5982\u679c\u968f\u673a\u5411\u91cf\u53ea\u662f\u4e00\u4e2a3\u5143\u7d20\u5411\u91cf\u5462": 95, "\u6211\u4eec\u5c31\u5931\u53bb\u4e86\u5e7f\u64ad\u7684\u80fd\u529b": 95, "\u56e0\u4e3a\u6700\u540e\u7684\u7ef4\u5ea6\u4e0d\u4f1a\u6839\u636e\u5e7f\u64ad\u89c4\u5219\u5339\u914d": 95, "\u53ef\u4ee5\u89e3\u6551\u6211\u4eec": 95, "\u8bd5\u56fe\u5c06": 95, "\u4f1a\u5bfc\u81f4\u8fd0\u884c\u65f6\u9519\u8bef": 95, "\u53d8\u6210\u4e8c\u7ef4\u5f20\u91cf": 95, "\u5728\u672b\u5c3e\u6dfb\u52a0\u65b0\u7ef4\u5ea6": 95, "\u5e7f\u64ad\u518d\u6b21\u751f\u6548": 95, "\u65b9\u6cd5\u4e5f\u6709\u672c\u5730\u7248\u672c": 95, "batch_m": 95, "\u6709\u65f6\u4f60\u9700\u8981\u66f4\u5f7b\u5e95\u5730\u6539\u53d8\u5f20\u91cf\u7684\u5f62\u72b6": 95, "\u540c\u65f6\u4fdd\u7559\u5143\u7d20\u6570\u91cf\u548c\u5185\u5bb9\u4e0d\u53d8": 95, "\u4e00\u79cd\u60c5\u51b5\u662f\u5728\u6a21\u578b\u7684\u5377\u79ef\u5c42\u548c\u7ebf\u6027\u5c42\u4e4b\u95f4\u7684\u63a5\u53e3": 95, "\u8fd9\u5728\u56fe\u50cf\u5206\u7c7b\u6a21\u578b\u4e2d\u5f88\u5e38\u89c1": 95, "\u5377\u79ef\u6838\u4f1a\u4ea7\u751f\u5f62\u72b6\u4e3a": 95, "\u4f46\u63a5\u4e0b\u6765\u7684\u7ebf\u6027\u5c42\u671f\u671b\u4e00\u7ef4\u8f93\u5165": 95, "\u53ef\u4ee5\u4e3a\u4f60\u505a\u8fd9\u4ef6\u4e8b": 95, "\u53ea\u8981\u4f60\u8bf7\u6c42\u7684\u7ef4\u5ea6\u4e0e\u8f93\u5165\u5f20\u91cf\u5177\u6709\u76f8\u540c\u6570\u91cf\u7684\u5143\u7d20\u5373\u53ef": 95, "output3d": 95, "input1d": 95, "\u4e0a\u9762\u6700\u540e\u4e00\u884c\u5355\u5143\u683c\u4e2d\u7684": 95, "\u53c2\u6570\u662f\u56e0\u4e3apytorch\u5728\u6307\u5b9a\u5f20\u91cf\u5f62\u72b6\u65f6": 95, "\u671f\u671b\u4e00\u4e2a": 95, "\u5143\u7ec4": 95, "\u4f46\u5f53\u5f62\u72b6\u662f\u65b9\u6cd5\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u65f6": 95, "\u5b83\u5141\u8bb8\u6211\u4eec\u53ea\u4f7f\u7528\u4e00\u7cfb\u5217\u6574\u6570": 95, "\u6211\u4eec\u5fc5\u987b\u6dfb\u52a0\u62ec\u53f7\u548c\u9017\u53f7\u6765\u8bf4\u670d\u8be5\u65b9\u6cd5\u8fd9\u786e\u5b9e\u662f\u4e00\u4e2a\u5355\u5143\u7d20\u5143\u7ec4": 95, "\u5f53\u53ef\u80fd\u65f6": 95, "\u4f1a\u8fd4\u56de\u8be5\u5f20\u91cf\u7684": 95, "\u89c6\u56fe": 95, "\u4e5f\u5c31\u662f\u4e00\u4e2a\u5355\u72ec\u7684\u5f20\u91cf\u5bf9\u8c61": 95, "\u67e5\u770b\u76f8\u540c\u7684\u5e95\u5c42\u5185\u5b58\u533a\u57df": 95, "\u8fd9\u4e00\u70b9\u5f88\u91cd\u8981": 95, "\u8fd9\u610f\u5473\u7740\u5bf9\u6e90\u5f20\u91cf\u6240\u505a\u7684\u4efb\u4f55\u66f4\u6539\u90fd\u4f1a\u53cd\u6620\u5728\u8be5\u5f20\u91cf\u7684\u89c6\u56fe\u4e0a": 95, "\u9664\u975e\u4f60": 95, "\u786e\u5b9e\u6709\u4e00\u4e9b\u6761\u4ef6": 95, "\u8d85\u51fa\u4e86\u672c\u4ecb\u7ecd\u7684\u8303\u56f4": 95, "\u5fc5\u987b\u8fd4\u56de\u6570\u636e\u7684\u526f\u672c": 95, "kinship": 95, "numpy_arrai": 95, "pytorch_tensor": 95, "pytorch_rand": 95, "numpy_rand": 95, "\u5728\u8fc7\u53bb\u7684\u89c6\u9891\u4e2d": 96, "\u6211\u4eec\u8ba8\u8bba\u5e76\u6f14\u793a\u4e86": 96, "\u6a21\u5757\u4e2d\u7684\u795e\u7ecf\u7f51\u7edc\u5c42\u548c\u51fd\u6570\u6784\u5efa\u6a21\u578b": 96, "\u81ea\u52a8\u68af\u5ea6\u8ba1\u7b97\u7684\u673a\u5236": 96, "\u8fd9\u662f\u57fa\u4e8e\u68af\u5ea6\u7684\u6a21\u578b\u8bad\u7ec3\u7684\u6838\u5fc3": 96, "\u53ef\u89c6\u5316\u8bad\u7ec3\u8fdb\u5ea6\u548c\u5176\u4ed6\u6d3b\u52a8": 96, "\u5728\u672c\u89c6\u9891\u4e2d": 96, "\u6211\u4eec\u5c06\u4e3a\u60a8\u7684\u5e93\u5b58\u6dfb\u52a0\u4e00\u4e9b\u65b0\u5de5\u5177": 96, "\u6211\u4eec\u5c06\u719f\u6089\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668\u62bd\u8c61": 96, "\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u7b80\u5316\u5411\u6a21\u578b\u8bad\u7ec3\u5faa\u73af\u63d0\u4f9b\u6570\u636e\u7684\u8fc7\u7a0b": 96, "\u6211\u4eec\u5c06\u8ba8\u8bba\u7279\u5b9a\u7684\u635f\u5931\u51fd\u6570\u4ee5\u53ca\u4f55\u65f6\u4f7f\u7528\u5b83\u4eec": 96, "\u6211\u4eec\u5c06\u4e86\u89e3": 96, "\u5b83\u4eec\u5b9e\u73b0\u4e86\u6839\u636e\u635f\u5931\u51fd\u6570\u7684\u7ed3\u679c\u8c03\u6574\u6a21\u578b\u6743\u91cd\u7684\u7b97\u6cd5": 96, "\u6211\u4eec\u5c06\u628a\u6240\u6709\u8fd9\u4e9b\u7ed3\u5408\u8d77\u6765": 96, "\u770b\u4e00\u4e2a\u5b8c\u6574\u7684": 96, "\u8bad\u7ec3\u5faa\u73af\u7684\u5b9e\u9645\u8fd0\u884c": 96, "\u7c7b\u5c01\u88c5\u4e86\u4ece\u5b58\u50a8\u4e2d\u63d0\u53d6\u6570\u636e\u5e76\u4ee5\u6279\u6b21\u5f62\u5f0f\u66b4\u9732\u7ed9\u8bad\u7ec3\u5faa\u73af\u7684\u8fc7\u7a0b": 96, "\u8d1f\u8d23\u8bbf\u95ee\u548c\u5904\u7406\u5355\u4e2a\u6570\u636e\u5b9e\u4f8b": 96, "\u4e2d\u63d0\u53d6\u6570\u636e\u5b9e\u4f8b": 96, "\u65e0\u8bba\u662f\u81ea\u52a8\u63d0\u53d6\u8fd8\u662f\u4f7f\u7528\u60a8\u5b9a\u4e49\u7684\u91c7\u6837\u5668": 96, "\u5c06\u5b83\u4eec\u6536\u96c6\u5230\u6279\u6b21\u4e2d": 96, "\u5e76\u8fd4\u56de\u7ed9\u60a8\u7684\u8bad\u7ec3\u5faa\u73af\u8fdb\u884c\u6d88\u8d39": 96, "\u53ef\u4ee5\u4e0e\u6240\u6709\u7c7b\u578b\u7684\u6570\u636e\u96c6\u4e00\u8d77\u4f7f\u7528": 96, "\u65e0\u8bba\u5b83\u4eec\u5305\u542b\u4ec0\u4e48\u7c7b\u578b\u7684\u6570\u636e": 96, "\u5bf9\u4e8e\u672c\u6559\u7a0b": [96, 233, 242, 243, 248, 249, 250], "\u63d0\u4f9b\u7684": 96, "\u6765\u96f6\u4e2d\u5fc3\u548c\u6807\u51c6\u5316\u56fe\u50cf\u74e6\u7247\u5185\u5bb9\u7684\u5206\u5e03": 96, "\u5e76\u4e0b\u8f7d\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u5206\u5272": 96, "datetim": [96, 122, 146], "\u521b\u5efa\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u96c6": 96, "\u5982\u679c\u9700\u8981\u5219\u4e0b\u8f7d": 96, "\u4e3a\u6211\u4eec\u7684\u6570\u636e\u96c6\u521b\u5efa\u6570\u636e\u52a0\u8f7d\u5668": 96, "\u8bad\u7ec3\u65f6\u6253\u4e71": 96, "\u9a8c\u8bc1\u65f6\u4e0d\u6253\u4e71": 96, "\u7c7b\u522b\u6807\u7b7e": 96, "\u62a5\u544a\u5206\u5272\u5927\u5c0f": 96, "\u8bad\u7ec3\u96c6\u6709": 96, "\u4e2a\u5b9e\u4f8b": 96, "\u9a8c\u8bc1\u96c6\u6709": 96, "\u50cf\u5f80\u5e38\u4e00\u6837": 96, "\u8ba9\u6211\u4eec\u53ef\u89c6\u5316\u6570\u636e\u4f5c\u4e3a\u5065\u5168\u6027\u68c0\u67e5": 96, "\u53cd\u6807\u51c6\u5316": 96, "\u6211\u4eec\u5728\u672c\u4f8b\u4e2d\u4f7f\u7528\u7684\u6a21\u578b\u662f": 96, "\u7684\u53d8\u4f53": 96, "\u5982\u679c\u60a8\u89c2\u770b\u4e86\u672c\u7cfb\u5217\u7684\u524d\u51e0\u4e2a\u89c6\u9891": 96, "\u5e94\u8be5\u4f1a\u5f88\u719f\u6089": 96, "\u6a21\u578b\u7ee7\u627f\u81ea": 96, "garmentclassifi": 96, "\u5bf9\u4e8e\u672c\u4f8b": [96, 236], "\u6211\u4eec\u5c06\u4f7f\u7528\u4ea4\u53c9\u71b5\u635f\u5931": 96, "\u4e3a\u4e86\u6f14\u793a\u76ee\u7684": 96, "\u6211\u4eec\u5c06\u521b\u5efa\u865a\u62df\u8f93\u51fa\u548c\u6807\u7b7e\u503c\u7684\u6279\u6b21": 96, "\u5c06\u5b83\u4eec\u901a\u8fc7\u635f\u5931\u51fd\u6570": 96, "\u5e76\u68c0\u67e5\u7ed3\u679c": 96, "\u635f\u5931\u51fd\u6570\u671f\u671b\u6570\u636e\u4ee5\u6279\u6b21\u5f62\u5f0f": 96, "\u6240\u4ee5\u6211\u4eec\u521b\u5efa\u4e86": 96, "\u4e2a\u6279\u6b21": 96, "\u8868\u793a\u6a21\u578b\u5bf9\u7ed9\u5b9a\u8f93\u5165\u7684": 96, "\u4e2a\u7c7b\u522b\u4e2d\u6bcf\u4e00\u4e2a\u7684\u7f6e\u4fe1\u5ea6": 96, "dummy_output": 96, "\u8868\u793a\u6b63\u786e\u7684\u7c7b\u522b\u5728\u6d4b\u8bd5\u7684": 96, "\u4e2a\u7c7b\u522b\u4e2d": 96, "dummy_label": 96, "\u6b64\u6279\u6b21\u7684\u603b\u635f\u5931": 96, "\u6211\u4eec\u5c06\u4f7f\u7528\u5e26\u52a8\u91cf\u7684\u7b80\u5355\u968f\u673a\u68af\u5ea6\u4e0b\u964d": 96, "\u5c1d\u8bd5\u4e00\u4e9b\u4f18\u5316\u65b9\u6848\u7684\u53d8\u4f53\u4f1a\u5f88\u6709\u542f\u53d1\u6027": 96, "\u5b66\u4e60\u7387\u51b3\u5b9a\u4e86\u4f18\u5316\u5668\u91c7\u53d6\u7684\u6b65\u957f\u5927\u5c0f": 96, "\u4e0d\u540c\u7684\u5b66\u4e60\u7387\u5bf9\u60a8\u7684\u8bad\u7ec3\u7ed3\u679c\u6709\u4f55\u5f71\u54cd": 96, "\u5728\u51c6\u786e\u6027\u548c\u6536\u655b\u65f6\u95f4\u65b9\u9762": 96, "\u52a8\u91cf\u5728\u591a\u4e2a\u6b65\u9aa4\u4e2d\u5c06\u4f18\u5316\u5668\u63a8\u5411\u6700\u5f3a\u68af\u5ea6\u7684\u65b9\u5411": 96, "\u6539\u53d8\u8fd9\u4e2a\u503c\u4f1a\u5bf9\u7ed3\u679c\u4ea7\u751f\u4ec0\u4e48\u5f71\u54cd": 96, "\u5c1d\u8bd5\u4e00\u4e9b\u4e0d\u540c\u7684\u4f18\u5316\u7b97\u6cd5": 96, "\u5982\u5e73\u5747": 96, "\u60a8\u7684\u7ed3\u679c\u6709\u4f55\u4e0d\u540c": 96, "\u5305\u4e2d\u6307\u5b9a\u4f18\u5316\u5668": 96, "\u6211\u4eec\u6709\u4e00\u4e2a\u6267\u884c\u4e00\u4e2a\u8bad\u7ec3\u5468\u671f\u7684\u51fd\u6570": 96, "\u679a\u4e3e\u6570\u636e": 96, "\u5e76\u5728\u5faa\u73af\u7684\u6bcf\u4e00\u6b21\u901a\u8fc7\u65f6\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c": 96, "\u83b7\u53d6\u4e00\u6279\u8bad\u7ec3\u6570\u636e": 96, "\u5c06\u4f18\u5316\u5668\u7684\u68af\u5ea6\u5f52\u96f6": 96, "\u6267\u884c\u63a8\u7406": 96, "\u4e5f\u5c31\u662f\u4ece\u6a21\u578b\u83b7\u53d6\u8f93\u5165\u6279\u6b21\u7684\u9884\u6d4b": 96, "\u8ba1\u7b97\u8be5\u7ec4\u9884\u6d4b\u4e0e\u6570\u636e\u96c6\u4e0a\u7684\u6807\u7b7e\u4e4b\u95f4\u7684\u635f\u5931": 96, "\u8ba1\u7b97\u5b66\u4e60\u6743\u91cd\u7684\u53cd\u5411\u68af\u5ea6": 96, "\u544a\u8bc9\u4f18\u5316\u5668\u6267\u884c\u4e00\u4e2a\u5b66\u4e60\u6b65\u9aa4": 96, "\u4e5f\u5c31\u662f\u6839\u636e\u6211\u4eec\u9009\u62e9\u7684\u4f18\u5316\u7b97\u6cd5": 96, "\u57fa\u4e8e\u8be5\u6279\u6b21\u89c2\u5bdf\u5230\u7684\u68af\u5ea6\u6765\u8c03\u6574\u6a21\u578b\u7684\u5b66\u4e60\u6743\u91cd": 96, "\u5b83\u6bcf": 96, "\u4e2a\u6279\u6b21\u62a5\u544a\u4e00\u6b21\u635f\u5931": 96, "\u5b83\u62a5\u544a\u6700\u540e": 96, "\u4e2a\u6279\u6b21\u7684\u5e73\u5747\u6bcf\u6279\u6b21\u635f\u5931": 96, "\u4ee5\u4fbf\u4e0e\u9a8c\u8bc1\u8fd0\u884c\u8fdb\u884c\u6bd4\u8f83": 96, "epoch_index": 96, "tb_writer": 96, "last_loss": 96, "\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u8ddf\u8e2a\u6279\u6b21\u7d22\u5f15\u5e76\u8fdb\u884c\u4e00\u4e9b\u5468\u671f\u5185\u62a5\u544a": 96, "\u6bcf\u4e2a\u6570\u636e\u5b9e\u4f8b\u90fd\u662f\u4e00\u4e2a\u8f93\u5165": 96, "\u6807\u7b7e\u5bf9": 96, "\u5bf9\u4e8e\u6bcf\u4e2a\u6279\u6b21": 96, "\u5bf9\u8be5\u6279\u6b21\u8fdb\u884c\u9884\u6d4b": 96, "\u8ba1\u7b97\u635f\u5931\u53ca\u5176\u68af\u5ea6": 96, "\u8c03\u6574\u5b66\u4e60\u6743\u91cd": 96, "\u6536\u96c6\u6570\u636e\u5e76\u62a5\u544a": 96, "\u6bcf\u6279\u6b21\u635f\u5931": 96, "tb_x": 96, "\u6211\u4eec\u6bcf\u4e2a\u5468\u671f\u9700\u8981\u505a\u7684\u4e8b\u60c5\u6709": 96, "\u901a\u8fc7\u68c0\u67e5\u672a\u7528\u4e8e\u8bad\u7ec3\u7684\u4e00\u7ec4\u6570\u636e\u4e0a\u7684\u76f8\u5bf9\u635f\u5931\u6765\u6267\u884c\u9a8c\u8bc1": 96, "\u5e76\u62a5\u544a\u8fd9\u4e00\u70b9": 96, "\u4fdd\u5b58\u6a21\u578b\u7684\u526f\u672c": 96, "\u6211\u4eec\u5c06\u5728": 96, "\u4e2d\u8fdb\u884c\u62a5\u544a": 96, "\u8fd9\u9700\u8981\u8f6c\u5230\u547d\u4ee4\u884c\u542f\u52a8": 96, "\u5e76\u5728\u53e6\u4e00\u4e2a\u6d4f\u89c8\u5668\u9009\u9879\u5361\u4e2d\u6253\u5f00\u5b83": 96, "\u5728\u5355\u72ec\u7684\u5355\u5143\u683c\u4e2d\u521d\u59cb\u5316": 96, "\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5730\u5c06\u66f4\u591a\u5468\u671f\u6dfb\u52a0\u5230\u540c\u4e00\u8fd0\u884c\u4e2d": 96, "timestamp": [96, 128, 143, 226], "strftime": [96, 122, 146], "fashion_trainer_": 96, "epoch_numb": 96, "best_vloss": 96, "\u5468\u671f": 96, "\u786e\u4fdd\u68af\u5ea6\u8ddf\u8e2a\u5df2\u6253\u5f00": 96, "\u5e76\u5bf9\u6570\u636e\u8fdb\u884c\u4e00\u6b21\u4f20\u9012": 96, "\u5c06\u6a21\u578b\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 96, "\u7981\u7528": 96, "\u5e76\u4f7f\u7528\u6279\u91cf\u89c4\u8303\u5316\u7684\u7fa4\u4f53\u7edf\u8ba1\u6570\u636e": 96, "\u7981\u7528\u68af\u5ea6\u8ba1\u7b97\u5e76\u51cf\u5c11\u5185\u5b58\u6d88\u8017": 96, "\u6709\u6548": 96, "\u5bf9\u4e8e\u8bad\u7ec3\u548c\u9a8c\u8bc1": 96, "\u8bad\u7ec3\u4e0e\u9a8c\u8bc1\u635f\u5931": 96, "\u8ddf\u8e2a\u6700\u4f73\u6027\u80fd": 96, "\u5e76\u4fdd\u5b58\u6a21\u578b\u7684\u72b6\u6001": 96, "model_path": [96, 222], "\u8981\u52a0\u8f7d\u4fdd\u5b58\u7684\u6a21\u578b\u7248\u672c": 96, "\u4e00\u65e6\u52a0\u8f7d\u4e86\u6a21\u578b": 96, "\u5b83\u5c31\u53ef\u4ee5\u7528\u4e8e\u60a8\u9700\u8981\u7684\u4efb\u4f55\u4e8b\u60c5": 96, "\u66f4\u591a\u8bad\u7ec3": 96, "\u63a8\u7406\u6216\u5206\u6790": 96, "\u5982\u679c\u60a8\u7684\u6a21\u578b\u6709\u5f71\u54cd\u6a21\u578b\u7ed3\u6784\u7684\u6784\u9020\u51fd\u6570\u53c2\u6570": 96, "\u60a8\u9700\u8981\u63d0\u4f9b\u5b83\u4eec\u5e76\u4ee5\u4e0e\u4fdd\u5b58\u65f6\u76f8\u540c\u7684\u65b9\u5f0f\u914d\u7f6e\u6a21\u578b": 96, "\u4e0a\u7684\u6570\u636e\u5de5\u5177\u6587\u6863": 96, "\u5173\u4e8e\u4f7f\u7528\u56fa\u5b9a\u5185\u5b58\u8fdb\u884c": 96, "\u8bad\u7ec3\u7684\u8bf4\u660e": 96, "\u4e2d\u53ef\u7528\u6570\u636e\u96c6\u7684\u6587\u6863": 96, "\u4e2d\u53ef\u7528\u635f\u5931": 96, "trainingyt": 96, "alexandro": 97, "chariton": 97, "computation": [97, 171], "lightweight": [97, 121, 156, 213, 230, 251], "drone": 97, "4gb": [97, 152, 158, 223], "satur": [97, 199, 230], "subtract": [97, 247], "greedi": [97, 113, 118, 136, 146, 160], "transforms_cifar": 97, "test_dataset": [97, 115], "num_images_to_keep": 97, "50_000": [97, 159], "train_load": [97, 122, 123, 129, 162, 166, 168, 220, 221, 253], "extractor": [97, 171], "neuron": [97, 229], "deepnn": 97, "lightnn": 97, "detriment": 97, "denot": [97, 99, 102, 189, 190, 193, 262, 271], "nn_deep": 97, "test_accuracy_deep": 97, "nn_light": 97, "new_nn_light": 97, "conclud": [97, 130, 149, 200], "total_params_deep": 97, "total_params_light": 97, "test_accuracy_light_c": 97, "interven": 97, "soft": [97, 160], "mistaken": 97, "valuabl": [97, 165, 193], "alon": [97, 112, 124, 165, 169], "meaningfulli": 97, "smoother": 97, "soft_target_loss_weight": 97, "ce_loss_weight": 97, "train_knowledge_distil": 97, "ce_loss": 97, "teacher_logit": 97, "student_logit": 97, "soft_target": 97, "soft_prob": 97, "soft_targets_loss": 97, "label_loss": 97, "ce": [97, 165], "test_accuracy_light_ce_and_kd": 97, "kd": 97, "coeffici": 97, "convei": [97, 200], "naiv": [97, 125, 145, 154, 164, 193], "rational": 97, "capac": [97, 131, 159, 160, 171, 247], "cosineembeddingloss": [97, 110], "obvious": [97, 101, 163], "somehow": [97, 103], "modifieddeepnncosin": 97, "flattened_conv_output": 97, "flattened_conv_output_after_pool": 97, "avg_pool1d": 97, "modifiedlightnncosin": 97, "modified_nn_deep": 97, "deep_nn": 97, "modified_deep_nn": 97, "modified_nn_light": 97, "hidden_represent": 97, "sample_input": [97, 209, 247], "total_class": 97, "hidden_representation_s": 97, "train_cosine_loss": 97, "hidden_rep_loss_weight": 97, "cosine_loss": 97, "teacher_hidden_represent": 97, "student_hidden_represent": 97, "hidden_rep_loss": 97, "test_multiple_output": 97, "disregard": 97, "test_accuracy_light_ce_and_cosine_loss": 97, "convolutional_fe_output_stud": 97, "convolutional_fe_output_teach": 97, "modifieddeepnnregressor": 97, "conv_feature_map": 97, "modifiedlightnnregressor": 97, "regressor_output": 97, "train_mse_loss": 97, "feature_map_weight": 97, "teacher_feature_map": 97, "regressor_feature_map": 97, "modified_nn_light_reg": 97, "modified_nn_deep_reg": 97, "test_accuracy_light_ce_and_mse_loss": 97, "cosineloss": 97, "wiggl": 97, "regressorms": 97, "hinton": [97, 127], "vinyal": 97, "dean": 97, "workshop": 97, "romero": 97, "balla": 97, "kahou": 97, "chassang": 97, "gatta": 97, "bengio": 97, "fitnet": 97, "thin": [97, 262, 271], "confer": 97, "knowledge_distillation_tutori": 97, "kit": 98, "dynet": [98, 100], "opposit": [98, 190], "theano": [98, 100], "kera": [98, 100, 111], "difficult": [98, 113, 145, 153, 165, 191, 195, 205], "constitu": 98, "roughli": [98, 122, 133, 144, 149, 181, 247], "fat": [98, 113], "exception": 98, "entiti": [98, 103, 175, 262, 271], "recognit": [98, 207, 247], "tagger": 98, "ner": 98, "sound": [98, 101, 173, 174], "scari": 98, "viterbi": [98, 102], "sum_": [98, 103, 160], "psi_i": 98, "sum_i": 98, "partit": [98, 121, 124, 135, 149, 214, 247], "emiss": 98, "textbf": 98, "psi_": 98, "y_i": [98, 102], "x_i": [98, 99], "tran": [98, 171], "h_i": [98, 102], "collin": 98, "robert": [98, 99, 101, 102, 103, 234], "guthri": [98, 99, 101, 102, 103, 234], "prepare_sequ": [98, 102], "to_ix": [98, 102], "log_sum_exp": 98, "max_scor": 98, "max_score_broadcast": 98, "bilstm_crf": 98, "tag_to_ix": [98, 102], "word_emb": 98, "num_lay": [98, 181, 230], "start_tag": 98, "stop_tag": 98, "_forward_alg": 98, "feat": [98, 171], "init_alpha": 98, "forward_var": 98, "alphas_t": 98, "next_tag": 98, "emit_scor": 98, "ith": [98, 103, 193], "trans_scor": 98, "next_tag_var": 98, "terminal_var": 98, "_get_lstm_featur": 98, "lstm_feat": 98, "_score_sent": 98, "_viterbi_decod": 98, "backpoint": 98, "init_vvar": 98, "bptrs_t": 98, "viterbivars_t": 98, "best_tag_id": 98, "path_scor": 98, "best_path": 98, "dont": [98, 99], "caller": [98, 134, 162, 212], "saniti": [98, 126, 159, 171, 256], "neg_log_likelihood": 98, "forward_scor": 98, "gold_scor": 98, "bilstm": 98, "tag_seq": 98, "street": [98, 263, 272], "journal": 98, "todai": [98, 117, 157, 191, 223], "corpor": [98, 137], "monei": 98, "georgia": 98, "tech": 98, "univers": [98, 113, 115, 160, 171, 176, 262, 271], "word_to_ix": [98, 99, 102, 103], "precheck_s": 98, "precheck_tag": 98, "sentence_in": [98, 102], "anywai": [98, 101], "gold": [98, 165], "perceptron": [98, 176], "score_sent": 98, "advanced_tutori": [98, 100], "workhors": 99, "2x5": 99, "acx": 99, "ac": [99, 171, 265, 274], "sigma": [99, 159], "plenti": 99, "peopl": [99, 100, 103, 113, 117, 185, 200, 262, 271], "shy": 99, "vanish": 99, "linearit": 99, "sum_j": 99, "x_j": 99, "theres": 99, "unseen": [99, 103], "supervis": [99, 166, 171], "eta": 99, "vari": [99, 113, 129, 146, 165, 172, 181, 182, 191, 193, 199, 210, 223, 230, 234], "spanish": [99, 127, 128], "bow": 99, "gusta": 99, "comer": 99, "cafeteria": 99, "creo": 99, "que": [99, 165], "sea": [99, 118], "una": 99, "buena": 99, "yo": 99, "si": [99, 155, 165], "bowclassifi": 99, "bow_vec": 99, "make_bow_vector": 99, "make_target": 99, "label_to_ix": 99, "bow_vector": 99, "log_prob": [99, 103, 161, 163], "bigger": [99, 127, 128, 158, 171, 262, 271], "0th": [99, 154, 156, 164, 193], "deep_learning_tutori": [99, 100], "russel": 100, "norvig": 100, "book": [100, 102], "rip": 100, "pytorch_tutori": [100, 101], "word_embeddings_tutori": [100, 103], "lexic": 100, "sequence_models_tutori": [100, 102, 234], "bi": [100, 137], "crf": 100, "v_data": 101, "m_data": 101, "2x2x2": 101, "t_data": 101, "terminolog": 101, "z_1": 101, "x_2": [101, 116, 150, 262, 271], "y_2": [101, 116], "z_2": 101, "complain": 101, "vagu": 101, "programm": [101, 103, 197, 199, 262, 271], "x_0": [101, 262, 271], "overbrac": [101, 102, 103], "y_0": 101, "z_0": 101, "gloss": 101, "new_z": 101, "NO": 101, "forgotten": 101, "classic": [102, 113, 147, 153, 166, 244], "markov": 102, "myriad": 102, "cow": 102, "q_": [102, 103, 146], "2nd": [102, 162, 193], "reader": [102, 135, 149, 176, 262, 271], "unfamiliar": 102, "w_1": 102, "w_m": 102, "w_i": [102, 103], "_i": [102, 185], "_1": [102, 252], "_m": 102, "_j": 102, "ah_i": 102, "noun": 102, "verb": 102, "ate": 102, "everybodi": [102, 135], "affix": [102, 103], "bear": 102, "ly": 102, "adverb": 102, "c_w": 102, "x_w": 102, "po": [102, 118, 171], "capit": [103, 262, 271], "enorm": [103, 171], "notion": [103, 118], "mathematician": 103, "physicist": 103, "orthograph": 103, "linguist": 103, "hypothesi": 103, "coffe": 103, "phi": [103, 262, 271], "dissimilar": 103, "pain": [103, 113], "earth": [103, 113], "herself": 103, "lookup_tensor": 103, "hello_emb": 103, "context_s": 103, "shakespear": [103, 164], "sonnet": 103, "test_sent": 103, "forti": 103, "winter": [103, 113], "besieg": 103, "thy": 103, "brow": 103, "trench": 103, "beauti": [103, 229], "youth": 103, "proud": 103, "liveri": 103, "gaze": 103, "Will": [103, 257], "totter": 103, "weed": [103, 189], "treasur": 103, "lusti": 103, "thine": 103, "sunken": 103, "eat": [103, 152], "shame": 103, "thriftless": 103, "prais": 103, "thou": 103, "couldst": 103, "mine": [103, 164, 262, 271], "excus": 103, "blood": 103, "cold": [103, 113, 165], "word_i": 103, "ngram": 103, "ngramlanguagemodel": 103, "context_idx": 103, "cbow": 103, "probabilist": [103, 159], "q_w": 103, "raw_text": 103, "studi": [103, 115, 121, 126, 156, 171, 176], "beings": 103, "inhabit": 103, "evolut": 103, "conjur": 103, "spell": [103, 127], "dedupl": 103, "make_context_vector": 103, "jeremi": 104, "howard": [104, 146, 155], "rachel": 104, "thoma": 104, "ingham": 104, "\u6211\u4eec\u5efa\u8bae\u5c06\u672c\u6559\u7a0b\u4f5c\u4e3a\u7b14\u8bb0\u672c": 104, "\u8fd0\u884c": 104, "\u8bf7\u70b9\u51fb\u9875\u9762\u9876\u90e8\u7684\u94fe\u63a5": 104, "\u4e0b\u8f7d\u7b14\u8bb0\u672c": 104, "\u63d0\u4f9b\u4e86\u4f18\u96c5\u8bbe\u8ba1\u7684\u6a21\u5757\u548c\u7c7b": 104, "\u4ee5\u5e2e\u52a9\u4f60\u521b\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 104, "\u4e3a\u4e86\u5145\u5206\u5229\u7528\u5b83\u4eec\u7684\u529f\u80fd": 104, "\u5e76\u901a\u8fc7\u81ea\u5b9a\u4e49\u5bf9\u5e94\u6a21\u5757\u6216\u7c7b": 104, "\u6765\u89e3\u51b3\u7279\u5b9a\u95ee\u9898": 104, "\u9700\u8981\u7406\u89e3\u5b83\u4eec\u7684\u5177\u4f53\u529f\u80fd": 104, "\u6211\u4eec\u5c06\u9996\u5148\u5728": 104, "\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3\u4e00\u4e2a\u57fa\u672c\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u800c\u4e0d\u4f7f\u7528\u8fd9\u4e9b\u6a21\u578b\u7684\u4efb\u4f55\u7279\u6027": 104, "\u6211\u4eec\u6700\u521d\u53ea\u4f7f\u7528\u6700\u57fa\u672c\u7684": 104, "\u5f20\u91cf\u529f\u80fd": 104, "\u6211\u4eec\u5c06\u9010\u6b65\u6dfb\u52a0": 104, "\u4e2d\u7684\u4e00\u4e2a\u7279\u6027": 104, "\u5c55\u793a\u6bcf\u4e2a\u90e8\u5206\u7684\u4f5c\u7528": 104, "\u4ee5\u53ca\u5982\u4f55\u4f7f\u7528\u5b83\u4eec\u8ba9\u4ee3\u7801\u66f4\u7b80\u6d01\u6216\u66f4\u7075\u6d3b": 104, "\u672c\u6559\u7a0b\u5047\u5b9a\u4f60\u5df2\u7ecf\u5b89\u88c5\u4e86": 104, "\u5e76\u4e14\u719f\u6089\u5f20\u91cf\u64cd\u4f5c\u7684\u57fa\u7840\u77e5\u8bc6": 104, "\u5982\u679c\u4f60\u719f\u6089": 104, "\u6570\u7ec4\u64cd\u4f5c": 104, "\u4f60\u4f1a\u53d1\u73b0\u8fd9\u91cc\u4f7f\u7528\u7684": 104, "\u5f20\u91cf\u64cd\u4f5c\u51e0\u4e4e\u76f8\u540c": 104, "\u6211\u4eec\u5c06\u4f7f\u7528\u7ecf\u5178\u7684": 104, "\u8be5\u6570\u636e\u96c6\u5305\u542b\u624b\u7ed8\u6570\u5b57": 104, "0\u52309\u4e4b\u95f4": 104, "\u6765\u5904\u7406\u8def\u5f84": 104, "\u6807\u51c6\u5e93\u7684\u4e00\u90e8\u5206": 104, "\u4e0b\u8f7d\u6570\u636e\u96c6": 104, "\u6211\u4eec\u53ea\u4f1a\u5728\u4f7f\u7528\u6a21\u5757\u65f6\u624d\u5bfc\u5165\u5b83\u4eec": 104, "\u56e0\u6b64\u4f60\u53ef\u4ee5\u6e05\u695a\u5730\u770b\u5230\u6bcf\u4e2a\u6b65\u9aa4\u4e2d\u6b63\u5728\u4f7f\u7528\u7684\u5185\u5bb9": 104, "exist_ok": 104, "\u8fd9\u4e2a\u6570\u636e\u96c6\u662f": 104, "\u6570\u7ec4\u683c\u5f0f\u7684": 104, "\u5e76\u4e14\u4f7f\u7528": 104, "\u5b58\u50a8": 104, "\u8fd9\u662f\u4e00\u4e2a": 104, "\u7279\u6709\u7684\u7528\u4e8e\u5e8f\u5217\u5316\u6570\u636e\u7684\u683c\u5f0f": 104, "gzip": 104, "as_posix": [104, 126], "x_train": [104, 150], "y_train": 104, "x_valid": 104, "y_valid": 104, "latin": 104, "\u6bcf\u5f20\u56fe\u50cf\u7684\u5c3a\u5bf8\u4e3a": 104, "\u5e76\u4ee5\u957f\u5ea6\u4e3a": 104, "\u7684\u5c55\u5e73\u884c\u5b58\u50a8": 104, "\u8ba9\u6211\u4eec\u6765\u770b\u770b\u5176\u4e2d\u4e00\u5f20": 104, "\u6211\u4eec\u9700\u8981\u5148\u5c06\u5176\u91cd\u5851\u4e3a\u4e8c\u7ef4": 104, "\u5728\u4e0d\u4f7f\u7528": 104, "\u65f6\u4f7f\u7528": 104, "importerror": 104, "\u6240\u4ee5\u6211\u4eec\u9700\u8981\u8f6c\u6362\u6211\u4eec\u7684\u6570\u636e": 104, "\u6211\u4eec\u53ea\u4f7f\u7528": [104, 250], "\u5f20\u91cf\u64cd\u4f5c\u521b\u5efa\u4e00\u4e2a\u6a21\u578b": 104, "\u6211\u4eec\u5047\u8bbe\u4f60\u5df2\u7ecf\u719f\u6089\u795e\u7ecf\u7f51\u7edc\u7684\u57fa\u7840\u77e5\u8bc6": 104, "\u5982\u679c\u4e0d\u719f\u6089": 104, "\u63d0\u4f9b\u65b9\u6cd5\u6765\u521b\u5efa": 104, "\u968f\u673a": 104, "\u96f6": 104, "\u586b\u5145\u7684\u5f20\u91cf": 104, "\u6211\u4eec\u5c06\u4f7f\u7528\u8fd9\u4e9b\u65b9\u6cd5\u4e3a\u4e00\u4e2a\u7b80\u5355\u7684\u7ebf\u6027\u6a21\u578b\u521b\u5efa\u6743\u91cd\u548c\u504f\u7f6e": 104, "\u8fd9\u4e9b\u53ea\u662f\u5e38\u89c4\u7684\u5f20\u91cf": 104, "\u6709\u4e00\u4e2a\u975e\u5e38\u7279\u522b\u7684\u9644\u52a0\u529f\u80fd": 104, "\u6211\u4eec\u544a\u8bc9": 104, "\u5b83\u4eec\u9700\u8981\u68af\u5ea6": 104, "\u4f1a\u8bb0\u5f55\u5728\u5f20\u91cf\u4e0a\u5b8c\u6210\u7684\u6240\u6709\u64cd\u4f5c": 104, "\u4ee5\u4fbf\u5728\u53cd\u5411\u4f20\u64ad\u671f\u95f4": 104, "\u81ea\u52a8": 104, "\u8ba1\u7b97\u68af\u5ea6": 104, "\u5bf9\u4e8e\u6743\u91cd": 104, "\u6211\u4eec\u5728\u521d\u59cb\u5316": 104, "\u8bbe\u7f6e": 104, "\u56e0\u4e3a\u6211\u4eec\u4e0d\u5e0c\u671b\u521d\u59cb\u5316\u6b65\u9aa4\u5305\u62ec\u5728\u68af\u5ea6\u4e2d": 104, "\u4e2d\u7684\u5c3e\u968f": 104, "\u8868\u793a\u64cd\u4f5c\u662f\u5728\u539f\u5730\u6267\u884c": 104, "\u7531\u4e8e": [104, 249], "\u80fd\u591f\u81ea\u52a8\u8ba1\u7b97\u68af\u5ea6": 104, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4efb\u4f55\u6807\u51c6\u7684": 104, "\u6216\u53ef\u8c03\u7528\u5bf9\u8c61": 104, "\u4f5c\u4e3a\u6a21\u578b": 104, "\u8ba9\u6211\u4eec\u7f16\u5199\u4e00\u4e2a\u7b80\u5355\u7684\u77e9\u9635\u4e58\u6cd5\u548c\u5e7f\u64ad\u52a0\u6cd5": 104, "\u6765\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u7ebf\u6027\u6a21\u578b": 104, "\u6211\u4eec\u8fd8\u9700\u8981\u7f16\u5199\u4e00\u4e2a\u6fc0\u6d3b\u51fd\u6570": 104, "\u63d0\u4f9b\u4e86\u8bb8\u591a\u9884\u5148\u7f16\u5199\u7684\u635f\u5931\u51fd\u6570": 104, "\u6fc0\u6d3b\u51fd\u6570\u7b49": 104, "\u4f60\u4ecd\u53ef\u4ee5\u4f7f\u7528\u666e\u901a\u7684": 104, "\u7f16\u5199\u81ea\u5df1\u7684\u51fd\u6570": 104, "\u4f1a\u4e3a\u4f60\u7684\u51fd\u6570\u81ea\u52a8\u521b\u5efa": 104, "\u6216\u77e2\u91cf\u5316": 104, "\u4ee3\u7801": 104, "xb": 104, "\u5728\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d": 104, "\u8868\u793a\u77e9\u9635\u4e58\u6cd5\u64cd\u4f5c": 104, "\u5728\u4e00\u4e2a\u6570\u636e\u6279\u6b21\u4e0a\u8c03\u7528\u6211\u4eec\u7684\u51fd\u6570": 104, "\u5728\u672c\u4f8b\u4e2d\u4e3a64\u5f20\u56fe\u50cf": 104, "\u8fd9\u5c31\u662f\u4e00\u6b21": 104, "\u524d\u5411\u4f20\u9012": 104, "\u7531\u4e8e\u6211\u4eec\u5728\u5f00\u59cb\u65f6\u8bbe\u7f6e\u6743\u91cd\u4e3a\u968f\u673a\u6570\u503c": 104, "\u6b64\u65f6\u9884\u6d4b\u7ed3\u679c\u51c6\u786e\u6027\u8f83\u4f4e": 104, "\u5f20\u91cf\u4e0d\u4ec5\u5305\u542b\u5f20\u91cf\u503c": 104, "\u8fd8\u5305\u542b\u68af\u5ea6\u51fd\u6570": 104, "\u5728\u7a0d\u540e\u7684\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u4f1a\u7528\u5230\u5b83": 104, "\u8ba9\u6211\u4eec\u5b9e\u73b0": 104, "\u6211\u4eec\u53ef\u4ee5\u53ea\u4f7f\u7528\u6807\u51c6\u7684": 104, "nll": 104, "loss_func": 104, "\u8ba9\u6211\u4eec\u4f7f\u7528\u6211\u4eec\u7684\u968f\u673a\u6a21\u578b\u6765\u68c0\u67e5\u635f\u5931": 104, "\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u770b\u5230\u5728\u4e4b\u540e\u8fdb\u884c\u53cd\u5411\u4f20\u64ad\u540e": 104, "\u9884\u6d4b\u7ed3\u679c\u51c6\u786e\u7387\u662f\u5426\u6709\u6240\u63d0\u5347": 104, "yb": 104, "\u6211\u4eec\u8fd8\u8981\u5b9e\u73b0\u4e00\u4e2a\u51fd\u6570\u6765\u8ba1\u7b97\u6211\u4eec\u6a21\u578b\u7684\u51c6\u786e\u7387": 104, "\u5bf9\u4e8e\u6bcf\u4e2a\u9884\u6d4b\u7ed3\u679c": 104, "\u5982\u679c\u5177\u6709\u6700\u5927\u503c\u7684\u7d22\u5f15\u4e0e\u76ee\u6807\u503c\u5339\u914d": 104, "\u5219\u9884\u6d4b\u662f\u6b63\u786e\u7684": 104, "\u68c0\u67e5\u6211\u4eec\u968f\u673a\u6a21\u578b\u7684\u51c6\u786e\u7387": 104, "\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u770b\u5230\u968f\u7740\u635f\u5931\u7684\u6539\u5584": 104, "\u51c6\u786e\u7387\u662f\u5426\u6709\u6240\u63d0\u9ad8": 104, "\u73b0\u5728\u53ef\u4ee5\u8fd0\u884c\u4e00\u4e2a\u8bad\u7ec3\u5faa\u73af": 104, "\u5bf9\u4e8e\u6bcf\u6b21\u8fed\u4ee3": 104, "\u9009\u62e9\u4e00\u4e2a\u5927\u5c0f\u4e3a": 104, "\u7684\u6279\u91cf\u6570\u636e": 104, "\u4f7f\u7528\u6a21\u578b\u8fdb\u884c\u9884\u6d4b": 104, "\u8ba1\u7b97\u635f\u5931": 104, "\u66f4\u65b0\u6a21\u578b\u7684\u68af\u5ea6": 104, "\u5373\u66f4\u65b0": 104, "\u6211\u4eec\u73b0\u5728\u4f7f\u7528\u8fd9\u4e9b\u68af\u5ea6\u6765\u66f4\u65b0\u6743\u91cd": 104, "\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u4e2d\u6267\u884c\u6b64\u64cd\u4f5c": 104, "\u56e0\u4e3a\u6211\u4eec\u4e0d\u5e0c\u671b\u8fd9\u4e9b\u64cd\u4f5c\u8bb0\u5f55\u4e3a\u4e0b\u4e00\u6b21\u68af\u5ea6\u8ba1\u7b97\u7684\u4e00\u90e8\u5206": 104, "\u4f60\u53ef\u4ee5\u5728": [104, 233], "\u9605\u8bfb\u6709\u5173": 104, "\u5982\u4f55\u8bb0\u5f55\u64cd\u4f5c\u7684\u66f4\u591a\u4fe1\u606f": 104, "\u6211\u4eec\u5c06\u68af\u5ea6\u8bbe\u7f6e\u4e3a\u96f6": 104, "\u4ee5\u4fbf\u6211\u4eec\u51c6\u5907\u8fdb\u884c\u4e0b\u4e00\u6b21\u5faa\u73af": 104, "\u5426\u5219": 104, "\u6211\u4eec\u7684\u68af\u5ea6\u5c06\u8bb0\u5f55\u6240\u6709\u5df2\u53d1\u751f\u7684\u64cd\u4f5c": 104, "\u6dfb\u52a0": 104, "\u68af\u5ea6\u5230\u5df2\u6709\u7684\u68af\u5ea6\u4e2d": 104, "\u800c\u4e0d\u662f\u66ff\u6362\u5b83\u4eec": 104, "set_trac": 104, "start_i": 104, "end_i": 104, "\u6211\u4eec\u5df2\u7ecf\u4ece\u96f6\u5f00\u59cb\u521b\u5efa\u5e76\u8bad\u7ec3\u4e86\u4e00\u4e2a\u6700\u5c0f\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u4f7f\u7528\u903b\u8f91\u56de\u5f52": 104, "\u6ca1\u6709\u9690\u85cf\u5c42": 104, "\u8ba9\u6211\u4eec\u68c0\u67e5\u4e00\u4e0b\u635f\u5931\u548c\u51c6\u786e\u7387": 104, "\u5e76\u5c06\u5b83\u4eec\u4e0e\u4e4b\u524d\u5f97\u5230\u7684\u7ed3\u679c\u8fdb\u884c\u6bd4\u8f83": 104, "\u9884\u8ba1\u635f\u5931\u4f1a\u51cf\u5c11": 104, "\u51c6\u786e\u7387\u4f1a\u63d0\u9ad8": 104, "\u73b0\u5728\u6211\u4eec\u5c06\u91cd\u6784\u4ee3\u7801": 104, "\u4f7f\u5176\u4e0e\u4e4b\u524d\u505a\u7684\u4e8b\u60c5\u76f8\u540c": 104, "\u53ea\u662f\u6211\u4eec\u5c06\u5f00\u59cb\u5229\u7528": 104, "\u4f7f\u5176\u66f4\u7b80\u6d01\u548c\u7075\u6d3b": 104, "\u4ece\u8fd9\u91cc\u5f00\u59cb\u7684\u6bcf\u4e00\u6b65": 104, "\u90fd\u8ba9\u6211\u4eec\u7684\u4ee3\u7801\u53d8\u5f97\u66f4\u77ed": 104, "\u66f4\u6613\u7406\u89e3\u548c\u66f4\u7075\u6d3b": 104, "\u7b2c\u4e00\u6b65\u4e5f\u662f\u6700\u7b80\u5355\u7684\u4e00\u6b65\u662f\u901a\u8fc7\u7528": 104, "\u901a\u5e38\u6309\u60ef\u4f8b\u5bfc\u5165\u4e3a\u547d\u540d\u7a7a\u95f4": 104, "\u4e2d\u7684\u6fc0\u6d3b\u548c\u635f\u5931\u51fd\u6570\u66ff\u6362\u6211\u4eec\u624b\u5199\u7684\u6fc0\u6d3b\u548c\u635f\u5931\u51fd\u6570": 104, "\u4ece\u800c\u4f7f\u6211\u4eec\u7684\u4ee3\u7801\u66f4\u7b80\u77ed": 104, "\u8be5\u6a21\u5757\u5305\u542b": 104, "\u5e93\u4e2d\u7684\u6240\u6709\u51fd\u6570": 104, "\u9664\u4e86\u5404\u79cd\u635f\u5931\u548c\u6fc0\u6d3b\u51fd\u6570": 104, "\u4f60\u8fd8\u4f1a\u770b\u5230\u4e00\u4e9b\u521b\u5efa\u795e\u7ecf\u7f51\u7edc\u7684\u4fbf\u6377\u51fd\u6570": 104, "\u6bd4\u5982\u6c60\u5316\u51fd\u6570": 104, "\u8fd8\u6709\u7528\u4e8e\u5377\u79ef": 104, "\u7ebf\u6027\u5c42\u7b49\u7684\u51fd\u6570": 104, "\u4f46\u6b63\u5982\u6211\u4eec\u5c06\u770b\u5230\u7684": 104, "\u8fd9\u4e9b\u901a\u5e38\u66f4\u9002\u5408\u4f7f\u7528\u5e93\u7684\u5176\u4ed6\u6a21\u5757\u6765\u5904\u7406": 104, "\u5982\u679c\u4f60\u4f7f\u7528neg": 104, "\u90a3\u4e48": [104, 111], "\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7ed3\u5408\u4e86\u4e24\u8005\u7684\u5355\u4e00\u51fd\u6570": 104, "cross_entropi": [104, 124], "\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u4ece\u6a21\u578b\u4e2d\u79fb\u9664\u6fc0\u6d3b\u51fd\u6570": 104, "\u6211\u4eec\u4e0d\u518d\u5728": 104, "\u51fd\u6570\u4e2d\u8c03\u7528": 104, "\u67e5\u770b\u4e0b\u635f\u5931\u548c\u51c6\u786e\u7387\u662f\u5426\u4e0e\u4e4b\u524d\u7ed3\u679c\u4e00\u81f4": 104, "\u4ee5\u5b9e\u73b0\u66f4\u6e05\u6670\u548c\u7b80\u6d01\u7684\u8bad\u7ec3\u5faa\u73af": 104, "\u6211\u4eec\u5c06\u7ee7\u627f": 104, "\u5b83\u672c\u8eab\u662f\u4e00\u4e2a\u7c7b": 104, "\u80fd\u591f\u8ddf\u8e2a\u72b6\u6001": 104, "\u6211\u4eec\u60f3\u521b\u5efa\u4e00\u4e2a\u7c7b\u6765\u4fdd\u5b58\u6211\u4eec\u7684\u6743\u91cd": 104, "\u504f\u7f6e\u548cforward\u65b9\u6cd5": 104, "\u6211\u4eec\u5c06\u4f1a\u4f7f\u7528": 104, "\u7684\u5c5e\u6027\u548c\u65b9\u6cd5": 104, "\u5927\u5199": 104, "\u7279\u6709\u7684\u6982\u5ff5": 104, "\u662f\u4f7f\u7528pytorch\u8fc7\u7a0b\u4e2d\u5927\u91cf\u4f7f\u7528\u7684\u7c7b": 104, "\u4e0d\u8981\u4e0e": 104, "\u6982\u5ff5\u7684": 104, "\u5c0f\u5199": 104, "\u6df7\u6dc6": 104, "mnist_logist": 104, "\u7531\u4e8e\u6211\u4eec\u73b0\u5728\u4f7f\u7528\u7684\u662f\u5bf9\u8c61\u800c\u4e0d\u662f\u4ec5\u4ec5\u4f7f\u7528\u51fd\u6570": 104, "\u6211\u4eec\u9996\u5148\u8981\u521b\u5efa\u6a21\u578b\u5bf9\u8c61": 104, "\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u50cf\u4e4b\u524d\u4e00\u6837\u8ba1\u7b97\u635f\u5931": 104, "\u5bf9\u8c61\u53ef\u4ee5\u50cf\u51fd\u6570\u4e00\u6837\u4f7f\u7528": 104, "\u5373\u5b83\u4eec\u662f": 104, "\u53ef\u8c03\u7528\u7684": 104, "\u4f1a\u81ea\u52a8\u8c03\u7528\u6211\u4eec\u7684": 104, "\u5728\u4e4b\u524d\u7684\u8bad\u7ec3\u5faa\u73af\u4e2d": 104, "\u6211\u4eec\u5fc5\u987b\u6309\u540d\u79f0\u66f4\u65b0\u6bcf\u4e2a\u53c2\u6570\u7684\u503c": 104, "\u5e76\u624b\u52a8\u5c06\u6bcf\u4e2a\u53c2\u6570\u7684\u68af\u5ea6\u5206\u522b\u6e05\u96f6": 104, "\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u5229\u7528": 104, "\u5b9a\u4e49\u7684\u65b9\u6cd5": 104, "\u6765\u4f7f\u8fd9\u4e9b\u6b65\u9aa4\u66f4\u7b80\u6d01": 104, "\u9632\u6b62\u5fd8\u8bb0\u5904\u7406\u67d0\u4e9b\u53c2\u6570\u5bfc\u81f4\u9519\u8bef": 104, "\u5c24\u5176\u662f\u5f53\u6211\u4eec\u5b9e\u73b0\u4e00\u4e2a\u66f4\u590d\u6742\u7684\u6a21\u578b\u65f6": 104, "\u5c06\u8bad\u7ec3\u5faa\u73af\u5305\u88c5\u5728\u4e00\u4e2a": 104, "\u51fd\u6570\u4e2d": 104, "\u8fd9\u6837\u53ef\u4ee5\u591a\u6b21\u8fd0\u884c\u5b83": 104, "gone": [104, 113, 125], "\u8ba9\u6211\u4eec\u67e5\u770b\u4e0b\u8bad\u7ec3\u540e": 104, "\u635f\u5931\u662f\u5426\u4e0b\u964d\u4e86": 104, "\u6211\u4eec\u7ee7\u7eed\u91cd\u6784\u4ee3\u7801": 104, "\u6765\u5b9e\u73b0\u7ebf\u6027\u5c42": 104, "\u4e0d\u518d\u624b\u52a8\u5b9a\u4e49\u548c\u521d\u59cb\u5316": 104, "\u4ee5\u53ca\u8ba1\u7b97": 104, "\u5177\u6709\u591a\u79cd\u9884\u5b9a\u4e49\u7684\u5c42": 104, "\u53ef\u4ee5\u5927\u5927\u7b80\u5316\u6211\u4eec\u7684\u4ee3\u7801": 104, "\u5e76\u4e14\u63d0\u9ad8\u6267\u884c\u901f\u5ea6": 104, "\u521d\u59cb\u5316\u6a21\u578b\u5bf9\u8c61": 104, "\u5e76\u8ba1\u7b97\u635f\u5931\u6570\u503c": 104, "\u65b9\u6cd5\u8fdb\u884c\u8bad\u7ec3\u6a21\u578b": 104, "\u67e5\u770b\u8bad\u7ec3\u7ed3\u679c": 104, "\u5305\u542b\u591a\u79cd\u4f18\u5316\u7b97\u6cd5": 104, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4f18\u5316\u5668\u7684": 104, "\u65b9\u6cd5\u8fdb\u884c\u4f18\u5316\u6b65\u9aa4": 104, "\u65e0\u9700\u624b\u52a8\u66f4\u65b0\u6bcf\u4e2a\u53c2\u6570": 104, "\u4e4b\u524d\u7684\u4f18\u5316\u6b65\u9aa4": 104, "\u91cd\u6784\u4e3a": 104, "\u5728\u4e0b\u4e2a\u8bad\u7ec3\u5faa\u73af\u5f00\u59cb\u524d": 104, "\u6211\u4eec\u9700\u8c03\u7528": 104, "\u5c06\u53c2\u6570\u7684\u68af\u5ea6\u91cd\u7f6e\u4e3a0": 104, "\u5b9a\u4e49\u521b\u5efa\u6a21\u578b\u548c\u4f18\u5316\u5668\u7684\u65b9\u6cd5\u5982\u4e0b": 104, "\u6709\u4e00\u4e2a\u62bd\u8c61\u7684": 104, "\u53ef\u4ee5\u662f\u4efb\u4f55\u5177\u6709": 104, "\u7531": 104, "\u7684\u6807\u51c6": 104, "\u51fd\u6570\u8c03\u7528": 104, "\u4f5c\u4e3a\u7d22\u5f15\u65b9\u5f0f": 104, "\u7684\u5bf9\u8c61": 104, "\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u521b\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49": 104, "faciallandmarkdataset": 104, "\u7c7b\u4f5c\u4e3a": 104, "\u5b50\u7c7b\u7684\u4f8b\u5b50": 104, "tensordataset": [104, 110, 137, 165, 185], "\u662f\u4e00\u4e2a\u5305\u88c5\u5f20\u91cf\u7684": 104, "\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u4e00\u79cd\u8fed\u4ee3": 104, "\u7d22\u5f15\u548c\u6cbf\u5f20\u91cf\u7684\u7b2c\u4e00\u4e2a\u7ef4\u5ea6\u5207\u7247\u7684\u65b9\u5f0f": 104, "\u4f7f\u6211\u4eec\u5728\u8bad\u7ec3\u65f6\u66f4\u5bb9\u6613\u540c\u65f6\u8bbf\u95ee\u81ea\u53d8\u91cf\u548c\u56e0\u53d8\u91cf": 104, "\u5bf9": 104, "\u8fdb\u884c\u5305\u88c5": 104, "\u8ba9\u6211\u4eec\u66f4\u5bb9\u6613\u5bf9\u6570\u636e\u8fdb\u884c\u904d\u5386\u548c\u5207\u7247\u64cd\u4f5c": 104, "train_d": 104, "\u4e4b\u524d\u6211\u4eec\u9700\u8981\u5355\u72ec\u5904\u7406": 104, "\u4e24\u7ec4\u6570\u503c": 104, "\u73b0\u5728\u53ef\u4ee5\u5408\u5e76\u5904\u7406": 104, "\u4f60\u53ef\u4ee5\u4ece\u4efb\u4f55": 104, "\u521b\u5efa\u4e00\u4e2a": 104, "\u800c\u540e\u7531": 104, "\u8d1f\u8d23\u5bf9\u6570\u636e\u5206\u6279": 104, "\u6211\u4eec\u4e0d\u5fc5\u518d\u53bb\u5b9e\u73b0\u5206\u6279\u4ee3\u7801": 104, "\u4f1a\u81ea\u52a8\u4e3a\u6211\u4eec\u63d0\u4f9b\u6bcf\u6279\u6570\u636e": 104, "train_dl": 104, "\u4e4b\u524d\u6211\u4eec\u7f16\u5199\u5206\u6279\u4ee3\u7801\u5982\u4e0b": 104, "\u6211\u4eec\u7684\u5faa\u73af\u53d8\u5f97\u66f4\u52a0\u7b80\u6d01": 104, "\u81ea\u52a8\u4ecedataloader\u4e2d\u52a0\u8f7d": 104, "\u901a\u8fc7\u4f7f\u7528": [104, 236], "\u6211\u4eec\u5b9e\u73b0\u7684\u8bad\u7ec3\u5faa\u4ee3\u7801\u91cf\u5e76\u4e14\u66f4\u5bb9\u6613\u7406\u89e3": 104, "\u73b0\u5728\u8ba9\u6211\u4eec\u5c1d\u8bd5\u589e\u52a0\u4e00\u4e9b\u521b\u5efa\u5b9e\u9645\u6709\u6548\u6a21\u578b\u6240\u9700\u7684\u57fa\u672c\u529f\u80fd": 104, "\u5728\u7b2c\u4e00\u90e8\u5206\u4e2d": 104, "\u6211\u4eec\u53ea\u662f\u5b9e\u73b0\u4e86\u4f7f\u7528\u6570\u636e\u8fdb\u884c\u8bad\u7ec3\u7684\u903b\u8f91": 104, "\u5b9e\u9645\u5e94\u7528\u4e2d": 104, "\u8fd8\u9700\u8981": 104, "\u9a8c\u8bc1\u96c6": 104, "\u4ee5\u786e\u5b9a\u6211\u4eec\u7684\u6a21\u578b\u662f\u5426\u5b58\u5728\u8fc7\u62df\u5408\u95ee\u9898": 104, "\u6253\u4e71\u8bad\u7ec3\u6570\u636e\u662f": 104, "\u5341\u5206\u5fc5\u8981\u7684": 104, "\u4ee5\u9632\u6b62\u6279\u6b21\u4e4b\u95f4\u7684\u76f8\u5173\u6027\u548c\u8fc7\u62df\u5408": 104, "\u800c\u9a8c\u8bc1\u6570\u636e\u96c6\u5219\u65e0\u9700\u8fdb\u6b64\u64cd\u4f5c": 104, "\u65e0\u8bba\u6253\u4e71\u4e0e\u5426": 104, "\u9a8c\u8bc1\u635f\u5931\u503c\u662f\u76f8\u540c\u7684": 104, "\u800c\u4e14\u6253\u4e71\u64cd\u4f5c\u9700\u8981\u6d88\u8017\u989d\u5916\u7684\u65f6\u95f4": 104, "\u6ca1\u6709\u5b9e\u9645\u610f\u4e49": 104, "\u6211\u4eec\u5c06\u4e3a\u9a8c\u8bc1\u96c6\u4f7f\u7528\u7684\u6279\u91cf\u5927\u5c0f\u8bbe\u4e3a\u8bad\u7ec3\u96c6\u7684\u4e24\u500d": 104, "\u56e0\u4e3a\u9a8c\u8bc1\u96c6\u4e0d\u9700\u8981\u8fdb\u884c\u53cd\u5411\u4f20\u64ad": 104, "\u56e0\u6b64\u9700\u8981\u7684\u5185\u5b58\u8f83\u5c11": 104, "\u4e0d\u9700\u8981\u5b58\u50a8\u68af\u5ea6": 104, "\u56e0\u6b64\u6211\u6211\u4eec\u53ef\u4ee5\u914d\u7f6e\u8f83\u5927\u5355\u6279\u6570\u91cf": 104, "\u63d0\u9ad8\u8ba1\u7b97\u901f\u5ea6": 104, "valid_d": 104, "valid_dl": 104, "\u7ed3\u675f\u65f6\u8ba1\u7b97\u5e76\u6253\u5370\u635f\u5931\u503c": 104, "\u6211\u4eec\u5728\u8bad\u7ec3\u4e4b\u524d\u603b\u662f\u8c03\u7528": 104, "\u5728\u63a8\u65ad\u4e4b\u524d\u8c03\u7528": 104, "\u5c42\u4f1a\u4f7f\u7528": 104, "\u6765\u786e\u4fdd\u5176\u7ed3\u679c\u6b63\u786e": 104, "valid_loss": 104, "\u6211\u4eec\u5728\u8ba1\u7b97\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\u7684\u635f\u5931\u7c7b\u4f3c\u7684\u4ee3\u7801": 104, "\u62bd\u53d6\u4e00\u4e2a\u72ec\u7acb\u7684\u51fd\u6570": 104, "loss_batch": 104, "\u7528\u4e8e\u8ba1\u7b97\u4e00\u4e2a\u6279\u6b21\u7684\u635f\u5931": 104, "\u8bad\u7ec3\u96c6\u4f20\u5165\u4e00\u4e2a\u4f18\u5316\u5668": 104, "\u5e76\u4f7f\u7528\u5b83\u6267\u884c\u53cd\u5411\u4f20\u64ad": 104, "\u5bf9\u4e8e\u9a8c\u8bc1\u96c6": 104, "\u5219\u4e0d\u4f20\u5165\u4f18\u5316\u5668": 104, "\u4e0d\u6267\u884c\u53cd\u5411\u4f20\u64ad": 104, "\u5728\u6bcf\u4e2a\u8bad\u7ec3\u5faa\u73af\u4e2d\u8ba1\u7b97\u8bad\u7ec3\u548c\u9a8c\u8bc1\u635f\u5931": 104, "\u8fd4\u56de\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u96c6\u7684dataload": 104, "\u6211\u4eec\u83b7\u53d6\u6570\u636e\u52a0\u8f7d\u5668\u548c\u62df\u5408\u6a21\u578b\u7684\u6574\u4e2a\u8fc7\u7a0b\u53ef\u4ee5\u7528": 104, "\u884c\u4ee3\u7801\u6765\u5b9e\u73b0": 104, "\u4f60\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e09\u884c\u57fa\u672c\u4ee3\u7801\u6765\u8bad\u7ec3\u5404\u79cd\u5404\u6837\u7684\u6a21\u578b": 104, "\u8ba9\u6211\u4eec\u770b\u770b\u662f\u5426\u53ef\u4ee5\u7528\u6765\u8bad\u7ec3\u4e00\u4e2a\u5377\u79ef\u795e\u7ecf\u7f51\u7edc": 104, "\u73b0\u5728\u6211\u4eec\u5c06\u4f7f\u7528\u4e09\u4e2a\u5377\u79ef\u5c42\u6784\u5efa\u6211\u4eec\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u56e0\u4e3a\u524d\u9762\u90e8\u5206\u7684\u51fd\u6570\u90fd\u4e0d\u5047\u8bbe\u4efb\u4f55\u5173\u4e8e\u6a21\u578b\u5f62\u5f0f\u7684\u4e1c\u897f": 104, "\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u5728\u4e0d\u505a\u4efb\u4f55\u4fee\u6539\u7684\u60c5\u51b5\u4e0b\u4f7f\u7528\u5b83\u4eec\u6765\u8bad\u7ec3\u4e00\u4e2a": 104, "\u9884\u5b9a\u4e49\u7684": 104, "\u7c7b\u4f5c\u4e3a\u6211\u4eec\u7684\u5377\u79ef\u5c42": 104, "\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u5177\u6709": 104, "\u4e2a\u5377\u79ef\u5c42\u7684": 104, "\u6bcf\u4e2a\u5377\u79ef\u5c42\u540e\u9762\u8ddf\u7740\u4e00\u4e2a": 104, "\u6211\u4eec\u6267\u884c\u5e73\u5747\u6c60\u5316": 104, "\u7248\u7684": 104, "mnist_cnn": [104, 123], "avg_pool2d": [104, 206], "\u7684\u4e00\u79cd\u53d8\u4f53": 104, "\u901a\u8fc7\u7edf\u8ba1\u66f4\u65b0\u8bb0\u5f55\u6765\u63d0\u5347\u8bad\u7ec3\u901f\u5ea6": 104, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528": [104, 111, 231, 238], "\u6765\u5e2e\u52a9\u6211\u4eec\u7b80\u5316\u4ee3\u7801": 104, "\u63d0\u4f9b\u4e86\u4e00\u79cd\u66f4\u7b80\u5355\u7684\u7f16\u5199\u795e\u7ecf\u7f51\u7edc\u7684\u65b9\u5f0f": 104, "\u5176\u4f1a\u6309\u987a\u5e8f\u8fd0\u884c\u5b9a\u4e49\u4e2d\u5305\u542b\u7684\u6bcf\u4e2a\u6a21\u5757": 104, "\u6211\u4eec\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a": 104, "\u81ea\u5b9a\u4e49\u5c42": 104, "\u6ca1\u6709\u7684": 104, "view\u5c42": 104, "\u521b\u5efa\u6a21\u578b\u5341\u5206\u7b80\u5355": 104, "avgpool2d": 104, "\u6211\u4eec\u7f16\u5199\u7684": 104, "\u5341\u5206\u7b80\u6d01": 104, "\u4f46\u4ec5\u9002\u7528\u4e8emnist": 104, "\u5b83\u5047\u8bbe\u8f93\u5165\u662f\u4e00\u4e2a": 104, "\u957f\u7684\u5411\u91cf": 104, "\u5b83\u5047\u8bbe\u6700\u7ec8\u7684": 104, "\u7f51\u683c\u5927\u5c0f\u662f": 104, "\u6211\u4eec\u4f7f\u7528\u7684\u5e73\u5747\u6c60\u5316\u6838\u5927\u5c0f": 104, "\u8ba9\u6211\u4eec\u53bb\u9664\u8fd9\u4e24\u4e2a\u5047\u8bbe": 104, "\u4f7f\u6211\u4eec\u7684\u6a21\u578b\u9002\u7528\u4e8e\u4efb\u4f552d\u5355\u901a\u9053\u56fe\u50cf": 104, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5c06\u6570\u636e\u9884\u5904\u7406\u79fb\u5230\u751f\u6210\u5668\u4e2d\u6765\u5220\u9664": 104, "wrappeddataload": 104, "__iter__": 104, "\u4e3a\u4e86\u8ba9\u6211\u4eec\u5b9a\u4e49\u6211\u4eec\u60f3\u8981\u7684\u8f93\u51fa\u5f20\u91cf\u7684\u5927\u5c0f": 104, "\u800c\u975e": 104, "\u8f93\u5165": [104, 250], "\u6211\u4eec\u53ef\u4ee5\u7528": 104, "adaptiveavgpool2d": [104, 134, 136], "\u66ff\u6362": 104, "\u4ece\u800c\u4f7f\u6211\u4eec\u7684\u6a21\u578b\u53ef\u9002\u7528\u4e8e\u4efb\u4f55\u5927\u5c0f\u7684\u8f93\u5165": 104, "\u8ba9\u6211\u4eec\u67e5\u770b\u4e0b\u7ed3\u679c": 104, "\u5728\u62e5\u6709": 104, "gpu\u7684\u73af\u5883\u4e2d": 104, "\u4f60\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u52a0\u901f\u4ee3\u7801": 104, "\u9996\u5148\u68c0\u67e5\u4f60\u7684gpu\u5728pytorch\u4e2d\u662f\u5426\u6b63\u5e38\u5de5\u4f5c": 104, "\u7136\u540e\u521b\u5efa": 104, "\u4fee\u6539": 104, "\u6b65\u9aa4": [104, 238], "\u5c06\u6570\u636e\u79fb\u52a8\u81f3": 104, "\u5c06\u6a21\u578b\u52a0\u8f7d\u5230": 104, "\u8fd0\u884c\u901f\u5ea6\u4f1a\u63d0\u5347\u5f88\u591a": 104, "\u7f16\u5199\u4e86\u4e00\u4e2a\u53ef\u4ee5\u7528\u4e8e\u591a\u79cd\u6a21\u578b\u8bad\u7ec3\u7684\u5b9e\u73b0": 104, "\u5b8c\u6574\u7684\u8bad\u7ec3\u4ee3\u7801": 104, "mnist_sampl": 104, "\u540e\u7eed\u8fd8\u53ef\u5c1d\u8bd5\u589e\u52a0\u5176\u4ed6\u529f\u80fd": 104, "\u4f8b\u5982\u6570\u636e\u589e\u5f3a": 104, "\u8d85\u53c2\u6570\u8c03\u4f18": 104, "\u76d1\u63a7\u8bad\u7ec3": 104, "\u8fc1\u79fb\u5b66\u4e60\u7b49\u7b49": 104, "\u8fd9\u4e9b\u529f\u80fd\u5728fastai\u5e93\u4e2d\u90fd\u6709\u63d0\u4f9b": 104, "\u8be5\u5e93\u662f\u4f7f\u7528\u672c\u6559\u7a0b\u4e2d\u6240\u793a\u7684\u76f8\u540c\u8bbe\u8ba1\u65b9\u6cd5\u5f00\u53d1\u7684": 104, "\u4e3a\u5e0c\u671b\u8fdb\u4e00\u6b65\u6539\u8fdb\u6a21\u578b\u7684\u4ece\u4e1a\u4eba\u5458\u63d0\u4f9b\u4e0b\u4e00\u6b65\u6307\u5bfc": 104, "\u6211\u4eec\u5b66\u4e60\u4e86\u5982\u4f55\u4f7f\u7528": 104, "\u73b0\u5728\u8ba9\u6211\u4eec\u603b\u7ed3\u4e00\u4e0b": 104, "\u521b\u5efa\u4e00\u4e2a\u7c7b\u4f3c\u4e8e\u51fd\u6570\u7684\u53ef\u8c03\u7528\u5bf9\u8c61": 104, "\u5176\u4e2d\u5305\u542b\u4e86\u72b6\u6001\u6570\u636e": 104, "\u5982\u795e\u7ecf\u7f51\u7edc\u5c42\u6743\u91cd": 104, "\u5b83\u53ef\u4ee5\u81ea\u52a8\u5bf9\u5305\u542b\u7684\u53c2\u6570": 104, "\u8fdb\u884c\u68af\u5ea6\u5f52\u96f6\u548c\u66f4\u65b0\u6743\u91cd\u7b49\u64cd\u4f5c": 104, "\u5bf9\u5f20\u91cf\u8fdb\u884c\u5305\u88c5": 104, "\u4f7f": [104, 249], "\u5bf9\u8c61\u5728\u8fdb\u884c\u53cd\u5411\u4f20\u64ad\u65f6": 104, "\u53ef\u66f4\u65b0\u6743\u91cd\u53c2\u6570": 104, "\u4ec5\u8bbe\u7f6e": 104, "\u53c2\u6570\u65f6\u751f\u6548": 104, "\u5305\u542b\u591a\u79cd\u6fc0\u6d3b\u51fd\u6570": 104, "\u4ee5\u53ca\u65e0\u72b6\u6001\u7684\u5377\u79ef\u5c42\u548c\u7ebf\u6027\u5c42\u7b49\u7684\u5b9e\u73b0": 104, "\u5305\u542b\u591a\u79cd\u4f18\u5316\u5668": 104, "\u5728\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u4f18\u5316\u6743\u91cd\u53c2\u6570": 104, "\u65b9\u6cd5\u7684\u62bd\u8c61\u63a5\u53e3\u5b9a\u4e49": 104, "\u5b9e\u73b0\u7c7b": 104, "\u8fdb\u884c\u5c01\u88c5": 104, "\u63d0\u4f9b\u5206\u6279\u904d\u5386\u6570\u636e\u96c6\u7684\u80fd\u529b": 104, "nn_tutori": 104, "registri": [105, 106, 107, 121, 208, 257], "thiago": [105, 107], "crepaldi": [105, 107], "gamut": 105, "supercomput": 105, "constrain": [105, 126, 153, 173, 174], "onnxscript": [105, 107, 108], "torch_input": 105, "onnx_program": [105, 108], "onnxprogram": 105, "protobuf": [105, 108, 187], "my_image_classifi": 105, "drag": [105, 152, 168, 169, 224, 225], "onnx_input": [105, 108], "adapt_torch_inputs_to_onnx": [105, 108], "onnxruntime_input": [105, 108], "onnxruntime_output": [105, 108], "torch_output": [105, 108], "adapt_torch_outputs_to_onnx": [105, 108], "assert_clos": [105, 108], "export_simple_model_to_onnx_tutori": [105, 106], "intro_onnx": [106, 107], "onnx_registry_tutori": [106, 108], "sphx_glr_beginner_onnx_intro_onnx": 106, "sphx_glr_beginner_onnx_export_simple_model_to_onnx_tutori": 106, "sphx_glr_beginner_onnx_onnx_registry_tutori": 106, "bytecod": [107, 172, 222], "fx": [107, 121, 144, 173, 174, 179, 196, 197, 200, 221, 247], "polish": [107, 127, 261, 270], "newer": [107, 147, 152, 154, 247], "upgrad": [107, 153, 158, 168, 196], "opset18": [107, 108], "opset": [107, 108, 173, 174], "succe": 107, "ti": 108, "tai": 108, "titaiwang": 108, "empow": 108, "runtimeerrorwithdiagnost": 108, "call_funct": [108, 173, 200], "operator_nam": 108, "onnxregistri": 108, "input_x": 108, "input_i": 108, "input_add_x": 108, "input_add_i": 108, "aten_add_model": 108, "custom_aten_add": 108, "custom_aten": 108, "native_funct": 108, "yaml": [108, 131, 204, 221, 222], "castlik": 108, "onnx_registri": 108, "register_op": 108, "op_nam": 108, "is_registered_op": 108, "export_opt": 108, "exportopt": 108, "op_typ": 108, "custom_aten_add_model": 108, "custom_add_model": 108, "gelu": [108, 110], "customgelu": 108, "namspac": 108, "custom_ort": 108, "custom_aten_gelu": 108, "aten_gelu_model": 108, "input_gelu_x": 108, "diagram": [108, 160], "custom_aten_gelu_model": 108, "custom_gelu_model": 108, "_custom_op": 108, "mylibrari": 108, "addandround_op": 108, "tensor_x": 108, "impl_abstract": [108, 174], "addandround_op_impl_abstract": 108, "addandround_op_impl": 108, "_dynamo": [108, 144, 172, 173, 199, 255], "allow_in_graph": 108, "customfoo": 108, "input_addandround_x": 108, "custom_addandround_model": 108, "customop": 108, "customopon": 108, "customoptwo": 108, "cpu_op": 108, "custom_opset": 108, "custom_addandround": 108, "add_x": 108, "round_x": 108, "libcustom_op_librari": 108, "custom_op_librari": 108, "ort": 108, "lonnxruntim": 108, "ort_session_opt": 108, "sessionopt": 108, "register_custom_ops_librari": 108, "sess_opt": 108, "quicker": 109, "record_funct": [109, 144, 164, 219, 238], "incur": [109, 124, 212], "investig": [109, 113, 147, 156, 171, 172], "hi_idx": 109, "argwher": 109, "with_stack": [109, 168, 238], "profile_memori": [109, 168, 238], "group_by_stack_n": [109, 238], "traceback": [109, 144, 172, 173, 174], "193a910735e8": 109, "stacktrac": 109, "row_limit": [109, 144, 164, 238], "88": [109, 163, 176, 197], "212": 109, "953": 109, "mnt": [109, 135], "xarfus": 109, "au": 109, "07": [109, 122, 218, 219, 246], "715": 109, "848m": 109, "350": [109, 137], "151u": 109, "293": [109, 147], "342u": 109, "095u": 109, "931": 109, "006": 109, "476": 109, "338": 109, "759m": 109, "as_strid": [109, 144], "281": [109, 147], "808u": 109, "275": 109, "721u": 109, "_local": 109, "268": 109, "650u": [109, 238], "_scalar_dens": 109, "347": 109, "elimin": [109, 129, 138, 144, 145, 158, 183, 193, 216], "nonzero": [109, 247], "as_tupl": [109, 116], "089m": 109, "402m": 109, "491m": 109, "119": [109, 185], "441": 109, "587u": 109, "_numpi": 109, "395": [109, 163], "602u": 109, "801m": 109, "xxxx": 110, "alexnet": [110, 147], "printable_graph": 110, "tensor_seq": 110, "ret": [110, 149, 158, 161, 209], "disable_cuda": 110, "convxd": 110, "maxpoolxd": 110, "batchnormxd": 110, "dropout2d": [110, 162, 166, 203, 221, 233], "l1loss": 110, "ctcloss": 110, "poissonnllloss": 110, "kldivloss": 110, "bcewithlogitsloss": 110, "marginrankingloss": 110, "hingeembeddingloss": 110, "multilabelmarginloss": 110, "smoothl1loss": [110, 146, 160], "softmarginloss": 110, "multilabelsoftmarginloss": 110, "multimarginloss": 110, "tripletmarginloss": 110, "prelu": 110, "rrelu": 110, "celu": 110, "hardshrink": 110, "logsigmoid": 110, "softplu": 110, "softshrink": 110, "softsign": 110, "tanhshrink": 110, "softmin": 110, "softmax2d": 110, "adaptivesoftmaxwithloss": 110, "adadelta": [110, 123, 129], "sparseadam": 110, "adamax": 110, "asgd": 110, "rprop": 110, "lambdalr": 110, "multiplicativelr": 110, "multisteplr": 110, "exponentiallr": 110, "reducelronplateau": 110, "cycliclr": 110, "onecyclelr": 110, "cosineannealingwarmrestart": 110, "xsampler": 110, "subsetrandom": 110, "weightedrandom": 110, "justin": 111, "johnson": 111, "\u672c\u6559\u7a0b\u901a\u8fc7\u81ea\u5305\u542b\u793a\u4f8b\u4ecb\u7ecd\u4e86": 111, "\u7684\u57fa\u672c\u6982\u5ff5": [111, 121], "\u5728\u5176\u6838\u5fc3": 111, "pytorch\u63d0\u4f9b\u4e86\u4e24\u4e2a\u4e3b\u8981\u529f\u80fd": 111, "\u4e00\u4e2an\u7ef4\u5f20\u91cf": 111, "\u7c7b\u4f3c\u4e8enumpi": 111, "\u4f46\u53ef\u4ee5\u5728gpu\u4e0a\u8fd0\u884c": 111, "\u7528\u4e8e\u6784\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u7684\u81ea\u52a8\u5fae\u5206": 111, "\u6211\u4eec\u5c06\u4f7f\u7528\u62df\u5408": 111, "\u7684\u95ee\u9898\u4f5c\u4e3a\u793a\u4f8b": 111, "\u7f51\u7edc\u5c06\u5177\u6709\u56db\u4e2a\u53c2\u6570": 111, "\u5e76\u5c06\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u6cd5\u8bad\u7ec3": 111, "\u901a\u8fc7\u6700\u5c0f\u5316\u7f51\u7edc\u8f93\u51fa\u4e0e\u771f\u5b9e\u8f93\u51fa\u4e4b\u95f4\u7684\u6b27\u51e0\u91cc\u5f97\u8ddd\u79bb": 111, "\u6765\u62df\u5408\u968f\u673a\u6570\u636e": 111, "\u53ef\u5728": 111, "\u672c\u6587\u672b\u5c3e\u5904": 111, "\u67e5\u770b\u793a\u4f8b": [111, 121], "\u5728\u4ecb\u7ecd": 111, "\u4e4b\u524d": 111, "\u6211\u4eec\u5c06\u5148\u4f7f\u7528": 111, "\u6765\u5b9e\u73b0\u7f51\u7edc": 111, "numpy\u63d0\u4f9b\u4e86\u4e00\u4e2an\u7ef4\u6570\u7ec4\u5bf9\u8c61": 111, "\u5e76\u63d0\u4f9b\u4e86\u8bb8\u591a\u7528\u4e8e\u64cd\u4f5c\u8fd9\u4e9b\u6570\u7ec4\u7684\u51fd\u6570": 111, "numpy\u662f\u4e00\u4e2a\u901a\u7528\u7684\u79d1\u5b66\u8ba1\u7b97\u6846\u67b6": 111, "\u5b83\u4e0d\u77e5\u9053\u4efb\u4f55\u5173\u4e8e\u8ba1\u7b97\u56fe": 111, "\u6df1\u5ea6\u5b66\u4e60\u6216\u68af\u5ea6\u7684\u4fe1\u606f": 111, "\u6211\u4eec\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u4f7f\u7528": 111, "\u63d0\u4f9b\u7684\u65b9\u6cd5": 111, "\u624b\u52a8\u5b9e\u73b0\u524d\u5411\u548c\u540e\u5411\u4f20\u64ad\u8fc7\u7a0b": 111, "\u6765\u62df\u5408\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f\u5230\u6b63\u5f26\u51fd\u6570": 111, "numpy\u662f\u4e00\u4e2a\u5f88\u68d2\u7684\u6846\u67b6": 111, "\u4f46\u5b83\u4e0d\u80fd\u5229\u7528gpu\u6765\u52a0\u901f\u5176\u6570\u503c\u8ba1\u7b97": 111, "\u5bf9\u4e8e\u73b0\u4ee3\u6df1\u5ea6\u795e\u7ecf\u7f51\u7edc": 111, "gpu\u901a\u5e38\u63d0\u4f9b": 111, "50\u500d\u6216\u66f4\u5927\u7684\u52a0\u901f": 111, "numpy\u5bf9\u4e8e\u73b0\u4ee3\u6df1\u5ea6\u5b66\u4e60\u6765\u8bf4\u8fd8\u662f\u4e0d\u591f\u7684": 111, "\u6211\u4eec\u4ecb\u7ecd\u4e86pytorch\u6700\u57fa\u672c\u7684\u6982\u5ff5": 111, "\u4e00\u4e2apytorch\u5f20\u91cf\u5728\u6982\u5ff5\u4e0a\u4e0enumpy\u6570\u7ec4\u76f8\u540c": 111, "\u4e00\u4e2an\u7ef4\u6570\u7ec4": 111, "pytorch\u63d0\u4f9b\u4e86\u8bb8\u591a\u64cd\u4f5c\u8fd9\u4e9b\u5f20\u91cf\u7684\u51fd\u6570": 111, "\u53ef\u4ee5\u81ea\u52a8\u8ddf\u8e2a\u8ba1\u7b97\u56fe\u548c\u68af\u5ea6": 111, "\u5b83\u4eec\u4e5f\u4f5c\u4e3a\u79d1\u5b66\u8ba1\u7b97\u7684\u901a\u7528\u5de5\u5177\u975e\u5e38\u6709\u7528": 111, "\u4e0d\u540c": 111, "\u5f20\u91cf\u53ef\u4ee5\u5229\u7528gpu\u6765\u52a0\u901f\u5b83\u4eec\u7684\u6570\u503c\u8ba1\u7b97": 111, "\u8981\u5728gpu\u4e0a\u8fd0\u884c": 111, "\u60a8\u53ea\u9700\u8981\u6307\u5b9a\u6b63\u786e\u7684\u8bbe\u5907": 111, "\u5f20\u91cf\u6765\u62df\u5408\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f\u5230\u6b63\u5f26\u51fd\u6570\u4e2d": 111, "\u4e0e\u4e0a\u9762\u7684numpy\u793a\u4f8b\u7c7b\u4f3c": 111, "\u6211\u4eec\u9700\u8981\u624b\u52a8\u5b9e\u73b0\u7f51\u7edc\u7684\u524d\u5411\u548c\u540e\u5411\u4f20\u9012": 111, "\u6211\u4eec\u5fc5\u987b\u624b\u52a8\u5b9e\u73b0\u795e\u7ecf\u7f51\u7edc\u7684\u524d\u5411\u548c\u540e\u5411\u4f20\u9012": 111, "\u5bf9\u4e8e\u4e00\u4e2a\u5c0f\u578b\u7684\u4e24\u5c42\u7f51\u7edc\u6765\u8bf4": 111, "\u624b\u52a8\u5b9e\u73b0\u540e\u5411\u4f20\u9012\u5e76\u4e0d\u662f\u4ec0\u4e48\u5927\u95ee\u9898": 111, "\u4f46\u5bf9\u4e8e\u5927\u578b\u590d\u6742\u7684\u7f51\u7edc\u6765\u8bf4": 111, "\u5f88\u5feb\u5c31\u4f1a\u53d8\u5f97\u975e\u5e38\u9ebb\u70e6": 111, "\u5e78\u8fd0\u7684\u662f": [111, 231], "\u6765\u81ea\u52a8\u8ba1\u7b97\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u540e\u5411\u4f20\u9012": 111, "pytorch\u4e2d\u7684": 111, "\u5305\u6b63\u662f\u63d0\u4f9b\u4e86\u8fd9\u79cd\u529f\u80fd": 111, "\u5f53\u4f7f\u7528\u81ea\u52a8\u6c42\u5bfc\u65f6": 111, "\u7f51\u7edc\u7684\u524d\u5411\u4f20\u9012\u5c06\u5b9a\u4e49\u4e00\u4e2a": 111, "\u56fe\u4e2d\u7684\u8282\u70b9\u662f\u5f20\u91cf": 111, "\u8fb9\u662f\u4ece\u8f93\u5165\u5f20\u91cf\u751f\u6210\u8f93\u51fa\u5f20\u91cf\u7684\u51fd\u6570": 111, "\u901a\u8fc7\u8fd9\u4e2a\u56fe\u8fdb\u884c\u53cd\u5411\u4f20\u64ad": 111, "\u7136\u540e\u53ef\u4ee5\u8f7b\u677e\u8ba1\u7b97\u68af\u5ea6": 111, "\u8fd9\u542c\u8d77\u6765\u5f88\u590d\u6742": 111, "\u4f46\u5728\u5b9e\u9645\u4f7f\u7528\u4e2d\u975e\u5e38\u7b80\u5355": 111, "\u6bcf\u4e2a\u5f20\u91cf\u4ee3\u8868\u8ba1\u7b97\u56fe\u4e2d\u7684\u4e00\u4e2a\u8282\u70b9": 111, "\u662f\u4e00\u4e2a\u8bbe\u7f6e\u4e86": 111, "\u5c06\u662f\u53e6\u4e00\u4e2a\u5f20\u91cf": 111, "\u5b83\u5305\u542b\u4e86": 111, "\u76f8\u5bf9\u4e8e\u67d0\u4e2a\u6807\u91cf\u503c\u7684\u68af\u5ea6": 111, "\u6211\u4eec\u4f7f\u7528pytorch\u5f20\u91cf\u548c\u81ea\u52a8\u6c42\u5bfc\u6765\u5b9e\u73b0\u6211\u4eec\u7528\u4e09\u6b21\u591a\u9879\u5f0f\u62df\u5408\u6b63\u5f26\u6ce2\u7684\u793a\u4f8b": 111, "\u73b0\u5728\u6211\u4eec\u4e0d\u518d\u9700\u8981\u624b\u52a8\u5b9e\u73b0\u7f51\u7edc\u7684\u540e\u5411\u4f20\u9012": 111, "\u5728\u5e95\u5c42": 111, "\u6bcf\u4e2a\u539f\u59cb\u7684\u81ea\u52a8\u6c42\u5bfc\u64cd\u4f5c\u5b9e\u9645\u4e0a\u662f\u5bf9\u5f20\u91cf\u8fdb\u884c\u64cd\u4f5c\u7684\u4e24\u4e2a\u51fd\u6570": 111, "\u51fd\u6570\u4ece\u8f93\u5165\u5f20\u91cf\u8ba1\u7b97\u8f93\u51fa\u5f20\u91cf": 111, "\u540e\u5411": 111, "\u51fd\u6570\u63a5\u6536\u8f93\u51fa\u5f20\u91cf\u76f8\u5bf9\u4e8e\u67d0\u4e2a\u6807\u91cf\u503c\u7684\u68af\u5ea6": 111, "\u5e76\u8ba1\u7b97\u8f93\u5165\u5f20\u91cf\u76f8\u5bf9\u4e8e\u540c\u4e00\u6807\u91cf\u503c\u7684\u68af\u5ea6": 111, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5b9a\u4e49\u4e00\u4e2a": 111, "\u7684\u5b50\u7c7b\u5e76\u5b9e\u73b0": 111, "\u8f7b\u677e\u5b9a\u4e49\u81ea\u5df1\u7684\u81ea\u52a8\u6c42\u5bfc\u64cd\u4f5c\u7b26": 111, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u5b9e\u4f8b\u5e76\u50cf\u51fd\u6570\u4e00\u6837\u8c03\u7528\u5b83": 111, "\u4f20\u9012\u5305\u542b\u8f93\u5165\u6570\u636e\u7684\u5f20\u91cf": 111, "\u6765\u4f7f\u7528\u6211\u4eec\u65b0\u7684\u81ea\u52a8\u6c42\u5bfc\u64cd\u4f5c\u7b26": 111, "\u6211\u4eec\u5c06\u6a21\u578b\u5b9a\u4e49\u4e3a": 111, "\u662f\u4e09\u9636\u7684": 111, "\u52d2\u8ba9\u5fb7\u591a\u9879\u5f0f": 111, "\u6211\u4eec\u7f16\u5199\u4e86\u81ea\u5df1\u7684\u81ea\u5b9a\u4e49\u81ea\u52a8\u6c42\u5bfc\u51fd\u6570\u6765\u8ba1\u7b97": 111, "\u7684\u524d\u5411\u548c\u540e\u5411\u4f20\u9012": 111, "\u5e76\u4f7f\u7528\u5b83\u6765\u5b9e\u73b0\u6211\u4eec\u7684\u6a21\u578b": 111, "\u548c\u81ea\u52a8\u6c42\u5bfc": 111, "\u662f\u5b9a\u4e49\u590d\u6742\u64cd\u4f5c\u975e\u5e38\u5f3a\u5927\u7684\u529f\u80fd": 111, "\u539f\u59cb\u7684\u81ea\u52a8\u6c42\u5bfc\u8fd8\u662f\u4e0d\u8db3\u4ee5\u652f\u6301\u5b9e\u73b0\u5927\u578b\u795e\u7ecf\u7f51\u7edc": 111, "\u5728\u6784\u5efa\u795e\u7ecf\u7f51\u7edc\u65f6": 111, "\u6211\u4eec\u901a\u5e38\u4f1a\u8003\u8651\u5c06\u8ba1\u7b97\u5b89\u6392\u6210": 111, "\u5176\u4e2d\u4e00\u4e9b\u5c42\u5177\u6709": 111, "\u53ef\u5b66\u4e60\u7684\u53c2\u6570": 111, "\u8fd9\u4e9b\u53c2\u6570\u5c06\u5728\u5b66\u4e60\u8fc7\u7a0b\u4e2d\u8fdb\u884c\u4f18\u5316": 111, "\u5728tensorflow\u4e2d": 111, "\u50cf": 111, "tflearn": 111, "\u63d0\u4f9b\u4e86\u76f8\u8f83\u4e8e\u539f\u59cb\u8ba1\u7b97\u56fe\u7684\u66f4\u9ad8\u5c42\u6b21\u7684\u62bd\u8c61": 111, "\u8fd9\u4e9b\u62bd\u8c61\u5bf9\u4e8e\u6784\u5efa\u795e\u7ecf\u7f51\u7edc\u975e\u5e38\u6709\u7528": 111, "\u5305\u8d77\u5230\u4e86\u540c\u6837\u7684\u4f5c\u7528": 111, "\u5305\u5b9a\u4e49\u4e86\u4e00\u7ec4": 111, "\u8fd9\u4e9b\u6a21\u5757\u76f8\u5f53\u4e8e\u795e\u7ecf\u7f51\u7edc\u5c42": 111, "\u4e00\u4e2a\u6a21\u5757\u63a5\u6536\u8f93\u5165\u5f20\u91cf\u5e76\u8ba1\u7b97\u8f93\u51fa\u5f20\u91cf": 111, "\u4f46\u4e5f\u53ef\u4ee5\u5305\u542b\u5185\u90e8\u72b6\u6001": 111, "\u4f8b\u5982\u5305\u542b\u53ef\u5b66\u4e60\u53c2\u6570\u7684\u5f20\u91cf": 111, "\u5305\u8fd8\u5b9a\u4e49\u4e86\u4e00\u7ec4\u5e38\u7528\u4e8e\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u7684\u6709\u7528\u7684\u635f\u5931\u51fd\u6570": 111, "\u5305\u6765\u5b9e\u73b0\u6211\u4eec\u7684\u591a\u9879\u5f0f\u6a21\u578b\u7f51\u7edc": 111, "\u6211\u4eec\u901a\u8fc7\u4f7f\u7528": 111, "\u624b\u52a8\u66f4\u6539\u5f20\u91cf\u7684\u53ef\u5b66\u4e60\u53c2\u6570": 111, "\u6765\u66f4\u65b0\u6a21\u578b\u7684\u6743\u91cd": 111, "\u5bf9\u4e8e\u50cf\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u8fd9\u6837\u7684\u4f18\u5316\u7b97\u6cd5\u6765\u8bf4": 111, "\u8fd9\u5e76\u4e0d\u662f\u4e00\u4e2a\u5f88\u5927\u7684\u8d1f\u62c5": 111, "\u4f46\u5728\u5b9e\u8df5\u4e2d": 111, "\u6211\u4eec\u7ecf\u5e38\u4f7f\u7528\u66f4\u590d\u6742\u7684\u4f18\u5316\u5668\u6765\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 111, "\u6bd4\u5982": 111, "\u5305\u62bd\u8c61\u4e86\u4f18\u5316\u7b97\u6cd5\u7684\u5b9a\u4e49": 111, "\u5e76\u63d0\u4f9b\u4e86\u5e38\u7528\u4f18\u5316\u7b97\u6cd5\u7684\u5b9e\u73b0": 111, "\u6211\u4eec\u5c06\u50cf\u4ee5\u524d\u4e00\u6837\u4f7f\u7528": 111, "\u5305\u6765\u5b9a\u4e49\u6211\u4eec\u7684\u6a21\u578b": 111, "\u4f46\u6211\u4eec\u5c06\u4f7f\u7528": 111, "\u5305\u63d0\u4f9b\u7684": 111, "\u7b97\u6cd5\u6765\u4f18\u5316\u6a21\u578b": 111, "\u6709\u65f6\u4f60\u53ef\u80fd\u4f1a\u5e0c\u671b\u81ea\u5b9a\u4e49\u6bd4\u73b0\u6709\u6a21\u5757\u96c6\u66f4\u590d\u6742\u7684\u6a21\u578b": 111, "\u5728\u8fd9\u4e9b\u60c5\u51b5\u4e0b": 111, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u7ee7\u627f": 111, "\u5e76\u5b9a\u4e49\u4e00\u4e2a": 111, "\u65b9\u6cd5\u6765\u81ea\u5b9a\u4e49\u6a21\u5757": 111, "\u8be5\u65b9\u6cd5\u63a5\u6536\u8f93\u5165\u5f20\u91cf": 111, "\u5e76\u4f7f\u7528\u5176\u4ed6\u6a21\u5757\u6216\u5728\u5f20\u91cf\u4e0a\u81ea\u52a8\u6c42\u5bfc\u7b49\u64cd\u4f5c\u751f\u6210\u65b0\u7684\u8f93\u51fa\u5f20\u91cf": 111, "\u6211\u4eec\u5c06\u5b9e\u73b0\u4e00\u4e2a\u4e09\u6b21\u591a\u9879\u5f0f\u4f5c\u4e3a\u81ea\u5b9a\u4e49\u6a21\u5757\u7684\u5b50\u7c7b": 111, "\u4f5c\u4e3a\u52a8\u6001\u8ba1\u7b97\u56fe\u548c\u6743\u91cd\u5171\u4eab\u7684\u4e00\u4e2a\u793a\u4f8b": 111, "\u6211\u4eec\u5b9e\u73b0\u4e86\u4e00\u4e2a\u975e\u5e38\u5947\u7279\u7684\u6a21\u578b": 111, "\u4e00\u4e2a\u4e09\u81f3\u4e94\u9636\u7684\u591a\u9879\u5f0f": 111, "\u5728\u6bcf\u6b21\u524d\u5411\u4f20\u9012\u65f6\u968f\u673a\u9009\u62e9\u4e00\u4e2a3\u52305\u4e4b\u95f4\u7684\u6570\u5b57": 111, "\u5e76\u4f7f\u7528\u8be5\u9636\u6570\u591a\u9879\u5f0f\u6765\u8ba1\u7b97": 111, "\u91cd\u590d\u4f7f\u7528\u76f8\u540c\u7684\u6743\u91cd\u591a\u6b21\u4ee5\u8ba1\u7b97\u56db\u9636\u548c\u4e94\u9636\u591a\u9879\u5f0f": 111, "\u5bf9\u4e8e\u8fd9\u4e2a\u6a21\u578b": 111, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528python\u6d41\u63a7\u5236\u6765\u5b9e\u73b0\u5faa\u73af": 111, "\u5e76\u4e14\u53ef\u4ee5\u901a\u8fc7\u5728\u5b9a\u4e49\u524d\u5411\u4f20\u9012\u65f6": 111, "\u591a\u6b21\u91cd\u590d\u4f7f\u7528\u76f8\u540c\u7684\u53c2\u6570": 111, "\u6765\u5b9e\u73b0\u6743\u91cd\u5171\u4eab": 111, "\u6211\u4eec\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u5c06\u8fd9\u4e2a\u6a21\u578b\u5b9e\u73b0\u4e3a\u4e00\u4e2a\u6a21\u5757\u7684\u5b50\u7c7b": 111, "\u5177\u4f53\u793a\u4f8b\u5982\u4e0b": 111, "unpickl": 112, "facil": 112, "running_mean": [112, 142, 198, 249], "themodelclass": 112, "param_tensor": [112, 249], "var_nam": [112, 249], "param_group": [112, 159, 211, 216, 244], "dampen": 112, "4675713712": 112, "4675713784": 112, "4675714000": 112, "4675714072": 112, "4675714216": 112, "4675714288": 112, "4675714432": 112, "4675714504": 112, "4675714648": 112, "4675714720": 112, "_use_new_zipfile_seri": 112, "inconsist": [112, 144, 241], "best_model_st": 112, "deepcopi": [112, 138, 142, 157, 182, 198, 199], "overfit": [112, 128, 157], "model_script": 112, "model_state_dict": [112, 214, 220, 241], "theoptimizerclass": 112, "modela_state_dict": [112, 243], "modela": [112, 243], "modelb_state_dict": [112, 243], "modelb": [112, 243], "optimizera_state_dict": [112, 243], "optimizera": [112, 243], "optimizerb_state_dict": [112, 243], "optimizerb": [112, 243], "themodelaclass": 112, "themodelbclass": 112, "theoptimizeraclass": 112, "theoptimizerbclass": 112, "gan": [112, 121, 153, 243], "ensembl": [112, 121], "remap": 112, "overwrit": 112, "saving_loading_model": 112, "pendo": 113, "abbo": 113, "joe": [113, 133], "cum": 113, "cnndm": 113, "imdb": 113, "multi30k": [113, 118], "sentencepiec": 113, "t5transform": 113, "padding_idx": 113, "eos_idx": [113, 118], "max_seq_len": 113, "t5_sp_model_path": 113, "t5_tokenizer_bas": 113, "sp_model_path": 113, "t5_base_gener": 113, "t5_base": 113, "beam": 113, "sequence_gener": 113, "datapip": [113, 116], "appendix": 113, "cnndm_batch_siz": 113, "cnndm_datapip": 113, "apply_prefix": 113, "rows2columnar": 113, "cnndm_dataload": 113, "batch_prefix": 113, "sst2": 113, "imdb_batch_s": 113, "imdb_datapip": 113, "process_label": 113, "imdb_dataload": 113, "german": [113, 116, 118, 127, 128], "multi_batch_s": 113, "language_pair": [113, 118], "multi_datapip": 113, "multi_dataload": 113, "input_text": 113, "beam_siz": 113, "model_output": [113, 141, 162], "num_beam": 113, "output_text": 113, "year": [113, 150, 153], "tattoo": 113, "decad": [113, 176], "australia": 113, "campaign": 113, "honest": 113, "london": 113, "stephen": 113, "hendri": 113, "fame": [113, 265, 274], "supermodel": 113, "sydnei": 113, "australian": 113, "fan": [113, 158], "him": 113, "hotel": 113, "heartthrob": 113, "strai": 113, "pooch": 113, "buri": 113, "stagger": 113, "nearbi": 113, "farm": 113, "dirt": 113, "emaci": 113, "disloc": 113, "jaw": 113, "leg": 113, "injuri": [113, 262, 271], "cave": 113, "sinu": 113, "caviti": 113, "surgeri": [113, 171], "breath": 113, "theia": 113, "bulli": 113, "breed": 113, "appar": [113, 157], "whack": 113, "hammer": 113, "miracl": 113, "sara": 113, "mellado": 113, "mohammad": 113, "javad": 113, "zarif": 113, "iran": 113, "sunni": 113, "fridai": 113, "morn": 113, "bring": [113, 159, 168, 171, 184, 192, 205, 216, 234, 247], "rejoin": 113, "john": 113, "kerri": 113, "foreign": 113, "minist": 113, "takeov": 113, "iranian": 113, "consul": 113, "tweet": 113, "american": 113, "week": 113, "ebola": 113, "west": 113, "africa": 113, "discharg": 113, "hasn": 113, "clinician": 113, "health": 113, "boston": 113, "viru": 113, "sierra": 113, "march": 113, "diagnos": [113, 132], "diseas": [113, 171], "maryland": 113, "nation": 113, "institut": 113, "patient": [113, 171], "campu": 113, "polic": 113, "offic": [113, 197, 198], "affair": 113, "admit": 113, "noos": 113, "wednesdai": 113, "incid": 113, "racist": 113, "colleg": 113, "duke": 113, "disciplinari": 113, "school": 113, "rope": 113, "sci": [113, 115], "fi": 113, "tv": 113, "underfund": 113, "misunderstood": 113, "babylon": 113, "star": 113, "trek": 113, "silli": [113, 125], "prosthet": 113, "cheap": 113, "cardboard": 113, "stilt": 113, "dialogu": 113, "cg": 113, "painfulli": 113, "clich\u00e9d": 113, "uninspir": 113, "viewer": 113, "emot": 113, "genr": 113, "serious": 113, "cf": 113, "seriou": 113, "foolish": 113, "spark": 113, "Their": [113, 190, 192], "reaction": 113, "wooden": [113, 262, 271], "maker": 113, "rubbish": 113, "gene": 113, "roddenberri": 113, "ash": 113, "orbit": 113, "dull": 113, "poorli": [113, 127], "advert": 113, "trudg": 113, "trabant": 113, "lumber": 113, "spoiler": 113, "kill": 113, "actor": [113, 136], "jeeez": 113, "dalla": 113, "entertain": 113, "rental": 113, "fight": 113, "van": 113, "damm": 113, "shoot": 113, "battl": 113, "shell": [113, 208, 213, 218, 223], "shotgun": 113, "terrorist": 113, "bomb": 113, "blow": 113, "br": 113, "inclus": [113, 173, 174, 246], "rabbit": 113, "hardli": [113, 115], "profound": 113, "stereotyp": 113, "angri": 113, "veteran": 113, "terrifi": 113, "illeg": 113, "alien": 113, "crook": 113, "cop": 113, "indiffer": 113, "bitchi": 113, "ladi": 113, "station": 113, "politician": 113, "federal": 113, "typecast": 113, "mexican": 113, "hollywood": 113, "1940": 113, "passabl": 113, "villain": 113, "certainli": [113, 143, 190, 192, 234], "knew": 113, "gui": [113, 226, 251, 262, 271], "weren": [113, 138, 154], "desert": 113, "simplist": 113, "hamlet": 113, "annoi": [113, 145], "vd": 113, "daughter": 113, "film": 113, "semi": [113, 121, 193, 196], "alright": 113, "dam": 113, "disappoint": [113, 115], "budget": [113, 126], "poor": 113, "orang": [113, 125, 158], "ein": [113, 118], "mann": 113, "einem": [113, 118], "orangen": 113, "hut": 113, "der": 113, "etwa": 113, "schaut": 113, "mit": [113, 139], "orangefarbenen": 113, "anstarrt": 113, "terrier": 113, "lush": 113, "grass": 113, "front": [113, 115, 138, 156, 176, 177], "fenc": 113, "l\u00e4uft": 113, "auf": 113, "\u00fcppigem": 113, "gr\u00fcnem": 113, "gra": 113, "vor": [113, 118], "wei\u00dfen": 113, "zaun": 113, "\u00fcber": 113, "saftig": 113, "gr\u00fcne": 113, "girl": 113, "karat": 113, "m\u00e4dchen": 113, "bricht": 113, "einen": [113, 116], "st\u00f6ck": 113, "frontkick": 113, "karateanzug": 113, "brett": 113, "tritt": 113, "wear": 113, "jacket": 113, "helmet": 113, "snow": 113, "snowmobil": 113, "f\u00fcnf": 113, "menschen": [113, 118], "winterjacken": 113, "und": 113, "helmen": 113, "stehen": 113, "schnee": 113, "schneemobilen": 113, "hintergrund": 113, "leut": 113, "roof": 113, "hous": 113, "die": 113, "fixieren": 113, "da": 113, "dach": 113, "haus": 113, "reparieren": 113, "t5_tutori": 113, "firstnam": 114, "lastnam": 114, "gallery_pattern": 114, "neural_style_transfer_tutori": 114, "_build": 114, "beginner_sourc": 114, "link1": 114, "link2": 114, "template_tutori": 114, "portalock": 115, "ag_new": 115, "fear": 115, "pension": 115, "union": [115, 179], "turner": 115, "newal": 115, "stricken": 115, "firm": 115, "feder": 115, "mogul": 115, "race": [115, 135, 216], "spaceflight": 115, "toronto": 115, "canada": [115, 263, 272], "rocket": 115, "ansari": 115, "prize": 115, "contest": 115, "fund": 115, "suborbit": 115, "flight": 115, "ky": 115, "grant": 115, "peptid": 115, "ap": 115, "chemistri": 115, "louisvil": 115, "amino": 115, "acid": 115, "protein": 115, "revisit": [115, 190, 262, 271], "yield_token": [115, 118], "data_it": [115, 116, 118], "475": [115, 163], "5297": 115, "text_pipelin": 115, "label_pipelin": 115, "collate_batch": 115, "label_list": [115, 137, 171, 185], "text_list": 115, "_label": 115, "_text": 115, "processed_text": 115, "cumsum": 115, "textclassificationmodel": 115, "embed_dim": [115, 164], "sport": 115, "tec": 115, "total_acc": 115, "total_count": 115, "to_map_style_dataset": 115, "total_accu": 115, "num_train": 115, "split_train_": 115, "split_valid_": 115, "valid_dataload": 115, "accu_v": 115, "accu_test": 115, "golf": 115, "ag_news_label": 115, "ex_text_str": 115, "memphi": 115, "tenn": 115, "ago": 115, "jon": 115, "rahm": 115, "endur": 115, "season": 115, "weather": 115, "sundai": 115, "royal": 115, "portrush": 115, "wind": 115, "rain": 115, "thursdai": 115, "wgc": 115, "fedex": 115, "jude": 115, "invit": 115, "stori": 115, "mid": 115, "spaniard": 115, "stroke": 115, "flawless": 115, "pga": 115, "tour": 115, "nine": 115, "tpc": 115, "southwind": 115, "text_sentiment_ngrams_tutori": 115, "sharma": 116, "legaci": 116, "tatoeba": [116, 165], "deu": 116, "en_core_web_sm": [116, 118], "de_core_news_sm": [116, 118], "dp": [116, 124, 176, 177], "eng": [116, 165, 194], "file_path": 116, "data_pip": 116, "iterablewrapp": 116, "fileopen": 116, "parse_csv": 116, "skip_lin": 116, "removeattribut": 116, "engtoken": 116, "detoken": 116, "haben": 116, "sie": 116, "guten": 116, "gettoken": 116, "source_vocab": 116, "min_freq": [116, 118], "special_first": [116, 118], "target_vocab": 116, "get_ito": 116, "gettransform": 116, "text_tranform": 116, "vocabtransform": 116, "addtoken": 116, "temp_list": 116, "some_sent": 116, "798": 116, "transformed_sent": 116, "index_to_str": 116, "applytransform": 116, "sequence_pair": 116, "bucketbatch": 116, "sortbucket": 116, "batch_num": 116, "bucket_num": 116, "use_in_batch_shuffl": 116, "sort_kei": 116, "x_3": [116, 262, 271], "y_3": 116, "x_4": [116, 262, 271], "y_4": 116, "separatesourcetarget": 116, "applypad": 116, "pair_of_sequ": 116, "source_index_to_str": 116, "target_index_to_str": 116, "showsometransformedsent": 116, "traget": 116, "torchtext_custom_dataset_tutori": 116, "cs231n": 117, "licens": [117, 137, 139, 166], "bsd": [117, 166], "image_dataset": [117, 157], "dataset_s": [117, 157], "class_nam": [117, 139, 157, 171, 213], "train_model": [117, 157, 245], "tempdir": 117, "best_model_params_path": 117, "best_model_param": 117, "best_acc": [117, 157], "running_correct": [117, 157], "set_grad_en": [117, 157, 219], "epoch_loss": [117, 135, 157], "epoch_acc": [117, 157], "time_elaps": [117, 157], "visualize_model": [117, 157], "was_train": [117, 157], "images_so_far": 117, "model_ft": [117, 157], "num_ftr": [117, 157], "optimizer_ft": [117, 157], "exp_lr_schedul": [117, 157], "step_siz": [117, 122, 123, 129, 157, 178], "model_conv": 117, "optimizer_conv": 117, "visualize_model_predict": 117, "72100438_73de9f17af": 117, "transfer_learning_tutori": 117, "\u8fdb\u884c\u8bed\u8a00\u7ffb\u8bd1": [118, 121], "inbuilt": [118, 153], "1756": 118, "issuecom": 118, "1163664163": 118, "githubusercont": [118, 119, 178], "neychev": 118, "small_dl_repo": 118, "src_languag": 118, "tgt_languag": 118, "token_transform": 118, "vocab_transform": 118, "language_index": 118, "data_sampl": 118, "unk_idx": 118, "pad_idx": 118, "bos_idx": 118, "special_symbol": 118, "bo": 118, "ln": 118, "emb_siz": 118, "maxlen": [118, 160], "den": 118, "pos_embed": 118, "register_buff": [118, 153, 202], "token_embed": 118, "tokenembed": 118, "seq2seqtransform": 118, "num_encoder_lay": 118, "num_decoder_lay": 118, "src_vocab_s": 118, "tgt_vocab_s": 118, "dim_feedforward": 118, "src_tok_emb": 118, "tgt_tok_emb": 118, "positional_encod": 118, "trg": 118, "src_mask": 118, "tgt_mask": 118, "src_padding_mask": 118, "tgt_padding_mask": 118, "memory_key_padding_mask": 118, "src_emb": 118, "tgt_emb": 118, "tgt": [118, 165], "generate_square_subsequent_mask": 118, "sz": 118, "triu": [118, 153], "masked_fil": [118, 191], "create_mask": 118, "src_seq_len": 118, "tgt_seq_len": 118, "ffn_hid_dim": 118, "xavier_uniform_": 118, "ignore_index": 118, "pad_sequ": 118, "club": 118, "sequential_transform": 118, "txt_input": 118, "tensor_transform": 118, "token_id": 118, "text_transform": 118, "src_batch": 118, "tgt_batch": 118, "src_sampl": 118, "tgt_sampl": 118, "rstrip": 118, "train_epoch": [118, 165], "tgt_input": 118, "tgt_out": 118, "val_dataload": [118, 148], "ingredi": 118, "timeit": [118, 138, 144, 145, 149, 154, 193, 223, 234, 239, 246], "default_tim": [118, 193, 239], "train_loss": 118, "end_tim": [118, 230, 237], "greedy_decod": 118, "start_symbol": 118, "ys": 118, "prob": [118, 159, 161, 163, 169], "next_word": 118, "src_sentenc": 118, "num_token": 118, "tgt_token": 118, "lookup_token": 118, "grupp": 118, "von": 118, "steht": 118, "iglu": 118, "3f5ee243547dee91fbd053c1c4a845aa": 118, "pdf": 118, "harvard": 118, "edu": [118, 178], "translation_transform": 118, "geeta": [119, 176], "chauhan": [119, 176], "facebook": [119, 135, 204, 222], "android": [119, 121, 194, 196, 227, 228, 251, 252], "2012": [119, 263, 272], "hundr": [119, 120, 124, 171], "distil": [119, 121, 187, 221], "timm": 119, "imagenet_default_mean": 119, "imagenet_default_std": 119, "facebookresearch": [119, 184], "deit_base_patch16_224": 119, "clsidx": 119, "269": [119, 147], "timber": [119, 188], "wolf": [119, 188], "cani": [119, 188], "lupu": [119, 188], "scripted_model": [119, 188], "fbdeit_script": 119, "346mb": 119, "qnnpack": [119, 158, 179, 218, 223, 228], "qconfig_spec": [119, 228], "scripted_quantized_model": 119, "fbdeit_scripted_quant": 119, "fbdeit_quantized_script": 119, "89mb": 119, "mobile_optim": [119, 188, 194, 206, 218, 222, 224, 225, 252], "optimize_for_mobil": [119, 188, 194, 206, 218, 222, 223, 224, 225, 252], "optimized_scripted_quantized_model": 119, "fbdeit_optimized_scripted_quant": 119, "_save_for_lite_interpret": [119, 187, 188, 194, 204, 222, 223], "fbdeit_optimized_scripted_quantized_lit": 119, "ptl": [119, 187, 204, 222, 223], "prof1": 119, "prof2": 119, "prof3": 119, "prof4": 119, "prof5": 119, "1236": 119, "69m": 119, "1226": 119, "72m": 119, "593": 119, "19m": 119, "598": 119, "01m": 119, "81": [119, 144, 219], "52": [119, 127, 147, 176, 219], "vt_tutori": 119, "spread": [120, 171], "demand": 120, "mesh": [120, 124, 215], "ddp_series_intro": 120, "utm_sourc": 120, "distr_land": 120, "utm_medium": 120, "distributeddata": 120, "ddp_tutori": 120, "intermediate_ddp_tutori": 120, "generic_join": 120, "fsdp_tutori": 120, "fsdp_getting_start": 120, "huggingfac": [120, 122, 123, 185, 201], "hf": 120, "t5": 120, "fsdp_adavnced_tutori": 120, "fsdp_advanc": 120, "tp_tutori": [120, 124], "distributed_device_mesh": 120, "rpc_tutori": 120, "rpc_getting_start": 120, "rpc_param_server_tutori": 120, "rpc_async_execut": 120, "rpc_ddp_tutori": 120, "rpc_plus_ddp": 120, "plug": [120, 155, 166, 223], "process_group_cpp_extension_tutori": 120, "custom_extensions_cpp": 120, "\u65b0\u589e\u6559\u7a0b": 121, "\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684": 121, "triton": [121, 144, 172, 199, 251], "\u5185\u6838\u4e0e": 121, "tp": 121, "\u8fdb\u884c\u5927\u89c4\u6a21": 121, "\u6a21\u578b\u8bad\u7ec3": 121, "\u5229\u7528\u534a\u7ed3\u6784\u5316": 121, "\u7a00\u758f\u6027\u52a0\u901f": 121, "\u548c\u5f20\u91cf\u5b50\u7c7b\u7684\u6269\u5c55\u70b9": 121, "\u719f\u6089": 121, "\u7684\u6982\u5ff5\u548c\u6a21\u5757": 121, "\u901a\u8fc7\u672c\u5feb\u901f\u5165\u95e8\u6307\u5357": 121, "\u5b66\u4e60\u5982\u4f55\u52a0\u8f7d\u6570\u636e": 121, "\u6784\u5efa\u6df1\u5ea6\u795e\u7ecf\u7f51\u7edc": 121, "\u8bad\u7ec3\u548c\u4fdd\u5b58\u6a21\u578b": 121, "\u5f00\u542f": 121, "\u65c5\u7a0b": 121, "\u793a\u4f8b": 121, "\u5c0f\u5de7\u6613\u7528": 121, "\u5373\u65f6\u90e8\u7f72\u7684": 121, "\u4ee3\u7801\u793a\u4f8b": 121, "\u5168\u90e8": 121, "\u9010\u6b65\u6559\u4f60\u5982\u4f55\u7528pytorch\u6784\u5efa\u5b8c\u6574\u7684\u673a\u5668\u5b66\u4e60\u6d41\u7a0b": 121, "\u4ecb\u7ecd\u89c6\u9891": 121, "\u7528pytorch\u6784\u5efa\u5b8c\u6574\u7684\u673a\u5668\u5b66\u4e60\u5de5\u4f5c\u6d41\u7a0b": 121, "pytorch\u521d\u5b66\u8005\u7cfb\u5217": 121, "\u901a\u8fc7\u793a\u4f8b\u5b66\u4e60": 121, "\u672c\u6559\u7a0b\u901a\u8fc7\u72ec\u7acb\u7684\u793a\u4f8b\u4ecb\u7ecd\u4e86": 121, "\u4ec0\u4e48\u662f": 121, "\u6765\u521b\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 121, "\u5c55\u73b0\u6a21\u578b": 121, "\u6570\u636e\u548c\u8bad\u7ec3\u8fc7\u7a0b": 121, "\u5b66\u4e60\u4f7f\u7528": 121, "\u53ef\u89c6\u5316\u6570\u636e\u96c6\u548c\u6a21\u578b\u8bad\u7ec3\u8fc7\u7a0b": 121, "\u76ee\u6807\u68c0\u6d4b\u5fae\u8c03\u6559\u7a0b": 121, "\u5fae\u8c03\u9884\u8bad\u7ec3\u7684": 121, "\u4f7f\u7528\u8fc1\u79fb\u5b66\u4e60\u8bad\u7ec3\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u8fdb\u884c\u56fe\u50cf\u5206\u7c7b": 121, "\u4f18\u5316\u89c6\u89c9transformer\u6a21\u578b": 121, "\u5e94\u7528\u6700\u524d\u6cbf\u7684": 121, "\u57fa\u4e8e": 121, "\u6a21\u578b\u5230\u8ba1\u7b97\u673a\u89c6\u89c9\u4efb\u52a1\u4e2d": 121, "\u5bf9\u6297\u6027\u6837\u672c\u751f\u6210": 121, "dcgan": 121, "\u5b66\u4e60\u5982\u4f55\u901a\u8fc7\u89c6\u89c9\u6ce8\u610f\u673a\u5236\u589e\u5f3a\u4f60\u7684\u7f51\u7edc": 121, "tiatoolbox": 121, "\u5bf9\u56fe\u50cf\u8fdb\u884c\u63a8\u7406": 121, "\u5b66\u4e60\u5982\u4f55\u4f7f\u7528tiatoolbox\u5bf9\u56fe\u50cf\u8fdb\u884c\u63a8\u7406": 121, "usb": [121, 158], "\u7684\u534a\u76d1\u7763\u5b66\u4e60\u6559\u7a0b": 121, "\u5b66\u4e60\u5982\u4f55\u4f7f\u7528": [121, 251], "\u5bf9\u81ea\u5b9a\u4e49\u6570\u636e\u8fdb\u884c\u534a\u76d1\u7763\u5b66\u4e60\u7b97\u6cd5\u7684\u8bad\u7ec3": 121, "\u52a0\u8f7d\u6570\u636e": [121, 235, 251], "\u91cd\u91c7\u6837": 121, "\u5bf9\u97f3\u9891\u6ce2\u5f62\u8fdb\u884c\u91cd\u65b0\u91c7\u6837": 121, "\u6570\u636e\u589e\u5f3a": 121, "\u5e94\u7528\u6570\u636e\u589e\u5f3a": 121, "\u7279\u5f81\u63d0\u53d6": 121, "\u63d0\u53d6\u7279\u5f81": 121, "\u7279\u5f81\u589e\u5f3a": 121, "\u5bf9\u7279\u5f81\u8fdb\u884c\u589e\u5f3a": 121, "\u4e2d\u4f7f\u7528": 121, "wav2vec2": 121, "\u8fdb\u884c\u81ea\u52a8\u8bed\u97f3\u8bc6\u522b": 121, "\u7684\u9884\u8bad\u7ec3\u6a21\u578b\u6765\u6784\u5efa\u8bed\u97f3\u8bc6\u522b\u5e94\u7528\u7a0b\u5e8f": 121, "\u8bed\u97f3\u547d\u4ee4\u5206\u7c7b": 121, "\u5b66\u4e60\u5982\u4f55\u6b63\u786e\u683c\u5f0f\u5316\u97f3\u9891\u6570\u636e\u96c6": 121, "\u7136\u540e\u5728\u8be5\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3": 121, "\u6d4b\u8bd5\u97f3\u9891\u5206\u7c7b\u5668\u7f51\u7edc": 121, "\u8fdb\u884c\u6587\u672c\u8f6c\u8bed\u97f3": 121, "\u7684\u9884\u8bad\u7ec3\u6a21\u578b\u6784\u5efa\u6587\u672c\u8f6c\u8bed\u97f3\u5e94\u7528\u7a0b\u5e8f": 121, "\u8fdb\u884c\u5bf9\u9f50": 121, "\u9884\u8bad\u7ec3\u6a21\u578b\u5bf9\u6587\u672c\u8fdb\u884c\u4e0e\u8bed\u97f3\u5bf9\u9f50": 121, "\u63d0\u5347\u63a8\u7406\u6548\u7387": 121, "\u5b9e\u73b0\u7684": 121, "\u4ee5\u5b9e\u73b0\u9ad8\u6027\u80fd\u7684\u63a8\u65ad": 121, "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406": 121, "\u4f7f\u7528\u5b57\u7b26\u7ea7": 121, "\u5bf9\u59d3\u540d\u8fdb\u884c\u5206\u7c7b": 121, "\u6784\u5efa\u5e76\u8bad\u7ec3\u4e00\u4e2a\u57fa\u672c\u7684\u5b57\u7b26\u7ea7\u5faa\u73af\u795e\u7ecf\u7f51\u7edc": 121, "\u4ece\u96f6\u5f00\u59cb\u5206\u7c7b\u5355\u8bcd": 121, "\u800c\u4e0d\u4f7f\u7528": 121, "\u751f\u6210\u59d3\u540d": [121, 127, 165], "\u5728\u4f7f\u7528\u5b57\u7b26\u7ea7\u5faa\u73af\u795e\u7ecf\u7f51\u7edc\u5bf9\u59d3\u540d\u8fdb\u884c\u5206\u7c7b\u4e4b\u540e": 121, "\u5b66\u4e60\u5982\u4f55\u4ece\u8bed\u8a00\u4e2d\u751f\u6210\u59d3\u540d": 121, "\u4f7f\u7528\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u8fdb\u884c\u7ffb\u8bd1": 121, "\u5728\u8fd9\u91cc\u6211\u4eec\u7f16\u5199\u81ea\u5df1\u7684\u7c7b\u548c\u51fd\u6570\u6765\u9884\u5904\u7406\u6570\u636e\u4ee5\u6267\u884c\u6211\u4eec\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406\u5efa\u6a21\u4efb\u52a1": 121, "\u8fdb\u884c\u6587\u672c\u5206\u7c7b": 121, "\u5e93\u6784\u5efa\u6570\u636e\u96c6\u5e76\u5bf9\u6587\u672c\u8fdb\u884c\u5206\u7c7b": 121, "\u4ece\u96f6\u5f00\u59cb\u8bad\u7ec3\u4e00\u4e2a\u4f7f\u7528": 121, "\u7684\u8bed\u8a00\u7ffb\u8bd1\u6a21\u578b": 121, "\u4f7f\u7528torchtext\u9884\u5904\u7406\u81ea\u5b9a\u4e49\u6587\u672c\u6570\u636e\u96c6": 121, "\u51c6\u5907\u81ea\u5b9a\u4e49\u6570\u636e\u96c6": 121, "\u53ef\u9009": 121, "\u6a21\u578b\u5bfc\u51fa\u4e3a": 121, "\u8fd0\u884c\u5b83": 121, "\u6784\u5efa\u4e00\u4e2a": 121, "\u56fe\u50cf\u5206\u7c7b\u5668\u6a21\u578b": 121, "\u7136\u540e\u5c06\u5176\u8f6c\u6362\u4e3a": 121, "\u683c\u5f0f": 121, "\u6700\u540e\u4f7f\u7528": 121, "\u90e8\u7f72\u5b83": 121, "\u4ecb\u7ecd": 121, "\u6f14\u793a\u5982\u4f55\u901a\u8fc7\u4f7f\u7528": 121, "\u6765\u89e3\u51b3\u4e0d\u652f\u6301\u7684\u64cd\u4f5c\u7b26": 121, "\u4ece\u800c\u5b9e\u73b0\u7aef\u5230\u7aef\u7684\u6d41\u7a0b": 121, "\u5f3a\u5316\u5b66\u4e60": 121, "dqn": 121, "cartpol": [121, 136, 160, 163], "\u4efb\u52a1\u4e0a\u8bad\u7ec3\u4e00\u4e2a": 121, "\u4ee3\u7406": 121, "\u4f7f\u7528torchrl\u8fdb\u884c\u5f3a\u5316\u5b66\u4e60": 121, "torchrl": [121, 136, 146], "proxim": [121, 159], "pendulum": [121, 159], "\u8bad\u7ec3\u4e00\u4e2a\u9a6c\u91cc\u5965\u6e38\u620f\u7684": 121, "mario": [121, 146, 153], "ddpg": 121, "\u4e2d\u90e8\u7f72": [121, 139], "densenet": [121, 139, 213], "121": [121, 139, 144, 178, 238], "\u4e2d\u52a0\u8f7d": [121, 139], "thumbnail": [121, 171], "holist": 121, "fuser": [121, 247], "nchw": [121, 129, 147, 177, 220, 223], "raspberri": 121, "nerur": 121, "netork": 121, "exploresever": 121, "tangent": [121, 141, 145], "plugin": [121, 168, 208], "rai": 121, "orthogon": [121, 153], "symmetr": [121, 137, 153, 197, 200], "prune": [121, 153, 196, 221], "snapshot": [121, 131, 174, 208, 222], "grok": 121, "torchserv": [121, 161, 213, 251], "torchx": 121, "inductor": [121, 174, 184, 196, 197, 254, 255], "scaled_dot_product_attent": [121, 164, 193], "paral": 121, "executorch": [121, 197], "sdk": [121, 208, 227, 257], "v3": [121, 228], "xnnpack": [121, 179, 197, 198, 200], "metal": 121, "shader": 121, "fp32": [121, 122, 131, 137, 147, 177, 179, 184, 185, 188, 197, 199, 207, 221, 234], "torchrec": 121, "distributedmodelparallel": 121, "torchmultimod": 121, "\u89c6\u89c9": 121, "\u6587\u672c": 121, "\u5f3a\u5316\u5b66\u4e60\u7684": 121, "\u53ef\u4ee5\u5c06\u5176\u878d\u5165\u73b0\u6709\u5de5\u4f5c\u5185\u5bb9": 121, "sheet": 121, "\u57fa\u7840\u5185\u5bb9\u901f\u89c8": 121, "\u4e0a\u7684\u6559\u7a0b": 121, "\u83b7\u53d6": 121, "\u4e0a\u8fd0\u884c\u6559\u7a0b": 121, "\u5b66\u4e60\u5982\u4f55\u5c06\u6559\u7a0b\u6570\u636e\u590d\u5236\u5230": 121, "\u4ee5\u4fbf\u60a8\u53ef\u4ee5\u5728": 121, "hamid": [122, 123, 176, 177], "shojanazeri": [122, 123, 176, 177], "wright": 122, "rohan": [122, 162], "varma": [122, 162], "yanli": [122, 123], "zhao": [122, 123], "wikihow": 122, "p4dn": 122, "pressur": 122, "fdsp": 122, "discard": [122, 123, 168], "reduce_scatt": [122, 123, 124], "xxl": 122, "3b": [122, 158], "whl": [122, 137, 157, 168, 172, 184, 187, 188], "cu113": 122, "torch_nightli": [122, 137, 157, 187, 188], "wikihowal": 122, "wikihowsep": 122, "cs": 122, "summarization_dataset": 122, "t5_train": 122, "gpt2tokenizerfast": 122, "t5token": 122, "t5forconditionalgener": 122, "modeling_t5": 122, "t5block": 122, "checkpoint_wrapp": 122, "checkpointimpl": 122, "apply_activation_checkpointing_wrapp": 122, "fullyshardeddataparallel": [122, 123, 124, 155, 214, 215], "mixedprecis": 122, "backwardprefetch": [122, 123], "shardingstrategi": [122, 215], "fullstatedictconfig": 122, "statedicttyp": [122, 214], "transformer_auto_wrap_polici": 122, "enable_wrap": [122, 123], "cleanup": [122, 123, 133, 214], "setup_model": 122, "get_date_of_run": 122, "2022": 122, "12_pm": 122, "date_of_run": 122, "s_": [122, 160], "format_metrics_to_gb": 122, "gigabyt": 122, "metric_num": 122, "g_gigabyt": 122, "ndigit": 122, "fsdp_loss": 122, "inner_pbar": 122, "colour": 122, "desc": [122, 137, 185], "source_id": 122, "attention_mask": [122, 137, 185], "source_mask": 122, "target_id": [122, 165], "train_accuraci": 122, "val_load": 122, "fsdp_main": [122, 123], "type_path": 122, "output_length": 122, "print_text": 122, "150": [122, 163], "val_dataset": 122, "sampler1": [122, 123], "num_replica": [122, 123], "sampler2": [122, 123], "train_kwarg": [122, 123, 129], "test_kwarg": [122, 123, 129], "test_batch_s": [122, 123], "cuda_kwarg": [122, 123, 129], "t5_auto_wrap_polici": 122, "transformer_layer_cl": 122, "sharding_strategi": [122, 215], "shard_grad_op": 122, "zero2": 122, "full_shard": 122, "zero3": 122, "init_start_ev": [122, 123], "enable_tim": [122, 123, 172], "init_end_ev": [122, 123], "bf16_readi": 122, "is_bf16_support": 122, "loosevers": 122, "is_nccl_avail": 122, "mp_polici": 122, "bfsixteen": 122, "auto_wrap_polici": [122, 123], "mixed_precis": 122, "current_devic": [122, 230], "curr_val_loss": 122, "file_save_nam": 122, "time_of_run": 122, "dur": 122, "train_acc_track": 122, "val_acc_track": 122, "training_start_tim": 122, "track_memori": 122, "mem_alloc_track": 122, "mem_reserved_track": 122, "run_valid": 122, "zone": 122, "memory_alloc": [122, 129], "memory_reserv": 122, "save_model": [122, 123], "save_polici": 122, "offload_to_cpu": 122, "rank0_onli": 122, "state_dict_typ": 122, "full_state_dict": 122, "cpu_stat": 122, "currepoch": 122, "save_nam": 122, "barrier": [122, 123, 133, 135, 137, 176, 185], "metavar": [122, 123, 161, 163], "002": 122, "store_tru": [122, 123], "store_fals": 122, "nnode": [122, 133], "transfom": 122, "mhsa": 122, "ffn": 122, "fsdp_auto_wrap_polici": [122, 123], "bfloat16": [122, 184, 199, 207, 230, 237, 244, 247, 253], "v100": [122, 172, 175], "percis": 122, "fpsixteen": 122, "param_dtyp": 122, "reduce_dtyp": 122, "buffer_dtyp": 122, "fp32_polici": 122, "grad_bf16": 122, "backward_pr": 122, "backward_prefetch": 122, "backward_post": 122, "offload": [122, 123, 219], "allgath": [122, 123, 124, 155, 247], "ram": [122, 223, 237], "1t": [123, 131], "feasibl": 123, "possess": [123, 184, 237], "fsdp_mnist": 123, "size_based_auto_wrap_polici": 123, "default_auto_wrap_polici": 123, "fully_sharded_data_parallel": [123, 214], "cpuoffload": 123, "handwritten": 123, "ddp_loss": 123, "batch_idx": [123, 129, 148, 166, 220, 221, 253], "tloss": [123, 129, 166, 221], "6f": [123, 129, 166, 221], "view_a": [123, 129, 162, 166, 221], "dataset1": [123, 129], "dataset2": [123, 129], "my_auto_wrap_polici": 123, "min_num_param": 123, "elapsed_tim": [123, 172], "110": [123, 163, 185, 231], "85": [123, 137, 219, 231], "67462890625sec": 123, "_fsdp_wrapped_modul": 123, "flattenparamswrapp": 123, "_fpw_modul": 123, "peak": [123, 129, 152, 158, 184, 254, 258], "g4dn": 123, "xlarg": 123, "seal": 123, "20000": 123, "89130859375sec": 123, "auto_wrap": 123, "66": [123, 219, 231], "cpu_offload": 123, "offload_param": 123, "dpp": 123, "ddp_mnist": 123, "77766015625sec": 123, "wanchao": [124, 215], "liang": [124, 215], "tianyu": 124, "liu": 124, "devicemesh": [124, 251], "megatron": 124, "lm": [124, 212], "sp": 124, "parallelstyl": 124, "parallelize_modul": 124, "dtensor": 124, "foward": 124, "aris": [124, 184, 191], "exceed": [124, 159], "domin": [124, 147, 171, 203, 234], "consequ": [124, 160], "ballpark": [124, 234], "flop": 124, "llm": 124, "trillion": [124, 131], "month": 124, "llama": 124, "70b": 124, "2k": 124, "llama2": 124, "1k": 124, "colwiseparallel": 124, "rowwiseparallel": 124, "sequenceparallel": 124, "rmsnormpython": 124, "preparemoduleinput": 124, "preparemoduleoutput": 124, "device_mesh": [124, 215], "init_device_mesh": [124, 215], "tp_mesh": 124, "transformerblock": 124, "swiglu": 124, "w2": 124, "silu": 124, "w1": 124, "w3": 124, "colwis": 124, "rowwis": [124, 231], "parallelize_plan": 124, "layer_tp_plan": 124, "feed_foward": 124, "feed_forward": 124, "wq": 124, "wk": 124, "wv": 124, "wo": 124, "tp_plan": 124, "draft": [124, 135], "num_head": [124, 164], "layer_id": 124, "attn_lay": 124, "n_head": 124, "n_kv_head": 124, "tok_embed": 124, "input_layout": 124, "output_layout": 124, "attention_norm": 124, "ffn_norm": 124, "desired_input_layout": 124, "yellow": 124, "loss_parallel": 124, "use_local_output": 124, "mesh_2d": [124, 215], "submesh": 124, "dp_mesh": 124, "model_tp": 124, "model_2d": 124, "use_orig_param": 124, "broadli": 125, "torchviz": [125, 130], "_save": 125, "_saved_self": 125, "_saved_oth": 125, "kept": [125, 127, 263, 272], "_saved_result": 125, "cycl": [125, 168, 207], "thumb": [125, 145, 159, 230], "pack_hook": 125, "unpack_hook": 125, "saved_tensors_hook": 125, "harmless": 125, "debat": 125, "__repr__": [125, 244], "repr": [125, 231], "save_on_cpu": 125, "152": 125, "48gb": 125, "5gb": 125, "6x": [125, 177, 223], "savetocpu": 125, "uuid": 125, "tmp_dir": 125, "uuid4": 125, "leak": 125, "tmp_dir_obj": 125, "succeed": [125, 208], "selfdeletingtempfil": 125, "__del__": 125, "temp_fil": 125, "save_on_disk_threshold": 125, "tensor_or_sctf": 125, "savetodisk": 125, "autograd_saved_tensors_hooks_tutori": 125, "david": [126, 263, 272], "eriksson": 126, "balandat": 126, "methodolog": [126, 177, 216, 220], "runnabl": [126, 144], "laptop": [126, 194], "sustain": 126, "botorch": 126, "bayesian": 126, "mnist_train_na": [126, 148], "appdef": 126, "log_path": [126, 148], "hidden_size_1": [126, 148], "hidden_size_2": [126, 148], "trial_idx": 126, "joinpath": 126, "torchx_imag": 126, "kubernet": 126, "local_cwd": 126, "torchxrunn": 126, "log_dir": [126, 169], "mkdtemp": 126, "ax_runn": 126, "tracker_bas": 126, "component_const_param": 126, "cfg": 126, "choiceparamet": 126, "parametertyp": 126, "rangeparamet": 126, "num_param": [126, 148], "pareto": 126, "frontier": 126, "weird": 126, "upper": [126, 153, 164, 263, 272], "parameter_typ": 126, "log_scal": 126, "is_ord": 126, "search_spac": 126, "parameter_constraint": 126, "outcom": [126, 200], "fetch": [126, 128, 134, 161, 162, 163, 176, 177], "proxi": [126, 189, 192], "tensorboardcurvemetr": 126, "mytensorboardmetr": 126, "prespecifi": 126, "classmethod": [126, 183, 244], "get_ids_from_tri": 126, "queryabl": 126, "is_available_while_run": 126, "curve_nam": 126, "lower_is_bett": 126, "val_acc": [126, 148], "model_num_param": 126, "multiobjectiveoptimizationconfig": 126, "94": [126, 197, 219, 238], "multiobject": 126, "objectivethreshold": 126, "optimization_config": 126, "opt_config": 126, "objective_threshold": 126, "80_000": 126, "torchx_mnist": 126, "generationstrategi": 126, "total_tri": 126, "modelbridg": 126, "dispatch_util": 126, "choose_generation_strategi": 126, "gs": [126, 257], "num_trial": 126, "scheduleropt": 126, "max_pending_tri": 126, "generation_strategi": 126, "autom": [126, 143, 147, 171, 182], "run_all_tri": 126, "report_util": 126, "exp_to_df": 126, "_pareto_frontier_scatter_2d_plotli": 126, "surrog": 126, "uncertainti": 126, "cross_valid": 126, "compute_diagnost": 126, "diagnost": 126, "interact_cross_validation_plotli": 126, "init_notebook_plot": 126, "contour": 126, "interact_contour_plotli": 126, "metric_nam": 126, "kiuk": 126, "tristan": [126, 158], "rice": [126, 158], "ax_multiobjective_nas_tutori": [126, 148], "\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u673a\u5236\u8fdb\u884c\u7ffb\u8bd1": 127, "surnam": 127, "scottish": 127, "irish": 127, "schmidhub": 127, "czech": 127, "dutch": 127, "\u8ddf\u7740\u793a\u4f8b\u5b66\u4e60": [127, 128, 165], "unreason": [127, 128], "roman": [127, 263, 272], "glob": [127, 128, 208], "findfil": [127, 128], "all_lett": [127, 128], "ascii_lett": [127, 128], "n_letter": [127, 128], "\u015blus\u00e0rski": 127, "category_lin": [127, 128], "all_categori": [127, 128], "splitext": [127, 128], "basenam": [127, 128], "n_categori": [127, 128], "italian": 127, "0s": [127, 136, 185], "line_length": 127, "lettertoindex": 127, "lettertotensor": 127, "linetotensor": 127, "jone": 127, "h2h": 127, "inithidden": [127, 128], "n_hidden": 127, "next_hidden": 127, "precomput": 127, "albert": 127, "greatest": [127, 171, 230], "categoryfromoutput": 127, "top_n": 127, "top_i": 127, "category_i": 127, "randomchoic": [127, 128], "randomtrainingexampl": [127, 128], "category_tensor": [127, 128], "line_tensor": 127, "005": [127, 160, 178], "plot_everi": [127, 128, 165], "current_loss": 127, "all_loss": [127, 128], "timesinc": [127, 128, 165], "guess_i": 127, "histor": [127, 128], "minu": [127, 168], "n_confus": 127, "111": [127, 163, 165, 176, 185, 231, 256], "cax": [127, 165], "matshow": [127, 165], "colorbar": [127, 165], "set_xticklabel": [127, 149, 165], "rotat": [127, 165, 166, 169], "set_yticklabel": [127, 165], "tick": [127, 165], "xaxi": [127, 165], "set_major_loc": [127, 165], "multipleloc": [127, 165], "yaxi": [127, 149, 165], "bright": 127, "incorrectli": [127, 198], "chines": [127, 128], "korean": 127, "greek": 127, "input_lin": 127, "n_predict": 127, "topv": [127, 128], "category_index": 127, "doveski": 127, "jackson": 127, "satoshi": 127, "bottl": [127, 144], "hazaki": 127, "japanes": 127, "5533": 127, "yournam": 127, "gender": 127, "subreddit": 127, "char_rnn_classification_tutori": 127, "russian": 128, "ru": 128, "rovakov": 128, "uantov": 128, "shavakov": 128, "ger": 128, "gerren": 128, "ereng": 128, "rosher": 128, "spa": 128, "salla": 128, "parer": 128, "allan": 128, "chi": 128, "chan": 128, "iun": 128, "\u8fdb\u884c\u59d3\u540d\u5206\u7c7b": [128, 165], "some_fil": [128, 133], "n\u00e9\u00e0l": 128, "o2o": 128, "muscl": [128, 171], "fuzz": 128, "chao": 128, "i2o": 128, "input_combin": 128, "output_combin": 128, "randomtrainingpair": 128, "abcd": 128, "categorytensor": 128, "targettensor": 128, "letter_index": 128, "input_line_tensor": 128, "target_line_tensor": 128, "0005": [128, 178], "start_lett": 128, "abc": [128, 171], "fiction": 128, "countri": 128, "citi": 128, "char_rnn_generation_tutori": 128, "adjac": [129, 262, 271], "dilat": [129, 134], "track_running_statist": 129, "denomin": 129, "nenadmarku": [129, 142], "once_differenti": 129, "convolution_backward": 129, "grad_out": [129, 130], "grad_x": [129, 130], "conv_transpose2d": [129, 207], "unsqueeze_al": 129, "batch_norm_backward": 129, "sqrt_var": 129, "d_denom": 129, "denom": 129, "unnecessarili": 129, "d_var": 129, "d_mean_dx": 129, "reassign": [129, 156], "unbiased_var": 129, "unbias": 129, "fast_mod": 129, "fusedconvbn2dfunct": 129, "conv_weight": 129, "ndim": [129, 192], "x_conv_out": 129, "fusedconvbn": 129, "in_channel": [129, 146, 153, 178], "out_channel": [129, 146, 153, 178], "exp_avg_factor": 129, "factory_kwarg": 129, "weight_shap": 129, "kaiming_uniform_": [129, 202], "convbn1": 129, "convbn2": 129, "bn1": [129, 142, 149, 157], "track_running_stat": [129, 179, 218], "bn2": 129, "ntest": [129, 166], "geforc": 129, "rtx": 129, "3070": 129, "56gb": 129, "unfus": [129, 142], "68gb": 129, "shallow": [129, 136], "peak_memory_alloc": 129, "123456": 129, "max_memory_alloc": [129, 184, 230, 258], "reset_peak_memory_stat": [129, 184], "gb": [129, 184], "custom_function_conv_bn_tutori": 129, "finit": [130, 150], "differenc": 130, "magnifi": 130, "gradgradcheck": [130, 247], "make_dot": 130, "dout": [130, 145], "ouptut": 130, "sinh": 130, "cosh": 130, "expx": 130, "expnegx": 130, "_grad_out_exp": 130, "_grad_out_negexp": 130, "sinhbad": 130, "cube_backward": 130, "cubebackward": 130, "cube_forward": 130, "cube_backward_backward": 130, "sav_grad_out": 130, "cube_backward_backward_grad_out": 130, "cube": 130, "dgrad_out": 130, "artifact": [131, 174], "reachabl": [131, 132, 135], "2xlarg": [131, 132], "hydra": 131, "slurm": [131, 132, 133], "char_dataset": 131, "gpt2_train_cfg": 131, "bucket": [131, 247, 257], "aggress": 131, "rendezv": [132, 155], "nccl_debug": 132, "nccl_socket_ifnam": 132, "eth0": 132, "zhu": [133, 144], "trigger": [133, 144, 161, 163, 247], "clarifi": 133, "filestor": 133, "tcpstore": 133, "libtmp": 133, "toymodel": [133, 149, 214, 215], "net1": [133, 149, 214, 215], "net2": [133, 149, 214, 215], "demo_bas": 133, "ddp_model": [133, 258], "run_demo": 133, "demo_fn": 133, "caution": 133, "timeout": [133, 155], "straggler": [133, 168], "unpredict": 133, "spike": [133, 158], "AND": [133, 252], "torchelast": 133, "demo_checkpoint": 133, "checkpoint_path": [133, 184, 198], "gettempdir": 133, "toympmodel": 133, "dev0": 133, "dev1": 133, "demo_model_parallel": 133, "mp_model": 133, "ddp_mp_model": 133, "n_gpu": [133, 137, 185], "elastic_ddp": 133, "rdzv_id": [133, 215], "rdzv_backend": 133, "rdzv_endpoint": [133, 215], "29400": [133, 215], "aka": [133, 145, 147, 157, 173, 174, 220, 223], "scontrol": 133, "hostnam": 133, "slurm_nodelist": 133, "srun": 133, "torchrun_script": 133, "rpc_sync": [134, 161, 162, 163, 212], "embeddingt": [134, 163, 175], "amort": [134, 159, 161, 247], "resnetbas": 134, "conv1x1": 134, "inplan": 134, "width_per_group": 134, "_lock": 134, "_block": 134, "_norm_lay": 134, "base_width": 134, "_make_lay": 134, "previous_dil": 134, "parameter_rref": [134, 163, 212], "calle": [134, 161, 162, 212], "resnetshard1": 134, "nonlinear": 134, "x_rref": 134, "to_her": 134, "resnetshard2": 134, "distresnet50": 134, "micro": [134, 176, 177], "y_rref": 134, "num_split": 134, "p1_rref": 134, "p2_rref": 134, "out_futur": 134, "z_fut": 134, "wait_al": [134, 161], "remote_param": [134, 162, 163], "worker1": [134, 212], "worker2": 134, "image_w": [134, 149, 161], "image_h": [134, 149, 161], "run_mast": 134, "one_hot_indic": [134, 149, 161], "passiv": [134, 161, 163], "num_worker_thread": [134, 212], "tik": [134, 161, 212], "tok": [134, 161, 212], "s\u00e9b": 135, "arnold": 135, "practition": [135, 192, 257], "sysadmin": 135, "coordin": [135, 166, 178, 184, 192], "pdsh": 135, "clustershel": 135, "init_process": 135, "127": [135, 179, 200], "set_start_method": 135, "ip": 135, "recv": [135, 163], "irecv": 135, "dst": 135, "req": 135, "nor": [135, 142, 179, 189], "undefin": [135, 149, 189, 190, 191], "behaviour": 135, "fanci": 135, "baidu": 135, "deepspeech": 135, "communc": 135, "new_group": [135, 215], "commut": 135, "scatter_list": 135, "gather_list": 135, "tnt": 135, "splitdataset": 135, "data_idx": 135, "datapartition": 135, "1234": 135, "data_len": 135, "part_len": 135, "partition_dataset": 135, "get_world_s": 135, "partition_s": 135, "train_set": [135, 168], "average_gradi": 135, "voil\u00e0": 135, "send_buff": 135, "recv_buff": 135, "accum": 135, "send_req": 135, "bandwidth": [135, 168, 196, 219], "subsect": [135, 262, 271], "eleg": 135, "handi": [135, 146, 169], "smi": [135, 230], "mvapich2": 135, "ipc": [135, 168], "recompil": [135, 142, 172, 198, 211], "requisit": 135, "forg": [135, 221], "openmpi": 135, "mpirun": 135, "myscript": 135, "handshak": 135, "superflu": 135, "readili": 135, "fcntl": 135, "nf": 135, "sharedfil": 135, "23456": 135, "socket": [135, 144, 176, 177, 247], "everyon": 135, "unclear": [135, 149, 173, 174], "natalia": 135, "gimelshein": 135, "carrier": [136, 159], "brought": [136, 159], "mod": [136, 142, 143, 172, 173, 174, 194, 203, 232, 244], "set_exploration_typ": [136, 159], "totensorimag": 136, "egreedymodul": 136, "lstmmodul": 136, "qvaluemodul": 136, "dqnloss": 136, "84x84": 136, "accessori": [136, 158], "stamp": 136, "is_init": 136, "tensordictprim": 136, "primer": [136, 192], "disappear": 136, "keep_dim": 136, "backbon": [136, 171], "flank": 136, "assist": [136, 215], "num_cel": [136, 159], "squeeze_output": 136, "aggregator_class": 136, "aggregator_kwarg": 136, "n_cell": 136, "tensordictmodulebas": 136, "batch_first": [136, 165], "make_tensordict_prim": 136, "action_valu": [136, 146], "qval": 136, "action_spac": [136, 146, 160], "qvalueactor": 136, "stoch_polici": 136, "exploration_modul": 136, "eps_init": 136, "set_recurrent_mod": 136, "redund": 136, "delay_valu": 136, "3e": [136, 154, 159], "longest": [136, 143], "npai": 136, "chosen_action_valu": 136, "recurrent_st": 136, "to_tensordict": 136, "non_block": 136, "step_count": [136, 159], "action_spread": 136, "dqn_with_rnn_tutori": 136, "jianyu": 137, "huang": [137, 155, 214], "jessica": [137, 157], "paraphras": 137, "mrpc": [137, 185], "dolan": 137, "brockett": 137, "2005": 137, "imbalanc": 137, "sklearn": [137, 171], "tochvis": 137, "cu101": [137, 157], "bertconfig": [137, 185], "bertforsequenceclassif": [137, 185], "glue_compute_metr": [137, 185], "glue_output_mod": [137, 185], "output_mod": [137, 185], "glue_processor": [137, 185], "processor": [137, 176, 185, 199, 207, 220, 247, 251], "glue_convert_examples_to_featur": [137, 185], "convert_examples_to_featur": [137, 185], "getlogg": [137, 148, 171, 185], "basicconfig": [137, 185], "asctim": [137, 185], "levelnam": [137, 185], "datefmt": [137, 185], "modeling_util": [137, 185], "setlevel": [137, 148, 185], "__config__": [137, 185], "parallel_info": [137, 185], "sep": [137, 193], "glue_data": [137, 185], "download_glue_data": [137, 185], "glue_dir": [137, 185], "task_nam": [137, 185], "out_dir": [137, 185], "run_glu": 137, "model_typ": [137, 184, 185], "model_name_or_path": [137, 185], "do_train": 137, "do_ev": 137, "do_lower_cas": [137, 185], "max_seq_length": [137, 185], "per_gpu_eval_batch_s": [137, 185], "per_gpu_train_batch_s": 137, "save_step": 137, "output_dir": [137, 185], "get_label": [137, 185], "overwrite_cach": [137, 185], "copyright": [137, 263, 272], "inc": 137, "apach": [137, 176, 177], "complianc": 137, "law": [137, 193], "AS": 137, "IS": 137, "warranti": 137, "OR": [137, 245], "OF": 137, "govern": [137, 161], "permiss": 137, "mnli": [137, 185], "mi": [137, 185, 265, 274], "eval_task_nam": [137, 185], "eval_outputs_dir": [137, 185], "eval_task": [137, 185], "eval_output_dir": [137, 185], "load_and_cache_exampl": [137, 185], "eval_sampl": [137, 185], "eval_dataload": [137, 185, 221], "eval_loss": 137, "nb_eval_step": [137, 185], "out_label_id": [137, 185], "distilbert": [137, 185], "token_type_id": [137, 185], "xlnet": [137, 185], "roberta": [137, 185], "segment_id": [137, 185], "tmp_eval_loss": 137, "regress": [137, 166, 185, 245], "output_eval_fil": [137, 185], "eval_result": [137, 185], "cached_features_fil": [137, 185], "cached_": [137, 185], "get_dev_exampl": [137, 185], "get_train_exampl": [137, 185], "pad_on_left": 137, "convert_tokens_to_id": 137, "pad_token_segment_id": 137, "all_input_id": [137, 185], "all_attention_mask": [137, 185], "all_token_type_id": [137, 185], "all_label": [137, 185], "438": [137, 185], "181": [137, 231], "30522": 137, "eval_start_tim": [137, 185], "eval_end_tim": [137, 185], "eval_duration_tim": [137, 185], "408": [137, 177], "prec": [137, 147], "9019": 137, "902": [137, 185], "8788": 137, "8956": 137, "asymmetr": [137, 200], "openmp": [137, 176, 207, 226], "tbb": 137, "ids_tensor": [137, 185], "dummy_input": [137, 185, 224, 225, 252, 256], "traced_model": [137, 142, 185, 247], "bert_traced_eager_qu": 137, "loaded_quantized_model": [137, 182, 197], "implic": [137, 185], "devlin": 137, "lee": 137, "toutanova": 137, "zafrir": 137, "boudoukh": 137, "izsak": 137, "wasserblat": 137, "2019": 137, "q8bert": 137, "8bit": 137, "tradition": [138, 202], "simplemlp": 138, "pretend": [138, 154], "minibatch": [138, 154], "num_model": [138, 154], "6400": 138, "predictions_diff_minibatch_loop": 138, "predictions2": 138, "stack_module_st": 138, "functional_cal": [138, 141, 150, 154], "base_model": 138, "fmodel": 138, "predictions1_vmap": 138, "in_dim": [138, 145, 154, 205, 234], "predictions2_vmap": 138, "without_vmap": [138, 145, 154], "with_vmap": [138, 145, 154], "avinash": 139, "sajjanshetti": 139, "refresh": [139, 169], "endpoint": [139, 213, 251], "class_id": [139, 213], "n02124075": 139, "egyptian_cat": [139, 213], "jsonifi": [139, 213], "image_net_xxx": 139, "transform_imag": [139, 213], "image_byt": 139, "my_transform": [139, 213], "bytesio": [139, 229], "densenet121": [139, 147, 172, 213], "get_predict": [139, 213], "y_hat": [139, 213], "predicted_idx": 139, "img_byt": 139, "TO": [139, 252], "flask_env": 139, "flask_app": [139, 213], "resp": 139, "recogn": [139, 155, 200], "ui": [139, 158, 245, 251, 261, 270], "streamer": 139, "queue": [139, 247], "flask_rest_api_tutori": 139, "forced_alignment_tutori": 140, "incomplet": 141, "eagerli": [141, 152, 174], "primal": [141, 145, 262, 271], "dual": [141, 262, 271], "forward_ad": 141, "fwad": 141, "dual_level": 141, "make_du": 141, "dual_input": 141, "unpack_du": 141, "dual_input_alt": 141, "plain_tensor": 141, "dual_output": 141, "namedtupl": [141, 160], "delattr": 141, "setattr": [141, 142, 147], "fresh": [141, 230], "dual_param": 141, "jvp2": 141, "gi": 141, "check_forward_ad": 141, "check_backward_ad": 141, "check_undefined_grad": 141, "check_batched_grad": 141, "functorch": [141, 173, 174], "downsid": 141, "ft": 141, "primal0": 141, "tangent0": 141, "primal1": 141, "tangent1": 141, "primal_out": 141, "tangent_out": 141, "new_fn": 141, "reformul": [141, 150], "make_functional_with_buff": 141, "analog": [141, 191, 192], "consolid": [141, 161, 198], "func_params_onli": 141, "jvp_out": 141, "dual_numb": 141, "forward_ad_usag": 141, "horac": 142, "wrappedbatchnorm": 142, "symbolic_trac": [142, 143, 172], "bake": 142, "fuse_conv_bn_ev": 142, "batch_norm": [142, 238], "fused_conv": 142, "fuse_conv_bn_weight": 142, "running_var": [142, 198], "conv_w": 142, "conv_b": 142, "bn_rm": 142, "bn_rv": 142, "bn_ep": 142, "bn_w": 142, "bn_b": 142, "bn_var_rsqrt": 142, "rsqrt": 142, "_parent_nam": 142, "qualnam": 142, "atom": 142, "baz": 142, "rsplit": 142, "replace_node_modul": 142, "new_modul": 142, "parent_nam": 142, "graphmodul": [142, 143, 172, 173, 174, 179], "fx_model": 142, "call_modul": 142, "replace_all_uses_with": 142, "erase_nod": 142, "lint": 142, "simplif": [142, 234], "fused_model": 142, "rn18": [142, 143], "fused_rn18": 142, "jit_rn18": 142, "conclus": 142, "tracker": [142, 143], "fx_conv_bn_fus": 142, "nicer": 143, "instrument": [143, 251], "tabul": [143, 172], "traced_rn18": 143, "ca": 143, "profilinginterpret": 143, "gm": [143, 172, 200], "total_runtime_sec": 143, "runtimes_sec": 143, "intercept": [143, 177], "t_start": 143, "return_v": 143, "t_end": 143, "run_nod": 143, "setdefault": 143, "should_sort": 143, "node_summari": 143, "mean_total_runtim": 143, "mean_runtim": 143, "pct_total": 143, "pct": 143, "clock": 143, "interp": 143, "51393": 143, "fx_profiling_tutori": 143, "xuan": 144, "liao": 144, "haozh": 144, "jiong": [144, 176, 177, 186, 199, 200], "gong": [144, 176, 177, 186, 199, 200], "weihan": 144, "intricaci": 144, "troubleshoot": 144, "pinpoint": [144, 177], "foo1": 144, "x1": [144, 150, 178], "x2": [144, 150], "8390": 144, "compiled_foo1": 144, "neg1": 144, "torch_compile_debug": 144, "_inductor": [144, 174, 184, 186, 199], "model___20": 144, "torchinductor_root": 144, "rx": 144, "crxfi2ybd7yp5sbj2pnhw33wfhtdw7wumvrobyp5sjvdui5ktjc2": 144, "fx_graph_runn": 144, "fx_graph_transform": 144, "ir_post_fus": 144, "ir_pre_fus": 144, "output_cod": [144, 255], "forward1": 144, "arg0_1": [144, 173, 186], "arg1_1": [144, 173], "codecach": 144, "asynccompil": 144, "async_compil": 144, "cpp_fused_cat_maximum_neg_0": 144, "gv": 144, "cgv6n5aotqjo5w4vknjibhengeycuattfto532hkxpozszcgxr3x": 144, "in_ptr0": [144, 254], "in_ptr1": [144, 254], "out_ptr0": 144, "pragma": 144, "ivdep": 144, "i0": 144, "static_cast": 144, "0l": 144, "8390l": 144, "1l": [144, 186], "i1": 144, "8l": 144, "tmp0": 144, "tmp1": 144, "tmp2": 144, "tmp3": 144, "max_propagate_nan": 144, "dynamo": [144, 173, 174, 186, 255], "aot_eag": 144, "aot": [144, 254], "neg2": 144, "exc": [144, 173], "backendcompilerfail": 144, "cppcompileerror": 144, "xg": 144, "cxga5tk3b4lkwoxyigrtocjp5s7vc5cg2ikuscf6bk6pjqip2bhx": 144, "deduct": 144, "substitut": [144, 145, 152, 200, 262, 271], "deduc": 144, "buf0": [144, 186], "schedulernod": 144, "computedbuff": 144, "memorydep": 144, "c0": 144, "67120": 144, "unmet_depend": 144, "met_depend": 144, "nodeus": 144, "can_inplac": 144, "buf0_loop_bodi": 144, "var_rang": 144, "z0": 144, "index0": 144, "index1": 144, "get_index": 144, "get_index_1": 144, "load_1": 144, "get_index_2": 144, "silent": [144, 172, 199, 244], "minifi": 144, "dead": 144, "unus": [144, 155], "minif": 144, "foo2": 144, "expected_result": 144, "compiled_foo2": 144, "actual_result": 144, "neg3": 144, "tol": 144, "test_script": 144, "assertionerror": 144, "torchdynamo_repro_aft": 144, "torchdynamo_repro_level": 144, "forward2": 144, "conduct": [144, 155, 184], "mobilebertforquestionansw": 144, "xeon": [144, 147, 176, 199, 207, 220], "platinum": [144, 176], "8358": 144, "60ghz": 144, "kmp_blocktim": [144, 247], "kmp_set": 144, "kmp_affin": [144, 247], "compact": [144, 209, 247], "ld_preload": [144, 247], "conda_prefix": [144, 231], "dirnam": [144, 155, 226], "libiomp5": [144, 247], "libjemalloc": 144, "malloc_conf": 144, "oversize_threshold": 144, "background_thread": 144, "metadata_thp": 144, "dirty_decay_m": 144, "muzzy_decay_m": 144, "numactl": [144, 247], "bench": [144, 176, 177], "csarron": 144, "mobilebert": 144, "seq_length": [144, 220], "input_dict": 144, "compiled_model": [144, 164], "num_it": [144, 159], "warmup": [144, 168, 194, 203, 210, 211, 219, 223, 238], "eager_t": 144, "inductor_t": 144, "1023553796113": 144, "339": 144, "95180135127157": 144, "359459053287382": 144, "355x": 144, "enable_kernel_profil": 144, "profileract": [144, 164, 219, 238], "result_dir": 144, "prof_trac": 144, "my_schedul": [144, 238], "skip_first": [144, 238], "trace_handl": [144, 238], "step_num": [144, 238], "on_trace_readi": [144, 168, 238], "370": 144, "814m": 144, "362": 144, "161": [144, 218], "276m": 144, "363": 144, "416m": 144, "488": [144, 231], "154m": 144, "194": 144, "clamp_min": [144, 219], "444m": 144, "258m": [144, 219], "810": 144, "920m": 144, "447m": 144, "_softmax": 144, "087m": 144, "376": [144, 173, 187], "888m": 144, "77": 144, "430m": 144, "502m": 144, "161m": 144, "850": 144, "377m": 144, "386": [144, 163, 193], "index_select": 144, "000u": [144, 238], "986": 144, "420m": 144, "703": 144, "656": [144, 258], "963": 144, "864m": 144, "_mkl_linear": 144, "231": [144, 231, 238], "573m": [144, 238], "992m": 144, "336": [144, 238], "642m": 144, "graph_0_cpp_fused_constant_pad_nd_embedding_0": 144, "915": 144, "911": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_151": 144, "901": [144, 185], "graph_0_cpp_fused__mkl_linear_add_mul_relu_226": 144, "899": [144, 256], "graph_0_cpp_fused__mkl_linear_add_mul_relu_361": 144, "898": [144, 256], "graph_0_cpp_fused__mkl_linear_add_mul_relu_121": 144, "895": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_31": 144, "893": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_76": 144, "892": [144, 158, 231, 256], "graph_0_cpp_fused__mkl_linear_add_mul_relu_256": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_346": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_241": 144, "891": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_316": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_91": 144, "890": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_106": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_211": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_61": 144, "889": 144, "graph_0_cpp_fused__mkl_linear_add_mul_relu_286": 144, "graph_0_cpp_fused_": 144, "63x": 144, "cblas_sgemm_comput": 144, "339m": 144, "94x": 144, "cpp_fused__mkl_linear_add_mul_relu_151": 144, "clrlgu27q4ggd472umdzwsu6qcpqxcuusjxqvx2hwitjbujiiz7z": 144, "in_out_ptr0": 144, "in_ptr2": 144, "in_ptr3": 144, "arrayref": 144, "omp": [144, 176], "num_thread": [144, 231, 246], "16384l": 144, "512l": 144, "loadu": 144, "tmp5": 144, "tmp7": 144, "tmp4": 144, "tmp6": 144, "tmp8": 144, "neck": 144, "arg_0": 144, "arg_1": 144, "arg_2": 144, "arg_3": 144, "arg_4": 144, "add_0": 144, "add_1": 144, "mul_1": 144, "add_2": 144, "16384": [144, 231], "inductor_func": 144, "780875144992024": 144, "9588955780491233": 144, "0286805751604735": 144, "smallest": [144, 156], "solid": 144, "analyt": [144, 260, 269], "hotspot": [144, 176, 177], "phenomenon": 144, "inductor_debug_cpu": 144, "jax": [145, 150, 205], "compute_jac": 145, "xp": 145, "jacobian_row": [145, 205], "unit_vector": 145, "rid": [145, 216], "vjp_fn": [145, 150], "ft_jacobian": 145, "argnum": 145, "millisecond": [145, 155, 187, 223, 247], "get_perf": [145, 154], "first_descriptor": [145, 154], "second_descriptor": [145, 154], "final_gain": [145, 154], "no_vmap_tim": [145, 154], "with_vmap_tim": [145, 154], "ft_jac_weight": 145, "ft_jac_bia": 145, "rigor": [145, 234], "taller": 145, "din": 145, "using_fwd": 145, "using_bwd": 145, "jacfwd_tim": 145, "jacrev_tim": 145, "hessiani": 145, "overwhelm": 145, "hess_api": 145, "hess_fwdfwd": 145, "hess_revrev": 145, "compute_batch_jacobian": 145, "batch_jacobian0": 145, "predict_with_output_sum": 145, "batch_jacobian1": 145, "movedim": 145, "compute_batch_hessian": 145, "batch_hess": 145, "hvp_revrev": 145, "result_hvp_revrev": 145, "jacobians_hessian": 145, "yuansong": 146, "feng": [146, 155], "steven": 146, "guo": 146, "cheatsheet": 146, "companion": 146, "bro": 146, "dequ": [146, 160], "framestack": 146, "ne": [146, 165, 173, 238], "nes_pi": 146, "joypadspac": 146, "gym_super_mario_bro": 146, "tube": 146, "mushroom": 146, "supermariobro": 146, "new_step_api": 146, "apply_api_compat": 146, "next_stat": [146, 160], "trunc": 146, "240": [146, 163, 238], "pipe": 146, "sky": 146, "grayscaleobserv": 146, "resizeobserv": 146, "skipfram": 146, "movement": 146, "_skip": 146, "total_reward": 146, "trunk": 146, "observationwrapp": 146, "obs_shap": 146, "observation_spac": 146, "permute_orient": 146, "antialia": 146, "num_stack": 146, "exploration_r": 146, "marionet": 146, "state_dim": 146, "dnn": [146, 238], "exploration_rate_decai": 146, "99999975": 146, "exploration_rate_min": 146, "curr_step": 146, "5e5": 146, "lazyfram": 146, "action_idx": 146, "__array__": 146, "first_if_tupl": 146, "ddqn": 146, "output_dim": 146, "__build_cnn": 146, "q_target": 146, "3136": 146, "_e": 146, "argmax_": 146, "td_target": 146, "td_estim": 146, "current_q": 146, "q_onlin": 146, "next_state_q": 146, "best_act": 146, "next_q": 146, "td_t": 146, "td_e": 146, "leftarrow": 146, "nabla": [146, 262, 271], "00025": 146, "update_q_onlin": 146, "sync_q_target": 146, "save_path": 146, "mario_net_": 146, "chkpt": 146, "burnin": 146, "1e4": 146, "learn_everi": 146, "sync_everi": 146, "td_est": 146, "td_tgt": 146, "metriclogg": 146, "save_log": 146, "episod": [146, 160, 161, 163], "meanreward": 146, "meanlength": 146, "meanloss": 146, "meanqvalu": 146, "timedelta": 146, "ep_rewards_plot": 146, "reward_plot": 146, "ep_lengths_plot": 146, "length_plot": 146, "ep_avg_losses_plot": 146, "loss_plot": 146, "ep_avg_qs_plot": 146, "q_plot": 146, "ep_reward": [146, 161, 163], "ep_length": 146, "ep_avg_loss": 146, "ep_avg_q": 146, "moving_avg_ep_reward": 146, "moving_avg_ep_length": 146, "moving_avg_ep_avg_loss": 146, "moving_avg_ep_avg_q": 146, "init_episod": 146, "record_tim": 146, "log_step": 146, "curr_ep_reward": 146, "curr_ep_length": 146, "curr_ep_loss": 146, "curr_ep_q": 146, "curr_ep_loss_length": 146, "log_episod": 146, "mean_ep_reward": 146, "mean_ep_length": 146, "mean_ep_loss": 146, "mean_ep_q": 146, "last_record_tim": 146, "time_since_last_record": 146, "8d": 146, "clf": [146, 160], "moving_avg_": 146, "_plot": 146, "flag_get": 146, "mario_rl_tutori": 146, "vitali": 147, "fedyunin": 147, "densest": 147, "4x4": 147, "10x3x16x16": 147, "memory_format": [147, 194, 199, 206, 207, 216, 218, 220, 223], "channels_last": [147, 177, 194, 199, 207, 218, 220, 223], "contiguous_format": 147, "minor": [147, 157, 163, 169, 220, 221], "ambigu": [147, 190, 191], "n1hw": 147, "contrari": [147, 156], "restrid": 147, "special_x": 147, "unintend": 147, "7603": 147, "apex": 147, "main_amp": 147, "resnet50": [147, 149, 158, 161, 176, 177, 220, 247, 253], "o2": 147, "opt_level": 147, "keep_batchnorm_fp32": 147, "nonetyp": 147, "loss_scal": 147, "cast_model_typ": 147, "patch_torch_funct": 147, "master_weight": 147, "125": [147, 238], "866": 147, "230": [147, 163, 171], "949": 147, "6735125184": 147, "6735": 147, "259": 147, "562": 147, "773": 147, "481": 147, "355": 147, "693": 147, "6968704462": 147, "6852": 147, "55": [147, 176, 197, 204, 231], "58": [147, 201, 221], "258": [147, 262, 271], "461": 147, "775": 147, "089": 147, "433": 147, "965": 147, "7877287269": 147, "7194": 147, "833": 147, "771": 147, "710": 147, "487": 147, "8285319805": 147, "7467": 147, "260": [147, 163], "380": 147, "770": 147, "090": 147, "525": 147, "908": 147, "7370464802": 147, "7447": 147, "360": 147, "623": 147, "555": 147, "728": 147, "7592862844": 147, "7472": 147, "917": 147, "345": [147, 178], "774": 147, "746": [147, 231], "115": [147, 185, 219], "9698858261": 147, "9218": 147, "324": 147, "597": 147, "659": 147, "2505953312": 147, "0879": 147, "767": [147, 223], "785": 147, "7579724789": 147, "7580": 147, "198": 147, "482": 147, "135": [147, 158, 231], "414": 147, "716": [147, 219, 231], "7007197738": 147, "7293": 147, "250": [147, 163, 238], "387": 147, "1010": 147, "516": 147, "7113101482": 147, "7233": 147, "667": 147, "197": 147, "340": 147, "1013": 147, "023": 147, "588": 147, "333": 147, "8943189979": 147, "7661": 147, "541": 147, "7113249302": 147, "9551": 147, "1011": 147, "163": 147, "683": 147, "574": 147, "8537774086": 147, "7716": 147, "279": 147, "453": 147, "7595844269": 147, "3413": 147, "429": 147, "827": 147, "743": [147, 173], "883": 147, "8196096420": 147, "4011": 147, "volta": [147, 230, 247], "mnasnet0_5": 147, "mnasnet0_75": 147, "mnasnet1_0": 147, "mnasnet1_3": 147, "mobilenet_v2": [147, 158, 178, 187, 188, 194, 206, 223, 224, 225, 228], "resnet152": 147, "resnet34": 147, "resnext50_32x4d": 147, "shufflenet_v2_x0_5": [147, 158], "shufflenet_v2_x1_0": [147, 158], "shufflenet_v2_x1_5": [147, 158], "shufflenet_v2_x2_0": [147, 158], "squeezenet1_0": 147, "squeezenet1_1": 147, "vgg11": 147, "vgg11_bn": 147, "vgg13": 147, "vgg13_bn": 147, "vgg16_bn": 147, "vgg19_bn": 147, "wide_resnet101_2": 147, "wide_resnet50_2": 147, "ic": 147, "lake": [147, 220], "densenet161": 147, "densenet169": 147, "googlenet": [147, 158, 228], "inception_v3": [147, 158], "resnext101_32x8d": [147, 158], "spite": 147, "contains_cl": 147, "print_input": 147, "check_wrapp": 147, "check_cl": 147, "was_cl": 147, "old_attr": 147, "exclude_funct": 147, "has_nam": 147, "nc11": 147, "memory_format_tutori": 147, "pytorch_lightn": 148, "lightningmodul": 148, "pl_logger": 148, "torchmetr": 148, "multiclass_accuraci": 148, "path_dataset": 148, "mnistmodel": 148, "tunabl": 148, "hidden_lay": [148, 178], "validation_step": 148, "prog_bar": 148, "configure_optim": 148, "prepare_data": 148, "mnist_train": 148, "mnist_val": 148, "run_training_job": 148, "mnist_model": 148, "enable_progress_bar": 148, "default_root_dir": 148, "tensorboardlogg": 148, "train_tim": 148, "log_metr": 148, "capture_output": 148, "val_accuraci": 148, "stitch": [149, 161, 162], "modelparallelresnet50": 149, "seq1": 149, "maxpool": [149, 157, 200], "seq2": 149, "layer4": [149, 157], "avgpool": [149, 157], "deterior": 149, "quantit": 149, "switch_backend": [149, 165], "num_repeat": 149, "mp_run_tim": 149, "mp_mean": 149, "mp_std": 149, "rn_run_tim": 149, "rn_mean": 149, "rn_std": 149, "fig_nam": 149, "yerr": 149, "center": [149, 160, 168, 229, 247], "ecolor": 149, "capsiz": 149, "set_ylabel": 149, "set_xtick": [149, 157], "mp_vs_rn": 149, "idl": [149, 161, 168], "pipelineparallelresnet50": 149, "split_siz": 149, "s_next": 149, "s_prev": 149, "pp_run_tim": 149, "pp_mean": 149, "pp_std": 149, "mp_vs_rn_vs_pp": 149, "destin": [149, 163, 212], "errorbar": 149, "ro": 149, "set_xlabel": 149, "split_size_tradeoff": 149, "prev": 149, "model_parallel_tutori": 149, "jacrev": 150, "21632": 150, "x_test": 150, "fnet_singl": 150, "j_": 150, "empirical_ntk_jacobian_contract": 150, "jac1": 150, "jac2": 150, "einsum": 150, "naf": 150, "mbf": 150, "nmab": 150, "j1": 150, "j2": 150, "diagon": 150, "einsum_expr": 150, "maf": 150, "nma": 150, "asymptot": 150, "i_o": 150, "i_": 150, "e_o": 150, "textrm": 150, "_o": 150, "empirical_ntk_ntk_vp": 150, "get_ntk": 150, "func_x1": 150, "func_x2": 150, "get_ntk_slic": 150, "nmkk": 150, "nmk": 150, "tensorfloat": 150, "sacrific": [150, 194], "allow_tf32": 150, "result_from_jacobian_contract": 150, "result_from_ntk_vp": 150, "luck": [150, 152], "neural_tangent_kernel": 150, "deprec": [151, 168, 180, 217], "homepag": [151, 180], "ooz": 152, "_might_": 152, "vit_l_16": 152, "2p": 152, "_record_memory_histori": 152, "_snapshot": 152, "memory_viz": 152, "devot": 152, "bat": 152, "2gb": [152, 158], "6gb": 152, "foreach": 152, "reveal": [152, 164, 172, 173, 229], "silver": 152, "bullet": 152, "sizabl": 152, "tantamount": 152, "lora": 152, "unlock": [152, 182, 185, 216], "optimizer_dict": 152, "optimizer_hook": 152, "neat": 152, "lrschedul": [152, 251], "convinc": 152, "slate": 152, "bwd": 152, "likewis": 152, "woohoo": 152, "apart": 152, "shrunk": 152, "0gb": 152, "optimizer_step_in_backward_tutori": 152, "lezcano": 153, "surprisingli": 153, "ill": 153, "singular": [153, 164], "frobeniu": 153, "spectral": 153, "lipschitz": 153, "x\u1d40": 153, "triangular": 153, "linearsymmetr": 153, "n_featur": 153, "reimplement": [153, 156], "register_parametr": 153, "skew": [153, 168], "unparametr": 153, "nparametr": 153, "moduledict": [153, 201], "parametrizationlist": [153, 201], "weight_orig": [153, 156], "noisyparametr": 153, "caylei": 153, "cayleymap": 153, "linalg": 153, "spd": 153, "matrixexponenti": 153, "matrix_exp": 153, "layer_orthogon": 153, "layer_spd": 153, "eigvalsh": 153, "right_invers": 153, "cayley_transform": 153, "matrix_map": 153, "neg_": 153, "pruningparametr": 153, "p_drop": 153, "full_lik": [153, 189], "bernoulli": 153, "niniti": 153, "remove_parametr": 153, "unconstrain": [153, 173, 174], "parametri": 153, "leave_parametr": 153, "privaci": [154, 156], "simplecnn": 154, "compute_grad": 154, "compute_sample_grad": 154, "sample_grad": 154, "per_sample_grad": 154, "named_buff": [154, 156], "compute_loss": 154, "ft_compute_grad": 154, "ft_compute_sample_grad": 154, "ft_per_sample_grad": 154, "25x": [154, 171, 201], "second_r": 154, "first_r": 154, "opacu": 154, "tian": 155, "processgroupnccl": 155, "processgroupgloo": 155, "processgroupmpi": 155, "ucc": 155, "oneccl": [155, 247], "trainum": 155, "emerg": 155, "backenddummi": 155, "chrono": 155, "allgatheropt": 155, "allreduceopt": 155, "workdummi": 155, "optyp": 155, "recvanysourc": 155, "future_": 155, "iscomplet": 155, "issuccess": 155, "kunsettimeout": 155, "virtual": [155, 237], "getfutur": 155, "outputtensorvec": 155, "listtyp": 155, "tensortyp": 155, "markcomplet": 155, "createbackenddummi": 155, "backenddummyconstructor": 155, "__attribute__": 155, "register_backend": 155, "cpp_function": [155, 231], "libraries_dir": 155, "dummy_collect": 155, "michela": 156, "paganini": 156, "biolog": 156, "batteri": 156, "lucki": 156, "subnetwork": 156, "lotteri": 156, "ticket": 156, "destruct": [156, 177], "0a0": [156, 188, 206], "8e8a5e0": 156, "lecun": 156, "1998": 156, "nelement": 156, "unprun": 156, "basepruningmethod": 156, "adequ": [156, 159], "random_unstructur": 156, "_orig": 156, "intact": [156, 161, 244], "weight_mask": 156, "_mask": 156, "forward_pre_hook": 156, "_forward_pre_hook": 156, "l1_unstructur": 156, "bias_orig": 156, "bias_mask": 156, "pruningcontain": 156, "compute_mask": 156, "ln_structur": 156, "_tensor_nam": 156, "perman": 156, "undo": 156, "new_model": [156, 157], "global_unstructur": 156, "parameters_to_prun": 156, "pruning_method": 156, "l1unstructur": 156, "induc": 156, "apply_mask": 156, "shouldn": 156, "unstructur": 156, "preprun": 156, "pruning_typ": 156, "foobarpruningmethod": 156, "default_mask": 156, "foobar_unstructur": 156, "pruning_tutori": 156, "zafar": 157, "takhirov": 157, "initializaion": 157, "unfreez": 157, "set_ytick": 157, "nrow": 157, "best_model_wt": 157, "current_row": 157, "current_col": 157, "lbl": 157, "jdx": 157, "model_f": 157, "isol": 157, "create_combined_model": 157, "model_fe_featur": 157, "new_head": 157, "default_qat_qconfig": 157, "model_ft_tun": 157, "model_quantized_and_train": 157, "heat": 158, "sink": [158, 262, 271], "5v": 158, "sd": 158, "card": [158, 164], "8gb": 158, "arm": [158, 219, 228], "64bit": 158, "aarch64": 158, "arm64": [158, 188, 204, 206, 218, 223], "raspberrypi": 158, "raspios_arm64": 158, "rpi": 158, "internet": 158, "sdcard": 158, "start_x": 158, "128m": 158, "gpu_mem": 158, "commment": 158, "camera_auto_detect": 158, "v4l2": 158, "reboot": 158, "video4linux2": 158, "video0": 158, "picamera": 158, "36fp": 158, "30fp": 158, "framer": 158, "cv2": 158, "cap": [158, 159, 168], "videocaptur": 158, "cap_prop_frame_width": 158, "cap_prop_frame_height": 158, "cap_prop_fp": 158, "bgr": 158, "chose": [158, 230], "mobilenet_v3_larg": 158, "109": 158, "233": [158, 163], "885": [158, 219], "204": [158, 219, 231], "195": [158, 163], "132": 158, "82": [158, 197, 219], "prequant": 158, "20fp": 158, "cap_v4l2": 158, "last_log": 158, "frame_count": 158, "htop": [158, 176], "mug": 158, "allevi": 158, "repetit": [159, 231], "maximis": 159, "clipppoloss": 159, "theta_k": 159, "pi_": 159, "shift": [159, 262, 271], "lingua": 159, "franca": 159, "normalparamextractor": 159, "replaybuff": 159, "samplerwithoutreplac": 159, "lazytensorstorag": 159, "tanhnorm": 159, "max_grad_norm": 159, "sub_batch_s": 159, "inner": [159, 177, 263, 272], "cardin": 159, "clip_epsilon": 159, "entropy_ep": 159, "deepmind": [159, 166], "interchang": 159, "panel": [159, 168], "inverteddoublependulum": 159, "transmit": [159, 262, 271], "gymwrapp": 159, "loos": 159, "supplementari": 159, "told": 159, "stringent": 159, "mu_": 159, "d_ob": 159, "d_action": 159, "mu": [159, 171, 262, 271], "policy_modul": 159, "distribution_kwarg": 159, "return_log_prob": 159, "discount": [159, 160, 161], "value_net": 159, "value_modul": 159, "datacollector": 159, "multisyncdatacollector": 159, "refil": [159, 223], "max_siz": 159, "value_target": 159, "advantage_modul": 159, "average_ga": 159, "critic_network": 159, "entropy_bonu": 159, "entropy_coef": 159, "critic_coef": 159, "loss_critic_typ": 159, "smooth_l1": 159, "eval_str": 159, "tensordict_data": 159, "data_view": 159, "subdata": 159, "loss_object": 159, "loss_crit": 159, "loss_entropi": 159, "cum_reward_str": 159, "stepcount_str": 159, "lr_str": 159, "horizon": 159, "eval_rollout": 159, "videorecord": 159, "reinforcement_ppo": 159, "tower": 160, "cart": 160, "pole": 160, "attach": [160, 195, 200, 209, 213], "upright": 160, "classic_control": 160, "decorrel": 160, "replaymemori": 160, "cyclic": 160, "formul": 160, "r_": 160, "t_0": 160, "r_t": 160, "uncertain": 160, "tempor": 160, "max_a": 160, "obei": 160, "bellman": 160, "huber": 160, "noisi": [160, 231, 246], "mathcal": 160, "le": [160, 165], "mathrm": 160, "n_observ": 160, "n_action": 160, "left0exp": 160, "right0exp": 160, "select_act": [160, 161, 163], "eps_start": 160, "eps_end": 160, "eps_decai": 160, "plot_dur": 160, "underneath": 160, "policy_net": 160, "target_net": 160, "amsgrad": 160, "steps_don": 160, "eps_threshold": 160, "episode_dur": 160, "show_result": 160, "durations_t": 160, "unfold": [160, 165], "optimize_model": 160, "s_t": 160, "a_t": 160, "19343": 160, "3343043": 160, "non_final_mask": 160, "non_final_next_st": 160, "state_batch": 160, "action_batch": 160, "reward_batch": 160, "next_state_valu": 160, "expected_state_action_valu": 160, "clip_grad_value_": 160, "num_episod": [160, 161], "i_episod": [160, 161, 163], "\u03b8": 160, "\u03c4": 160, "target_net_state_dict": 160, "policy_net_state_dict": 160, "reinforcement_q_learn": 160, "unblock": 161, "callback": 161, "update_and_fetch_model": 161, "future_model": 161, "notifi": [161, 168], "batch_update_s": 161, "batchupdateparameterserv": 161, "curr_update_s": 161, "ps_rref": 161, "setti": 161, "set_result": 161, "get_worker_info": [161, 163], "543": 161, "affine1": [161, 163], "affine2": [161, 163], "action_scor": [161, 163], "select_action_batch": 161, "run_episod": [161, 163], "agent_rref": [161, 163], "start_step": 161, "curr_reward": 161, "saved_log_prob": [161, 163], "rob": 161, "ob_rref": [161, 163], "running_reward": [161, 163], "ob_rank": [161, 163], "ob_info": [161, 163], "observer_nam": [161, 163], "future_act": 161, "pending_st": 161, "select_acion": 161, "ob_id": [161, 163], "oberv": [161, 163], "policy_loss": [161, 163], "n_episod": 161, "print_log": 161, "rank0": [161, 163], "agent_nam": [161, 163], "tlast": [161, 163], "taverag": [161, 163], "next_devic": 162, "call_method": 162, "remote_method": 162, "foo_inst": 162, "parameterserv": 162, "input_devic": 162, "intention": [162, 163, 212], "miscellan": 162, "get_dist_gradi": 162, "get_gradi": 162, "get_param_rref": 162, "cid": 162, "cpu_grad": 162, "k_cpu": 162, "v_cpu": 162, "paramt": 162, "param_rref": [162, 163], "run_parameter_serv": 162, "param_serv": 162, "global_lock": 162, "get_parameter_serv": 162, "parameter_serv": 162, "offlin": 162, "trainernet": 162, "param_server_rref": 162, "get_global_param_rref": 162, "paramat": 162, "run_training_loop": 162, "nueral": 162, "get_accuraci": 162, "correct_sum": 162, "trainer_": 162, "traffic": [162, 176], "listen": [162, 213], "subprocess": [162, 247], "rpc_parameter_serv": 162, "solver": 163, "formatter_class": 163, "argumentdefaultshelpformatt": 163, "report_reward": 163, "_max_episode_step": 163, "finfo": 163, "reward_threshold": 163, "finish_episod": 163, "min_reward": 163, "distinguish": [163, 169], "surpass": 163, "ctrl": 163, "131": 163, "130": [163, 219], "137": 163, "140": 163, "104": 163, "170": [163, 178], "126": [163, 173], "180": [163, 173, 174, 219, 231], "213": 163, "322": [163, 219], "165": 163, "272": [163, 219], "210": 163, "168": [163, 173], "184": [163, 185], "208": [163, 171, 229], "270": [163, 171], "405": 163, "280": 163, "290": 163, "464": 163, "3163778435275": 163, "vehicl": 163, "rnnmodel": 163, "emb_table_rref": 163, "decoder_rref": 163, "_remote_method": 163, "rremot": 163, "_parameter_rref": 163, "run_train": 163, "nindic": 163, "driss": 164, "guessou": 164, "flashattent": 164, "benchmark_torch_function_in_microsecond": [164, 210], "max_sequence_len": 164, "embed_dimens": 164, "sdpbackend": 164, "sdpa_kernel": 164, "math_tim": 164, "flash_attent": 164, "flash_tim": 164, "flash": [164, 184], "efficient_attent": 164, "efficient_tim": 164, "efficientattent": 164, "andrej": 164, "karpathi": 164, "nanogpt": 164, "causalselfattent": 164, "is_caus": [164, 193], "c_attn": 164, "c_proj": 164, "resid_dropout": 164, "query_project": 164, "head_dim": 164, "attn_mask": 164, "dropout_p": [164, 165, 193], "heads_per_dim": 164, "generate_rand_batch": 164, "pad_percentag": 164, "seq_len_list": 164, "gauss": 164, "nested_tensor": [164, 193], "random_nt": 164, "random_dens": 164, "nt": [164, 193], "166": 164, "616": 164, "726": 164, "amaz": 164, "record_shap": [164, 168, 238], "compili": 164, "cuda_time_tot": [164, 238], "compiled_causal_attention_trac": 164, "concentr": 164, "6090": 164, "49m": 164, "3273": 164, "17m": 164, "commit": [164, 196, 207], "ae3a8d5": 164, "causal_upper_left": 164, "causal_lower_right": 164, "sequence_length_q": 164, "sequence_length_kv": 164, "upper_left_bia": 164, "lower_right_bia": 164, "issubclass": 164, "causalbia": 164, "corner": 164, "attn_scor": 164, "out_upper_left": 164, "out_lower_right": 164, "out_is_caus": 164, "compiled_sdpa": 164, "scaled_dot_product_attention_tutori": 164, "french": 165, "il": 165, "est": [165, 168, 265, 274], "peindr": 165, "tableau": 165, "paint": 165, "pourquoi": 165, "pa": 165, "essay": 165, "vin": 165, "delicieux": 165, "delici": 165, "wine": 165, "poet": 165, "romancier": 165, "novelist": 165, "vou": 165, "trop": 165, "maigr": 165, "skinni": 165, "condens": [165, 209, 246], "phrase": [165, 262, 271], "\u5b57\u7b26\u7ea7": 165, "__future__": [165, 171, 237, 244], "unicode_liter": 165, "print_funct": 165, "manyth": 165, "anki": 165, "fra": 165, "froid": 165, "lang": [165, 208, 261, 270], "n_word": [165, 252], "readlang": 165, "lang1": 165, "lang2": 165, "input_lang": [165, 252], "output_lang": [165, 252], "apostroph": 165, "eng_prefix": 165, "preparedata": 165, "je": 165, "sui": 165, "noir": 165, "decoderrnn": 165, "target_tensor": 165, "forward_step": 165, "burden": [165, 247], "attn_appli": 165, "bahdanauattent": 165, "ua": 165, "va": 165, "attndecoderrnn": [165, 252], "input_gru": 165, "tensorfromsent": 165, "tensorsfrompair": 165, "get_dataload": 165, "inp_id": 165, "tgt_id": 165, "exhibit": [165, 247], "coher": 165, "grammar": 165, "wander": 165, "asminut": 165, "es": 165, "n_epoch": 165, "plot_loss": 165, "print_loss_tot": 165, "plot_loss_tot": 165, "plot_loss_avg": 165, "showplot": 165, "decoder_attn": 165, "decoded_id": 165, "judgement": 165, "evaluaterandomli": 165, "showattent": 165, "bone": 165, "evaluateandshowattent": 165, "aussi": 165, "grand": 165, "son": 165, "pere": 165, "fatigu": 165, "pour": 165, "conduir": 165, "desol": 165, "idiot": 165, "reellement": 165, "fier": 165, "iot": 165, "word2vec": 165, "glove": 165, "autoencod": 165, "seq2seq_translation_tutori": 165, "ghassen": 166, "hamrouni": 166, "geometr": 166, "invari": [166, 190], "urllib": 166, "build_open": 166, "addhead": 166, "mozilla": 166, "install_open": 166, "boil": 166, "affine_grid": 166, "grid_sampl": 166, "conv2_drop": [166, 221], "regressor": 166, "fc_loc": 166, "size_averag": 166, "convert_image_np": 166, "visualize_stn": 166, "transformed_input_tensor": 166, "in_grid": 166, "out_grid": 166, "axarr": 166, "spatial_transformer_tutori": 166, "speech_recognition_pipeline_tutori": 167, "tensorboard_trace_handl": 168, "batch_data": [168, 171], "torch_tb_profil": 168, "safari": 168, "pytorch_profil": 168, "breakdown": 168, "dropdown": 168, "callstack": 168, "multiprocessor": 168, "occup": 168, "tooltip": 168, "toolbar": 168, "keyboard": [168, 262, 271], "mous": [168, 262, 271], "resnet18_4work": 168, "76m": [168, 182], "132m": 168, "torchtbprofil": 168, "memory_demo_1_10": 168, "gpu0": 168, "distributed_bert": 168, "rocm": 168, "docker": [168, 257], "profiler_tutori": 168, "test_cifar10": 168, "vi": [168, 262, 271], "kfd": 168, "sys_ptrac": 168, "seccomp": 168, "unconfin": 168, "shm": [168, 212], "8g": 168, "apt": [168, 171, 208], "libjpeg": 168, "rocm5": 168, "scp": 168, "tensorboard_profiler_tutori": 168, "plot_classes_pr": 169, "four_fashion_mnist_imag": 169, "datapoint": 169, "night": [169, 263, 272], "thoroughli": 169, "clearer": 169, "images_to_prob": 169, "preds_tensor": 169, "el": 169, "add_figur": 169, "global_step": [169, 245], "scroll": [169, 260, 264, 269, 273], "test_siz": 169, "class_prob": 169, "class_probs_batch": 169, "test_prob": 169, "test_label": 169, "add_pr_curve_tensorboard": 169, "class_index": 169, "tensorboard_truth": 169, "tensorboard_prob": 169, "add_pr_curv": 169, "poke": 169, "tacotron2_pipeline_tutori": 170, "wsi": 171, "tissu": 171, "biopsi": 171, "scanner": 171, "pathologist": 171, "cancer": 171, "microscop": 171, "tumor": 171, "000x100": 171, "25x0": 171, "micron": 171, "pyramid": 171, "magnif": 171, "sketch": 171, "histoencod": 171, "jopo666": 171, "openjpeg": 171, "openslid": 171, "pixman": 171, "qq": 171, "libopenjp2": 171, "libpixman": 171, "echo": [171, 208, 262, 271], "brew": 171, "hashandl": 171, "nopython": 171, "shutil": 171, "zipfil": 171, "mpl": 171, "cm": 171, "accuracy_scor": 171, "confusion_matrix": 171, "patch_predictor": 171, "iopatchpredictorconfig": 171, "misc": 171, "download_data": 171, "grab_files_from_dir": 171, "overlay_prediction_mask": 171, "wsicor": 171, "wsiread": 171, "rcparam": 171, "dpi": 171, "facecolor": 171, "dark": 171, "on_gpu": 171, "suppress": 171, "overli": 171, "suppress_console_output": 171, "redirect_stderr": 171, "stringio": 171, "abnorm": [171, 226], "global_save_dir": 171, "mainten": 171, "rmdir": 171, "dir_path": 171, "is_dir": 171, "rmtree": 171, "kather": 171, "100k": 171, "wsi_path": 171, "sample_wsi": 171, "sv": 171, "patches_path": 171, "kather100k": 171, "weights_path": 171, "dc": 171, "warwick": 171, "uk": 171, "tcga": 171, "3l": 171, "aa1b": 171, "01z": 171, "dx1": 171, "8923a151": 171, "a690": 171, "40b7": 171, "9e5a": 171, "fcbedfc2394f": 171, "extractal": 171, "pc": 171, "patch_list": 171, "dataset_path": 171, "image_ext": 171, "tif": 171, "label_dict": 171, "glass": 171, "mucosa": 171, "deb": 171, "debri": 171, "tum": 171, "colorect": 171, "adenocarcinoma": 171, "epithelium": 171, "adi": 171, "adipos": 171, "muc": 171, "mucu": 171, "stroma": 171, "lym": 171, "lymphocyt": 171, "dataset_class_path": 171, "patch_list_single_class": 171, "file_typ": 171, "299": 171, "211": [171, 219, 238], "176": 171, "178": 171, "209": 171, "232": [171, 231], "modelabc": 171, "tia": 171, "toolbox": 171, "readthedoc": 171, "_autosummari": 171, "models_abc": 171, "preproc_func": 171, "predictor": [171, 178], "pretrained_weight": 171, "cnnmodel": 171, "conf": [171, 221, 260, 267, 269, 276], "df_cm": 171, "215": [171, 177], "993000": 171, "000000": 171, "00000": 171, "988636": 171, "011364": 171, "991304": 171, "008696": 171, "996503": 171, "003497": 171, "004808": 171, "990385": 171, "988764": 171, "011236": 171, "996296": 171, "003704": 171, "004785": 171, "985646": 171, "004310": 171, "99569": 171, "input_resolut": 171, "patch_input_shap": 171, "stride_shap": 171, "wsi_ioconfig": 171, "mpp": 171, "return_prob": 171, "ioconfig": 171, "merge_predict": 171, "wsi_output": 171, "wsi_predict": 171, "overlai": 171, "overlay_patch_predict": 171, "overview_resolut": 171, "overview_unit": 171, "wsi_overview": 171, "slide_thumbnail": 171, "label_color_dict": 171, "get_cmap": 171, "set1": 171, "pred_map": 171, "label_info": 171, "return_ax": 171, "histolog": 171, "pohjonen": 171, "joona": 171, "helsinki": 171, "umap": 171, "semantic_segmentor": 171, "deepfeatureextractor": 171, "iosegmentorconfig": 171, "histoencwrapp": 171, "histoenc": 171, "feat_extract": 171, "extract_featur": 171, "num_block": 171, "avg_pool": 171, "infer_batch": 171, "img_patches_devic": 171, "create_encod": 171, "prostate_medium": 171, "662": 171, "446": 171, "605": 171, "169": [171, 219], "155": [171, 173], "output_resolut": 171, "patch_output_shap": 171, "auto_generate_mask": 171, "otsu": 171, "num_loader_work": 171, "num_postproc_work": 171, "wsi_featur": 171, "umap_reduc": 171, "n_neighbor": 171, "n_compon": 171, "manhattan": 171, "random_st": 171, "fit_transform": 171, "npy": 171, "5mpp": 171, "4mpp": 171, "william": [172, 173, 174], "wen": [172, 173, 174], "modern": [172, 187, 194], "h100": 172, "elsewher": 172, "gpu_ok": 172, "device_cap": 172, "get_device_cap": [172, 210, 211, 255], "torchinductor": [172, 186, 199], "torchtriton": 172, "cu117": 172, "opt_foo1": 172, "opt_foo2": 172, "opt_mod": 172, "generate_data": 172, "init_model": 172, "model_opt": 172, "eager_tim": 172, "compile_tim": 172, "eager_m": 172, "compile_m": 172, "train_opt": 172, "dashboard": [172, 245], "struggl": 172, "fn1": 172, "fn2": 172, "test_fn": 172, "out1": [172, 234], "out2": [172, 234], "inp1": [172, 173, 174], "inp2": [172, 173, 174], "traced_f1": 172, "print_exc": [172, 173, 174], "fx_f1": 172, "concrete_arg": 172, "compile_f1": 172, "f2": 172, "script_f2": 172, "compile_f2": 172, "f3": 172, "dct": 172, "traced_f3": 172, "disallow": 172, "compile_f3": 172, "unoptim": 172, "custom_backend": 172, "example_input": [172, 179, 181, 182, 183, 197, 198, 199, 200, 247], "print_tabular": 172, "opt_model": 172, "opt_bar": 172, "resum": [172, 198, 214, 241], "explain_output": 172, "torch_compile_tutori": 172, "zhengxu": [173, 174], "angela": [173, 174], "exportedprogram": [173, 174, 197], "synonym": [173, 174], "dynamic_shap": [173, 174], "exportedgraph": [173, 174], "exported_mod": [173, 174], "exported_program": 173, "2178": 173, "4397": 173, "4774": 173, "0943": [173, 185], "4656": 173, "8333": 173, "5912": 173, "4689": 173, "2122": 173, "1996": 173, "4628": 173, "7495": 173, "3900": 173, "4515": 173, "8187": 173, "8938": 173, "5753": 173, "7709": 173, "8081": 173, "8002": 173, "9441": 173, "5711": 173, "0921": [173, 201], "3438": 173, "3268": 173, "4640": 173, "2434": 173, "7253": 173, "6886": 173, "6982": 173, "5100": [173, 246], "2279": 173, "2951": 173, "1055": 173, "2088": 173, "5022": 173, "1468": [173, 231], "5220": 173, "1592": 173, "9096": 173, "4248": 173, "2142": 173, "relubackward0": 173, "graph_modul": [173, 174], "f32": 173, "arg2_1": 173, "arg3_1": 173, "torch_export_nightly_tutori": 173, "exportgraphsignatur": 173, "inputspec": 173, "inputkind": 173, "tensorargu": 173, "user_input": 173, "outputspec": 173, "outputkind": 173, "user_output": 173, "graph_signatur": [173, 174], "range_constraint": [173, 174], "equality_constraint": 173, "inputs_to_paramet": 173, "inputs_to_buff": 173, "buffers_to_mut": 173, "backward_signatur": 173, "assertion_dep_token": 173, "bad1": [173, 174], "usererror": 173, "control_flow": [173, 174], "cond": [173, 174], "bad2": [173, 174], "ban": 173, "aot_export": 173, "bad3": [173, 174], "call_id": 173, "tensorvari": 173, "bad4": [173, 174], "builtinvari": 173, "constantvari": 173, "bad1_fix": 173, "true_fn": [173, 174], "false_fn": [173, 174], "exported_bad1_fix": [173, 174], "8415": 173, "5403": 173, "predic": [173, 174], "operand": [173, 174], "mymodule2": [173, 174], "mod2": [173, 174], "exported_mod2": [173, 174], "dynamic_shapes_example1": 173, "inp1_dim0": [173, 174], "inp1_dim1": [173, 174], "dynamic_shapes1": [173, 174], "exported_dynamic_shapes_example1": [173, 174], "0828": 173, "8190": 173, "0037": 173, "0221": 173, "0898": 173, "8182": 173, "9165": 173, "3572": 173, "7422": 173, "4423": 173, "2497": 173, "1912": 173, "0522": 173, "4442": 173, "4188": 173, "8161": 173, "inp1_dim1_bad": [173, 174], "dynamic_shapes1_bad": [173, 174], "inp3": [173, 174], "dynamic_shapes_example2": 173, "inp2_dim0": [173, 174], "inner_dim": [173, 174], "inp3_dim1": [173, 174], "dynamic_shapes2": [173, 174], "exported_dynamic_shapes_example2": [173, 174], "5352": 173, "3836": 173, "8961": 173, "3412": 173, "3891": 173, "4326": 173, "1697": [173, 258], "inp4": [173, 174], "inp5": [173, 174], "dynamic_shapes_example3": [173, 174], "dynamic_shapes3": [173, 174], "inp4_dim": [173, 174], "inp5_dim": [173, 174], "violat": 173, "inp4_dim0": [173, 174], "inp5_dim0": [173, 174], "inp5_dim1": [173, 174], "torch_log": [173, 174, 251], "inp4_dim1": [173, 174], "suggested_fix": [173, 174], "shared_dim": [173, 174], "dynamic_shapes3_fix": [173, 174], "exported_dynamic_shapes_example3": [173, 174], "1510": 173, "1174": 173, "5075": 173, "3566": 173, "2102": 173, "2033": 173, "3611": 173, "9041": 173, "2987": 173, "5751": 173, "1508": 173, "4470": 173, "2460": 173, "9288": 173, "1764": 173, "5879": 173, "5107": 173, "0845": 173, "3962": 173, "4359": 173, "2877": 173, "2839": 173, "3742": 173, "5569": 173, "0485": 173, "1028": 173, "4692": 173, "3837": 173, "8744": 173, "4191": 173, "9387": 173, "8480": 173, "9857": 173, "7783": 173, "2220": 173, "5934": 173, "9793": 173, "1118": 173, "9817": 173, "6156": 173, "2070": 173, "6976": 173, "8177": 173, "4002": 173, "3291": 173, "0860": 173, "7406": 173, "6509": 173, "1847": 173, "6311": 173, "8144": 173, "0439": 173, "9141": 173, "8778": 173, "5971": 173, "8781": 173, "1364": 173, "3096": 173, "0822": 173, "0587": 173, "3681": 173, "_log": [173, 174, 211, 255], "set_log": [173, 174, 211, 255], "657": 173, "symbolic_convert": 173, "374": 173, "658": 173, "symbolic_shap": 173, "create_env": 173, "663": 173, "create_symbol": 173, "s0": 173, "665": 173, "s1": [173, 192], "9223372036854775806": 173, "677": [173, 184], "680": 173, "734": [173, 238], "_meta_registr": 173, "1891": 173, "meta_mm": 173, "738": 173, "return_valu": 173, "output_graph": 173, "dynamo_normalization_capturing_compil": 173, "747": [173, 210], "produce_guard": 173, "839": 173, "eval_fram": 173, "847": 173, "rangeconstraint": 173, "min_val": 173, "max_val": 173, "inputdim": 173, "my_custom_librari": [173, 174], "compositeexplicitautograd": [173, 174], "custom_op_meta": [173, 174], "custom_op_exampl": 173, "exported_custom_op_exampl": [173, 174], "print_read": [173, 174], "5947": 173, "8062": 173, "6231": 173, "6615": 173, "5412": 173, "evidenc": [173, 174], "_schema": [173, 174], "is_mut": [173, 174], "run_decomposit": [173, 174], "decomposition_t": [173, 174], "_op": [173, 174], "operatorbas": [173, 174], "core_ir_ep": [173, 174], "num_us": 173, "placehold": 173, "get_decomposit": [173, 174], "_decomp": [173, 174], "decomp_t": [173, 174], "cond_pred": [173, 174], "stronger": 174, "safeti": 174, "bad2_nonstrict": 174, "bad3_nonstrict": 174, "bad4_nonstrict": 174, "bad1fix": 174, "dynamicshapesexample1": 174, "dynamicshapesexample2": 174, "deriveddimexample1": 174, "dimx": 174, "dimi": 174, "derived_dynamic_shapes1": 174, "derived_dim_example1": 174, "deriveddimexample2": 174, "dz": 174, "dy": 174, "derived_dynamic_shapes2": 174, "derived_dim_example2": 174, "dynamicshapesexample3": 174, "customopexampl": 174, "aotinductor": 174, "tensorrt": [174, 179], "so_path": 174, "aot_compil": 174, "compiler_aot_inductor": 174, "aot_load": 174, "torch_export_tutori": 174, "dlrm": [175, 247], "dmp": 175, "datastructur": 175, "k80": 175, "appripri": 175, "product_t": 175, "user_t": 175, "101": 175, "202": 175, "303": 175, "product_eb": 175, "jag": [175, 193], "404": 175, "505": 175, "606": 175, "keyedtensor": 175, "3x64": 175, "pooled_embed": 175, "criteo": 175, "terabyt": 175, "jean": [176, 177], "saroufim": [176, 177], "ashok": [176, 177], "emani": [176, 177], "tl": [176, 185, 254], "dr": [176, 185], "numa": [176, 177], "upi": 176, "fma": [176, 177], "hyperthread": 176, "contend": 176, "ultra": 176, "cpu_launcher_en": [176, 177], "toepliz": 176, "toggl": [176, 258], "use_logical_cor": 176, "vtune": [176, 251], "8180m": 176, "omp_num_thread": [176, 247], "982": 176, "__kmp_fork_barri": 176, "589": 176, "neglig": 176, "887": 176, "530": 176, "lscpu": 176, "112": [176, 185, 204, 238], "llc": [176, 177], "asid": 176, "get_num_thread": [176, 231], "node_id": [176, 177], "base_handl": 176, "56x4": 176, "affinit": [176, 177], "amplifi": 176, "slot": 176, "uop": [176, 177], "__sched_yield": 176, "disassoci": 176, "exacerb": 176, "core_51": 176, "8180": 176, "tid": 176, "97097": 176, "cpu_81": 176, "cpu_14": 176, "cpu_5": 176, "cpu_70": 176, "cpu_100": 176, "cpu_24": 176, "num_physical_cor": 176, "94290": 176, "cpu_78": 176, "cpu_108": 176, "microarchitectur": 176, "onednn": [176, 177, 199, 207, 219, 220, 226], "immens": [176, 177], "ning": [176, 177], "jing": [176, 177], "xu": [176, 177, 187, 188], "20x": 177, "toplev": 177, "pmu": 177, "mispredict": 177, "hierarch": 177, "retir": 177, "specul": 177, "cancel": [177, 247], "untun": 177, "subsystem": 177, "l3": 177, "dram": 177, "starv": 177, "wll": 177, "uncomplet": 177, "oneapi": [177, 226], "deconvolut": [177, 229], "emit_itt": [177, 226], "intel_extension_for_pytorch": [177, 220, 253], "ipex_en": 177, "submetr": 177, "spinlock": 177, "arena": 177, "enable_tcmalloc": 177, "enable_jemalloc": 177, "use_default_alloc": 177, "range_push": [177, 226], "step_": 177, "range_pop": [177, 226], "step_x": 177, "step_99": 177, "308": 177, "261": 177, "843": 177, "8960": 177, "cpu_launcher_arg": 177, "688": 177, "251": 177, "401": 177, "392": [177, 210], "bf16": [177, 184, 199, 207, 219], "ipex": [177, 220, 251, 253], "8x": 177, "851": 177, "310": [177, 231], "7x": [177, 184], "803": 177, "248": 177, "eltwis": 177, "elementwis": [177, 247, 255], "nhwc": [177, 194, 220, 223], "disable_auto_channels_last": 177, "reorder": [177, 207, 219, 226, 247], "731": [177, 256], "634": 177, "fudan": 178, "databas": 178, "pedestrian": 178, "keypoint": 178, "tv_tensor": 178, "boundingbox": 178, "x0": 178, "y0": 178, "image_id": 178, "iscrowd": 178, "compliant": 178, "pycocotool": 178, "gautamchitni": 178, "cocoapi": 178, "cocodataset": 178, "pythonapi": 178, "get_height_and_width": 178, "ci": 178, "upenn": 178, "jshi": 178, "ped_html": 178, "pennfudanp": 178, "pedmask": 178, "fudanped00001_mask": 178, "fudanped00002_mask": 178, "fudanped00003_mask": 178, "fudanped00004_mask": 178, "pngimag": 178, "fudanped00001": 178, "fudanped00002": 178, "fudanped00003": 178, "fudanped00004": 178, "fudanped00046": 178, "fudanped00046_mask": 178, "122": [178, 238], "tvtensor": 178, "masks_to_box": 178, "pennfudandataset": 178, "listdir": 178, "mask_path": 178, "obj_id": 178, "num_obj": 178, "crowd": 178, "xyxi": 178, "canvas_s": 178, "get_siz": 178, "zoo": 178, "faster_rcnn": 178, "fastrcnnpredictor": 178, "fasterrcnn_resnet50_fpn": 178, "roi_head": 178, "box_predictor": 178, "cls_score": 178, "fasterrcnn": 178, "rpn": 178, "anchorgener": 178, "anchor": 178, "anchor_gener": 178, "aspect_ratio": 178, "featmap_nam": 178, "roi_pool": 178, "multiscaleroialign": 178, "sampling_ratio": 178, "rcnn": 178, "rpn_anchor_gener": 178, "box_roi_pool": 178, "mask_rcnn": 178, "maskrcnnpredictor": 178, "get_model_instance_segment": 178, "maskrcnn_resnet50_fpn": 178, "in_features_mask": 178, "mask_predictor": 178, "conv5_mask": 178, "coco_util": 178, "coco_ev": 178, "get_transform": 178, "todtyp": 178, "topuretensor": 178, "print_freq": 178, "draw_bounding_box": 178, "draw_segmentation_mask": 178, "eval_transform": 178, "rgba": 178, "pred_label": 178, "pred_box": 178, "output_imag": 178, "train2017": 178, "prepare_fx": [179, 181, 182, 183], "convert_fx": [179, 181, 182, 183], "default_weight_observ": 179, "get_default_qconfig_map": 179, "minmaxobserv": [179, 200], "backend_config": 179, "backendpatternconfig": 179, "dtypewithconstraint": 179, "observationtyp": 179, "quantize_fx": [179, 181, 182], "fp32_linear": 179, "quant1": 179, "dequant1": 179, "quant2": 179, "dequant2": 179, "bracket": [179, 262, 271], "fp32_conv_relu": 179, "quint8_with_constraint": 179, "quant_min_lower_bound": 179, "quant_max_upper_bound": 179, "scale_min_lower_bound": 179, "weighted_int8_dtype_config": 179, "input_dtyp": 179, "output_dtyp": 179, "weight_dtyp": 179, "bias_dtyp": 179, "fuse_conv2d_relu": 179, "convrelu2d": [179, 182], "linear_config": 179, "set_pattern": 179, "set_observation_typ": 179, "output_use_different_observer_as_input": 179, "add_dtype_config": 179, "set_root_modul": 179, "set_qat_modul": 179, "set_reference_quantized_modul": 179, "conv_relu_config": 179, "set_fused_modul": 179, "set_fuser_method": 179, "fused_conv_relu_config": 179, "my_backend": 179, "set_backend_pattern_config": 179, "quant_max": [179, 200], "activation_observ": 179, "with_arg": [179, 200], "quant_min": [179, 200], "qconfig_map": [179, 181, 182, 183], "set_object_typ": [179, 181, 182, 197], "use_bn": 179, "quantizedlinear": 179, "012136868201196194": 179, "zero_point": [179, 185, 200], "qscheme": [179, 200], "per_tensor_affin": [179, 200], "quantizedconvrelu2d": 179, "0029353597201406956": 179, "linear_input_scale_0": 179, "linear_input_zero_point_0": 179, "quantize_per_tensor": [179, 185, 197, 221], "dequantize_2": 179, "015307803638279438": 179, "dequantize_1": 179, "get_fbgemm_backend_config": 179, "get_qnnpack_backend_config": 179, "get_native_backend_config": 179, "rfc": [179, 190, 262, 271], "0019": [179, 185], "tldr": [181, 182], "default_dynamic_qconfig": [181, 185], "qconfigmap": [181, 183, 197, 200], "release": 181, "set_glob": [181, 182, 183, 197, 198, 199], "prepared_model": [181, 182, 197, 198, 199], "metamind": 181, "asset": [181, 206, 208, 224], "lstm_model": 181, "float_qparams_weight_only_qconfig": 181, "model_to_quant": [181, 182, 197], "forunct": 181, "fx_graph_mode_ptq_dynam": 181, "charl": 182, "hernandez": 182, "traceabl": 182, "identitc": [182, 197], "resnet18_pretrained_float": [182, 197, 198], "fuse_fx": 182, "recursivescriptmodul": [182, 185, 197, 198], "qconfig_opt": [182, 197], "set_module_name_regex": 182, "set_module_nam": [182, 197], "set_module_name_object_type_ord": 182, "object_typ": 182, "module_name_regex": 182, "module_nam": 182, "serila": [182, 197], "fx_graph_mode_model_file_path": 182, "resnet18_fx_graph_mode_quant": 182, "erro": 182, "convrelu": 182, "moduleattributeerror": 182, "_modul": 182, "conv1_weight_after_fus": 182, "conv1_weight_after_qu": 182, "resnet18_script": [182, 197], "eager_quantized_model": 182, "eager_mode_model_fil": 182, "resnet18_eager_mode_quant": 182, "aibench": 182, "192": 182, "48m": 182, "63m": 182, "non_traceable_code_1": 183, "traceable_cod": 183, "non_traceable_code_2": 183, "fp32traceabl": 183, "traceable_submodul": 183, "traceable_code_1": 183, "traceable_code_2": 183, "model_fp32": 183, "non_traceable_cod": 183, "fp32nontrac": 183, "non_traceable_submodul": 183, "prepare_custom_config_dict": 183, "non_traceable_module_nam": 183, "non_traceable_module_class": 183, "mnontrac": 183, "model_prepar": 183, "transpose_for_scor": 183, "new_x_shap": 183, "num_attention_head": 183, "attention_head_s": 183, "custommodul": 183, "observednontrac": 183, "from_float": 183, "from_observ": 183, "staticquantnontrac": 183, "float_to_observed_custom_module_class": 183, "convert_custom_config_dict": 183, "observed_to_quantized_custom_module_class": 183, "model_quant": [183, 224, 225, 228, 252], "thee": 183, "dynamicquantnontrac": 183, "weightonlyquantmnontrac": 183, "test_custom_module_class": 183, "test_quantize_fx": 183, "hdcharl": 184, "pg509": 184, "330": 184, "myenv": 184, "cu121": 184, "vit_h": 184, "segment_anyth": 184, "sam_vit_h_4b8939": 184, "sam_checkpoint_base_path": 184, "change_linear_weights_to_int8_dqtensor": 184, "sam_model_registri": 184, "batchsiz": 184, "only_one_block": 184, "adaptive_autorang": 184, "min_run_tim": [184, 231, 246], "max_run_tim": 184, "1e9": 184, "get_sam_model": 184, "sam": 184, "image_encod": 184, "fp32_re": 184, "16m": 184, "33gb": 184, "instant": 184, "protect": [184, 208, 222, 223], "bf16_re": 184, "43m": 184, "17gb": 184, "autotun": [184, 247, 254], "comp_r": 184, "95m": 184, "24gb": 184, "int4": 184, "change_linear_weights_to_int8_woqtensor": 184, "change_linear_weights_to_int4_woqtensor": 184, "apply_dynamic_qu": 184, "apply_weight_only_int8_qu": 184, "change_linear_weight": 184, "quant_r": 184, "04m": 184, "58gb": 184, "force_fuse_int_mm_with_mul": 184, "78m": 184, "37gb": 184, "unquant": [184, 200], "epilogu": 184, "enlarg": 184, "epilogue_fus": 184, "coordinate_descent_tun": 184, "coordinate_descent_check_all_direct": 184, "39gb": 184, "10x": [184, 207], "729": 184, "65m": 184, "96gb": 184, "28m": 184, "93gb": 184, "gpu_quantization_torchao_tutori": 184, "supriya": 185, "rao": 185, "per_channel_dynamic_qconfig": 185, "quantize_dynamic_jit": 185, "ts_model": 185, "installaion": 185, "necesessari": 185, "lenght": 185, "qconfig_glob": 185, "qconfig_sub": 185, "qconfig_fc": 185, "242141": 185, "354759": 185, "188": [185, 231], "157": 185, "4s": 185, "quantized_model_debug": 185, "prepare_dynamic_jit": 185, "convert_dynamic_jit": 185, "406429": 185, "897": 185, "113": 185, "4_scale_0": 185, "114": 185, "4_zero_point_0": 185, "4_axis_0": 185, "4_scalar_type_0": 185, "quantize_per_channel": 185, "1640": 185, "_choose_qparams_per_tensor": 185, "98304": 185, "linear_dynam": 185, "_c": [185, 187, 244, 247], "0157": 185, "0257": 185, "0269": 185, "0158": 185, "0764": 185, "0548": 185, "0325": 185, "0423": 185, "0528": 185, "1382": 185, "0069": 185, "0106": 185, "0113": 185, "0275": 185, "0253": 185, "0457": 185, "0090": 185, "0512": 185, "0555": 185, "0277": 185, "0543": 185, "0539": 185, "0619": 185, "1040": 185, "0598": [185, 201], "0465": 185, "0009": 185, "0949": 185, "0097": 185, "0183": 185, "0085": 185, "clonebackward": 185, "0011": 185, "0010": 185, "0034": 185, "0013": 185, "0012": 185, "0015": 185, "0016": 185, "0036": 185, "0014": 185, "0008": 185, "0023": 185, "0018": 185, "0031": 185, "0022": 185, "0024": 185, "016605": 185, "182": 185, "878029": 185, "jit_model_path_float": 185, "jit_model_path_eag": 185, "jit_model_path_graph": 185, "chunyuan": 186, "bao": 186, "cpp_wrapper": [186, 199], "opt_fn": 186, "assert_size_strid": 186, "empty_strid": [186, 206, 238], "cpp_fused_add_lift_fresh_0": 186, "c_void_p": 186, "constant0": 186, "inductor_entry_cpp": 186, "19l": 186, "cppwrappercodecach": 186, "cpp_wrapper_src": 186, "c2buojsvlqbywxe3itb43hldieh4jqulk72iswa2awalwev7hjn2": 186, "_wrap_func": 186, "args_tensor": 186, "constants_tensor": 186, "_deviceguard": 186, "lift_fresh": 186, "stream0": 186, "get_cuda_stream": 186, "triton_poi_fused_add_lift_fresh_0": 186, "run_intermediate_hook": 186, "cudaguard": 186, "device_guard": 186, "loadkernel": 186, "torchinductor_us": 186, "cmm6xjgijjffxjku4akv55eyzibirvw6bti6uqmfnruujm5cvvmw": 186, "cubin": 186, "triton_poi_fused_add_lift_fresh_0_0d1d2d3": 186, "cudeviceptr": 186, "var_0": 186, "reinterpret_cast": [186, 208], "var_1": 186, "var_2": 186, "var_3": 186, "kernel_args_var_0": 186, "cudastream_t": 186, "getcurrentcudastream": 186, "launchkernel": 186, "czbpeilh4qqmbyejdgsbpdfuk2ss5jigl2qjb7xs4gearrjvuwem": 186, "tao": [187, 188], "solidifi": [187, 194], "coremltool": 187, "0b5": 187, "to_backend": 187, "_coreml": 187, "compilespec": 187, "coremlcomputeunit": 187, "mobilenetv2_spec": 187, "allow_low_precis": 187, "compile_spec": 187, "_jit_to_backend": 187, "coreml": 187, "mobilenetv2_coreml": 187, "cpuandgpu": 187, "mil": 187, "385": 187, "1496": 187, "anaconda3": 187, "name_sanitization_util": 187, "userwarn": [187, 189, 190, 191, 192], "647": 187, "var_647": 187, "new_nam": 187, "138": 187, "495": [187, 231], "1977": 187, "backend_detail": 187, "codegen_backend_modul": 187, "desktop": [187, 188, 208], "cocoapod": [187, 188, 204, 222, 225], "podfil": [187, 222, 225], "pod": [187, 204, 222, 225, 227, 251], "lite": [187, 204, 222], "client": [188, 223], "prepack": [188, 208, 252], "pytorch_root": [188, 206], "use_pytorch_metal_export": 188, "ON": [188, 195, 218, 223], "41237a4": [188, 206], "optimized_model": [188, 199], "export_opnam": [188, 222], "mobilenetv2_met": 188, "optimized_mobil": 188, "adaptive_avg_pool2d": 188, "copy_to_host": 188, "metal_prepack": 188, "conv2d_run": 188, "conect": 188, "slighli": 188, "malamut": 188, "malemut": 188, "alaskan": 188, "eskimo": 188, "huski": 188, "ios_arch": [188, 223], "use_pytorch_met": 188, "build_io": [188, 204, 222, 223], "a9": 188, "nsarrai": 188, "nsnumber": 188, "inferencemod": 188, "metalperformanceshad": 188, "1369": 189, "clr": 189, "sparse_coo_tensor": [189, 192], "state_sum": 189, "addcmul_": 189, "addcdiv_": 189, "_make_spars": 189, "grad_indic": 189, "coalesc": [189, 230], "_indic": 189, "grad_valu": 189, "_valu": 189, "sparse_mask": [189, 192], "std_valu": 189, "sqrt_": 189, "state_sum2": 189, "masked_grad": 189, "get_data": [189, 191, 192], "std2": 189, "masked_tensor": [189, 190, 191, 192], "to_spars": [189, 192], "param2": [189, 202], "glanc": [189, 244], "dodg": 189, "make_spars": 189, "diverg": [189, 191, 247], "brittl": 189, "argu": 189, "densif": 189, "csc": [189, 192], "bsr": [189, 192], "bsc": 189, "conflat": 189, "disentangl": 189, "purposefulli": 189, "to_dens": [189, 192], "cleaner": [189, 191, 196, 197], "relianc": 189, "unreli": [189, 191], "maskedarrai": [189, 196], "maskedtensor_adagrad": 189, "maskedtensor_overview": [190, 191, 192], "unspecifi": [190, 191, 192, 196], "intersect": 190, "logical_or": 190, "npm0": 190, "ma": 190, "masked_arrai": 190, "npm1": 190, "mt0": 190, "mt1": [190, 192], "mt2": [190, 192], "get_mask": [190, 191], "mt": [190, 191, 192], "amin": [190, 192], "amax": 190, "data0": 190, "data1": 190, "mask0": 190, "mask1": 190, "intent": [190, 197, 200, 208, 214, 262, 271], "necessit": 190, "maskedtensor_advanced_semant": 190, "as_masked_tensor": 191, "afterthought": 191, "born": 191, "recur": 191, "inabl": 191, "10729": 191, "troubl": 191, "mx": 191, "52248": 191, "frustrat": 191, "4132": 191, "67180": 191, "longstand": 191, "bgrad1": 191, "isnan": 191, "unsaf": 191, "61474": 191, "nanmax": 191, "nanmin": 191, "lend": 191, "argmin": 191, "substructur": 192, "sparse_coo": 192, "sparse_csr": 192, "nse": 192, "sparse_tensor_data": 192, "sparse_tensor_mask": 192, "dense_masked_tensor": 192, "to_sparse_coo": 192, "to_sparse_csr": 192, "nuanc": 192, "sparse_coo_mt": 192, "crow_indic": 192, "col_indic": 192, "nnz": 192, "mt_sparse_csr": 192, "mt_sparse_coo": 192, "mt_dens": 192, "is_spars": 192, "is_sparse_coo": 192, "is_sparse_csr": 192, "surfac": 192, "vast": 192, "mask_valu": 192, "sparse_csr_tensor": 192, "synergi": 192, "invest": 192, "maskedtensor_spars": 192, "rag": 193, "invalu": 193, "nestedtensor": [193, 196], "padded_out_tensor": 193, "to_padded_tensor": 193, "poss": 193, "is_nest": 193, "irregularli": 193, "nt_reshap": 193, "nt_transpos": 193, "nt_mm": 193, "nt3": 193, "nt4": 193, "nt5": 193, "embrac": 193, "padded_sent": 193, "nested_sent": 193, "semnat": 193, "ux": [193, 197, 199], "padded_sentences_for_softmax": 193, "e_q": 193, "e_k": 193, "e_v": 193, "e_tot": 193, "query_proj": 193, "key_proj": 193, "value_proj": 193, "e_out": 193, "out_proj": 193, "e_head": 193, "sdpa": 193, "l_t": 193, "l_": 193, "attn_output": 193, "todo": [193, 260, 269], "unflatten": 193, "zipf": 193, "zipf_sentence_length": 193, "unigram": 193, "858": [193, 218], "sentence_length": 193, "ibatch": 193, "gen_batch": 193, "jagged_to_pad": 193, "jt": 193, "padding_v": 193, "unbind": [193, 205], "padded_queri": 193, "padded_kei": 193, "padded_valu": 193, "output_nest": 193, "time_nest": 193, "output_pad": 193, "time_pad": 193, "entry_length": 193, "compiled_mha": 193, "compiled_output_nest": 193, "compiled_time_nest": 193, "compiled_output_pad": 193, "compiled_time_pad": 193, "_nnapi": 194, "convert_model_to_nnapi": 194, "bundled_input": [194, 204, 209], "make_mobilenetv2_nnapi": 194, "output_dir_path": 194, "quantize_mod": 194, "quantize_cor": 194, "quantize_ifac": 194, "input_float": 194, "nnapi_nhwc": 194, "nnapi_model": 194, "bundlewrapp": 194, "augment_model_with_bundled_input": 194, "bundle_large_tensor": [194, 204], "quant_": 194, "quant_ful": 194, "speed_benchmark_torch": [194, 218, 223], "pthreadpool_s": 194, "use_bundled_input": 194, "use_caching_alloc": 194, "200gb": 194, "googlesourc": [194, 206], "envsetup": 194, "aosp_x86_64": 194, "j16": 194, "lib64": 194, "libneuralnetwork": 194, "ctype": 194, "cdll": 194, "loadlibrari": [194, 208], "get_all_bundled_input": [194, 209], "_numeric_suit": 195, "ns": 195, "default_eval_fn": 195, "qmodel": 195, "img_data": 195, "compare_weight": 195, "wt_compare_dict": 195, "nkei": 195, "sqnr": 195, "relationship": 195, "nomin": 195, "compute_error": 195, "pn": 195, "log10": 195, "hist": 195, "compare_model_output": 195, "act_compare_dict": 195, "white_list": 195, "outputlogg": 195, "default_numeric_suite_compare_model_output_white_list": 195, "prepare_model_output": 195, "get_matching_activ": 195, "myoutputlogg": 195, "logger_cl": 195, "prepare_model_with_stub": 195, "shadowlogg": 195, "compare_model_stub": 195, "quantizablebasicblock": 195, "module_swap_list": 195, "ob_dict": 195, "get_logger_dict": 195, "myshadowlogg": 195, "is_quant": 195, "db": [195, 197], "numeric_suite_tutori": 195, "pypi": [196, 221], "pt2": [196, 199, 210, 211, 215], "optimizi": 196, "nnapi": 196, "autovector": [196, 205], "maskedtensor": 196, "coo": 196, "csr": 196, "14k": 197, "prepare_pt2": [197, 199], "convert_pt2": [197, 198, 199], "capture_pre_autograd_graph": [197, 198, 199], "shoud": [197, 198, 199], "quantize_pt2": [197, 198, 199], "xnnpackquant": [197, 198, 200], "get_symmetric_quantization_config": [197, 198], "backendconfig": [197, 200], "fake_qu": 197, "embedding_byt": 197, "executorchquant": 197, "prone": [197, 215], "composed_quant": 197, "quantization_cap": 197, "minmax": 197, "exported_model": [197, 198, 199], "dynamic_dim": [197, 198], "xnnpack_quant": [197, 198], "themodel": 197, "fp32_op": 197, "qauntiz": 197, "quantized_linear": 197, "x_int8": 197, "x_scale": 197, "x_zero_point": 197, "weight_int8": 197, "weight_scal": [197, 200], "weight_zero_point": 197, "bias_fp32": 197, "output_scal": 197, "output_zero_point": 197, "x_fp32": 197, "quantized_decompos": 197, "dequantize_per_tensor": 197, "x_i8": 197, "x_quant_min": 197, "x_quant_max": 197, "weight_fp32": 197, "weight_i8": 197, "weight_quant_min": 197, "weight_quant_max": 197, "weight_permut": 197, "permute_copi": 197, "out_fp32": 197, "out_i8": 197, "out_scal": 197, "out_zero_point": 197, "out_quant_min": 197, "out_quant_max": 197, "float32_op": 197, "use_reference_represent": 197, "x_int16": 197, "weight_int16": 197, "acc_int32": 197, "out_dtyp": 197, "bias_scal": 197, "bias_int32": 197, "out_int8": 197, "qmin": 197, "qmax": 197, "pt2e_quantized_model_file_path": 197, "resnet18_pt2e_quant": 197, "quantized_ep": 197, "loaded_quantized_ep": 197, "ptq": [198, 199], "prepare_qat_pt2": [198, 199], "move_exported_model_to_ev": [198, 199], "move_exported_model_to_train": 198, "subgraph": 198, "_native_batch_norm_legit": 198, "cudnn_batch_norm": 198, "num_observer_update_epoch": 198, "num_batch_norm_update_epoch": 198, "num_epochs_between_ev": 198, "subseq": 198, "new_arg": 198, "prepared_model_copi": 198, "checkpoint_": 198, "lesli": [199, 200], "fang": [199, 200], "weiwen": [199, 200], "xia": [199, 200], "x86inductorquant": 199, "spr": 199, "x86_inductor_quant": 199, "xiq": 199, "traced_b": 199, "aten_graph": 199, "get_default_x86_inductor_quantization_config": 199, "is_dynam": [199, 200], "converted_model": 199, "absenc": [199, 229], "mirror": 199, "device_typ": [199, 230, 253], "qconvolut": 199, "qlinear": 199, "conting": 199, "qmaxpool2d": 199, "torchinductor_freez": 199, "example_x86inductorquantizer_pytorch_2_1": 199, "torchbench": [199, 219], "example_x86inductorquantizer_qat": 199, "kimish": 200, "patel": 200, "quantiat": 200, "qnnpackquant": 200, "quantizationspec": 200, "quantizationannot": 200, "bitwidth": 200, "histogramobserv": 200, "dataclass": 200, "input_qspec_map": 200, "output_qspec": 200, "_annot": 200, "matcher": 200, "get_source_partit": 200, "add_partit": 200, "add_nod": 200, "output_nod": 200, "act_quantization_spec": 200, "observer_or_fake_quant_ctr": 200, "input_act_qspec": 200, "output_act_qspec": 200, "input_act0": 200, "input_act1": 200, "quantization_annot": 200, "sharedquantizationspec": 200, "average_pool": 200, "edgeornod": 200, "conv1_out": 200, "conv2_out": 200, "qspec1": 200, "cat_input0": 200, "cat_input1": 200, "share_qparams_with_input_act0_qspec": 200, "fixedqparamsquantizationspec": 200, "act_qspec": 200, "sigmoid_nod": 200, "input_act": 200, "derivedquantizationspec": 200, "derive_qparams_fn": 200, "observerorfakequant": 200, "observerbas": 200, "fakequantizebas": 200, "obejct": 200, "obs_or_fq": 200, "fq": 200, "act_obs_or_fq": 200, "weight_obs_or_fq": 200, "act_scal": 200, "act_zp": 200, "calculate_qparam": 200, "weight_zp": 200, "bias_qspec": 200, "derived_from": 200, "per_tensor_symmetr": 200, "weight_quantization_spec": 200, "backendquant": 200, "quantizationconfig": 200, "get_input_act_qspec": 200, "get_output_act_qspec": 200, "get_weight_qspec": 200, "get_bias_qspec": 200, "relu_nod": 200, "maybe_conv_nod": 200, "conv1d": [200, 207, 247], "recognz": 200, "subgraphmatch": 200, "conv_relu_pattern": 200, "name_node_map": 200, "input_nod": 200, "weight_nod": 200, "bias_nod": 200, "exact_match": 201, "53358561967833": 201, "9280493093186": 201, "927572380751371": 201, "607915310189128": 201, "18846387788653": 201, "91255673766136": 201, "parameter": 201, "elemen": 201, "paramter": 201, "bertoutput": 201, "parametrizedlinear": 201, "fakespars": 201, "layernorm": 201, "elementwise_affin": 201, "59602649006622": 201, "51610004515979": 201, "0237": 201, "0130": 201, "0462": 201, "0272": 201, "0436": 201, "0492": 201, "0844": 201, "0340": 201, "0302": 201, "0350": 201, "0303": 201, "0175": 201, "0529": 201, "0327": 201, "0213": 201, "0258": 201, "0239": 201, "0380": 201, "0562": 201, "0432": 201, "0262": 201, "0227": 201, "0244": 201, "0784": 201, "0761": 201, "0225": 201, "0395": 201, "0684": 201, "0344": 201, "43897824030275": 201, "48718950090766": 201, "621004460379481": 201, "368514601141214": 201, "702805917710066": 201, "244": [201, 226], "19364519417286": 201, "87x": 201, "skip_init": 202, "param1": 202, "some_buff": 202, "to_empti": [202, 244], "intial": 202, "fnet": 203, "___torch_mangle_3": 203, "fnet2": 203, "0107": 203, "0048": 203, "torchscript_freez": 203, "lai": [204, 222], "cccclai": 204, "dhruv": 204, "matani": 204, "dhruvbird": 204, "scripted_modul": [204, 209, 222], "input_image_1": 204, "input_tensor_1": 204, "input_batch_1": 204, "input_image_2": 204, "input_tensor_2": 204, "input_batch_2": 204, "step2": 204, "bundled_model_input": 204, "bundled_model": [204, 209], "bundle_input": [204, 209], "deeplabv3_scripted_with_bundled_input": 204, "macosx_deployment_target": [204, 206], "max_job": 204, "tracing_bas": 204, "model_trac": 204, "model_input_path": 204, "build_yaml_path": 204, "armeabi": 204, "v7a": 204, "v8a": [204, 206, 218, 223], "selected_op_list": [204, 222], "build_pytorch_android": [204, 206, 222], "cmd": 204, "build_lite_interpret": 204, "chenlai": 204, "aar": [204, 206, 208], "xarg": 204, "ls": 204, "lah": 204, "rw": 204, "staff": 204, "13m": 204, "feb": 204, "pytorch_android": [204, 206, 208, 224], "36k": 204, "pytorch_android_torchvis": [204, 222, 224], "gradl": [204, 206, 222, 224, 227], "androidx": [204, 208, 222], "appcompat": [204, 208, 222], "constraintlayout": [204, 222], "testimplement": [204, 222], "junit": [204, 222], "androidtestimplement": [204, 222], "ext": [204, 220, 222, 262, 263, 271, 272], "espresso": [204, 222], "v7": [204, 208], "fbjni": [204, 208, 222], "allproject": [204, 208], "jcenter": [204, 208], "flatdir": 204, "ios_platform": [204, 222], "deintegr": 204, "all_load": 204, "bitcod": 204, "deeplabv3": [204, 222], "deeplabv3_on_android": 204, "42368": 205, "unsuccessfulli": 205, "rummag": 205, "batched_dot": [205, 231], "feature_s": 205, "shenanigin": 205, "feature_vec": 205, "8304": 205, "23475": 205, "basis_vector": 205, "get_vjp": 205, "jacobian_vmap": 205, "performantli": 205, "7786": 205, "grad_sampl": 205, "batch_of_sampl": 205, "vmap_recip": 205, "ivan": [206, 208], "kobzarev": [206, 208], "use_vulkan": 206, "vulkan_wrapp": 206, "use_vulkan_wrapp": 206, "libvulkan": 206, "vulkansdk": 206, "lunarg": 206, "vulkan_sdk": 206, "vulkan_sdk_root": 206, "install_vulkan": 206, "use_vulkan_shaderc_runtim": 206, "android_abi": [206, 208, 218, 223], "build_android": [206, 218, 223], "script_model": 206, "mobilenet2": 206, "32bit": 206, "script_model_vulkan": 206, "optimization_blocklist": 206, "mobileoptimizertyp": 206, "vulkan_automatic_gpu_transf": 206, "is_vulkan_avail": 206, "tensor_vulkan": 206, "tensor_output_vulkan": 206, "tensor_output": 206, "_adaptive_avg_pool2d": 206, "_cat": 206, "hardtanh_": 206, "transpose_": 206, "upsample_nearest2d": 206, "allocatefloatbuff": [206, 223], "fromblob": [206, 223], "mmodul": [206, 222, 223], "test_app": 206, "testapp": [206, 223], "l133": 206, "apploc": 206, "installmbvulkanlocalbasedebug": 206, "mbq": 206, "swiftshad": 206, "tmul": 207, "gen": 207, "3rd": [207, 220], "avx": [207, 220], "vnni": [207, 220], "024": 207, "conv3d": [207, 247], "conv_transpose1d": 207, "conv_transpose3d": 207, "baddbmm": 207, "addbmm": 207, "onednn_verbos": 207, "mkldnn": [207, 219], "verbose_on": 207, "6dbeffbae1f23cbbeae17adb7b5b13f1f37c080": 207, "nthr": 207, "isa": [207, 247], "prim_templ": 207, "prop_kind": 207, "memory_descriptor": 207, "auxiliari": 207, "problem_desc": 207, "exec_tim": 207, "exec": 207, "undef": 207, "src_f32": 207, "f0": 207, "dst_f32": 207, "scratchpad": 207, "2561": 207, "avx512_core_amx_bf16": 207, "forward_train": 207, "src_bf16": 207, "acdb": 207, "wei_bf16": 207, "abcd16b16a2b": 207, "bia_f32": 207, "dst_bf16": 207, "alg": 207, "convolution_direct": 207, "mb7_ic2oc1_ih224oh111kh3sh2dh1ph1_iw224ow111kw3sw2dw1pw1": 207, "628906": 207, "brg": 207, "avx512_core_amx_int8": 207, "src_s8": 207, "wei_s8": 207, "ba16a64b4a": 207, "dst_s8": 207, "1x30522": 207, "30522x768": 207, "1x768": 207, "66382": 207, "r19c": 208, "android_ndk": 208, "3859397": 208, "android_sdk": 208, "android_hom": 208, "gradle_hom": 208, "jdk": [208, 227], "java_hom": 208, "openjdk": 208, "opencv_android_sdk": 208, "registeroper": 208, "cento": 208, "yum": 208, "devel": 208, "libopencv": 208, "nativeapp": 208, "useandroidx": 208, "enablejetifi": 208, "buildscript": 208, "classpath": 208, "maven": [208, 222], "oss": [208, 222], "sonatyp": [208, 222], "extractfornativebuild": 208, "compilesdkvers": 208, "buildtoolsvers": 208, "defaultconfig": 208, "applicationid": 208, "minsdkvers": 208, "targetsdkvers": 208, "versioncod": 208, "versionnam": 208, "externalnativebuild": 208, "dandroid_stl": 208, "_share": 208, "buildtyp": 208, "minifyen": 208, "sourceset": 208, "jnilib": 208, "srcdir": 208, "extractaarfornativebuild": 208, "dolast": 208, "absolutefil": 208, "ziptre": 208, "builddir": 208, "jni": 208, "whentaskad": 208, "dependson": 208, "nexu": 208, "libpytorch_jni": 208, "libfbjni": 208, "stl": 208, "pytorch_nativeapp": 208, "build_dir": 208, "cmake_source_dir": 208, "pytorch_testapp_cpp_dir": 208, "cmake_current_list_dir": 208, "pytorch_testapp_sourc": 208, "pytorch_include_dir": 208, "pytorch_link_dir": 208, "target_compile_opt": 208, "fexcept": 208, "build_subdir": 208, "find_librari": 208, "pytorch_librari": 208, "pytorch_jni": 208, "no_cmake_find_root_path": 208, "fbjni_librari": 208, "endif": 208, "opencv_include_dir": 208, "target_include_directori": 208, "opencv_lib_dir": 208, "opencv_librari": 208, "opencv_java4": 208, "libopencv_java4": 208, "logcat": 208, "torschscript": 208, "androidmanifest": 208, "xml": 208, "xmln": 208, "apk": 208, "allowbackup": 208, "pytorchnativeapp": 208, "supportsrtl": 208, "theme": 208, "darkactionbar": 208, "appcompatact": 208, "fileoutputstream": 208, "inputstream": 208, "outputstream": 208, "assetnam": 208, "getfilesdir": 208, "getabsolutepath": 208, "getasset": 208, "savedinstancest": 208, "modelfileabsolutefilepath": 208, "nativecli": 208, "loadandforwardmodel": 208, "assertfilepath": 208, "nativep": 208, "libpytorch_nativeapp": 208, "modelpath": 208, "cassert": 208, "cmath": 208, "unistd": 208, "alogi": 208, "__android_log_print": 208, "android_log_info": 208, "__va_args__": 208, "alog": 208, "android_log_error": 208, "ostringstream": 208, "c_str": 208, "jitcallguard": 208, "no_autograd_guard": 208, "non_var_guard": 208, "graphoptimizerenabledguard": 208, "no_optimizer_guard": 208, "jnienv": 208, "jclass": 208, "jstring": 208, "jmodelpath": 208, "getstringutfchar": 208, "t_out": 208, "releasestringutfchar": 208, "jniexport": 208, "jint": 208, "jni_onload": 208, "javavm": 208, "vm": [208, 263, 272], "getenv": [208, 231], "jni_version_1_6": 208, "jni_ok": 208, "jni_err": 208, "findclass": 208, "jninativemethod": 208, "ljava": 208, "rc": 208, "registern": 208, "intermix": 208, "assembledebug": 208, "installdebug": 208, "icon": [208, 260, 262, 269, 271], "adb": [208, 218, 223], "grep": 208, "26968": 208, "9484": 208, "1757": 208, "5832": 208, "9144": 208, "8867": 208, "0933": 208, "4004": 208, "3389": 208, "5200": [208, 231], "7625": 208, "5724": 208, "2073": 208, "4613": 208, "2730": 208, "6789": 208, "2247": 208, "2790": 208, "0067": 208, "9266": 208, "6034": 208, "1941": 208, "7021": 208, "5368": 208, "3803": 208, "0188": 208, "2021": [208, 221], "7412": 208, "2257": 208, "5044": 208, "6592": 208, "0826": 208, "0084": 208, "8733": 208, "5435": 208, "1087": 208, "1066": 208, "9926": 208, "1047": 208, "5311": 208, "9178": 208, "5451": 208, "0473": 208, "7571": 208, "3909": 208, "4039": 208, "5085": 208, "2776": 208, "4080": 208, "9203": 208, "3655": 208, "4395": 208, "4467": 208, "9837": 208, "3335": 208, "0445": 208, "8039": 208, "2512": 208, "3122": 208, "6543": 208, "5819": 208, "5680": 208, "6442": 208, "3090": 208, "6197": 208, "0773": 208, "5967": 208, "1105": 208, "0274": 208, "0330": 208, "0124": 208, "8644": 208, "0493": 208, "7633": 208, "9657": 208, "3469": 208, "3159": 208, "0683": 208, "4529": 208, "4559": 208, "7038": 208, "8396": 208, "9716": 208, "5279": 208, "1780": 208, "3849": 208, "4368": 208, "1480": 208, "jacob": 209, "szwejbka": 209, "example_dict": 209, "all_info": 209, "get_bundled_inputs_functions_and_info": 209, "func_nam": 209, "input_func_nam": 209, "get_inputs_function_nam": 209, "func_to_run": 209, "model_funct": 209, "decompress": 209, "ie": 209, "bundle_randn": 209, "deflat": 209, "create_exampl": 209, "deflated_input": 209, "inflatablearg": 209, "randn_lik": 209, "bundle_optional_dict_of_randn": 209, "fmt_fn": 209, "lazo": [210, 211, 255], "eager_runtim": 210, "compiled_runtim": 210, "2437149845064u": 210, "07384741178u": 210, "linearlr": 211, "sched": 211, "total_it": 211, "compiling_optimizer_lr_schedul": 211, "set_device_map": 212, "worker0": 212, "payload": [212, 244], "infiniband": 212, "cma": 212, "comm_mod": 212, "pend": [212, 223, 245], "current_stream": 212, "34x": 212, "3145179748535156": 212, "06867480278015137": 212, "image_classifi": 213, "kitten": 213, "index_to_nam": 213, "infil": 213, "timg": 213, "models_": 213, "render_predict": 213, "prediction_idx": 213, "stridx": 213, "img_class_map": 213, "mapping_file_path": 213, "isfil": 213, "curl": [213, 262, 271], "multipart": 213, "recevi": 213, "285": 213, "iri": [214, 215], "rodrigo": 214, "kumpera": 214, "chien": 214, "chin": 214, "luca": 214, "pasqualin": 214, "adddition": 214, "get_state_dict": 214, "run_fsdp_checkpoint_save_exampl": 214, "sharded_state_dict": 214, "checkpoint_id": 214, "reshard": 214, "set_state_dict": 214, "run_fsdp_checkpoint_load_exampl": 214, "optim_state_dict": 214, "run_checkpoint_load_exampl": 214, "effortlessli": 215, "homogen": 215, "num_node_devic": 215, "shard_rank_list": 215, "shard_group": 215, "current_shard_group": 215, "current_replicate_group": 215, "shard_factor": 215, "replicate_group_rank": 215, "replicate_group": 215, "2d_setup": 215, "mesh_dim_nam": 215, "thru": 215, "get_group": 215, "mesh_dim": 215, "2d_setup_with_device_mesh": 215, "meshshap": 215, "hybrid_shard": 215, "sequanc": 215, "quasi": 216, "hyperbol": 216, "qhm": 216, "qhm_updat": 216, "dp_list": 216, "momentum_buffer_list": 216, "nu": [216, 262, 271], "weight_decay_typ": 216, "d_p": 216, "momentum_buff": 216, "polymorph": 216, "functionalqhm": 216, "params_with_grad": 216, "preserve_format": 216, "functional_optim_map": 216, "remote_params_list": 216, "dist_optim": 216, "annotatedconvbnrelumodel": [218, 223], "prepare_sav": 218, "torchscript_model": [218, 223, 224, 225, 252], "torchscript_model_optim": [218, 223, 224, 225], "model_fus": 218, "bnrelu2d": 218, "build_pytorch_mobil": [218, 222, 223], "dbuild_binari": [218, 223], "input_typ": [218, 223], "6189": 218, "575": 218, "6216": 218, "sunita": 219, "nadamp": 219, "graviton3": 219, "sve": 219, "simd": 219, "graviton2": 219, "bla": 219, "acl": 219, "c7g": 219, "bfloa16": 219, "r7g": 219, "m7g": 219, "4vcpu": 219, "myneuralnetwork": 219, "11008": 219, "mymodel_infer": 219, "813": 219, "255m": 219, "177": 219, "032m": 219, "160u": 219, "162": [219, 231], "054m": 219, "540": 219, "180u": 219, "738m": 219, "201": 219, "955m": 219, "985": 219, "282m": 219, "421m": 219, "043m": 219, "810u": 219, "356m": 219, "179": 219, "388m": 219, "896": 219, "940u": 219, "mmla": 219, "dnnl_default_fpmath_mod": 219, "943": 219, "052": 219, "507m": 219, "167": 219, "653m": 219, "838": 219, "265u": 219, "107": 219, "593m": 219, "358": 219, "643u": 219, "167m": 219, "262": 219, "911m": 219, "060": 219, "533m": 219, "414m": 219, "892m": 219, "307u": 219, "281m": 219, "934m": 219, "670u": 219, "fastmath": 219, "821": 219, "914": 219, "713m": 219, "244m": 219, "711": 219, "220u": 219, "322m": 219, "307": 219, "740u": 219, "094": 219, "495m": 219, "921": 219, "736m": 219, "131m": 219, "441m": 219, "803u": 219, "942m": 219, "144": 219, "186m": 219, "720": 219, "930u": 219, "848": 219, "944": 219, "148m": 219, "141": [219, 231], "309m": 219, "706": 219, "545u": 219, "916m": 219, "720u": 219, "431m": 219, "06": 219, "471m": 219, "951": 219, "170m": 219, "027m": 219, "243m": 219, "143u": 219, "928m": 219, "143": 219, "237m": 219, "185u": 219, "47x": 219, "outweigh": 219, "till": [219, 228], "torch_mkldnn_matmul_min_dim": 219, "958": 219, "612m": 219, "124m": 219, "620u": 219, "951m": 219, "170u": 219, "423m": 219, "034": 219, "691m": 219, "988": 219, "628m": 219, "520m": 219, "945m": 219, "817u": 219, "382m": 219, "136": 219, "910u": 219, "781": 219, "604m": 219, "295": 219, "437m": 219, "477m": 219, "516m": 219, "558": 219, "387u": 219, "708m": 219, "499m": 219, "788": 219, "627m": 219, "982m": 219, "385m": 219, "617u": 219, "932m": 219, "297": 219, "369m": 219, "487m": 219, "038m": 219, "060m": 219, "300u": 219, "013m": 219, "106": 219, "710u": 219, "521m": 219, "750m": 219, "216": 219, "475m": 219, "033m": 219, "110u": 219, "285m": 219, "345m": 219, "725u": 219, "margin": 219, "thp_mem_alloc_en": 219, "321": 219, "069m": 219, "568m": 219, "613m": 219, "602m": 219, "682": 219, "007u": 219, "777m": 219, "082m": 219, "329": 219, "097m": 219, "547m": 219, "325": 219, "115m": 219, "626m": 219, "08x": 219, "avx512": 220, "amx": [220, 221], "xmx": 220, "xpu": 220, "claus": [220, 221, 258], "roialign": 220, "bertmodel": 220, "check_trac": 220, "cache_en": [220, 247], "memoryformat": 220, "channelslast": [220, 223], "intel_ext_pt_cpu": 220, "libpytorch_path": 220, "ldd": 220, "workspac": 220, "cmake_have_libc_pthread": 220, "0x00007f3cf98e0000": 220, "libc10": 220, "0x00007f3cf985a000": 220, "libintel": 220, "0x00007f3cf70fc000": 220, "libtorch_cpu": [220, 246], "0x00007f3ce16ac000": 220, "libdnnl_graph": 220, "0x00007f3cde954000": 220, "mitig": [221, 247], "fc1_drop": 221, "pytorch_fx": 221, "accuracy_criterion": 221, "neural_compressor": 221, "calib_dataload": 221, "q_model": 221, "top1metr": 221, "quant_aware_train": 221, "training_func": 221, "q_func": 221, "dummy_dataset": 221, "dummydataset": 221, "linearrelu": 221, "best_configur": 221, "best_model_weight": 221, "int8_model": 221, "martin": 222, "pytorchstreamread": 222, "regener": 222, "model_psth": 222, "_load_for_lite_interpret": [222, 223], "optimized_scripted_modul": 222, "pytorch_android_lit": 222, "litemoduleload": 222, "getapplicationcontext": 222, "prebuilt": [222, 251], "use_framework": 222, "libtorch_lit": 222, "nullabl": 222, "instancetyp": 222, "initwithfileatpath": 222, "nsstring": 222, "_load_for_mobil": [222, 223], "utf8str": 222, "nslog": 222, "architechtur": 222, "dsp": 223, "calibration_data": 223, "588kb": 223, "nio": 223, "suboptim": 223, "analysisresult": 223, "analyzeimag": 223, "imageproxi": 223, "rotationdegre": 223, "modulefileabsolutefilepath": 223, "minputtensorbuff": 223, "minputtensor": 223, "imageyuv420centercroptofloatbuff": 223, "getimag": 223, "flatbuff": 223, "_use_flatbuff": 223, "jit_model": 223, "ff": 223, "5387594579999999": 223, "038842832999999466": 223, "nake": 223, "rf": 223, "speedbenchark_torch": 223, "speedbenchmark": 223, "121318": 223, "24281": 223, "trace_model": 223, "rubi": 223, "iphonex": 223, "2121": 223, "722447": 223, "762": 223, "mobilenetv2_quant": [224, 225], "hackathon": [224, 225], "xcworkspac": 225, "your_project_nam": 225, "unexpectedli": 226, "path_of_launch": 226, "iteration_n": 226, "brown": 226, "percerntag": 226, "occupi": 226, "jitter": 226, "enrich": 226, "ittsampl": 226, "292820": 226, "iteration_": 226, "basefold": 226, "bash_sourc": 226, "torchscipt": [227, 251], "ota": 228, "incept": 228, "print_model_s": 228, "mdl": 228, "model_dynamic_quant": 228, "model_static_quant": 228, "98mb": 228, "tra": 228, "model_qat": 228, "gradcam": 229, "freepik": 229, "puppi": 229, "dog_58409": 229, "6024": 229, "center_crop": 229, "283": 229, "labrador": 229, "occlud": 229, "attribution_dog": 229, "persian": 229, "attribution_cat": 229, "guidedbackprop": 229, "deeplift": 229, "gradientshap": 229, "forward_func": 229, "pictori": 229, "textual": 229, "vis_typ": 229, "vis_sign": 229, "distractor": 229, "visualize_text": 229, "imdb_torchtext_interpret": 229, "gilbert": 229, "tanner": 229, "gilberttann": 229, "captum_recip": [229, 235], "carilli": 230, "ture": 230, "kepler": 230, "maxwel": 230, "pascal": 230, "modest": 230, "gc": 230, "empty_cach": 230, "reset_max_memory_alloc": 230, "end_timer_and_print": 230, "local_msg": 230, "make_model": 230, "in_siz": 230, "out_siz": 230, "513": 230, "modestli": 230, "underflow": 230, "scaler": 230, "unscal": 230, "use_amp": 230, "unscale_": 230, "max_norm": 230, "bitwis": 230, "rough": 230, "suspect": 230, "docstr": [230, 262, 263, 271, 272], "subregion": 230, "backtrac": 230, "torch_show_cpp_stacktrac": 230, "amp_recip": [230, 235], "\u672c\u6559\u7a0b\u63d0\u4f9b\u4e86\u4f7f\u7528": 231, "\u6a21\u5757\u6765\u6d4b\u91cf\u548c\u6bd4\u8f83\u4ee3\u7801\u6027\u80fd\u7684\u5feb\u901f\u5165\u95e8\u6307\u5357": 231, "\u57fa\u51c6\u6d4b\u8bd5\u662f\u7f16\u5199\u4ee3\u7801\u65f6\u7684\u4e00\u4e2a\u91cd\u8981\u6b65\u9aa4": 231, "\u5b83\u5e2e\u52a9\u6211\u4eec\u9a8c\u8bc1\u4ee3\u7801\u662f\u5426\u6ee1\u8db3\u6027\u80fd\u9884\u671f": 231, "\u6bd4\u8f83\u89e3\u51b3\u540c\u4e00\u95ee\u9898\u7684\u4e0d\u540c\u65b9\u6cd5": 231, "\u5e76\u9632\u6b62\u6027\u80fd\u88c2\u5316": 231, "\u5bf9\u4e8e\u57fa\u51c6\u6d4b\u8bd5": 231, "\u4ee3\u7801\u6709\u8bb8\u591a\u9009\u62e9": 231, "\u5185\u7f6e\u7684": 231, "\u57fa\u51c6\u6d4b\u8bd5": [231, 238], "\u4ee3\u7801\u6709\u8bb8\u591a\u5bb9\u6613\u88ab\u5ffd\u89c6\u7684\u6ce8\u610f\u4e8b\u9879": 231, "\u4f8b\u5982\u7ba1\u7406\u7ebf\u7a0b\u6570\u91cf\u548c\u540c\u6b65": 231, "\u8bbe\u5907": 231, "\u4e3a\u57fa\u51c6\u6d4b\u8bd5\u751f\u6210\u5f20\u91cf\u8f93\u5165\u53ef\u80fd\u76f8\u5f53\u7e41\u7410": 231, "\u672c\u6559\u7a0b\u6f14\u793a\u4e86\u5982\u4f55\u4f7f\u7528": 231, "\u6a21\u5757\u6765\u907f\u514d\u5e38\u89c1\u9519\u8bef": 231, "\u540c\u65f6\u66f4\u5bb9\u6613\u6bd4\u8f83\u4e0d\u540c\u4ee3\u7801\u7684\u6027\u80fd": 231, "\u4e3a\u57fa\u51c6\u6d4b\u8bd5\u751f\u6210\u8f93\u5165\u7b49": 231, "\u5982\u679c\u5c1a\u672a\u5b89\u88c5": [231, 243, 248, 250], "\u8bf7\u5148\u5b89\u88c5": 231, "\u5728\u64b0\u5199\u672c\u6587\u65f6": 231, "\u4e0d\u652f\u6301\u6279\u91cf\u6a21\u5f0f": 231, "\u56e0\u6b64\u6211\u4eec\u5c06\u6bd4\u8f83\u4f7f\u7528\u73b0\u6709": 231, "\u8fd0\u7b97\u7b26\u5b9e\u73b0\u5b83\u7684\u4e24\u79cd\u65b9\u6cd5": 231, "\u4e00\u79cd\u65b9\u6cd5\u4f7f\u7528": 231, "\u7684\u7ec4\u5408": 231, "\u53e6\u4e00\u79cd\u65b9\u6cd5\u4f7f\u7528": 231, "batched_dot_mul_sum": 231, "batched_dot_bmm": 231, "\u8ba9\u6211\u4eec\u4f7f\u7528": [231, 246], "\u6a21\u5757\u5bf9\u4ee3\u7801\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5": 231, "\u6211\u4eec\u5728\u8fd9\u91cc\u4fdd\u6301\u57fa\u51c6\u6d4b\u8bd5\u4ee3\u7801\u7b80\u5355": 231, "\u4ee5\u4fbf\u6211\u4eec\u53ef\u4ee5\u6bd4\u8f83": 231, "mul_sum": 231, "\u6a21\u5757\u7684\u8bbe\u8ba1\u4f7f\u5f97\u5bf9\u4e8e\u90a3\u4e9b\u66fe\u7ecf\u4f7f\u7528\u8fc7": 231, "\u6a21\u5757\u7684\u4eba\u6765\u8bf4": 231, "\u5b83\u770b\u8d77\u6765\u5f88\u719f\u6089": 231, "\u5b83\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u4f7f\u5f97\u5b83\u66f4\u5bb9\u6613\u4e14\u66f4\u5b89\u5168\u5730\u7528\u4e8e\u5bf9": 231, "\u4ee3\u7801\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5": 231, "\u9996\u5148\u8ba9\u6211\u4eec\u5bf9\u6bd4\u4e00\u4e0b\u57fa\u672capi\u7684\u4f7f\u7528": 231, "0x7fb10400d0f0": 231, "379": 231, "0x7fb103d67048": 231, "\u867d\u7136\u57fa\u672c\u529f\u80fd\u7684api\u662f\u76f8\u540c\u7684": 231, "\u4f46\u662f\u8fd8\u662f\u6709\u4e00\u4e9b\u91cd\u8981\u7684\u533a\u522b": 231, "\u8fd4\u56de\u7684\u662f\u6bcf\u6b21\u8fd0\u884c\u7684\u65f6\u95f4": 231, "\u8fd4\u56de\u7684\u603b\u8fd0\u884c\u65f6\u95f4": 231, "\u6a21\u5757\u8fd8\u63d0\u4f9b\u4e86\u683c\u5f0f\u5316\u7684\u5b57\u7b26\u4e32\u8868\u793a": 231, "\u7528\u4e8e\u6253\u5370\u7ed3\u679c": 231, "\u53e6\u4e00\u4e2a\u91cd\u8981\u7684\u533a\u522b": 231, "\u4e5f\u662f\u7ed3\u679c\u4e0d\u540c\u7684\u539f\u56e0": 231, "\u662fpytorch\u57fa\u51c6\u6d4b\u8bd5\u6a21\u5757\u9ed8\u8ba4\u5728\u5355\u7ebf\u7a0b\u4e2d\u8fd0\u884c": 231, "\u53c2\u6570\u6765\u66f4\u6539\u7ebf\u7a0b\u6570\u91cf": 231, "\u63a5\u53d7\u51e0\u4e2a\u989d\u5916\u7684\u53c2\u6570": 231, "sub_label": 231, "\u8fd9\u4e9b\u53c2\u6570\u4f1a\u6539\u53d8\u8fd4\u56de\u7684\u6d4b\u91cf\u5bf9\u8c61\u7684__repr__": 231, "\u5e76\u7528\u4e8e\u5bf9\u7ed3\u679c\u8fdb\u884c\u5206\u7ec4": 231, "\u7a0d\u540e\u4f1a\u8be6\u7ec6\u4ecb\u7ecd": 231, "0x7fb103d54080": 231, "118": 231, "0x7fb16935d2e8": 231, "\u4f7f\u7528\u6240\u6709\u53ef\u7528\u7ebf\u7a0b\u8fd0\u884c": 231, "\u4f1a\u5f97\u5230\u4e0e": 231, "\u6a21\u5757\u7c7b\u4f3c\u7684\u7ed3\u679c": 231, "\u66f4\u91cd\u8981\u7684\u662f": 231, "\u54ea\u4e2a\u7248\u672c\u66f4\u5feb\u53d6\u51b3\u4e8e\u6211\u4eec\u4f7f\u7528\u591a\u5c11\u7ebf\u7a0b\u8fd0\u884c\u4ee3\u7801": 231, "\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5728\u57fa\u51c6\u6d4b\u8bd5\u65f6": 231, "\u4f7f\u7528\u4e0e\u5b9e\u9645\u7528\u4f8b\u76f8\u7b26\u7684\u7ebf\u7a0b\u8bbe\u7f6e\u975e\u5e38\u91cd\u8981": 231, "\u53e6\u4e00\u4e2a\u9700\u8981\u8bb0\u4f4f\u7684\u91cd\u8981\u4e8b\u60c5\u662f": 231, "\u4e0a\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u65f6": 231, "\u8981\u540c\u6b65cpu\u548ccuda": 231, "\u8ba9\u6211\u4eec\u518d\u6b21\u5728cuda\u5f20\u91cf\u4e0a\u8fd0\u884c\u4e0a\u9762\u7684\u57fa\u51c6\u6d4b\u8bd5": 231, "\u770b\u770b\u4f1a\u53d1\u751f\u4ec0\u4e48": 231, "2775": 231, "0x7fb10400d080": 231, "\u7ed3\u679c\u63ed\u793a\u4e86\u4e00\u4e9b\u6709\u8da3\u7684\u4e8b\u60c5": 231, "\u6a21\u5757\u8fd0\u884c": 231, "\u7248\u672c\u7684\u7b2c\u4e00\u6b21\u8fd0\u884c\u6bd4\u7b2c\u4e8c\u6b21\u8fd0\u884c\u6162\u5f88\u591a": 231, "\u9700\u8981\u8c03\u7528": 231, "\u7b2c\u4e00\u6b21\u8c03\u7528\u65f6\u9700\u8981\u52a0\u8f7d\u5b83": 231, "\u8fd9\u9700\u8981\u4e00\u4e9b\u65f6\u95f4": 231, "\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5728\u57fa\u51c6\u6d4b\u8bd5\u4e4b\u524d\u505a\u4e00\u6b21\u9884\u70ed\u8fd0\u884c\u5f88\u91cd\u8981": 231, "\u6a21\u5757\u4e3a\u6211\u4eec\u5904\u7406\u4e86\u8fd9\u4e2a\u95ee\u9898": 231, "\u6a21\u5757\u548c": 231, "\u6a21\u5757\u4e4b\u95f4\u7ed3\u679c\u7684\u5dee\u5f02\u662f\u56e0\u4e3a": 231, "\u6a21\u5757\u6ca1\u6709\u540c\u6b65": 231, "\u56e0\u6b64\u53ea\u8ba1\u65f6\u4e86\u542f\u52a8\u5185\u6838\u7684\u65f6\u95f4": 231, "\u6a21\u5757\u4e3a\u6211\u4eec\u505a\u4e86\u540c\u6b65": 231, "\u867d\u7136": 231, "\u91c7\u53d6\u81f3\u5c11": 231, "\u79d2\u7684\u5355\u6b21\u8fde\u7eed\u6d4b\u91cf": 231, "\u91c7\u53d6\u591a\u6b21\u6d4b\u91cf": 231, "\u5176\u603b\u65f6\u95f4\u81f3\u5c11\u4e3a": 231, "\u79d2": 231, "\u53ef\u901a\u8fc7": [231, 236], "\u53c2\u6570\u66f4\u6539": 231, "\u5e76\u4e14\u6d4b\u91cf\u5f00\u9500\u53ea\u5360\u603b\u4f53\u6d4b\u91cf\u7684\u4e00\u5c0f\u90e8\u5206": 231, "\u8fd9\u662f\u901a\u8fc7\u9996\u5148\u4ee5\u9012\u589e\u7684\u5faa\u73af\u6b21\u6570\u8fd0\u884c": 231, "\u76f4\u5230\u8fd0\u884c\u65f6\u95f4\u8fdc\u5927\u4e8e\u6d4b\u91cf\u5f00\u9500": 231, "\u8fd9\u4e5f\u8d77\u5230\u4e86\u70ed\u8eab\u7684\u4f5c\u7528": 231, "\u7136\u540e\u8fdb\u884c\u6d4b\u91cf\u76f4\u5230\u8fbe\u5230\u76ee\u6807\u65f6\u95f4": 231, "\u8fd9\u6709\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027": 231, "\u5373\u5b83\u6d6a\u8d39\u7684\u6570\u636e\u66f4\u5c11": 231, "\u5e76\u4e14\u5141\u8bb8\u6211\u4eec\u8ba1\u7b97\u7edf\u8ba1\u6570\u636e\u6765\u4f30\u8ba1\u6d4b\u91cf\u7684\u53ef\u9760\u6027": 231, "m0": 231, "\u6211\u4eec\u8fd8\u53ef\u4ee5\u67e5\u770b\u8fd4\u56de\u7684\u6d4b\u91cf\u5bf9\u8c61\u4e2d\u83b7\u5f97\u7684\u5404\u4e2a\u7edf\u8ba1\u6570\u636e": 231, "\u6211\u4eec\u4e00\u76f4\u5728\u6bd4\u8f83\u6211\u4eec\u7684\u4e24\u4e2a\u6279\u91cf\u70b9\u79ef\u7248\u672c\u5bf9\u540c\u4e00\u8f93\u5165\u7684\u8868\u73b0": 231, "\u5728\u5b9e\u8df5\u4e2d": 231, "\u6211\u4eec\u5e0c\u671b\u5c1d\u8bd5\u4e0d\u540c\u7684\u8f93\u5165\u7ec4\u5408\u4ee5\u53ca\u4e0d\u540c\u7684\u7ebf\u7a0b\u6570\u91cf": 231, "\u7c7b\u5e2e\u52a9\u6211\u4eec\u4ee5\u683c\u5f0f\u5316\u8868\u683c\u7684\u5f62\u5f0f\u663e\u793a\u591a\u4e2a\u6d4b\u91cf\u7ed3\u679c": 231, "\u5b83\u4f7f\u7528\u4e0a\u9762\u63cf\u8ff0\u7684\u6ce8\u91ca": 231, "\u6765\u5bf9\u8868\u683c\u8fdb\u884c\u5206\u7ec4\u548c\u7ec4\u7ec7": 231, "\u6765\u770b\u770b\u6211\u4eec\u7684\u51fd\u6570\u5728\u4e0d\u540c\u7684\u8f93\u5165\u5927\u5c0f\u548c\u7ebf\u7a0b\u6570\u91cf\u4e0b\u7684\u8868\u73b0\u5982\u4f55": 231, "274": 231, "748": 231, "432": 231, "22657": 231, "11899": 231, "609": 231, "23098": 231, "27246": 231, "267073": 231, "118823": 231, "189": 231, "2782": 231, "7471": 231, "11874": 231, "173": 231, "7264": 231, "27824": 231, "100060": 231, "121499": 231, "2773": 231, "12833": 231, "6295": 231, "27062": 231, "71804": 231, "120365": 231, "103": 231, "2804": 231, "6764": 231, "11871": 231, "6640": 231, "27592": 231, "73003": 231, "120083": 231, "\u4e0a\u9762\u7684\u7ed3\u679c\u8868\u660e": 231, "\u5bf9\u4e8e\u5728\u591a\u7ebf\u7a0b\u4e0a\u8fd0\u884c\u7684\u8f83\u5927\u5f20\u91cf": 231, "\u7684\u7248\u672c\u6548\u679c\u66f4\u597d": 231, "\u800c\u5bf9\u4e8e\u8f83\u5c0f\u548c": 231, "\u6216\u5355\u7ebf\u7a0b\u4ee3\u7801": 231, "\u53e6\u4e00\u4e2a\u7248\u672c\u6548\u679c\u66f4\u597d": 231, "\u8fd8\u63d0\u4f9b\u4e86\u7528\u4e8e\u66f4\u6539\u8868\u683c\u683c\u5f0f\u7684\u51fd\u6570": 231, "trim_significant_figur": 231, "\u548c\u7b2c8\u8282\u4e2d\u63cf\u8ff0\u7684": 231, "callgrindstat": [231, 246], "\u6a21\u5757\u5e8f\u5217\u5316": 231, "\u8fd9\u4f7f\u5f97a": 231, "b\u6d4b\u8bd5\u53d8\u5f97\u5f88\u5bb9\u6613": 231, "\u56e0\u4e3a\u60a8\u53ef\u4ee5\u4ece\u4e24\u4e2a\u72ec\u7acb\u7684\u73af\u5883\u4e2d\u6536\u96c6\u6d4b\u91cf\u7ed3\u679c": 231, "\u5c06\u5b83\u4eec\u5e8f\u5217\u5316": 231, "\u7136\u540e\u5728\u5355\u4e2a\u73af\u5883\u4e2d\u52a0\u8f7d\u4e24\u8005": 231, "timer\u751a\u81f3\u63a5\u53d7\u4e00\u4e2a": 231, "\u6784\u9020\u51fd\u6570\u53c2\u6570": 231, "\u4ee5\u4fbf\u8fd9\u79cda": 231, "b\u6d4b\u8bd5\u53ef\u4ee5\u65e0\u7f1d\u8854\u63a5": 231, "\u5047\u8bbe": 231, "\u65b9\u6cd5\u4e0d\u662f\u4e24\u4e2apython\u51fd\u6570": 231, "\u800c\u662f": 231, "\u7684\u4e24\u4e2a\u4e0d\u540c\u7248\u672c": 231, "\u4e0b\u9762\u7684\u793a\u4f8b\u6f14\u793a\u4e86\u5982\u4f55\u8fdb\u884ca": 231, "b\u6d4b\u8bd5": 231, "\u4e3a\u4e86\u7b80\u5355\u8d77\u89c1": 231, "\u6211\u4eec\u53ea\u4f7f\u7528\u4e86\u4e00\u90e8\u5206\u6570\u636e": 231, "\u5e76\u7b80\u5355\u5730\u901a\u8fc7pickle\u6765\u56de\u4f20\u7ed3\u679c": 231, "\u800c\u4e0d\u662f\u5b9e\u9645\u4f7f\u7528\u591a\u4e2a\u73af\u5883\u5e76\u5c06\u7ed3\u679c\u5199\u5165\u78c1\u76d8": 231, "ab_test_result": 231, "dot_fn": 231, "ab_result": 231, "36000": 231, "40000": 231, "\u4ec5\u4e3a\u5c55\u793a\u53ef\u4ee5\u5c06\u4e4b\u524d\u6240\u6709\u7684\u7ed3\u679c\u901a\u8fc7": 231, "\u8fdb\u884c\u56de\u4f20": 231, "round_tripped_result": 231, "\u6b63\u5982\u6211\u4eec\u5728\u4e0a\u4e00\u8282\u4e2d\u770b\u5230\u7684": 231, "\u6839\u636e\u8f93\u5165\u5f20\u91cf\u7684\u4e0d\u540c": 231, "\u6027\u80fd\u5dee\u5f02\u53ef\u80fd\u4f1a\u5f88\u5927": 231, "\u5728\u591a\u4e2a\u4e0d\u540c\u7684\u8f93\u5165\u4e0a\u8fd0\u884c\u57fa\u51c6\u6d4b\u8bd5\u662f\u4e00\u4e2a\u597d\u4e3b\u610f": 231, "\u521b\u5efa\u6240\u6709\u8fd9\u4e9b\u8f93\u5165\u5f20\u91cf\u53ef\u80fd\u4f1a\u5f88\u9ebb\u70e6": 231, "\u8fd9\u5c31\u662f": 231, "fuzzer": 231, "\u548c\u76f8\u5173\u7c7b\u7684\u7528\u6b66\u4e4b\u5730": 231, "\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u4f7f\u7528": 231, "\u6765\u521b\u5efa\u4e00\u4e9b\u7528\u4e8e\u57fa\u51c6\u6d4b\u8bd5\u7684\u6d4b\u8bd5\u7528\u4f8b": 231, "fuzzedparamet": 231, "fuzzedtensor": 231, "parameteralia": 231, "\u751f\u6210\u968f\u673a\u5f20\u91cf": 231, "\u5143\u7d20\u6570\u91cf\u5728": 231, "10000000": 231, "\u5927\u5c0f": 231, "k0": 231, "k1": 231, "\u5206\u5e03\u4e2d\u9009\u62e9": 231, "\u5176\u4e2d\u5e73\u5747": 231, "\u5c06\u662f\u4e0d\u8fde\u7eed\u7684": 231, "example_fuzz": 231, "minval": 231, "maxval": 231, "min_el": 231, "max_el": 231, "probability_contigu": 231, "tensor_param": 231, "discontigu": 231, "725": 231, "383": 231, "5039": 231, "1200": [231, 257], "2140": 231, "1296": 231, "41000": 231, "1598": 231, "519": 231, "763": 231, "1082": 231, "\u5b9a\u4e49\u81ea\u5df1\u7684": 231, "\u6709\u5f88\u5927\u7684\u7075\u6d3b\u6027": 231, "\u8fd9\u5bf9\u4e8e\u521b\u5efa\u5f3a\u5927\u7684\u8f93\u5165\u96c6\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u975e\u5e38\u6709\u7528": 231, "\u4f46\u4e3a\u4e86\u8ba9\u4e8b\u60c5\u53d8\u5f97\u66f4\u7b80\u5355": 231, "\u57fa\u51c6\u6d4b\u8bd5\u6a21\u5757\u4e3a\u5e38\u89c1\u7684\u57fa\u51c6\u6d4b\u8bd5\u9700\u6c42\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5185\u7f6e\u7684": 231, "\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u4f7f\u7528\u5176\u4e2d\u4e00\u4e2a\u5185\u7f6e\u7684": 231, "op_fuzz": 231, "binaryopfuzz": 231, "473": 231, "12642115": 231, "8192": 231, "4800": 231, "20400": 231, "110000": 231, "400000": 231, "493": 231, "1100": [231, 246], "2440": 231, "870": 231, "2030": 231, "23600": 231, "24000": [231, 246], "62374": 231, "90000": 231, "240372": 231, "16000": 231, "40156": 231, "2670": 231, "\u4f18\u5316\u4ee3\u7801\u7684\u4e00\u4e2a\u6311\u6218\u662f\u65f6\u95f4\u7684\u53d8\u5316\u548c\u4e0d\u900f\u660e\u6027": 231, "\u6709\u8bb8\u591a\u4e0d\u786e\u5b9a\u6027\u7684\u6765\u6e90": 231, "\u4ece\u81ea\u9002\u5e94\u65f6\u949f\u901f\u5ea6\u5230\u4e0e\u5176\u4ed6\u8fdb\u7a0b\u7684\u8d44\u6e90\u4e89\u7528": 231, "\u7aef\u5230\u7aef\u65f6\u95f4\u5e76\u4e0d\u80fd\u63ed\u793a\u65f6\u95f4\u82b1\u8d39\u5728\u54ea\u91cc": 231, "\u800c\u8fd9\u6b63\u662f\u6211\u4eec\u5728\u4f18\u5316\u4ee3\u7801\u65f6\u611f\u5174\u8da3\u7684": 231, "\u4e00\u79cd\u8865\u5145\u65b9\u6cd5\u662f\u4e5f\u6536\u96c6\u6307\u4ee4\u8ba1\u6570": 231, "\u8fd9\u4e9b\u8ba1\u6570\u662f\u4e00\u79cd\u4ee3\u7406\u6307\u6807": 231, "\u5e76\u4e0d\u80fd\u6355\u83b7\u6027\u80fd\u7684\u6240\u6709\u65b9\u9762": 231, "\u4f8b\u5982\u5185\u5b58\u6216i": 231, "o\u7ed1\u5b9a\u4efb\u52a1": 231, "\u4f46\u5b83\u4eec\u786e\u5b9e\u5177\u6709\u4e00\u4e9b\u6709\u7528\u7684\u7279\u6027": 231, "\u6307\u4ee4\u8ba1\u6570\u662f\u53ef\u91cd\u590d\u7684": 231, "\u4e0d\u53d7\u73af\u5883\u53d8\u5316\u7684\u5f71\u54cd": 231, "\u5e76\u4e14\u53ef\u4ee5\u63d0\u4f9b\u5bf9\u7a0b\u5e8f\u5728\u54ea\u91cc\u82b1\u8d39\u5468\u671f\u7684\u7ec6\u7c92\u5ea6\u6d1e\u5bdf": 231, "\u4e3a\u4e86\u770b\u5230\u6307\u4ee4\u8ba1\u6570\u7684\u5b9e\u7528\u6027": 231, "\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u51cf\u5c11": 231, "\u7684\u5f00\u9500": 231, "\u663e\u800c\u6613\u89c1\u7684\u89e3\u51b3\u65b9\u6848\u662f\u5c06\u5176\u79fb\u81f3": 231, "\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u907f\u514d\u5728": 231, "\u4e4b\u95f4\u591a\u6b21\u6765\u56de\u5207\u6362": 231, "\u6e90\u4ee3\u7801\u51e0\u4e4e\u662f\u76f8\u540c\u7684": 231, "\u4e2d\u6211\u4eec\u5fc5\u987b\u95ee\u7684\u4e00\u4e2a\u95ee\u9898\u662f": 231, "\u6211\u4eec\u662f\u901a\u8fc7\u503c\u8fd8\u662f\u5f15\u7528\u6765\u4f20\u9012\u53c2\u6570": 231, "batched_dot_src": 231, "batched_dot_mul_sum_v0": 231, "batched_dot_mul_sum_v1": 231, "\u63d0\u4f9b\u4e00\u4e2a\u5b9e\u7528\u7a0b\u5e8f\u6765": 231, "\u7f16\u8bd1": 231, "\u6e90\u4ee3\u7801\u4e3a": 231, "\u6269\u5c55": 231, "\u4f7f\u5f97\u6d4b\u8bd5\u6211\u4eec\u7684": 231, "\u5b9e\u73b0\u53d8\u5f97\u5f88\u5bb9\u6613": 231, "cpp_lib": 231, "extra_cflag": 231, "extra_include_path": 231, "\u9700\u8981\u77e5\u9053": 231, "\u5934\u6587\u4ef6\u7684\u4f4d\u7f6e": 231, "\u5c06\u521b\u5efa\u4e00\u4e2a\u5171\u4eab\u5bf9\u8c61": 231, "\u5e76\u52a0\u8f7d\u5230python\u4e2d": 231, "\u5f53\u6211\u4eec\u6536\u96c6\u6307\u4ee4\u8ba1\u6570\u65f6": 231, "timer\u5c06\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b": 231, "\u56e0\u6b64\u6211\u4eec\u9700\u8981\u91cd\u65b0\u5bfc\u5165\u5b83": 231, "\u5bf9\u4e8ec\u6269\u5c55": 231, "\u5bfc\u5165\u8fc7\u7a0b\u7565\u6709\u4e0d\u540c": 231, "\u4f46\u8fd9\u5c31\u662f\u6211\u4eec\u5728\u8fd9\u91cc\u6240\u505a\u7684": 231, "module_import_str": 231, "67631": 231, "importlib": 231, "spec_from_file_loc": 231, "module_from_spec": 231, "exec_modul": 231, "textwrap": 231, "pretty_print": 231, "machineri": 231, "t_baselin": 231, "\u8f6c\u79fb\u5230": [231, 246], "\u786e\u5b9e\u51cf\u5c11\u4e86\u5f00\u9500": 231, "\u4f46\u5f88\u96be\u5224\u65ad\u54ea\u79cd\u8c03\u7528\u7ea6\u5b9a\u66f4\u6709\u6548": 231, "\u4f7f\u7528\u5f15\u7528\u8c03\u7528": 231, "\u4f3c\u4e4e\u7a0d\u5feb\u4e00\u4e9b": 231, "\u4f46\u5728\u6d4b\u91cf\u8bef\u5dee\u8303\u56f4\u5185": 231, "\u6765\u786e\u5b9a\u54ea\u79cd\u65b9\u5f0f\u66f4\u597d": 231, "stats_v0": 231, "collect_callgrind": 231, "stats_v1": 231, "as_standard": [231, 246], "\u79fb\u9664\u4e86\u6587\u4ef6\u540d\u548c\u67d0\u4e9b\u8def\u5f84\u524d\u7f00": 231, "\u4f7f\u51fd\u6570\u7b26\u53f7\u66f4\u6613\u8bfb": 231, "\u5bf9\u6307\u4ee4\u8ba1\u6570\u8fdb\u884c\u5dee\u5206": 231, "denois": 231, "\u5219\u79fb\u9664\u4e86": 231, "\u89e3\u91ca\u5668\u4e2d\u5df2\u77e5\u5b58\u5728\u663e\u8457\u6296\u52a8\u7684\u51e0\u4e2a\u51fd\u6570": 231, "\u662f\u4e00\u4e2a\u8f6c\u6362\u51fd\u6570\u540d\u7684\u4fbf\u5229": 231, "\u5b83\u5728\u8fdb\u884c": 231, "ing": 231, "\u65f6\u5f88\u6709\u7528": 231, "\u56e0\u4e3a\u53ef\u4ee5\u589e\u52a0\u62b5\u6d88": 231, "\u540c\u65f6\u4e5f\u80fd\u63d0\u9ad8\u53ef\u8bfb\u6027": 231, "wrap_pybind_function_impl_": 231, "\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u6253\u5370\u9009\u9879\u6765\u63a7\u5236\u663e\u793a\u51fd\u6570\u7684\u591a\u5c11\u5185\u5bb9": 231, "linewidth": 231, "\u89e3\u6790\u540e": 231, "\u6307\u4ee4\u8ba1\u6570\u6e05\u695a\u5730\u8868\u660e": 231, "\u901a\u8fc7\u5f15\u7528\u4f20\u9012": 231, "\u66f4\u6709\u6548": 231, "\u56e0\u4e3a\u5b83\u8df3\u8fc7\u4e86\u4e00\u4e9b": 231, "\u4e2d\u95f4\u5f20\u91cf\u7684\u7c3f\u8bb0\u64cd\u4f5c": 231, "\u5e76\u4e14\u4e0e": 231, "\u4e5f\u66f4\u517c\u5bb9": 231, "\u8fd9\u4e0e\u6211\u4eec\u6709\u566a\u58f0\u65f6\u95f4\u89c2\u5bdf\u7ed3\u679c\u4e00\u81f4": 231, "valgrind_wrapp": [231, 246], "timer_interfac": [231, 246], "0x7fb0f06e7630": 231, "2392671": 231, "4367": 231, "rel_with_deb_info": [231, 246], "0x7fb10400d208": 231, "2378978": 231, "functioncount": [231, 246], "0x7fb1000ab358": 231, "0x000000000020d9e0": 231, "0x000000000020db10": 231, "integer_sequ": 231, "0ul": 231, "1ul": 231, "undefinedtensorimpl": 231, "reset_": 231, "5935": 231, "0x000000000022c0e0": 231, "13693": 231, "\u67e5\u770b\u5176\u4ed6\u6559\u7a0b\u7ee7\u7eed\u5b66\u4e60": 231, "changing_default_devic": 232, "\u6df1\u5ea6\u5b66\u4e60\u4f7f\u7528\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc": 233, "\u8fd9\u662f\u7531\u8bb8\u591a\u4e92\u8fde\u5355\u5143\u5c42\u7ec4\u6210\u7684\u8ba1\u7b97\u7cfb\u7edf": 233, "\u901a\u8fc7\u5c06\u6570\u636e\u4f20\u9012\u5230\u8fd9\u4e9b\u4e92\u8fde\u5355\u5143": 233, "\u795e\u7ecf\u7f51\u7edc\u80fd\u591f\u5b66\u4e60\u5982\u4f55\u8fd1\u4f3c\u5c06\u8f93\u5165\u8f6c\u6362\u4e3a\u8f93\u51fa\u6240\u9700\u7684\u8ba1\u7b97": 233, "\u53ef\u4ee5\u4f7f\u7528": [233, 246], "\u5305\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": 233, "\u63d0\u4f9b\u4e86\u4f18\u96c5\u8bbe\u8ba1\u7684\u6a21\u5757\u548c\u7c7b\u6765\u5e2e\u52a9\u60a8\u521b\u5efa\u548c\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc": 233, "\u4e2d\u6709\u5c42": 233, "\u4ee5\u53ca\u4e00\u4e2a\u8fd4\u56de": 233, "\u6765\u5b9a\u4e49\u4e00\u4e2a\u7528\u4e8e": 233, "hhttp": 233, "\u7684\u795e\u7ecf\u7f51\u7edc": 233, "\u5982\u679c\u8fd8\u6ca1\u6709\u5b89\u88c5": [233, 240, 241, 242, 249], "\u7684\u8bdd": 233, "\u6211\u4eec\u9700\u8981\u5148\u5b89\u88c5\u5b83": [233, 242, 243, 248, 249], "\u5bfc\u5165\u52a0\u8f7d\u6570\u636e\u6240\u9700\u7684\u6240\u6709\u5fc5\u8981\u5e93": [233, 236, 240, 241, 242, 243, 248, 249, 250], "\u53ca\u5176\u5b50\u6a21\u5757": [233, 240, 241, 242, 243, 248, 249], "\u6211\u4eec\u7684\u7f51\u7edc\u5c06\u8bc6\u522b\u56fe\u50cf": 233, "\u6211\u4eec\u5c06\u4f7f\u7528pytorch\u5185\u7f6e\u7684\u5377\u79ef\u8fc7\u7a0b": 233, "\u5377\u79ef\u5c06\u6bcf\u4e2a\u56fe\u50cf\u5143\u7d20\u4e0e\u5176\u5c40\u90e8\u90bb\u5c45\u76f8\u52a0": 233, "\u5e76\u7531\u4e00\u4e2a\u5c0f\u77e9\u9635": 233, "\u5185\u6838": 233, "\u52a0\u6743": 233, "\u8be5\u5185\u6838\u53ef\u5e2e\u52a9\u6211\u4eec\u4ece\u8f93\u5165\u56fe\u50cf\u4e2d\u63d0\u53d6\u67d0\u4e9b\u7279\u5f81": 233, "\u5982\u8fb9\u7f18\u68c0\u6d4b": 233, "\u9510\u5229\u5ea6": 233, "\u6a21\u7cca\u5ea6\u7b49": 233, "\u5b9a\u4e49\u6a21\u578b\u7684": 233, "\u7c7b\u6709\u4e24\u4e2a\u8981\u6c42": 233, "\u7b2c\u4e00\u662f\u7f16\u5199\u4e00\u4e2a\u5f15\u7528": 233, "\u5728\u8fd9\u4e2a\u51fd\u6570\u4e2d": 233, "\u4f60\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u5168\u8fde\u63a5\u5c42": 233, "\u4f7f\u7528\u5377\u79ef": 233, "\u6211\u4eec\u5c06\u5b9a\u4e49\u6211\u4eec\u7684\u6a21\u578b\u4ee5\u63a5\u53d71\u4e2a\u8f93\u5165\u56fe\u50cf\u901a\u9053": 233, "\u5e76\u8f93\u51fa\u4e0e\u6211\u4eec\u7684\u76ee\u6807\u76f8\u5339\u914d\u768410\u4e2a\u6807\u7b7e": 233, "\u8868\u793a0\u52309\u7684\u6570\u5b57": 233, "\u8fd9\u4e2a\u7b97\u6cd5\u7531\u4f60\u81ea\u5df1\u521b\u5efa": 233, "\u6211\u4eec\u5c06\u9075\u5faa\u6807\u51c6\u7684mnist\u7b97\u6cd5": 233, "\u7b2c\u4e00\u4e2a2d\u5377\u79ef\u5c42": 233, "\u63a5\u53d71\u4e2a\u8f93\u5165\u901a\u9053": 233, "\u56fe\u50cf": 233, "\u8f93\u51fa32\u4e2a\u5377\u79ef\u7279\u5f81": 233, "\u4f7f\u75283x3\u7684\u65b9\u5f62\u6838": 233, "\u7b2c\u4e8c\u4e2a2d\u5377\u79ef\u5c42": 233, "\u63a5\u53d732\u4e2a\u8f93\u5165\u5c42": 233, "\u8f93\u51fa64\u4e2a\u5377\u79ef\u7279\u5f81": 233, "\u8bbe\u8ba1\u4e3a\u786e\u4fdd\u76f8\u90bb\u50cf\u7d20\u8981\u4e48\u5168\u4e3a0": 233, "\u8981\u4e48\u5168\u4e3a\u6fc0\u6d3b": 233, "\u5177\u6709\u4e00\u5b9a\u8f93\u5165\u6982\u7387": 233, "\u7b2c\u4e00\u4e2a\u5168\u8fde\u63a5\u5c42": 233, "\u7b2c\u4e8c\u4e2a\u5168\u8fde\u63a5\u5c42": 233, "\u8f93\u51fa\u6211\u4eec\u768410\u4e2a\u6807\u7b7e": 233, "my_nn": 233, "\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u795e\u7ecf\u7f51\u7edc\u7684\u5b9a\u4e49": 233, "\u73b0\u5728\u6211\u4eec\u5fc5\u987b\u5b9a\u4e49\u6570\u636e\u5982\u4f55\u901a\u8fc7\u5b83": 233, "\u5f53\u4f60\u4f7f\u7528pytorch\u6784\u5efa\u6a21\u578b\u65f6": 233, "\u4f60\u53ea\u9700\u8981\u5b9a\u4e49": 233, "\u5b83\u5c06\u6570\u636e\u4f20\u9012\u5230\u8ba1\u7b97\u56fe": 233, "\u5373\u6211\u4eec\u7684\u795e\u7ecf\u7f51\u7edc": 233, "\u8fd9\u5c06\u4ee3\u8868\u6211\u4eec\u7684\u524d\u5411\u7b97\u6cd5": 233, "\u51fd\u6570\u4e2d\u4f7f\u7528\u4efb\u4f55\u5f20\u91cf\u64cd\u4f5c": 233, "x\u8868\u793a\u6211\u4eec\u7684\u6570\u636e": 233, "\u5c06\u6570\u636e\u4f20\u9012\u7ed9conv1": 233, "\u5bf9x\u4f7f\u7528\u6574\u6d41\u7ebf\u6027\u6fc0\u6d3b\u51fd\u6570": 233, "\u5bf9x\u8fd0\u884c\u6700\u5927\u6c60\u5316": 233, "\u5c06\u6570\u636e\u4f20\u9012\u7ed9dropout1": 233, "\u5c55\u5e73x": 233, "start_dim": 233, "\u5c06\u6570\u636e\u4f20\u9012\u7ed9": 233, "\u5bf9x\u5e94\u7528softmax": 233, "\u4e3a\u4e86\u786e\u4fdd\u6211\u4eec\u5f97\u5230\u671f\u671b\u7684\u8f93\u51fa": 233, "\u8ba9\u6211\u4eec\u901a\u8fc7\u4e00\u4e9b\u968f\u673a\u6570\u636e\u6d4b\u8bd5\u6211\u4eec\u7684\u6a21\u578b": 233, "\u7b49\u540c\u4e8e\u4e00\u4e2a\u968f\u673a\u768428x28\u56fe\u50cf": 233, "random_data": 233, "\u8fd9\u4e2a\u7ed3\u679c\u5f20\u91cf\u4e2d\u7684\u6bcf\u4e2a\u6570\u5b57\u90fd\u7b49\u540c\u4e8e\u968f\u673a\u5f20\u91cf\u6240\u5173\u8054\u7684\u6807\u7b7e\u7684\u9884\u6d4b": 233, "\u795d\u8d3a\u4f60": [233, 241, 242, 249, 250], "\u4f60\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u5b9a\u4e49\u4e86\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 233, "\u67e5\u770b\u8fd9\u4e9b\u5176\u4ed6\u6559\u7a0b\u4ee5\u7ee7\u7eed\u5b66\u4e60": [233, 242], "\u662f\u4ec0\u4e48": [233, 235, 236, 251], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u7528\u4e8e\u63a8\u7406": 233, "defining_a_neural_network": [233, 235], "postprocess": 234, "quanitz": 234, "lstm_for_demonstr": 234, "out_dim": 234, "29592": 234, "model_dimens": 234, "sequence_length": 234, "lstm_depth": 234, "_lstm": 234, "float_lstm": 234, "quantized_lstm": 234, "kb": [234, 238], "mileag": 234, "mag1": 234, "hidden2": 234, "mag2": 234, "mag3": 234, "documentaion": 234, "dynamic_quant": [234, 235], "loading_data_recip": [235, 236], "what_is_state_dict": [235, 249], "saving_and_loading_models_for_infer": [235, 242], "custom_dataset_transforms_load": 235, "save_load_across_devic": [235, 240], "saving_and_loading_a_general_checkpoint": [235, 241], "saving_multiple_models_in_one_fil": [235, 243], "warmstarting_model_using_parameters_from_a_different_model": [235, 248], "zeroing_out_gradi": [235, 250], "mobile_perf": 235, "\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8": [235, 251], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": [235, 251], "\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 235, "\u521b\u5efa\u795e\u7ecf\u7f51\u7edc": [235, 251], "\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": [235, 251], "timer\u5feb\u901f\u5165\u95e8": 235, "sphx_glr_recipes_recipes_zeroing_out_gradi": 235, "\u4e2d\u6e05\u96f6\u68af\u5ea6": [235, 250], "\u63d0\u4f9b\u4e86\u5e7f\u6cdb\u7684\u795e\u7ecf\u7f51\u7edc\u6784\u5efa\u6a21\u5757": 236, "\u5e76\u62e5\u6709\u7b80\u5355": 236, "\u76f4\u89c2\u4e14\u7a33\u5b9a\u7684": 236, "pytorch\u5305\u542b\u7528\u4e8e\u51c6\u5907\u548c\u52a0\u8f7d\u5e38\u89c1\u6570\u636e\u96c6\u7684\u5de5\u5177\u5305": 236, "\u4e3a\u8bad\u7ec3\u6a21\u578b\u63d0\u4f9b\u6570\u636e": 236, "\u6570\u636e\u52a0\u8f7d\u5de5\u5177\u7684\u6838\u5fc3\u7c7b\u4e3a": 236, "\u5b83\u8868\u793a\u6570\u636e\u96c6\u4e0a\u7684\u4e00\u4e2a": 236, "\u53ef\u8fed\u4ee3\u5bf9\u8c61": 236, "\u63d0\u4f9b\u4e86\u5185\u7f6e\u7684\u9ad8\u8d28\u91cf\u6570\u636e\u96c6": 236, "\u4f7f\u7528\u8fd9\u4e9b\u6570\u636e\u96c6\u53ef\u901a\u8fc7": 236, "\u672a\u6765\u4f1a\u6301\u7eed\u65b0\u589e": 236, "yesno": 236, "\u6211\u4eec\u5c06\u6f14\u793a\u5982\u4f55\u6709\u6548\u5730\u5c06\u6570\u636e\u4ece": 236, "\u52a0\u8f7d\u5230": 236, "\u5b89\u88c5": 236, "\u6211\u4eec\u9700\u8981\u5b89\u88c5": 236, "\u4ee5\u8bbf\u95ee\u8be5\u6570\u636e\u96c6": 236, "\u5982\u679c\u5728googl": 236, "\u8bf7\u53d6\u6d88\u6ce8\u91ca\u4ee5\u4e0b\u884c": 236, "\u6839\u636e\u4f7f\u7528\u7684\u5185\u7f6e\u6570\u636e\u96c6": 236, "\u60a8\u8fd8\u53ef\u4ee5\u5b89\u88c5\u5e76\u5bfc\u5165": 236, "\u6570\u636e\u96c6\u5305\u542b\u4e00\u4e2a\u4eba\u8bf4\u5e0c\u4f2f\u6765\u8bed": 236, "\u5426": 236, "\u768460\u4e2a\u5f55\u97f3": 236, "\u6bcf\u4e2a\u5f55\u97f3\u957f\u5ea6\u4e3a8\u4e2a\u5355\u8bcd": 236, "\u66f4\u591a\u4fe1\u606f": 236, "\u521b\u5efa\u4e86\u4e00\u4e2a": 236, "openslr": 236, "waves_yesno": 236, "folder_in_arch": 236, "\u6570\u636e\u96c6\u4e2d\u7684\u6bcf\u4e2a\u6761\u76ee\u90fd\u662f\u4e00\u4e2a\u5143\u7ec4": 236, "\u5f62\u5f0f\u4e3a": 236, "\u6ce2\u5f62": 236, "\u91c7\u6837\u7387": 236, "\u60a8\u5fc5\u987b\u4e3a": 236, "\u6570\u636e\u96c6\u8bbe\u7f6e\u4e00\u4e2a": 236, "\u76ee\u5f55": 236, "\u7528\u4e8e\u5b58\u653e\u8bad\u7ec3\u548c\u6d4b\u8bd5\u6570\u636e\u96c6": 236, "\u5176\u4ed6\u53c2\u6570\u662f\u53ef\u9009\u7684": 236, "\u663e\u793a\u4e86\u5b83\u4eec\u7684\u9ed8\u8ba4\u503c": 236, "\u4ee5\u4e0b\u662f\u5176\u4ed6\u53c2\u6570\u7684\u4e00\u4e9b\u6709\u7528\u4fe1\u606f": 236, "\u5982\u679c\u4e3atrue": 236, "\u5219\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u6570\u636e\u96c6\u5e76\u5c06\u5176\u653e\u5728root\u76ee\u5f55\u4e2d": 236, "\u5982\u679c\u6570\u636e\u96c6\u5df2\u4e0b\u8f7d": 236, "\u5219\u4e0d\u4f1a\u91cd\u65b0\u4e0b\u8f7d": 236, "\u8ba9\u6211\u4eec\u8bbf\u95ee": 236, "\u4e2d\u7684\u4e00\u4e2a\u6570\u636e\u70b9\u662f\u4e00\u4e2a\u5143\u7ec4": 236, "\u5176\u4e2d\u6807\u7b7e\u662f\u4e00\u4e2a\u6574\u6570\u5217\u8868": 236, "1\u8868\u793aye": 236, "0\u8868\u793ano": 236, "yesno_data": 236, "\u9009\u62e9\u6570\u636e\u70b9\u7f16\u53f73": 236, "\u7684\u793a\u4f8b": 236, "waveform": 236, "sample_r": 236, "nlabel": 236, "\u5728\u5b9e\u8df5\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u6570\u636e\u65f6": 236, "\u6700\u597d\u5c06\u6570\u636e\u5212\u5206\u4e3a": 236, "\u6570\u636e\u96c6\u548c": 236, "\u8fd9\u53ef\u786e\u4fdd\u60a8\u6709\u672a\u4f7f\u7528\u7684\u6570\u636e\u6765\u6d4b\u8bd5\u6a21\u578b\u7684\u6027\u80fd": 236, "\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u8bbf\u95ee\u6570\u636e\u96c6": 236, "\u6211\u4eec\u5fc5\u987b\u901a\u8fc7": 236, "\u4f20\u9012\u5b83": 236, "\u5c06\u6570\u636e\u96c6\u548c\u91c7\u6837\u5668\u7ec4\u5408\u5728\u4e00\u8d77": 236, "\u8fd4\u56de\u6570\u636e\u96c6\u4e0a\u7684\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61": 236, "\u6211\u4eec\u7684\u6570\u636e\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528": 236, "\u8fdb\u884c\u8fed\u4ee3": 236, "\u5728\u5f00\u59cb\u8bad\u7ec3\u6a21\u578b\u65f6": 236, "\u8fd9\u5c06\u662f\u5fc5\u9700\u7684": 236, "\u60a8\u4f1a\u6ce8\u610f\u5230": 236, "\u5bf9\u8c61\u4e2d\u7684\u6bcf\u4e2a\u6570\u636e\u6761\u76ee\u90fd\u8f6c\u6362\u4e3a\u4e00\u4e2a\u5f20\u91cf": 236, "\u5176\u4e2d\u5305\u542b\u8868\u793a\u6ce2\u5f62": 236, "\u91c7\u6837\u7387\u548c\u6807\u7b7e\u7684\u5f20\u91cf": 236, "\u60a8\u53ef\u4ee5\u9009\u62e9\u53ef\u89c6\u5316\u6570\u636e": 236, "\u4ee5\u8fdb\u4e00\u6b65\u4e86\u89e3": 236, "\u795d\u8d3a\u60a8": [236, 240, 243, 248], "\u60a8\u5df2\u6210\u529f\u5728pytorch\u4e2d\u52a0\u8f7d\u6570\u636e": 236, "\u67e5\u770b\u8fd9\u4e9b\u5176\u4ed6\u6559\u7a0b": [236, 248, 249, 250], "\u7ee7\u7eed\u60a8\u7684\u5b66\u4e60": [236, 248], "\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc": 236, "pytorch\u4e2d\u7684state_dict": 236, "mikayla": [237, 244], "gawarecki": [237, 244], "somemodul": 237, "meta_m": 237, "undesir": 237, "upfront": 237, "my_special_routin": 237, "fancier": 237, "my_processing_funct": 237, "processed_t": 237, "new_m": 237, "param_in_model": 237, "param_in_state_dict": 237, "set_swap_module_params_on_convers": [237, 244], "swap_tensor": 237, "module_load_state_dict_tip": 237, "\u672c\u6559\u7a0b\u89e3\u91ca\u4e86\u5982\u4f55\u4f7f\u7528pytorch": 238, "\u5e76\u6d4b\u91cf\u6a21\u578b\u7b97\u5b50\u7684\u65f6\u95f4\u548c\u5185\u5b58\u6d88\u8017": 238, "\u5f53\u7528\u6237\u9700\u8981\u786e\u5b9a\u6a21\u578b\u4e2d\u6700\u8017\u8d39\u8d44\u6e90\u7684\u7b97\u5b50\u65f6": 238, "pytorch\u5305\u542b\u4e00\u4e2a\u7b80\u5355\u7684profil": 238, "api\u975e\u5e38\u6709\u7528": 238, "\u6211\u4eec\u5c06\u4f7f\u7528\u4e00\u4e2a\u7b80\u5355\u7684": 238, "\u6a21\u578b\u6765\u6f14\u793a\u5982\u4f55\u4f7f\u7528profiler\u5206\u6790\u6a21\u578b\u6027\u80fd": 238, "\u8981\u5b89\u88c5": 238, "\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4": 238, "\u5bfc\u5165\u6240\u6709\u5fc5\u9700\u7684\u5e93": 238, "\u5b9e\u4f8b\u5316\u4e00\u4e2a\u7b80\u5355\u7684resnet\u6a21\u578b": 238, "\u4f7f\u7528profiler\u5206\u6790\u5185\u5b58\u6d88\u8017": 238, "\u4f7f\u7528profiler\u5206\u6790\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a": 238, "\u8ba9\u6211\u4eec\u521b\u5efa\u4e00\u4e2a": 238, "\u6a21\u578b\u5b9e\u4f8b": 238, "\u5e76\u4e3a\u5b83\u51c6\u5907\u4e00\u4e2a\u8f93\u5165": 238, "profiler\u901a\u8fc7\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u542f\u7528": 238, "\u5e76\u63a5\u53d7\u591a\u4e2a\u53c2\u6570": 238, "\u5176\u4e2d\u4e00\u4e9b\u6700\u6709\u7528\u7684\u53c2\u6570\u5982\u4e0b": 238, "\u8981\u5206\u6790\u7684\u6d3b\u52a8\u5217\u8868": 238, "pytorch\u7b97\u5b50": 238, "torchscript\u51fd\u6570\u548c\u7528\u6237\u5b9a\u4e49\u7684\u4ee3\u7801\u6807\u7b7e": 238, "\u89c1\u4e0b\u9762\u7684": 238, "\u8bbe\u5907\u4e0a\u7684cuda\u5185\u6838": 238, "\u662f\u5426\u8bb0\u5f55\u7b97\u5b50\u8f93\u5165\u7684\u5f62\u72b6": 238, "\u662f\u5426\u62a5\u544a\u6a21\u578b\u5f20\u91cf\u6240\u6d88\u8017\u7684\u5185\u5b58\u91cf": 238, "\u662f\u5426\u6d4b\u91cfcuda\u5185\u6838\u7684\u6267\u884c\u65f6\u95f4": 238, "\u5f53\u4f7f\u7528cuda\u65f6": 238, "profiler\u8fd8\u4f1a\u663e\u793a\u4e3b\u673a\u4e0a\u53d1\u751f\u7684\u8fd0\u884c\u65f6cuda\u4e8b\u4ef6": 238, "\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u4f7f\u7528profiler\u5206\u6790\u6267\u884c\u65f6\u95f4": 238, "model_infer": 238, "\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u4e3a\u4efb\u610f\u4ee3\u7801\u8303\u56f4\u6dfb\u52a0\u7528\u6237\u63d0\u4f9b\u7684\u540d\u79f0\u6807\u7b7e": 238, "\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\u4f7f\u7528": 238, "\u4f5c\u4e3a\u6807\u7b7e": 238, "profiler\u5141\u8bb8\u68c0\u67e5\u5728\u4f7f\u7528profiler\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u5305\u88c5\u7684\u4ee3\u7801\u8303\u56f4\u5185\u6267\u884c\u671f\u95f4\u8c03\u7528\u4e86\u54ea\u4e9b\u7b97\u5b50": 238, "\u5982\u679c\u540c\u65f6\u5b58\u5728\u591a\u4e2a\u6d3b\u52a8\u7684profiler\u8303\u56f4": 238, "\u4f8b\u5982\u5728\u5e76\u884cpytorch\u7ebf\u7a0b\u4e2d": 238, "\u6bcf\u4e2aprofiling\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u53ea\u8ddf\u8e2a\u5176\u5bf9\u5e94\u8303\u56f4\u7684\u7b97\u5b50": 238, "profiler\u8fd8\u4f1a\u81ea\u52a8\u5206\u6790\u4f7f\u7528": 238, "_fork": 238, "\u542f\u52a8\u7684\u5f02\u6b65\u4efb\u52a1": 238, "\u4ee5\u53ca\u5728\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\u4f7f\u7528": 238, "\u8c03\u7528\u542f\u52a8\u7684\u53cd\u5411\u4f20\u64ad\u7b97\u5b50": 238, "\u8ba9\u6211\u4eec\u6253\u5370\u51fa\u4e0a\u8ff0\u6267\u884c\u7684\u7edf\u8ba1\u4fe1\u606f": 238, "cpu_time_tot": 238, "\u8f93\u51fa\u5c06\u5982\u4e0b\u6240\u793a": 238, "\u7701\u7565\u4e86\u4e00\u4e9b\u5217": 238, "509m": 238, "503m": 238, "931m": 238, "597m": 238, "700m": 238, "585m": 238, "_convolut": 238, "450m": 238, "mkldnn_convolut": 238, "838m": 238, "114m": 238, "556m": 238, "693m": 238, "_batch_norm_impl_index": 238, "482m": 238, "724": 238, "100u": 238, "native_batch_norm": 238, "229m": 238, "109m": 238, "705": 238, "450u": 238, "332": 238, "631m": 238, "286u": 238, "668m": 238, "292m": 238, "988u": 238, "549m": 238, "group_by_input_shap": 238, "\u8fd9\u91cc\u6211\u4eec\u53ef\u4ee5\u770b\u5230": 238, "\u5982\u9884\u671f\u7684\u90a3\u6837": 238, "\u5927\u90e8\u5206\u65f6\u95f4\u90fd\u82b1\u5728\u4e86\u5377\u79ef\u4e0a": 238, "\u5bf9\u4e8e\u4f7f\u7528": 238, "\u652f\u6301\u7f16\u8bd1\u7684pytorch": 238, "\u7279\u522b\u662f\u5728": 238, "\u6ce8\u610f\u81ea\u8eabcpu\u65f6\u95f4\u548ccpu\u65f6\u95f4\u4e4b\u95f4\u7684\u533a\u522b": 238, "\u7b97\u5b50\u53ef\u4ee5\u8c03\u7528\u5176\u4ed6\u7b97\u5b50": 238, "\u81ea\u8eabcpu\u65f6\u95f4\u4e0d\u5305\u62ec\u5728\u5b50\u7b97\u5b50\u8c03\u7528\u4e2d\u82b1\u8d39\u7684\u65f6\u95f4": 238, "\u800c\u603bcpu\u65f6\u95f4\u5305\u62ec\u4e86\u5b83": 238, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u5c06": 238, "\u8c03\u7528\u6765\u9009\u62e9\u6309\u81ea\u8eabcpu\u65f6\u95f4\u6392\u5e8f": 238, "\u8981\u83b7\u5f97\u66f4\u7ec6\u7c92\u5ea6\u7684\u7ed3\u679c\u5e76\u5305\u542b\u7b97\u5b50\u8f93\u5165\u5f62\u72b6": 238, "\u8bf7\u4f20\u9012": 238, "\u8fd9\u9700\u8981\u4f7f\u7528": 238, "\u8fd0\u884cprofil": 238, "\u8f93\u51fa\u53ef\u80fd\u5982\u4e0b\u6240\u793a": 238, "008m": 238, "956m": 238, "909m": 238, "834m": 238, "332m": 238, "303m": 238, "273m": 238, "233m": 238, "751m": 238, "\u51fa\u73b0\u4e86\u4e24\u6b21": 238, "\u5177\u6709\u4e0d\u540c\u7684\u8f93\u5165\u5f62\u72b6": 238, "profiler\u4e5f\u53ef\u7528\u4e8e\u5206\u6790\u5728gpu\u4e0a\u6267\u884c\u7684\u6a21\u578b\u7684\u6027\u80fd": 238, "\u7b2c\u4e00\u6b21\u4f7f\u7528cuda\u5206\u6790\u53ef\u80fd\u4f1a\u5e26\u6765\u989d\u5916\u7684\u5f00\u9500": 238, "\u7ed3\u679c\u8f93\u51fa": 238, "666m": 238, "484m": 238, "_convolution_nogroup": 238, "thnn_conv2d": 238, "thnn_conv2d_forward": 238, "im2col_kernel": 238, "844m": 238, "sgemm_32x32x32_nn": 238, "206m": 238, "sgemm_32x32x32_nn_vec": 238, "093m": 238, "015m": 238, "\u6ce8\u610f\u5728\u8f93\u51fa\u4e2d\u51fa\u73b0\u4e86\u8bbe\u5907\u4e0a\u7684\u5185\u6838": 238, "profiler\u8fd8\u53ef\u4ee5\u663e\u793a\u5728\u6267\u884c\u6a21\u578b\u7b97\u5b50\u671f\u95f4\u5206\u914d": 238, "\u6216\u91ca\u653e": 238, "\u7684\u5185\u5b58\u91cf": 238, "\u7531\u6a21\u578b\u5f20\u91cf\u4f7f\u7528": 238, "\u5728\u4e0b\u9762\u7684\u8f93\u51fa\u4e2d": 238, "\u5185\u5b58\u5bf9\u5e94\u4e8e\u7b97\u5b50\u5206\u914d": 238, "\u91ca\u653e": 238, "\u7684\u5185\u5b58": 238, "\u4e0d\u5305\u62ec\u5bf9\u5176\u4ed6\u7b97\u5b50\u7684\u5b50\u8c03\u7528": 238, "\u8981\u542f\u7528\u5185\u5b58\u5206\u6790\u529f\u80fd": 238, "self_cpu_memory_usag": 238, "max_pool2d_with_indic": 238, "572": 238, "resize_": 238, "064m": 238, "cpu_memory_usag": 238, "\u8f93\u51fa\u5982\u4e0b\u6240\u793a": 238, "\u53ef\u4ee5\u5c06\u5206\u6790\u7ed3\u679c\u8f93\u51fa\u4e3a": 238, "\u8ddf\u8e2a\u6587\u4ef6": 238, "\u4f60\u53ef\u4ee5\u5728chrome\u8ddf\u8e2a\u67e5\u770b\u5668": 238, "\u4e2d\u68c0\u67e5\u5206\u6790\u7684\u7b97\u5b50\u548ccuda\u5185\u6838\u5e8f\u5217": 238, "\u53ef\u7528\u4e8e\u5206\u6790": 238, "\u5806\u6808\u8ddf\u8e2a": 238, "self_cuda_time_tot": 238, "439": 238, "_conv_forward": 238, "1051": 238, "_call_impl": 238, "016m": 238, "659m": 238, "\u6ce8\u610f\u5728": 238, "\u811a\u672c\u4e2d\u7684\u4e24\u4e2a\u5377\u79ef\u548c\u4e24\u4e2a\u8c03\u7528\u4f4d\u7f6e": 238, "\u8b66\u544a": 238, "\u5806\u6808\u8ddf\u8e2a\u4f1a\u589e\u52a0\u989d\u5916\u7684\u5206\u6790\u5f00\u9500": 238, "pytorch\u5206\u6790\u5668\u63d0\u4f9b\u4e86\u4e00\u4e2a\u989d\u5916\u7684api\u6765\u5904\u7406\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a": 238, "\u4f8b\u5982\u8bad\u7ec3\u5faa\u73af": 238, "\u8ddf\u8e2a\u6240\u6709\u6267\u884c\u53ef\u80fd\u4f1a\u5f88\u6162": 238, "\u5e76\u5bfc\u81f4\u975e\u5e38\u5927\u7684\u8ddf\u8e2a\u6587\u4ef6": 238, "\u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u60c5\u51b5": 238, "\u53ef\u4ee5\u4f7f\u7528\u53ef\u9009\u53c2\u6570": 238, "\u6307\u5b9a\u4e00\u4e2a\u51fd\u6570": 238, "\u8be5\u51fd\u6570\u4ee5\u6574\u6570\u53c2\u6570": 238, "\u6b65\u9aa4\u7f16\u53f7": 238, "\u4f5c\u4e3a\u8f93\u5165": 238, "\u5e76\u8fd4\u56de\u5206\u6790\u5668\u7684\u64cd\u4f5c": 238, "\u4f7f\u7528\u6b64\u53c2\u6570\u7684\u6700\u4f73\u65b9\u5f0f\u662f\u4f7f\u7528": 238, "\u5e2e\u52a9\u51fd\u6570": 238, "\u5b83\u53ef\u4ee5\u4e3a\u60a8\u751f\u6210\u4e00\u4e2a\u8ba1\u5212": 238, "\u8be5\u51fd\u6570\u4ee5\u5206\u6790\u5668\u7684\u5f15\u7528\u4f5c\u4e3a\u8f93\u5165": 238, "\u5e76\u5728\u6bcf\u6b21\u65b0\u7684\u8ddf\u8e2a\u51c6\u5907\u5c31\u7eea\u65f6\u7531\u5206\u6790\u5668\u8c03\u7528": 238, "\u4e3a\u4e86\u8bf4\u660e\u8be5api\u7684\u5de5\u4f5c\u539f\u7406": 238, "\u8ba9\u6211\u4eec\u9996\u5148\u8003\u8651\u4ee5\u4e0b\u4f7f\u7528": 238, "\u5e2e\u52a9\u51fd\u6570\u7684\u793a\u4f8b": 238, "\u5206\u6790\u5668\u5047\u8bbe\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a\u7531\u4ece\u96f6\u5f00\u59cb\u7f16\u53f7\u7684\u6b65\u9aa4\u7ec4\u6210": 238, "\u4e0a\u9762\u7684\u793a\u4f8b\u4e3a\u5206\u6790\u5668\u5b9a\u4e49\u4e86\u4ee5\u4e0b\u64cd\u4f5c\u5e8f\u5217": 238, "\u544a\u8bc9\u5206\u6790\u5668\u5b83\u5e94\u8be5\u5ffd\u7565\u524d10\u4e2a\u6b65\u9aa4": 238, "\u7684\u9ed8\u8ba4\u503c\u4e3a\u96f6": 238, "\u5728\u7b2c\u4e00\u4e2a": 238, "\u6b65\u9aa4\u4e4b\u540e": 238, "\u5206\u6790\u5668\u5f00\u59cb\u6267\u884c\u5206\u6790\u5668\u5468\u671f": 238, "\u6bcf\u4e2a\u5468\u671f\u7531\u4e09\u4e2a\u9636\u6bb5\u7ec4\u6210": 238, "\u7a7a\u95f2": 238, "\u5728\u6b64\u9636\u6bb5\u5206\u6790\u5668\u4e0d\u6d3b\u52a8": 238, "\u9884\u70ed": 238, "\u5728\u6b64\u9636\u6bb5\u5206\u6790\u5668\u5f00\u59cb\u8ddf\u8e2a": 238, "\u4f46\u7ed3\u679c\u88ab\u4e22\u5f03": 238, "\u6b64\u9636\u6bb5\u7528\u4e8e\u4e22\u5f03\u5206\u6790\u5668\u5728\u8ddf\u8e2a\u5f00\u59cb\u65f6\u83b7\u5f97\u7684\u6837\u672c": 238, "\u56e0\u4e3a\u5b83\u4eec\u901a\u5e38\u7531\u989d\u5916\u7684\u5f00\u9500\u626d\u66f2": 238, "\u4e3b\u52a8\u8ddf\u8e2a": 238, "\u5728\u6b64\u9636\u6bb5\u5206\u6790\u5668\u8ddf\u8e2a\u548c\u8bb0\u5f55\u6570\u636e": 238, "\u53ef\u9009\u7684": 238, "\u53c2\u6570\u6307\u5b9a\u5468\u671f\u7684\u4e0a\u9650": 238, "\u96f6\u503c": 238, "\u5206\u6790\u5668\u5c06\u5c3d\u53ef\u80fd\u957f\u65f6\u95f4\u5730\u6267\u884c\u5468\u671f": 238, "\u5206\u6790\u5668\u5c06\u8df3\u8fc7\u524d15\u4e2a\u6b65\u9aa4": 238, "\u5728\u4e0b\u4e00\u6b65\u8fdb\u884c\u9884\u70ed": 238, "\u5728\u63a5\u4e0b\u6765\u76843\u4e2a\u6b65\u9aa4\u4e2d\u4e3b\u52a8\u8bb0\u5f55": 238, "\u518d\u8df3\u8fc7\u53e6\u59165\u4e2a\u6b65\u9aa4": 238, "\u5728\u53e6\u59163\u4e2a\u6b65\u9aa4\u4e2d\u4e3b\u52a8\u8bb0\u5f55": 238, "\u7531\u4e8e\u6307\u5b9a\u4e86": 238, "\u53c2\u6570\u503c": 238, "\u5206\u6790\u5668\u5c06\u5728\u524d\u4e24\u4e2a\u5468\u671f\u4e4b\u540e\u505c\u6b62\u8bb0\u5f55": 238, "\u5728\u6bcf\u4e2a\u5468\u671f\u7ed3\u675f\u65f6": 238, "\u5206\u6790\u5668\u8c03\u7528\u6307\u5b9a\u7684": 238, "\u51fd\u6570\u5e76\u5c06\u81ea\u8eab\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012": 238, "\u6b64\u51fd\u6570\u7528\u4e8e\u5904\u7406\u65b0\u7684\u8ddf\u8e2a": 238, "\u901a\u8fc7\u83b7\u53d6\u8868\u8f93\u51fa\u6216\u5c06\u8f93\u51fa\u4fdd\u5b58\u5230\u78c1\u76d8\u4e0a\u7684\u8ddf\u8e2a\u6587\u4ef6": 238, "\u8981\u5411\u5206\u6790\u5668\u53d1\u9001\u4e0b\u4e00\u6b65\u5df2\u7ecf\u5f00\u59cb\u7684\u4fe1\u53f7": 238, "\u8bf7\u8c03\u7528": [238, 243], "\u5f53\u524d\u5206\u6790\u5668\u6b65\u9aa4\u5b58\u50a8\u5728": 238, "\u4ee5\u4e0b\u793a\u4f8b\u663e\u793a\u4e86\u5982\u4f55\u4f7f\u7528\u4e0a\u8ff0\u6240\u6709\u6982\u5ff5": 238, "trace_": 238, "\u67e5\u770b\u4ee5\u4e0b\u6559\u7a0b\u4ee5\u7ee7\u7eed\u5b66\u4e60": 238, "\u5206\u6790\u5668": 238, "\u53ef\u89c6\u5316\u6a21\u578b": 238, "\u6570\u636e\u548c\u8bad\u7ec3": 238, "profiler_recip": 238, "t_larg": 239, "fw_hook": 239, "reasoning_about_shap": 239, "\u60a8\u53ef\u80fd\u9700\u8981\u5728\u4e0d\u540c\u7684\u8bbe\u5907\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u795e\u7ecf\u7f51\u7edc\u6a21\u578b": 240, "\u4f7f\u7528pytorch\u5728\u4e0d\u540c\u8bbe\u5907\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u662f\u76f8\u5bf9\u76f4\u63a5\u7684": 240, "\u6211\u4eec\u5c06\u5c1d\u8bd5\u5728cpu\u548cgpu\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 240, "\u4e3a\u4e86\u8ba9\u672c\u6559\u7a0b\u4e2d\u7684\u6bcf\u4e2a\u4ee3\u7801\u5757\u90fd\u80fd\u6b63\u786e\u8fd0\u884c": 240, "\u60a8\u5fc5\u987b\u5148\u5c06\u8fd0\u884c\u73af\u5883\u5207\u6362\u5230": 240, "\u6216\u66f4\u9ad8": 240, "\u5b8c\u6210\u540e": 240, "\u6211\u4eec\u9700\u8981\u5b89\u88c5\u5b83": [240, 241], "\u4fdd\u5b58\u548c\u52a0\u8f7d": 240, "\u4e3a\u4e86\u6f14\u793a": [240, 242, 243, 249], "\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u8bad\u7ec3\u56fe\u50cf\u7684\u795e\u7ecf\u7f51\u7edc": [240, 241, 242, 243, 248, 249], "\u8981\u4e86\u89e3\u66f4\u591a\u4fe1\u606f": [240, 241, 242, 243, 248, 249, 250], "\u8bf7\u53c2\u9605\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u7684\u6559\u7a0b": [240, 242, 243, 248, 249], "\u5f53\u5728cpu\u4e0a\u52a0\u8f7d\u4f7f\u7528gpu\u8bad\u7ec3\u7684\u6a21\u578b\u65f6": 240, "\u8bf7\u5c06": 240, "\u51fd\u6570\u7684": 240, "\u6307\u5b9a\u4fdd\u5b58\u8def\u5f84": [240, 243, 248], "\u5f20\u91cf\u5e95\u5c42\u7684\u5b58\u50a8\u5c06\u4f7f\u7528": 240, "\u53c2\u6570\u52a8\u6001\u91cd\u65b0\u6620\u5c04\u5230cpu\u8bbe\u5907": 240, "\u5f53\u5728gpu\u4e0a\u52a0\u8f7d\u4f7f\u7528gpu\u8bad\u7ec3\u548c\u4fdd\u5b58\u7684\u6a21\u578b\u65f6": 240, "\u53ea\u9700\u4f7f\u7528": 240, "\u5c06\u521d\u59cb\u5316\u7684\u6a21\u578b\u8f6c\u6362\u4e3acuda\u4f18\u5316\u6a21\u578b": 240, "\u8bf7\u786e\u4fdd\u5bf9\u6240\u6709\u6a21\u578b\u8f93\u5165\u4f7f\u7528": 240, "\u4e3a\u6a21\u578b\u51c6\u5907\u6570\u636e": 240, "\u4f1a\u8fd4\u56de": 240, "\u5728gpu\u4e0a\u7684\u65b0\u526f\u672c": 240, "\u5b83\u4e0d\u4f1a\u8986\u76d6": 240, "\u8bf7\u8bb0\u4f4f\u624b\u52a8\u8986\u76d6\u5f20\u91cf": 240, "\u5f53\u5728gpu\u4e0a\u52a0\u8f7d\u4f7f\u7528cpu\u8bad\u7ec3\u548c\u4fdd\u5b58\u7684\u6a21\u578b\u65f6": 240, "\u8bf7\u5728": 240, "\u51fd\u6570\u4e2d\u5c06": [240, 248], "\u53c2\u6570\u8bbe\u7f6e\u4e3a": [240, 248], "\u5c06\u6a21\u578b\u52a0\u8f7d\u5230\u7ed9\u5b9a\u7684gpu\u8bbe\u5907": 240, "\u5c06\u6a21\u578b\u7684\u53c2\u6570\u5f20\u91cf\u8f6c\u6362\u4e3acuda\u5f20\u91cf": 240, "\u8fd8\u8981\u786e\u4fdd\u5bf9\u6240\u6709\u6a21\u578b\u8f93\u5165\u4f7f\u7528": 240, "\u4e3acuda\u4f18\u5316\u7684\u6a21\u578b\u51c6\u5907\u6570\u636e": 240, "\u9009\u62e9\u60a8\u60f3\u7528\u7684gpu\u8bbe\u5907\u7f16\u53f7": 240, "\u662f\u4e00\u4e2a\u6a21\u578b\u5305\u88c5\u5668": 240, "\u53ef\u4ee5\u542f\u7528\u5e76\u884cgpu\u5229\u7528": 240, "\u8981\u901a\u7528\u5730\u4fdd\u5b58": 240, "\u8bf7\u4fdd\u5b58": 240, "\u8fd9\u6837": 240, "\u60a8\u5c31\u53ef\u4ee5\u7075\u6d3b\u5730\u5c06\u6a21\u578b\u52a0\u8f7d\u5230\u4efb\u4f55\u8bbe\u5907": 240, "\u52a0\u8f7d\u5230\u4efb\u4f55\u60a8\u60f3\u8981\u7684\u8bbe\u5907": 240, "\u60a8\u5df2\u6210\u529f\u5728pytorch\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 240, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9\u6a21\u578b\u7528\u4e8e\u63a8\u7406\u6216\u6062\u590d\u8bad\u7ec3\u53ef\u4ee5\u5e2e\u52a9\u4f60\u4ece\u4e0a\u6b21\u79bb\u5f00\u7684\u5730\u65b9\u7ee7\u7eed": 241, "\u5f53\u4fdd\u5b58\u901a\u7528\u68c0\u67e5\u70b9\u65f6": 241, "\u4f60\u5fc5\u987b\u4fdd\u5b58\u4e0d\u4ec5\u4ec5\u662f\u6a21\u578b\u7684": 241, "\u540c\u65f6\u4e5f\u5f88\u91cd\u8981\u4fdd\u5b58\u4f18\u5316\u5668\u7684": 241, "\u56e0\u4e3a\u5b83\u5305\u542b\u4e86\u5728\u6a21\u578b\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\u66f4\u65b0\u7684\u7f13\u51b2\u533a\u548c\u53c2\u6570": 241, "\u6839\u636e\u4f60\u81ea\u5df1\u7684\u7b97\u6cd5": 241, "\u4f60\u53ef\u80fd\u8fd8\u9700\u8981\u4fdd\u5b58\u4f60\u79bb\u5f00\u65f6\u7684": 241, "\u6700\u65b0\u8bb0\u5f55\u7684\u8bad\u7ec3\u635f\u5931": 241, "\u5916\u90e8\u7684": 241, "\u5c42\u7b49\u7b49": 241, "\u8981\u4fdd\u5b58\u591a\u4e2a\u68c0\u67e5\u70b9": 241, "\u4f60\u5fc5\u987b\u5c06\u5b83\u4eec\u7ec4\u7ec7\u5728\u4e00\u4e2a\u5b57\u5178\u4e2d": 241, "\u6765\u5e8f\u5217\u5316\u8fd9\u4e2a\u5b57\u5178": 241, "\u4e00\u4e2a\u5e38\u89c1\u7684": 241, "\u7ea6\u5b9a\u662f\u4f7f\u7528": 241, "\u6587\u4ef6\u6269\u5c55\u540d\u6765\u4fdd\u5b58\u8fd9\u4e9b\u68c0\u67e5\u70b9": 241, "\u8981\u52a0\u8f7d\u8fd9\u4e9b\u9879\u76ee": 241, "\u9996\u5148\u521d\u59cb\u5316\u6a21\u578b\u548c\u4f18\u5316\u5668": [241, 243], "\u5728\u672c\u5730\u52a0\u8f7d\u5b57\u5178": [241, 243], "\u4ece\u8fd9\u91cc\u5f00\u59cb": [241, 243], "\u4f60\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u5730\u67e5\u8be2\u5b57\u5178\u6765\u8f7b\u677e\u8bbf\u95ee\u4fdd\u5b58\u7684\u9879\u76ee": 241, "\u5c31\u50cf\u4f60\u671f\u671b\u7684\u90a3\u6837": 241, "\u6211\u4eec\u5c06\u63a2\u7d22\u5982\u4f55\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u68c0\u67e5\u70b9": 241, "\u5bf9\u4e8e\u8fd9\u4e2a\u793a\u4f8b": 241, "\u4e3a\u4e86\u793a\u4f8b": 241, "\u8bf7\u53c2\u9605\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u7684\u793a\u4f8b": 241, "\u6536\u96c6\u6240\u6709\u76f8\u5173\u4fe1\u606f\u5e76\u6784\u5efa\u5b57\u5178": [241, 243], "\u9644\u52a0\u4fe1\u606f": 241, "\u7136\u540e\u5728\u672c\u5730\u52a0\u8f7d\u5b57\u5178": [241, 243], "\u6216\u8005": [241, 246], "\u4f60\u5fc5\u987b\u8c03\u7528model": 241, "\u6765\u5c06dropout\u548c\u6279\u5f52\u4e00\u5316\u5c42\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 241, "\u7136\u540e\u624d\u80fd\u8fd0\u884c\u63a8\u7406": 241, "\u5c06\u4f1a\u5f97\u5230\u4e0d\u4e00\u81f4\u7684\u63a8\u7406\u7ed3\u679c": 241, "\u5982\u679c\u4f60\u5e0c\u671b\u6062\u590d\u8bad\u7ec3": 241, "\u4ee5\u786e\u4fdd\u8fd9\u4e9b\u5c42\u5904\u4e8e\u8bad\u7ec3\u6a21\u5f0f": [241, 243], "\u4f60\u5df2\u7ecf\u6210\u529f\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e86\u4e00\u4e2a\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u6709\u4e24\u79cd\u65b9\u6cd5": 242, "\u7b2c\u4e00\u79cd\u662f\u4fdd\u5b58\u548c\u52a0\u8f7d": 242, "\u7b2c\u4e8c\u79cd\u662f\u4fdd\u5b58\u548c\u52a0\u8f7d\u6574\u4e2a\u6a21\u578b": 242, "\u51fd\u6570\u4fdd\u5b58\u6a21\u578b\u7684": 242, "\u4e3a\u540e\u7eed\u6062\u590d\u6a21\u578b\u63d0\u4f9b\u8f83\u5927\u7684\u7075\u6d3b\u6027": 242, "\u4fdd\u5b58\u6a21\u578b\u7684\u63a8\u8350\u4f7f\u7528\u6b64\u65b9\u6cd5": 242, "\u56e0\u4e3a\u53ea\u9700\u8981\u4fdd\u5b58\u8bad\u7ec3\u597d\u7684\u6a21\u578b\u7684\u5b66\u4e60\u53c2\u6570": 242, "\u5f53\u4fdd\u5b58\u548c\u52a0\u8f7d\u6574\u4e2a\u6a21\u578b\u65f6": 242, "\u4f60\u4f7f\u7528python": 242, "\u6a21\u5757\u4fdd\u5b58\u6574\u4e2a\u6a21\u5757": 242, "\u4f7f\u7528\u8fd9\u79cd\u65b9\u6cd5\u8bed\u6cd5\u6700\u76f4\u89c2": 242, "\u4ee3\u7801\u91cf\u6700\u5c11": 242, "\u4f46\u8fd9\u79cd\u65b9\u6cd5\u7684\u7f3a\u70b9\u662f\u5e8f\u5217\u5316\u7684\u6570\u636e\u4e0e\u4fdd\u5b58\u6a21\u578b\u65f6\u4f7f\u7528\u7684\u7279\u5b9a\u7c7b\u548c\u76ee\u5f55\u7ed3\u6784\u7ed1\u5b9a\u5728\u4e00\u8d77": 242, "\u539f\u56e0\u662fpickle\u4e0d\u4fdd\u5b58\u6a21\u578b\u7c7b\u672c\u8eab": 242, "\u800c\u662f\u4fdd\u5b58\u5305\u542b\u8be5\u7c7b\u7684\u6587\u4ef6\u7684\u8def\u5f84": 242, "\u8be5\u8def\u5f84\u5728\u52a0\u8f7d\u65f6\u4f7f\u7528": 242, "\u5f53\u5728\u5176\u4ed6\u9879\u76ee\u4e2d\u4f7f\u7528\u6216\u91cd\u6784\u540e": 242, "\u4ee3\u7801\u53ef\u80fd\u4f1a\u51fa\u73b0\u5404\u79cd\u5f02\u5e38\u5bfc\u81f4\u7a0b\u5e8f\u4e2d\u65ad": 242, "\u6211\u4eec\u5c06\u5c55\u793a\u4e24\u79cd\u65b9\u5f0f\u5982\u4f55\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 242, "\u8ba9\u6211\u4eec\u53ea\u4f7f\u7528": 242, "\u6765\u4fdd\u5b58\u548c\u52a0\u8f7d\u6211\u4eec\u7684\u6a21\u578b": 242, "\u8def\u5f84": 242, "state_dict_model": 242, "\u901a\u5e38\u4f7f\u7528": 242, "\u6587\u4ef6\u6269\u5c55\u540d\u6765\u4fdd\u5b58\u6a21\u578b": 242, "\u51fd\u6570\u63a5\u53d7\u4e00\u4e2a\u5b57\u5178\u5bf9\u8c61": 242, "\u800c\u4e0d\u662f\u4fdd\u5b58\u5bf9\u8c61\u7684\u8def\u5f84": 242, "\u8fd9\u610f\u5473\u7740\u4f60\u5fc5\u987b\u5148\u53cd\u5e8f\u5217\u5316\u4fdd\u5b58\u7684state_dict": 242, "\u7136\u540e\u518d\u4f20\u9012\u7ed9": 242, "\u4e0d\u80fd\u4f7f\u7528": 242, "\u6765\u52a0\u8f7d": 242, "\u8fd8\u8981\u8bb0\u4f4f": 242, "\u5728\u8fd0\u884c\u63a8\u7406\u4e4b\u524d": [242, 243], "\u4f60\u5fc5\u987b\u8c03\u7528": 242, "\u5c06dropout\u548cbatch": 242, "\u5426\u5219\u5c06\u5bfc\u81f4\u63a8\u7406\u7ed3\u679c\u4e0d\u4e00\u81f4": [242, 243], "\u73b0\u5728\u8ba9\u6211\u4eec\u5c1d\u8bd5\u5c06\u6574\u4e2a\u6a21\u578b\u8fdb\u884c\u4fdd\u5b58\u548c\u52a0\u8f7d": 242, "entire_model": 242, "\u540c\u6837\u8981\u8bb0\u4f4f\u5728\u8fd0\u884c\u63a8\u7406\u4e4b\u524d\u8c03\u7528": 242, "\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 242, "\u4f60\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e86\u7528\u4e8e\u63a8\u7406\u7684\u6a21\u578b": 242, "pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 242, "pytorch\u4e2d\u5c06\u591a\u4e2a\u6a21\u578b\u4fdd\u5b58\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d": 242, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 243, "\u53ef\u4ee5\u5e2e\u52a9\u60a8\u91cd\u7528\u4e4b\u524d\u8bad\u7ec3\u8fc7\u7684\u6a21\u578b": 243, "\u5f53\u4fdd\u5b58\u7531\u591a\u4e2a": 243, "\u7ec4\u6210\u7684\u6a21\u578b\u65f6": 243, "\u4f8b\u5982\u751f\u6210\u5bf9\u6297\u7f51\u7edc": 243, "\u5e8f\u5217\u5230\u5e8f\u5217\u6a21\u578b\u6216\u6a21\u578b\u96c6\u5408\u65f6": 243, "\u60a8\u5fc5\u987b\u4fdd\u5b58\u6bcf\u4e2a\u6a21\u578b\u7684state_dict\u548c\u76f8\u5e94\u7684\u4f18\u5316\u5668": 243, "\u60a8\u8fd8\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u5730\u5c06\u5176\u9644\u52a0\u5230\u5b57\u5178\u4e2d\u6765\u4fdd\u5b58\u4efb\u4f55\u53ef\u80fd\u6709\u52a9\u4e8e\u6062\u590d\u8bad\u7ec3\u7684\u5176\u4ed6\u9879\u76ee": 243, "\u8981\u52a0\u8f7d\u6a21\u578b": 243, "\u60a8\u53ef\u4ee5\u50cf\u671f\u671b\u7684\u90a3\u6837\u7b80\u5355\u5730\u67e5\u8be2\u5b57\u5178\u6765\u8f7b\u677e\u8bbf\u95ee\u4fdd\u5b58\u7684\u9879\u76ee": 243, "\u6211\u4eec\u5c06\u6f14\u793a\u5982\u4f55\u4f7f\u7528pytorch\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u591a\u4e2a\u6a21\u578b": 243, "\u6784\u5efa\u4e24\u4e2a\u53d8\u91cf\u7528\u4e8e\u6700\u7ec8\u4fdd\u5b58\u6a21\u578b": 243, "neta": [243, 248], "netb": [243, 248], "\u4e3a\u6211\u4eec\u521b\u5efa\u7684\u6bcf\u4e2a\u6a21\u578b\u6784\u5efa\u4f18\u5316\u5668": 243, "\u8bb0\u4f4f\u9996\u5148\u521d\u59cb\u5316\u6a21\u578b\u548c\u4f18\u5316\u5668": 243, "optimmodela": 243, "optimmodelb": 243, "\u60a8\u5fc5\u987b\u8c03\u7528": 243, "\u5c42\u8bbe\u7f6e\u4e3a\u8bc4\u4f30\u6a21\u5f0f": 243, "\u5982\u679c\u60a8\u5e0c\u671b\u6062\u590d\u8bad\u7ec3": 243, "\u60a8\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e86\u591a\u4e2a\u6a21\u578b": 243, "hereaft": 244, "t2": 244, "__slots__": 244, "pertin": 244, "__torch_dispatch__": 244, "new_param": 244, "myquantizedlinearweight": 244, "__new__": 244, "_make_wrapper_subclass": 244, "storage_offset": 244, "_to_copi": 244, "new_elem": 244, "op_tabl": 244, "param_nam": 244, "__setattr__": 244, "module_load": 244, "__torch_function__": 244, "param_kei": 244, "custom_torch_funct": 244, "dest": 244, "disabletorchfunctionsubclass": 244, "scalar_valu": 245, "walltim": 245, "tfevent": 245, "tensorboard_with_pytorch": 245, "\u6211\u4eec\u5c06\u4ecb\u7ecd": 246, "\u7684\u4e3b\u8981api": 246, "timer\u57fa\u4e8e": 246, "\u5e76\u505a\u4e86\u4e00\u4e9bpytorch\u7279\u5b9a\u7684\u4fee\u6539": 246, "\u672c\u6559\u7a0b\u4e0d\u8981\u6c42\u8bfb\u8005\u719f\u6089\u5185\u7f6e\u7684": 246, "\u4f46\u5047\u8bbe\u8bfb\u8005\u719f\u6089\u6027\u80fd\u5de5\u4f5c\u7684\u57fa\u7840\u77e5\u8bc6": 246, "\u6709\u5173\u66f4\u5168\u9762\u7684\u6027\u80fd\u8c03\u4f18\u6559\u7a0b": 246, "\u5185\u5bb9": 246, "\u4f7f\u7528callgrind\u8fdb\u884ca": 246, "\u7528\u4e8e\u5b9a\u4e49\u4efb\u52a1": 246, "\u5c06\u5728\u5faa\u73af\u4e2d\u8fd0\u884c\u5e76\u8ba1\u65f6\u7684\u8ba1\u7b97": 246, "\u5c06\u5728\u8c03\u7528\u6d4b\u91cf\u5faa\u73af\u4e4b\u524d\u8fd0\u884c": 246, "\u7528\u4e8e\u586b\u5145": 246, "\u6240\u9700\u7684\u4efb\u4f55\u72b6\u6001": 246, "\u4ece\u5916\u90e8\u4f5c\u7528\u57df\u4f20\u9012\u53d8\u91cf": 246, "\u63a7\u5236pytorch\u4f7f\u7528\u7684\u7ebf\u7a0b\u6570": 246, "\u9ed8\u8ba4\u503c": 246, "\u6b64\u65b9\u6cd5\u5c06\u5904\u7406\u8bf8\u5982\u9009\u62e9\u5408\u9002\u7684\u91cd\u590d\u6b21\u6570": 246, "\u56fa\u5b9a\u7ebf\u7a0b\u6570\u4ee5\u53ca\u63d0\u4f9b\u7ed3\u679c\u7684\u65b9\u4fbf\u8868\u793a\u7b49\u7ec6\u8282": 246, "measurement\u5bf9\u8c61\u5b58\u50a8\u591a\u6b21\u91cd\u590d\u7684\u7ed3\u679c": 246, "\u5e76\u63d0\u4f9b\u5404\u79cd\u5b9e\u7528\u529f\u80fd": 246, "0x7f1929a38ed0": 246, "iqr": 246, "424": 246, "cpp_timer": 246, "0x7f192b019ed0": 246, "\u4e0d\u51fa\u6240\u6599": 246, "\u4ee3\u7801\u7247\u6bb5\u7684\u901f\u5ea6\u66f4\u5feb": 246, "\u53d8\u5316\u4e5f\u66f4\u5c0f": 246, "\u4e3a\u4e86\u6df1\u5165\u8c03\u67e5": 246, "\u5c01\u88c5\u4e86": 246, "\u4ee5\u6536\u96c6\u6307\u4ee4\u8ba1\u6570": 246, "\u8fd9\u4e9b\u6307\u4ee4\u8ba1\u6570\u975e\u5e38\u6709\u7528": 246, "\u56e0\u4e3a\u5b83\u4eec\u63d0\u4f9b\u4e86\u7ec6\u7c92\u5ea6\u548c\u786e\u5b9a\u6027\u7684": 246, "\u6216\u5728python\u7684\u60c5\u51b5\u4e0b\u566a\u58f0\u5f88\u4f4e\u7684": 246, "\u89c1\u89e3": 246, "\u8bf4\u660e\u4e86\u4ee3\u7801\u7247\u6bb5\u662f\u5982\u4f55\u8fd0\u884c\u7684": 246, "0x7f1929a35850": 246, "563600": 246, "\u7684\u5b57\u7b26\u4e32\u8868\u793a\u5f62\u5f0f\u7c7b\u4f3c\u4e8e": 246, "\u662f\u4e00\u4e2apython\u6982\u5ff5": 246, "\u79fb\u9664\u4e86\u5728cpython\u89e3\u91ca\u5668\u4e2d\u5df2\u77e5\u7684\u566a\u58f0\u8c03\u7528": 246, "\u4e3a\u4e86\u8fdb\u884c\u66f4\u8be6\u7ec6\u7684\u5206\u6790": 246, "\u6211\u4eec\u9700\u8981\u67e5\u770b\u7279\u5b9a\u7684\u8c03\u7528": 246, "\u8fd4\u56de\u4e00\u4e2a": 246, "\u4ee5\u4fbf\u4e8e\u6b64\u64cd\u4f5c": 246, "\u4ece\u6982\u5ff5\u4e0a\u8bb2": 246, "\u53ef\u4ee5\u88ab\u89c6\u4e3a\u4e00\u4e2a\u5e26\u6709\u4e00\u4e9b\u5b9e\u7528\u65b9\u6cd5\u7684\u6210\u5bf9\u5143\u7ec4": 246, "\u5176\u4e2d\u6bcf\u4e00\u5bf9\u90fd\u662f": 246, "\u6307\u4ee4\u6570\u91cf": 246, "\u6587\u4ef6\u8def\u5f84\u548c\u51fd\u6570\u540d\u79f0": 246, "\u5173\u4e8e\u8def\u5f84\u7684\u8bf4\u660e": 246, "\u901a\u5e38\u6211\u4eec\u4e0d\u5173\u5fc3\u7edd\u5bf9\u8def\u5f84": 246, "\u4e00\u4e2a\u4e58\u6cd5\u8c03\u7528\u7684\u5b8c\u6574\u8def\u5f84\u548c\u51fd\u6570\u540d\u662f\u8fd9\u6837\u7684": 246, "tensormethod": 246, "ab_ref": 246, "\u800c\u5b9e\u9645\u4e0a": 246, "\u6211\u4eec\u611f\u5174\u8da3\u7684\u6240\u6709\u4fe1\u606f\u90fd\u53ef\u4ee5\u8868\u793a\u4e3a": 246, "\u4f1a\u5c3d\u6700\u5927\u52aa\u529b\u53bb\u9664\u6587\u4ef6\u8def\u5f84\u4e2d\u4f4e\u4fe1\u53f7\u90e8\u5206": 246, "\u4ee5\u53ca\u5171\u4eab\u5bf9\u8c61": 246, "\u901a\u5e38\u5efa\u8bae\u4f7f\u7528": 246, "inclusive_stat": 246, "0x7f192a6dfd90": 246, "47264": 246, "_int_fre": 246, "25963": 246, "_int_malloc": 246, "19900": 246, "tensorit": 246, "tensoriteratorconfig": 246, "18000": 246, "__tls_get_addr": 246, "13500": 246, "malloc": [246, 247], "11300": 246, "smallvector": 246, "10345": 246, "_int_memalign": 246, "9200": 246, "iteratorbas": 246, "get_strid": 246, "173472": 246, "\u8fd9\u4ecd\u7136\u6709\u5f88\u591a\u5185\u5bb9\u9700\u8981\u6d88\u5316": 246, "\u65b9\u6cd5\u6765\u53bb\u9664\u4e00\u4e9b\u51fd\u6570\u8def\u5f84": 246, "\u5e76\u4e22\u5f03\u51fd\u6570\u8c03\u7528": 246, "\u8fd9\u6837\u505a\u65f6": 246, "\u4efb\u4f55\u51b2\u7a81": 246, "\u90fd\u5c06\u6620\u5c04\u5230": 246, "\u7684\u8ba1\u6570\u5c06\u88ab\u7d2f\u52a0": 246, "group_by_fil": 246, "fn_name": 246, "fn_dir": 246, "fn_file": 246, "0x7f192995d750": 246, "118200": 246, "tensoriter": 246, "65000": 246, "20900": 246, "15900": 246, "15100": 246, "cpualloc": 246, "12500": 246, "352327": 246, "\u6307\u4ee4\u8ba1\u6570\u6700\u6709\u7528\u7684\u7279\u6027\u4e4b\u4e00\u662f\u5141\u8bb8\u5bf9\u8ba1\u7b97\u8fdb\u884c\u7ec6\u7c92\u5ea6\u6bd4\u8f83": 246, "\u8fd9\u5728\u5206\u6790\u6027\u80fd\u65f6\u81f3\u5173\u91cd\u8981": 246, "\u4e3a\u4e86\u770b\u5230\u8fd9\u4e00\u70b9": 246, "\u8ba9\u6211\u4eec\u5c06\u4e24\u4e2a\u5927\u5c0f\u4e3a128\u7684\u5f20\u91cf\u76f8\u4e58\u4e0e\u4e00\u4e2a": 246, "\u7684\u4e58\u6cd5\u8fdb\u884c\u6bd4\u8f83": 246, "\u540e\u8005\u5c06\u5bf9\u7b2c\u4e8c\u4e2a\u5f20\u91cf\u8fdb\u884c\u5e7f\u64ad": 246, "a0": 246, "b0": 246, "a1": 246, "a127": 246, "broadcasting_stat": 246, "\u6211\u4eec\u7ecf\u5e38\u9700\u8981\u5bf9\u4e24\u79cd\u4e0d\u540c\u7684\u73af\u5883\u8fdb\u884ca": 246, "\u4f8b\u5982\u6d4b\u8bd5\u4e00\u4e2apr": 246, "\u6216\u5c1d\u8bd5\u4e0d\u540c\u7684\u7f16\u8bd1\u6807\u5fd7": 246, "\u8fd9\u5f88\u7b80\u5355": 246, "\u90fd\u662f\u53efpickle\u5316\u7684": 246, "\u53ea\u9700\u5728\u6bcf\u4e2a\u73af\u5883\u4e2d\u4fdd\u5b58\u6d4b\u91cf\u7ed3\u679c": 246, "\u7136\u540e\u5728\u5355\u4e2a\u8fdb\u7a0b\u4e2d\u52a0\u8f7d\u5b83\u4eec\u8fdb\u884c\u5206\u6790": 246, "extract_fn_nam": 246, "17600": 246, "tensoriteratorbas": 246, "compute_strid": 246, "12700": 246, "allocate_or_resize_output": 246, "10200": 246, "smallvectorimpl": 246, "7400": 246, "infer_s": 246, "6200": 246, "invert_perm": 246, "6064": 246, "reorder_dimens": 246, "4300": 246, "compatible_strid": 246, "check_tensor_options_and_extract_memory_format": 246, "__memcmp_avx2_movb": 246, "empty_cpu": 246, "1300": 246, "2400": 246, "6100": 246, "compute_fast_setup_typ": 246, "22600": 246, "fast_set_up": 246, "58091": 246, "\u6240\u4ee5\u5e7f\u64ad\u7248\u672c\u6bcf\u6b21\u8c03\u7528\u9700\u8981\u989d\u5916580\u6761\u6307\u4ee4": 246, "\u56de\u60f3\u4e00\u4e0b\u6211\u4eec\u6536\u96c6\u4e86100\u6b21\u8fd0\u884c\u7684\u6837\u672c": 246, "\u7ea6\u536010": 246, "\u6709\u76f8\u5f53\u591a\u7684": 246, "\u6240\u4ee5\u8ba9\u6211\u4eec\u6df1\u5165\u7814\u7a76\u8fd9\u4e9b\u8c03\u7528": 246, "\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u505a\u5230\u8fd9\u4e00\u70b9": 246, "0x7f19299544d0": 246, "compute_shap": 246, "2300": 246, "coalesce_dimens": 246, "\u8fd9\u8bf4\u660e\u4e86\u6b63\u5728\u53d1\u751f\u7684\u60c5\u51b5": 246, "\u8bbe\u7f6e\u4e2d\u6709\u4e00\u6761\u5feb\u901f\u8def\u5f84": 246, "\u4f46\u5728": 246, "\u7684\u60c5\u51b5\u4e0b": 246, "\u6211\u4eec\u9519\u8fc7\u4e86\u5b83": 246, "\u4e0d\u5f97\u4e0d\u8fdb\u884c\u66f4\u901a\u7528\u7684\u5206\u6790": 246, "\u8fd9\u66f4\u52a0\u6602\u8d35": 246, "\u88ab\u8fc7\u6ee4\u5668\u7701\u7565\u7684\u6700\u663e\u8457\u7684\u8c03\u7528\u662f": 246, "\u8fd9\u4e5f\u662f\u66f4\u901a\u7528\u8bbe\u7f6e\u7684\u4e00\u90e8\u5206": 246, "\u603b\u4e4b": 246, "\u6765\u6536\u96c6\u5899\u4e0a\u65f6\u95f4": 246, "\u5982\u679c\u8ba1\u65f6\u53d8\u5316\u8fc7\u9ad8": 246, "\u8bf7\u589e\u52a0": 246, "\u6216\u8005\u5982\u679c\u65b9\u4fbf\u7684\u8bdd": 246, "\u5bf9\u4e8e\u7ec6\u7c92\u5ea6\u5206\u6790": 246, "\u6765\u6d4b\u91cf\u6307\u4ee4\u8ba1\u6570": 246, "__add__": 246, "__sub__": 246, "\u6765\u5207\u5206\u548c\u5904\u7406\u5b83\u4eec": 246, "\u9690\u542b\u7684": 246, "\u4e0d\u5305\u542b": 246, "\u5c06\u81ea\u52a8\u586b\u5145\u5b83": 246, "\u8fd9\u610f\u5473\u7740": 246, "\u5c06\u6b63\u5e38\u5de5\u4f5c": 246, "\u4e0d\u8fc7\u5176\u4ed6\u5bfc\u5165\u5e94\u8be5\u653e\u5728": 246, "\u4e3a\u4e86\u63d0\u4f9b\u6709\u5173\u6267\u884c\u7684": 246, "\u5185\u90e8\u4fe1\u606f\u7684\u5b8c\u6574\u4fe1\u606f": 246, "\u9700\u8981\u8bbf\u95ee": 246, "\u8c03\u8bd5\u7b26\u53f7": 246, "\u8fd9\u662f\u901a\u8fc7\u5728\u6784\u5efa": 246, "\u65f6\u8bbe\u7f6e": 246, "\u6765\u5b9e\u73b0\u7684": 246, "\u5426\u5219\u51fd\u6570\u8c03\u7528\u5c06\u662f\u4e0d\u900f\u660e\u7684": 246, "\u751f\u6210\u7684": 246, "\u5c06\u5728\u7f3a\u5c11\u8c03\u8bd5\u7b26\u53f7\u65f6\u53d1\u51fa\u8b66\u544a": 246, "timer_quick_start": 246, "szymon": 247, "migacz": 247, "inexpens": 247, "fused_gelu": 247, "erf": 247, "41421": 247, "conjunct": 247, "carefulli": 247, "anomali": 247, "detect_anomali": 247, "set_detect_anomali": 247, "emit_nvtx": 247, "nth": 247, "cpunodebind": 247, "membind": 247, "pytorch_script": 247, "thrash": 247, "gomp_cpu_affin": 247, "omp_proc_bind": 247, "omp_schedul": 247, "libgomp": 247, "sleep": 247, "jemalloc": 247, "tcmalloc": 247, "emphas": 247, "neighbor": 247, "enable_onednn_fus": 247, "optimize_for_infer": 247, "avx512_bf16": 247, "_jit_set_autocast_mod": 247, "ccl": 247, "alltoal": 247, "cuda_tensor": 247, "guidelin": 247, "slide": 247, "no_sync": 247, "tuning_guid": 247, "\u5728\u8f6c\u79fb\u5b66\u4e60\u6216\u8bad\u7ec3\u65b0\u7684\u590d\u6742\u6a21\u578b\u65f6": 248, "\u52a0\u8f7d\u90e8\u5206\u6a21\u578b\u662f\u5f88\u5e38\u89c1\u7684\u573a\u666f": 248, "\u5229\u7528\u5df2\u7ecf\u8bad\u7ec3\u597d\u7684\u53c2\u6570": 248, "\u5373\u4f7f\u53ea\u6709\u5c11\u6570\u53ef\u7528": 248, "\u4e5f\u5c06\u6709\u52a9\u4e8e\u52a0\u5feb\u8bad\u7ec3\u8fc7\u7a0b\u7684\u542f\u52a8": 248, "\u5e76\u6709\u671b\u4f7f\u60a8\u7684\u6a21\u578b\u6bd4\u4ece\u5934\u5f00\u59cb\u8bad\u7ec3\u6536\u655b\u5f97\u66f4\u5feb": 248, "\u65e0\u8bba\u60a8\u662f\u52a0\u8f7d\u7f3a\u5c11\u67d0\u4e9b\u952e\u7684\u90e8\u5206": 248, "\u8fd8\u662f\u52a0\u8f7d\u6bd4\u9884\u671f\u7684\u6a21\u578b\u66f4\u591a\u952e\u7684": 248, "\u60a8\u90fd\u53ef\u4ee5\u901a\u8fc7": 248, "\u4ee5\u5ffd\u7565\u4e0d\u5339\u914d\u7684\u952e": 248, "\u6211\u4eec\u5c06\u5c1d\u8bd5\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8": 248, "\u6211\u4eec\u5c06\u521b\u5efa\u4e24\u4e2a\u795e\u7ecf\u7f51\u7edc": 248, "\u5c06\u7c7b\u578b": 248, "\u7684\u4e00\u4e2a\u53c2\u6570\u52a0\u8f7d\u5230\u7c7b\u578b": 248, "\u5982\u679c\u60a8\u60f3\u5c06\u4e00\u4e2a\u5c42\u7684\u53c2\u6570\u52a0\u8f7d\u5230\u53e6\u4e00\u4e2a\u5c42": 248, "\u4f46\u662f\u67d0\u4e9b\u952e\u4e0d\u5339\u914d": 248, "\u53ea\u9700\u5c06\u8981\u52a0\u8f7d\u7684": 248, "\u4e2d\u7684\u53c2\u6570\u952e\u540d\u79f0\u66f4\u6539\u4e3a\u4e0e\u8981\u52a0\u8f7d\u5230\u7684\u6a21\u578b\u4e2d\u7684\u952e\u540d\u79f0\u76f8\u5339\u914d\u5373\u53ef": 248, "\u60a8\u53ef\u4ee5\u770b\u5230\u6240\u6709\u952e\u90fd\u5339\u914d\u6210\u529f": 248, "\u60a8\u5df2\u6210\u529f\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u4e86\u70ed\u542f\u52a8": 248, "\u4f7f\u7528pytorch\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 248, "\u5728pytorch\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": [248, 250], "\u6a21\u578b\u7684\u53ef\u5b66\u4e60\u53c2\u6570": 249, "\u5373\u6743\u91cd\u548c\u504f\u7f6e": 249, "\u5305\u542b\u5728\u6a21\u578b\u7684\u53c2\u6570\u4e2d": 249, "\u901a\u8fc7": 249, "\u8bbf\u95ee": 249, "\u53ea\u662f\u4e00\u4e2a": 249, "\u5b57\u5178\u5bf9\u8c61": 249, "\u5b83\u5c06\u6bcf\u4e00\u5c42\u6620\u5c04\u5230\u5176\u53c2\u6570\u5f20\u91cf": 249, "\u5982\u679c\u4f7f\u7528": 249, "\u4fdd\u5b58\u6216\u52a0\u8f7d\u6a21\u578b": 249, "\u5c31\u662f\u4e00\u4e2a\u4e0d\u53ef\u6216\u7f3a\u7684\u5b9e\u4f53": 249, "\u5bf9\u8c61\u662f": 249, "\u5b57\u5178": 249, "\u5b83\u4eec\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u88ab\u4fdd\u5b58": 249, "\u66f4\u65b0": 249, "\u4fee\u6539\u548c\u6062\u590d": 249, "\u6a21\u578b\u548c\u4f18\u5316\u5668\u66f4\u597d\u7684\u505a\u5230\u4e86\u6a21\u5757\u5316": 249, "\u53ea\u6709\u5177\u6709\u53ef\u5b66\u4e60\u53c2\u6570\u7684\u5c42": 249, "\u5377\u79ef\u5c42": 249, "\u7ebf\u6027\u5c42\u7b49": 249, "\u548c\u5df2\u6ce8\u518c\u7684\u7f13\u51b2\u533a": 249, "\u5728\u6a21\u578b\u7684": 249, "\u4e2d\u6709\u6761\u76ee": 249, "\u4f18\u5316\u5668\u5bf9\u8c61": 249, "\u4e5f\u6709\u4e00\u4e2a": 249, "\u5b83\u5305\u542b\u4e86\u4f18\u5316\u5668\u72b6\u6001\u7684\u4fe1\u606f": 249, "\u4ee5\u53ca\u4f7f\u7528\u7684\u8d85\u53c2\u6570": 249, "\u6211\u4eec\u5c06\u770b\u5230\u5982\u4f55\u5728\u4e00\u4e2a\u7b80\u5355\u7684\u6a21\u578b\u4e2d": 249, "\u662f\u5982\u4f55\u4f7f\u7528\u7684": 249, "\u5b9a\u4e49\u548c\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc": 249, "\u5bfc\u5165\u52a0\u8f7d\u6570\u636e\u6240\u9700\u7684\u5fc5\u8981\u5e93": 249, "\u73b0\u5728\u6211\u4eec\u5df2\u7ecf\u6784\u5efa\u4e86\u6a21\u578b\u548c\u4f18\u5316\u5668": 249, "\u6211\u4eec\u53ef\u4ee5\u4e86\u89e3\u5b83\u4eec\u5404\u81ea\u7684": 249, "\u5c5e\u6027\u4e2d\u4fdd\u5b58\u4e86\u4ec0\u4e48": 249, "\u8fd9\u4e9b\u4fe1\u606f\u5bf9\u4e8e\u5c06\u6765\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u548c\u4f18\u5316\u5668\u5f88\u6709\u7528": 249, "\u4f60\u5df2\u7ecf\u6210\u529f\u4f7f\u7528\u4e86": 249, "\u7ee7\u7eed\u4f60\u7684\u5b66\u4e60": 249, "\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u7528\u4e8e\u63a8\u7406": 249, "\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 249, "\u6a21\u578b\u80fd\u591f\u901a\u8fc7\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u6765\u63d0\u9ad8\u5b83\u4eec\u7684\u7cbe\u5ea6": 250, "\u7b80\u800c\u8a00\u4e4b": 250, "\u68af\u5ea6\u4e0b\u964d\u662f\u901a\u8fc7\u8c03\u6574\u6a21\u578b\u4e2d\u7684\u6743\u91cd\u548c\u504f\u7f6e\u6765\u6700\u5c0f\u5316\u635f\u5931": 250, "\u6216\u8bef\u5dee": 250, "\u7684\u8fc7\u7a0b": 250, "\u662fpytorch\u7684\u4e2d\u5fc3\u7c7b": 250, "\u5f53\u4f60\u521b\u5efa\u4e00\u4e2a\u5f20\u91cf\u65f6": 250, "\u5982\u679c\u5c06\u5176\u5c5e\u6027": 250, "\u8bbe\u7f6e\u4e3a": 250, "\u8be5\u5bf9\u8c61\u4f1a\u8ddf\u8e2a\u5bf9\u5b83\u7684\u6240\u6709\u64cd\u4f5c": 250, "\u8fd9\u53d1\u751f\u5728\u540e\u7eed\u7684\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d": 250, "\u8be5\u5f20\u91cf\u7684\u68af\u5ea6\u5c06\u7d2f\u79ef\u5230": 250, "\u6240\u6709\u68af\u5ea6\u7684\u7d2f\u79ef": 250, "\u6216\u6c42\u548c": 250, "\u662f\u5728\u5bf9\u635f\u5931\u5f20\u91cf\u8c03\u7528": 250, "\u65f6\u8ba1\u7b97\u7684": 250, "\u53ef\u80fd\u9700\u8981\u6e05\u96f6\u5f20\u91cf\u7684\u68af\u5ea6": 250, "\u5f53\u4f60\u5f00\u59cb\u8bad\u7ec3\u5faa\u73af\u65f6": 250, "\u4f60\u5e94\u8be5\u6e05\u96f6\u68af\u5ea6": 250, "\u4ee5\u4fbf\u6b63\u786e\u6267\u884c\u6b64\u8ddf\u8e2a": 250, "\u6211\u4eec\u5c06\u5b66\u4e60\u5982\u4f55\u4f7f\u7528pytorch\u5e93\u6e05\u96f6\u68af\u5ea6": 250, "\u6211\u4eec\u5c06\u901a\u8fc7\u5728pytorch\u5185\u7f6e\u7684": 250, "\u6570\u636e\u96c6\u4e0a\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u6765\u6f14\u793a\u5982\u4f55\u505a\u5230\u8fd9\u4e00\u70b9": 250, "\u7531\u4e8e\u6211\u4eec\u5c06\u5728\u672c\u6559\u7a0b\u4e2d\u8bad\u7ec3\u6570\u636e": 250, "\u5982\u679c\u4f60\u5728\u53ef\u8fd0\u884c\u7684\u7b14\u8bb0\u672c\u4e2d": 250, "\u6700\u597d\u5c06\u8fd0\u884c\u65f6\u5207\u6362\u5230gpu\u6216tpu": 250, "\u6211\u4eec\u9700\u8981\u5b89\u88c5\u5b83\u4eec": 250, "\u6b65\u9aa41\u52304\u8bbe\u7f6e\u4e86\u6211\u4eec\u7528\u4e8e\u8bad\u7ec3\u7684\u6570\u636e\u548c\u795e\u7ecf\u7f51\u7edc": 250, "\u6e05\u96f6\u68af\u5ea6\u7684\u8fc7\u7a0b\u53d1\u751f\u5728\u6b65\u9aa45": 250, "\u5982\u679c\u4f60\u5df2\u7ecf\u6784\u5efa\u4e86\u6570\u636e\u548c\u795e\u7ecf\u7f51\u7edc": 250, "\u53ef\u4ee5\u8df3\u8fc7\u524d\u56db\u6b65": 250, "\u76f4\u63a5\u8fdb\u5165\u7b2c5\u6b65": 250, "\u5b9a\u4e49\u635f\u5931\u51fd\u6570": 250, "\u6765\u8bbf\u95ee\u6570\u636e\u96c6": 250, "pytorch\u63d0\u4f9b\u4e86\u5404\u79cd\u5185\u7f6e\u6570\u636e\u96c6": 250, "\u8bf7\u53c2\u9605\u52a0\u8f7d\u6570\u636e\u6559\u7a0b": 250, "\u6211\u4eec\u5c06\u4f7f\u7528\u5377\u79ef\u795e\u7ecf\u7f51\u7edc": 250, "\u8bf7\u53c2\u9605\u5b9a\u4e49\u795e\u7ecf\u7f51\u7edc\u6559\u7a0b": 250, "\u8ba9\u6211\u4eec\u4f7f\u7528\u5206\u7c7b\u4ea4\u53c9\u71b5\u635f\u5931\u548c\u5e26\u52a8\u91cf\u7684sgd": 250, "\u6211\u4eec\u53ea\u9700\u8981\u904d\u5386\u6570\u636e\u8fed\u4ee3\u5668": 250, "\u5e76\u5c06\u8f93\u5165\u9988\u9001\u5230\u7f51\u7edc\u4e2d\u5e76\u4f18\u5316": 250, "\u5bf9\u4e8e\u6bcf\u4e2a\u6570\u636e\u5b9e\u4f53": 250, "\u6211\u4eec\u90fd\u4f1a\u6e05\u96f6\u68af\u5ea6": 250, "\u8fd9\u662f\u4e3a\u4e86\u786e\u4fdd\u5728\u8bad\u7ec3\u795e\u7ecf\u7f51\u7edc\u65f6": 250, "\u6211\u4eec\u4e0d\u4f1a\u8ddf\u8e2a\u4efb\u4f55\u4e0d\u5fc5\u8981\u7684\u4fe1\u606f": 250, "data\u662f\u4e00\u4e2a\u5305\u542b": 250, "\u7684\u5217\u8868": 250, "\u6e05\u96f6\u53c2\u6570\u68af\u5ea6": 250, "\u6bcf2000\u4e2a\u5c0f\u6279\u6b21\u6253\u5370\u4e00\u6b21": 250, "\u4f60\u4e5f\u53ef\u4ee5\u4f7f\u7528": 250, "\u53ea\u8981\u4f60\u7684\u6240\u6709\u6a21\u578b\u53c2\u6570\u90fd\u5728\u8be5\u4f18\u5316\u5668\u4e2d": 250, "\u548c\u4f7f\u7528": 250, "\u662f\u4e00\u6837\u7684": 250, "\u8bf7\u6839\u636e\u5177\u4f53\u60c5\u51b5\u51b3\u5b9a\u4f7f\u7528\u54ea\u4e00\u79cd\u65b9\u5f0f": 250, "\u4f60\u5df2\u7ecf\u6210\u529f\u5730\u5728pytorch\u4e2d\u6e05\u96f6\u4e86\u68af\u5ea6": 250, "\u7ee7\u7eed\u4f60\u7684\u5b66\u4e60\u4e4b\u65c5": 250, "\u5728pytorch\u4e2d\u52a0\u8f7d\u6570\u636e": 250, "bite": 251, "\u4e0e\u5165\u95e8\u6559\u7a0b\u4e0d\u540c": 251, "\u6b64\u7cfb\u5217\u901a\u8fc7\u7b80\u6d01\u5b9e\u7528\u7684\u793a\u4f8b": 251, "\u5c55\u793a\u4e86\u5982\u4f55\u4f7f\u7528pytorch\u7684\u7279\u6027": 251, "\u6765\u51c6\u5907\u548c\u52a0\u8f7d\u5e38\u89c1\u7684\u6570\u636e\u96c6": 251, "\u5b66\u4e60\u5982\u4f55\u4f7f\u7528torch": 251, "\u4e3amnist\u6570\u636e\u96c6\u521b\u5efa\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc": 251, "\u5bf9\u8c61\u548c": 251, "\u5b57\u5178\u5728": 251, "\u4e2d\u4fdd\u5b58\u6216\u52a0\u8f7d\u6a21\u578b": 251, "\u5728pytorch\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u7528\u4e8e\u63a8\u7406\u7684\u4e24\u79cd\u65b9\u5f0f": 251, "state_dict\u548c\u5b8c\u6574\u6a21\u578b": 251, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u4e00\u4e2a\u901a\u7528\u7684\u68c0\u67e5\u70b9\u6a21\u578b": 251, "\u53ef\u4ee5\u5e2e\u52a9\u60a8\u4ece\u4e0a\u6b21\u505c\u6b62\u7684\u5730\u65b9\u7ee7\u7eed\u63a8\u7406\u6216\u8bad\u7ec3": 251, "\u63a2\u7d22\u5982\u4f55\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u68c0\u67e5\u70b9": 251, "\u5b66\u4e60\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 251, "\u6709\u52a9\u4e8e\u91cd\u7528\u60a8\u4e4b\u524d\u8bad\u7ec3\u8fc7\u7684\u6a21\u578b": 251, "\u4e86\u89e3\u5982\u4f55\u901a\u8fc7\u90e8\u5206\u52a0\u8f7d\u6a21\u578b\u6216\u52a0\u8f7d\u90e8\u5206\u6a21\u578b\u65b9\u5f0f\u6765\u70ed\u542f\u52a8\u8bad\u7ec3\u8fc7\u7a0b": 251, "\u8fd9\u53ef\u4ee5\u5e2e\u52a9\u60a8\u7684\u6a21\u578b\u6bd4\u4ece\u5934\u5f00\u59cb\u8bad\u7ec3\u6536\u655b\u5f97\u66f4\u5feb": 251, "\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 251, "\u4e86\u89e3\u5982\u4f55\u4f7f\u7528pytorch\u5728\u4e0d\u540c\u8bbe\u5907": 251, "cpu\u548cgpu": 251, "\u4e4b\u95f4\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 251, "\u6e05\u96f6\u68af\u5ea6": 251, "\u4e86\u89e3\u4f55\u65f6\u5e94\u8be5\u6e05\u96f6\u68af\u5ea6": 251, "\u4ee5\u53ca\u8fd9\u6837\u505a\u5982\u4f55\u6709\u52a9\u4e8e\u63d0\u9ad8\u6a21\u578b\u7684\u7cbe\u5ea6": 251, "\u6a21\u5757\u6765\u6d4b\u91cf\u548c\u6bd4\u8f83\u4ee3\u7801\u6027\u80fd": 251, "\u5b66\u4e60\u5982\u4f55\u6d4b\u91cf\u4ee3\u7801\u7247\u6bb5\u7684\u8fd0\u884c\u65f6\u95f4\u548c\u6536\u96c6\u6307\u4ee4": 251, "\u6765\u6d4b\u91cf\u7b97\u5b50\u7684\u65f6\u95f4\u548c\u5185\u5b58\u6d88\u8017": 251, "itt": 251, "andriod": 251, "graviton": 251, "compressor": 251, "tensorpip": 251, "dcp": 251, "diffus": 251, "vertex": 251, "tracerwarn": 252, "_0": 252, "WITH": 252, "encoder_input": 252, "decoder_input1": 252, "decoder_input2": 252, "decoder_input3": 252, "scripted_encod": 252, "scripted_decod": 252, "optimized_torchscript_model": 252, "hoist": 252, "blocklist": 252, "compile_model": 253, "resnet50_weight": 253, "weights_prepack": 253, "oguz": 254, "ulgen": 254, "_triton": 254, "has_triton": 254, "add_kernel": 254, "out_ptr": 254, "n_element": 254, "block_siz": 254, "constexpr": 254, "pid": 254, "program_id": 254, "block_start": 254, "add_fn": 254, "cdiv": 254, "nx": 254, "ny": 254, "ni": 254, "num_stag": 254, "num_warp": 254, "add_kernel_autotun": 254, "torch_compile_user_defined_triton_kernel_tutori": 254, "repl": 256, "r18": 256, "r18_script": 256, "unscripted_output": 256, "scripted_output": 256, "unscripted_top5": 256, "scripted_top5": 256, "463": 256, "ts": 256, "msg_without_backtrac": 256, "output_sm": 256, "softmaxfuncopt": 256, "top5_tensor": 256, "ndone": 256, "418": 256, "845": 256, "644": 256, "cpulongtyp": 256, "exposit": 256, "streamlin": 257, "billabl": 257, "model_artifact": 257, "mar": 257, "your_model_nam": 257, "bucket_nam": 257, "bucket_uri": 257, "gsutil": 257, "aiplatform": 257, "vertexai": 257, "pytorch_prediction_image_uri": 257, "model_display_nam": 257, "stable_diffusion_1_5": 257, "model_descript": 257, "your_project": 257, "central1": 257, "staging_bucket": 257, "display_nam": 257, "serving_container_image_uri": 257, "artifact_uri": 257, "tesla": 257, "p100": 257, "n1": 257, "endpoint_display_nam": 257, "deployed_model_display_nam": 257, "machine_typ": 257, "accelerator_typ": 257, "nvidia_tesla_p100": 257, "accelerator_count": 257, "traffic_percentag": 257, "deploy_request_timeout": 257, "examplepup": 257, "basebal": 257, "jersei": 257, "base64": 257, "b64decod": 257, "vendor": 257, "deepspe": 258, "marian": 258, "oftentim": 258, "exp_avg": 258, "exp_avg_sq": 258, "peer": 258, "print_peak_memori": 258, "use_zero": 258, "optimizer_class": 258, "0mb": 258, "992": 258, "1361": 258, "3453": 258, "6123046875": 258, "pytorch_sphinx_them": [260, 267, 269, 276], "html_theme_opt": [260, 269], "canonical_url": [260, 269], "analytics_id": [260, 269], "logo_onli": [260, 269], "display_vers": [260, 269], "prev_next_buttons_loc": [260, 269], "style_external_link": [260, 269], "vcs_pageview_mod": [260, 269], "collapse_navig": [260, 269], "sticky_navig": [260, 264, 269, 273], "navigation_depth": [260, 269], "includehidden": [260, 269], "titles_onli": [260, 269], "canon": [260, 269], "trail": [260, 269], "slash": [260, 269], "sidebar": [260, 266, 269, 275], "display_github": [260, 269], "display_gitlab": [260, 269], "gitlab": [260, 269], "bitbucket": [260, 269], "toctre": [260, 269], "unlimit": [260, 269], "github_url": [260, 269], "bitbucket_url": [260, 269], "gitlab_url": [260, 269], "visitor": [260, 269], "revert": [260, 269], "misbuild": [260, 269], "sticki": [260, 266, 269, 275], "nav": [260, 266, 269, 275], "django": [261, 270], "payment": [261, 270], "dotpai": [261, 270], "dotpayprovid": [261, 270], "seller_id": [261, 270], "pl": [261, 270], "gatewai": [261, 270], "purchas": [261, 270], "seller": [261, 270], "data_item_1": [261, 270], "data_item_2": [261, 270], "data_item_3": [261, 270], "lorem": [261, 263, 265, 270, 272, 274], "ipsum": [261, 263, 265, 270, 272, 274], "dolor": [261, 263, 265, 270, 272, 274], "amet": [261, 263, 265, 270, 272, 274], "consectetur": [261, 263, 265, 270, 272, 274], "adipisc": [261, 263, 265, 270, 272, 274], "fusc": [261, 265, 270, 274], "congu": [261, 265, 270, 274], "eu": [261, 265, 270, 274], "hendrerit": [261, 265, 270, 274], "matti": [261, 263, 270, 272], "emphasi": [262, 271], "hyperlink": [262, 271], "uri": [262, 271], "anonym": [262, 271], "exceedingli": [262, 271], "ugli": [262, 271], "autodoc": [262, 263, 271, 272], "test_py_modul": [262, 266, 271, 275], "2822": [262, 271], "subscript": [262, 271], "superscript": [262, 271], "interfer": [262, 271], "mmb": [262, 271], "menuselect": [262, 271], "whitespac": [262, 271], "hyphen": [262, 271], "restructuredtext": [262, 263, 271, 272], "literal_block": [262, 271], "spaces_and_linebreak": [262, 271], "markup_process": [262, 271], "eric": [262, 271], "orchestra": [262, 271], "leader": [262, 271], "philosoph": [262, 271], "ipso": [262, 271], "facto": [262, 271], "ancient": [262, 271], "sing": [262, 271], "elk": [262, 271], "brontosaurus": [262, 271], "thicker": [262, 271], "ann": [262, 271], "begun": [262, 271], "someurl": [262, 271], "pane": [262, 271], "shell_command": [262, 271], "window_nam": [262, 271], "session_nam": [262, 271], "some_funct": [262, 271], "THE": [262, 271], "heaven": [262, 271], "hexagram": [262, 271], "unbroken": [262, 271], "unrestrict": [262, 271], "conceiv": [262, 271], "men": [262, 271], "deiti": [262, 271], "holi": [262, 271], "sage": [262, 271], "ruler": [262, 271], "awaken": [262, 271], "sphinx_rtd_them": [262, 263, 271, 272], "tt": [262, 271], "descnam": [262, 271], "descclassnam": [262, 271], "myclass": [262, 271], "dothismethod": [262, 271], "flox": [262, 271], "unreferenc": [262, 271], "nonexist": [262, 271], "bold": [262, 271], "ital": [262, 271], "heck": [262, 271], "backlink": [262, 271], "indirect": [262, 271], "docutil": [262, 263, 271, 272], "sourceforg": [262, 263, 271, 272], "clickabl": [262, 271], "revis": [262, 263, 271, 272], "structuredtext": [262, 271], "nickel": [262, 271], "mad": [262, 271], "scientist": [262, 271], "bread": [262, 271], "wash": [262, 271], "ear": [262, 271], "closet": [262, 271], "bathroom": [262, 271], "trash": [262, 271], "mother": [262, 271], "rho_": [262, 271], "thing1": [262, 271], "thing2": [262, 271], "thing3": [262, 271], "prose": [262, 271], "provok": [262, 271], "mental": [262, 271], "exert": [262, 271], "advis": [262, 271], "subtitl": [262, 271], "border": [262, 271], "disconnect": [262, 271], "arab": [263, 272], "iii": [263, 272], "iv": [263, 272], "goodger": [263, 272], "a1b": [263, 272], "2c3": [263, 272], "myself": [263, 272], "humankind": [263, 272], "tue": [263, 272], "jan": [263, 272], "7302": [263, 272], "redistribut": [263, 272], "reattribut": [263, 272], "sell": [263, 272], "bui": [263, 272], "rent": [263, 272], "leas": [263, 272], "excerpt": [263, 272], "stapl": [263, 272], "mutil": [263, 272], "anyon": [263, 272], "bibliograph": [263, 272], "markup": [263, 266, 272, 275], "literal": [263, 272], "yahoo": [263, 272], "oh": [263, 272], "heh": [263, 272], "beat": [263, 272], "hehe": [263, 272], "cackl": [263, 272], "lone": [263, 272], "guangzhou": [263, 272], "destini": [263, 272], "dream": [263, 272], "sixth": [263, 272], "donec": [263, 265, 272, 274], "porttitor": [263, 265, 272, 274], "odio": [263, 265, 272, 274], "posuer": [263, 265, 272, 274], "vita": [263, 265, 272, 274], "ornar": [263, 265, 272, 274], "libero": [263, 265, 272, 274], "loborti": [263, 265, 272, 274], "justo": [263, 265, 272, 274], "vestibulum": [263, 265, 272, 274], "nibh": [263, 265, 272, 274], "aliquet": [263, 265, 272, 274], "sed": [263, 265, 272, 274], "feugiat": [263, 265, 272, 274], "sagitti": [263, 265, 272, 274], "nequ": [263, 265, 272, 274], "qui": [263, 265, 272, 274], "eleifend": [263, 272], "dui": [263, 265, 272, 274], "rutrum": [263, 265, 272, 274], "lectu": [263, 265, 272, 274], "suscipit": [263, 265, 272, 274], "nam": [263, 265, 272, 274], "mauri": [263, 265, 272, 274], "arcu": [263, 265, 272, 274], "interdum": [265, 274], "nec": [265, 274], "finibu": [265, 274], "dictum": [265, 274], "velit": [265, 274], "ut": [265, 274], "efficitur": [265, 274], "aliquam": [265, 274], "erat": [265, 274], "diam": [265, 274], "gravida": [265, 274], "imperdiet": [265, 274], "tellu": [265, 274], "nisl": [265, 274], "praesent": [265, 274], "eget": [265, 274], "elementum": [265, 274], "rhoncu": [265, 274], "tincidunt": [265, 274], "suspendiss": [265, 274], "volutpat": [265, 274], "scelerisqu": [265, 274], "tristiqu": [265, 274], "aenean": [265, 274], "condimentum": [265, 274], "risu": [265, 274], "accumsan": [265, 274], "laoreet": [265, 274], "maximu": [265, 274], "sapien": [265, 274], "ligula": [265, 274], "fringilla": [265, 274], "commodo": [265, 274], "proin": [265, 274], "pharetra": [265, 274], "etiam": [265, 274], "turpi": [265, 274], "luctu": [265, 274], "vel": [265, 274], "malesuada": [265, 274], "dignissim": [265, 274], "nunc": [265, 274], "augu": [265, 274], "sem": [265, 274], "cursu": [265, 274], "nulla": [265, 274], "pellentesqu": [265, 274], "morbi": [265, 274], "senectu": [265, 274], "netu": [265, 274], "egesta": [265, 274], "placerat": [265, 274], "tortor": [265, 274], "iaculi": [265, 274], "venenati": [265, 274], "cra": [265, 274], "puru": [265, 274], "ero": [265, 274], "vehicula": [265, 274], "auctor": [265, 274], "phasellu": [265, 274], "viverra": [265, 274], "conval": [265, 274], "faucibu": [265, 274], "vulput": [265, 274], "feli": [265, 274], "sodal": [265, 274], "maecena": [265, 274], "semper": [265, 274], "enim": [265, 274], "blandit": [265, 274], "sollicitudin": [265, 274], "urna": [265, 274], "orci": [265, 274], "lacu": [265, 274], "quisqu": [265, 274], "facilisi": [265, 274], "curabitur": [265, 274], "variu": [265, 274], "bibendum": [265, 274], "massa": [265, 274], "magna": [265, 274], "tempu": [265, 274], "metu": [265, 274], "nisi": [265, 274], "pretium": [265, 274], "leo": [265, 274], "euismod": [265, 274], "ultric": [265, 274], "dapibu": [265, 274], "lacinia": [265, 274], "vivamu": [265, 274], "molesti": [265, 274], "hac": [265, 274], "habitass": [265, 274], "platea": [265, 274], "dictumst": [265, 274], "changelog": [266, 275], "submenu": [266, 275], "symlink": [267, 276], "subtre": [267, 276], "_theme": [267, 276], "html_theme": [267, 276], "html_theme_path": [267, 276]}, "objects": {"": [[270, 0, 1, "", "Data_item_1"], [270, 0, 1, "", "Data_item_2"], [270, 0, 1, "", "Data_item_3"]], "payments.dotpay": [[270, 1, 1, "", "DotpayProvider"]]}, "objtypes": {"0": "py:data", "1": "py:class"}, "objnames": {"0": ["py", "data", "Python data"], "1": ["py", "class", "Python class"]}, "titleterms": {"onnx": [0, 20, 105, 106, 107, 108, 110], "live": 0, "tutori": [0, 42, 49, 50, 54, 57, 114, 120, 122, 153, 156, 157, 173, 174, 179, 186, 195, 220, 221], "what": [0, 6, 10, 11, 15, 17, 44, 52, 56, 57, 60, 112, 119, 130, 138, 147, 154, 201, 205, 211, 212, 213, 215, 216, 226, 234, 256, 258], "overview": [0, 1, 17, 60, 108, 114, 136, 144, 164, 175, 191, 221], "prepar": [0, 49, 60, 113, 115, 127, 128, 139, 165, 168, 179, 182, 187, 188, 189, 190, 191, 194, 197, 198, 206, 208, 223, 224, 225], "environ": [0, 1, 14, 23, 53, 60, 136, 146, 159, 171, 184, 187, 194], "download": [0, 137, 171, 181, 185, 262, 267, 271, 276], "train": [0, 1, 3, 6, 7, 11, 14, 19, 24, 44, 49, 52, 53, 55, 61, 87, 99, 110, 112, 115, 117, 120, 122, 124, 125, 127, 128, 131, 132, 134, 135, 136, 152, 157, 159, 160, 165, 166, 169, 181, 182, 197, 198, 199, 220, 221, 228, 247, 253], "pytorch": [0, 3, 4, 5, 6, 10, 12, 15, 19, 20, 24, 25, 43, 46, 50, 54, 57, 61, 63, 64, 65, 67, 68, 69, 72, 81, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 105, 108, 109, 110, 111, 121, 135, 137, 147, 158, 168, 171, 176, 177, 179, 180, 188, 195, 196, 197, 198, 199, 200, 206, 207, 208, 209, 217, 219, 220, 221, 223, 224, 225, 226, 227, 231, 233, 235, 236, 238, 239, 240, 241, 242, 243, 245, 247, 248, 249, 251, 253, 257], "style": [0, 12], "transfer": [0, 12, 157], "model": [0, 1, 4, 6, 7, 9, 12, 17, 18, 19, 20, 21, 25, 45, 49, 55, 58, 59, 60, 73, 74, 79, 85, 97, 102, 103, 105, 112, 113, 115, 117, 122, 124, 125, 131, 133, 134, 136, 137, 138, 143, 146, 147, 149, 150, 156, 157, 165, 166, 168, 169, 171, 175, 178, 179, 181, 182, 185, 187, 188, 194, 195, 197, 198, 203, 206, 208, 209, 210, 211, 218, 220, 221, 223, 224, 225, 226, 229, 234, 240, 247, 252, 256, 257], "convert": [0, 4, 25, 58, 59, 60, 80, 147, 179, 182, 187, 194, 197, 198], "coreml": 0, "run": [0, 6, 7, 20, 22, 45, 49, 50, 53, 54, 55, 58, 59, 60, 73, 85, 97, 115, 126, 127, 133, 168, 171, 174, 185, 194, 210, 211, 213, 245, 256], "io": [0, 59, 187, 188, 204, 222, 223, 225], "app": [0, 58, 59, 126, 187, 206, 208, 213, 224, 225], "conclus": [0, 1, 2, 3, 5, 6, 9, 14, 15, 17, 19, 21, 22, 23, 49, 75, 82, 97, 105, 108, 114, 124, 136, 137, 143, 144, 146, 152, 159, 164, 172, 173, 174, 176, 177, 181, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 201, 203, 204, 207, 211, 214, 215, 219, 222, 237, 244, 254, 255], "torchrl": [1, 14, 159], "object": [1, 58, 59, 99, 126, 178], "code": [1, 2, 14, 22, 54, 183, 186, 189, 206, 208, 226, 262, 271], "ddpg": 1, "loss": [1, 12, 37, 44, 47, 49, 52, 97, 98, 110, 124, 128, 136, 159, 230], "prerequisit": [1, 58, 59, 97, 115, 157, 177, 186, 199, 200, 254], "import": [1, 12, 45, 55, 87, 110, 137, 171, 197, 198, 213, 256], "setup": [1, 17, 18, 23, 87, 116, 135, 136, 137, 150, 168, 169, 175, 179, 185, 187, 195, 201, 208, 210, 211, 213, 223, 255], "lossmodul": 1, "The": [1, 6, 87, 125, 134, 155, 165, 213, 226, 262, 271], "__init__": [1, 34], "method": [1, 15, 22, 135, 150, 177, 178, 192, 244, 252], "valu": [1, 136, 153, 159, 252], "estim": [1, 146], "actor": 1, "put": [1, 146, 175, 178], "thing": [1, 14], "togeth": [1, 14, 124, 146, 152, 175, 178, 230], "forward": [1, 5, 6, 21, 78, 109, 141, 145, 178, 223], "call": 1, "transform": [1, 7, 14, 41, 42, 51, 118, 119, 122, 124, 137, 145, 154, 159, 164, 166], "parallel": [1, 7, 21, 45, 56, 61, 120, 122, 123, 124, 133, 134, 149, 247], "execut": [1, 4, 14, 18, 105, 161, 168, 247], "normal": [1, 44, 159], "observ": [1, 183], "stat": 1, "build": [1, 4, 5, 10, 22, 23, 58, 59, 99, 116, 142, 143, 155, 157, 204, 206, 208, 213, 218, 222, 256, 260, 269], "explor": [1, 4, 18], "data": [1, 6, 7, 9, 19, 44, 45, 49, 50, 52, 55, 56, 60, 61, 87, 110, 115, 117, 122, 123, 124, 127, 128, 133, 157, 159, 165, 166, 168, 171, 181, 191, 195, 247, 261, 270], "collector": [1, 136, 159], "evalu": [1, 7, 49, 60, 115, 117, 125, 126, 127, 137, 157, 165, 182, 185, 197, 230], "your": [1, 4, 5, 10, 60, 151, 178, 183, 184, 213, 223, 256], "record": [1, 168], "replai": [1, 136, 159, 160], "buffer": [1, 136, 159, 247], "storag": [1, 257], "batch": [1, 7, 8, 14, 115, 116, 129, 142, 145, 161, 219, 247], "size": [1, 137, 185, 197, 234], "modul": [1, 4, 6, 15, 25, 60, 67, 85, 93, 104, 111, 134, 136, 137, 141, 149, 153, 156, 195, 202, 218, 237, 244], "construct": [1, 18, 55, 191, 192], "target": [1, 7, 146, 247, 262, 271], "network": [1, 6, 44, 47, 52, 87, 99, 102, 110, 118, 127, 128, 136, 146, 159, 160, 166, 230], "updat": [1, 47, 146, 161, 202], "optim": [1, 44, 52, 69, 99, 104, 110, 111, 119, 126, 152, 163, 177, 210, 211, 216, 219, 223, 224, 225, 247, 252, 258], "time": [1, 82, 109, 137, 223], "polici": [1, 14, 122, 136, 159], "experi": [1, 14, 15, 126, 179], "result": [1, 3, 45, 52, 73, 105, 109, 115, 126, 127, 130, 159, 165, 166, 168, 185, 201, 226, 229], "next": [1, 44, 52, 73, 159], "step": [1, 4, 58, 59, 75, 114, 134, 152, 155, 159, 168, 218, 224, 225, 234], "autograd": [2, 8, 10, 43, 63, 64, 76, 89, 111, 125, 141, 163], "c": [2, 3, 4, 5, 6, 8, 10, 22, 23, 186, 206, 208, 220, 246, 256], "frontend": [2, 6, 85, 86], "basic": [2, 6, 21, 25, 35, 133, 134, 141, 149, 155, 161, 172, 173, 174, 203, 219, 254], "oper": [2, 5, 8, 10, 22, 23, 48, 101, 108, 177, 179, 191, 192, 193, 200, 207, 208, 223, 247], "comput": [2, 14, 43, 82, 101, 103, 145, 150, 157, 229, 247], "higher": 2, "order": [2, 247], "gradient": [2, 12, 32, 73, 76, 154, 191, 230, 247], "us": [2, 3, 5, 6, 7, 11, 12, 13, 20, 22, 23, 24, 25, 43, 50, 53, 60, 105, 109, 112, 113, 116, 119, 123, 129, 131, 133, 134, 136, 138, 141, 154, 155, 161, 162, 163, 164, 168, 169, 188, 191, 200, 206, 208, 212, 214, 215, 221, 222, 223, 226, 228, 229, 237, 245, 247, 252, 254, 255, 258], "custom": [2, 5, 10, 14, 15, 22, 23, 51, 67, 108, 117, 120, 129, 130, 141, 155, 156, 157, 173, 174, 178, 208, 216, 222, 257], "function": [2, 7, 12, 15, 19, 37, 44, 47, 52, 64, 73, 78, 85, 87, 97, 98, 99, 110, 115, 129, 130, 137, 141, 145, 150, 154, 156, 157, 159, 182, 197, 198, 247], "translat": [2, 113], "from": [2, 19, 22, 43, 50, 105, 112, 131, 171, 175, 176, 177, 178, 188, 237], "python": [2, 5, 22, 23, 58, 59, 85, 155, 206, 252, 255], "cuda": [3, 5, 50, 80, 82, 212], "graph": [3, 43, 60, 101, 105, 108, 172, 173, 174, 177, 181, 182, 183, 185, 199, 247], "api": [3, 4, 6, 89, 110, 139, 141, 147, 152, 155, 185, 186, 200, 206, 226, 247, 255], "get": [3, 4, 10, 58, 59, 82, 103, 123, 133, 144, 151, 163, 193, 213, 214, 215, 220, 221, 224, 225], "start": [3, 7, 82, 123, 133, 151, 163, 193, 214, 215, 220, 221], "\u5728": [4, 158], "\u4e2d\u52a0\u8f7d": 4, "torchscript": [4, 21, 22, 23, 25, 60, 110, 112, 172, 203, 208, 216, 220, 247, 252, 256], "\u6a21\u578b": [4, 92, 96, 119, 238], "1": [4, 9, 19, 44, 58, 59, 78, 85, 105, 134, 137, 150, 155, 157, 168, 169, 176, 178, 179, 181, 182, 185, 195, 199, 200, 213, 218, 223, 224, 225, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 250, 252, 264, 273], "torch": [4, 43, 61, 80, 81, 93, 101, 104, 112, 133, 156, 164, 172, 173, 174, 176, 191, 197, 198, 205, 210, 223, 230, 231, 237, 240, 244, 254, 255], "script": [4, 23, 25, 53, 85, 119, 151, 185, 224, 225, 252], "via": [4, 15, 267, 276], "trace": [4, 23, 25, 82, 83, 85, 143, 172, 177, 183, 185, 204, 226, 252], "annot": [4, 200], "2": [4, 9, 17, 19, 44, 45, 58, 59, 78, 85, 105, 134, 137, 150, 155, 157, 168, 169, 176, 177, 178, 179, 181, 182, 185, 195, 197, 198, 199, 200, 201, 213, 218, 223, 224, 225, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 252, 264, 265, 273, 274], "serial": [4, 15, 22, 137, 156], "file": [4, 49, 105, 112, 131, 165, 208, 213], "3": [4, 9, 19, 44, 45, 58, 59, 85, 105, 134, 137, 155, 168, 169, 176, 179, 181, 182, 185, 195, 199, 200, 218, 223, 224, 225, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 252, 264, 273], "load": [4, 6, 7, 9, 12, 22, 25, 44, 49, 53, 58, 59, 60, 97, 112, 117, 131, 133, 137, 157, 165, 166, 197, 198, 214, 223, 237, 247, 256], "A": [4, 23, 43, 46, 98, 129, 200, 226, 230, 248, 262, 271], "minim": [4, 97], "applic": [4, 6, 135, 155, 208, 244], "depend": [4, 105, 107, 164], "libtorch": [4, 188], "4": [4, 9, 17, 19, 44, 58, 59, 85, 105, 134, 137, 155, 158, 168, 169, 179, 182, 185, 200, 201, 218, 223, 228, 231, 233, 234, 236, 238, 240, 241, 242, 243, 246, 248, 249, 250, 264, 273], "5": [4, 19, 44, 58, 59, 105, 168, 169, 179, 182, 185, 200, 223, 231, 234, 236, 238, 240, 241, 242, 246, 250, 264, 273], "help": [4, 168], "extens": [5, 10, 13, 120, 155, 177, 207, 211, 220, 244, 253], "motiv": [5, 6, 85, 182, 189, 197, 200], "exampl": [5, 13, 21, 22, 58, 59, 73, 78, 79, 85, 99, 102, 103, 112, 125, 186, 200, 218, 220, 253, 262, 264, 271, 273], "write": [5, 6, 14, 51, 135, 169, 178, 183, 189, 200, 216], "setuptool": [5, 23], "op": [5, 8, 108, 173, 174], "pass": [5, 11, 109, 142, 152], "backward": [5, 10, 21, 78, 122, 129, 130, 152], "bind": [5, 22], "perform": [5, 109, 138, 143, 144, 147, 154, 164, 168, 176, 177, 197, 219, 221, 223, 247], "comparison": [5, 129, 133, 154, 172, 182], "gpu": [5, 6, 44, 45, 55, 79, 87, 95, 104, 110, 112, 168, 184, 188, 220, 247], "devic": [5, 12, 15, 112, 122, 206, 212, 232, 237, 247], "jit": [5, 10, 23, 110, 158], "compil": [5, 23, 144, 164, 172, 210, 211, 254, 255], "mix": [5, 25, 122, 131, 230, 247], "accessor": 5, "integr": [5, 15, 187, 194], "defin": [6, 7, 8, 9, 19, 22, 44, 47, 49, 60, 64, 97, 115, 126, 134, 137, 159, 171, 178, 179, 181, 182, 197, 198, 218, 252, 254], "neural": [6, 12, 44, 47, 87, 110, 146, 150, 221], "regist": [6, 8, 10, 15, 23], "paramet": [6, 13, 45, 60, 93, 112, 156, 159, 161, 162, 200, 202, 231, 247, 261, 270], "submodul": [6, 183], "travers": 6, "hierarchi": [6, 226], "mode": [6, 18, 19, 141, 145, 181, 182, 183, 185, 197, 220], "ownership": 6, "dcgan": [6, 52], "wa": 6, "gan": [6, 52], "agan": 6, "gener": [6, 7, 15, 52, 110, 112, 113, 115, 126, 218, 247, 261, 270], "discrimin": [6, 52, 98], "loop": [6, 14, 134, 136, 159, 160, 198], "move": [6, 22], "checkpoint": [6, 55, 112, 122, 133, 146, 198, 214, 237, 247], "recov": 6, "state": [6, 258], "inspect": [6, 153, 156, 169, 230], "imag": [6, 12, 20, 44, 58, 59, 105, 117, 119, 139, 157, 171, 213, 257, 262, 263, 271, 272], "distribut": [7, 11, 16, 18, 53, 55, 56, 61, 82, 110, 120, 133, 134, 135, 162, 163, 175, 214, 216, 247], "pipelin": [7, 115, 134, 149], "multipl": [7, 44, 112, 156], "process": [7, 53, 55, 58, 59, 115, 133, 134, 155, 161, 213], "input": [7, 11, 52, 55, 58, 59, 60, 73, 127, 130, 149, 175, 195, 209, 247, 252], "sequenc": [7, 102, 124], "scale": [7, 124, 132, 164], "pipe": 7, "initi": [7, 48, 52, 53, 115, 133, 135, 146, 153, 193, 202], "test": [7, 9, 10, 14, 44, 73, 87, 115, 129, 142, 178, 206, 218], "dataset": [7, 19, 45, 51, 104, 110, 113, 115, 137, 178, 182, 185, 197, 198], "output": [7, 58, 59, 113, 130, 221], "dispatch": [8, 10, 164], "schema": 8, "backend": [8, 10, 15, 135, 144, 155, 179, 197, 198, 199, 206, 247, 253], "implement": [8, 22, 23, 52, 73, 98, 129, 153, 155, 161, 162, 164, 189, 191, 202], "For": 8, "do": [8, 44, 130, 147, 234], "need": [8, 183], "In": 8, "place": [8, 80], "view": [8, 168], "ad": [8, 87, 169, 208, 230], "support": [8, 10, 87, 108, 157, 164, 192, 202, 213, 216], "go": [8, 44, 52, 73, 171], "beyond": 8, "autocast": [8, 230], "tracer": 8, "beta": [9, 17, 19, 108, 137, 141, 142, 143, 147, 157, 164, 194, 209, 210, 211, 219, 222, 255], "dynam": [9, 21, 98, 137, 173, 174, 181, 185, 195, 228, 234], "quantiz": [9, 19, 119, 137, 157, 179, 181, 182, 183, 184, 185, 195, 197, 198, 199, 200, 221, 223, 224, 225, 228, 234], "an": [9, 10, 14, 20, 44, 58, 59, 60, 102, 103, 115, 125, 136, 159, 211, 237, 257, 266, 275], "lstm": [9, 21, 98, 102, 136], "word": [9, 99, 103], "languag": [9, 103], "introduct": [9, 12, 24, 43, 52, 58, 59, 61, 91, 101, 137, 153, 168, 171, 172, 175, 185, 186, 187, 188, 189, 192, 194, 195, 199, 200, 202, 204, 206, 207, 209, 218, 222, 223, 224, 225, 227, 228, 234, 252], "text": [9, 49, 262, 271], "pretrain": [9, 60, 178, 224, 225, 228], "extend": [10, 22, 23, 108, 156], "new": [10, 15, 58, 59, 64, 98, 115, 129, 227], "s": [10, 60, 101, 146, 177, 190], "kei": 10, "full": [10, 87, 213], "list": [10, 263, 272], "kernel": [10, 15, 82, 150, 219, 254], "against": 10, "nativ": [10, 208], "compat": [10, 188], "known": 10, "issu": 10, "addit": [10, 42, 114, 168, 234], "note": [10, 60, 98, 200, 229], "futur": [10, 15], "work": [10, 11, 15, 122, 123, 124, 147, 214], "stai": 10, "touch": 10, "uneven": 11, "join": 11, "context": [11, 260, 269], "manag": 11, "requir": [11, 17, 105, 125, 156, 201, 212, 213, 216, 226, 256, 258], "distributeddataparallel": [11, 61, 133, 247], "zeroredundancyoptim": [11, 258], "keyword": 11, "argument": [11, 252], "how": [11, 15, 122, 123, 124, 152, 182, 197, 198, 200, 212, 214, 215, 216, 222, 226, 245, 256, 258, 260, 269], "doe": [11, 17, 125, 201], "joinabl": 11, "joinhook": 11, "make": [11, 98, 116, 183, 208], "toi": [11, 200], "class": [11, 14, 22, 51, 97, 153], "underli": 12, "principl": [12, 176, 177, 192], "packag": [12, 78], "select": [12, 136, 204], "content": [12, 111, 219, 260, 261, 262, 263, 264, 265, 269, 270, 271, 272, 273, 274], "descent": 12, "creat": [13, 45, 49, 99, 101, 126, 127, 128, 143, 150, 156, 247, 257], "numpi": [13, 40, 48, 71, 80, 95, 111, 190], "scipi": 13, "less": 13, "parametr": [13, 153, 156], "pendulum": 14, "\u4f7f\u7528": [14, 42, 55, 90, 93, 96, 104, 118, 159, 231, 238, 246], "\u7f16\u5199\u73af\u5883\u548ctransform": 14, "effect": 14, "action": [14, 136], "_step": 14, "reset": 14, "simul": 14, "_reset": 14, "metadata": [14, 15], "env": 14, "_spec": 14, "spec": 14, "shape": [14, 173, 174, 239], "reproduc": 14, "seed": 14, "wrap": [14, 122, 178], "envbas": 14, "our": [14, 18, 129, 135, 142, 152, 175], "rollout": 14, "simpl": [14, 45, 105, 143, 165, 230], "facilit": 15, "privateuse1": 15, "guard": 15, "deseri": [15, 22], "other": [15, 18, 168], "improv": [15, 109, 168, 219], "user": [15, 81, 127, 183, 206, 254], "renam": 15, "name": [15, 127], "properti": 15, "relat": [15, 171, 177, 244], "combin": [16, 124, 133], "dataparallel": [16, 45, 56, 61, 79, 87, 112, 133, 240], "rpc": [16, 61, 120, 134, 161, 162, 163, 180, 212, 217], "framework": [16, 162, 163], "acceler": [17, 151, 201], "bert": [17, 137, 185, 201], "semi": [17, 24, 201], "structur": [17, 201, 265, 274], "sparsiti": [17, 192, 201], "problem": [17, 200, 201], "solv": [17, 201], "intro": [17, 201], "establish": 17, "baselin": [17, 182], "prune": [17, 156, 201], "spars": [17, 189, 192, 201], "infer": [17, 58, 59, 112, 117, 119, 137, 176, 213, 219, 220, 230, 247, 252, 253, 256], "torchrec": [18, 175], "shard": [18, 122, 123, 124, 134, 258], "instal": [18, 75, 82, 105, 137, 157, 175, 221, 245, 267, 276], "embed": [18, 103], "distributedmodelparallel": [18, 175], "multiprocess": 18, "tabl": [18, 111, 260, 261, 262, 263, 264, 265, 269, 270, 271, 272, 273, 274], "wise": 18, "static": [19, 98, 182, 195, 228], "eager": [19, 182, 185], "architectur": 19, "helper": [19, 137, 182, 192, 197, 198], "loader": [19, 87], "imagenet": 19, "post": [19, 181, 182, 197, 199, 213, 228], "awar": [19, 198, 199, 221, 228], "speedup": [19, 172, 230], "option": [20, 43, 45, 114, 178, 206, 213, 260, 261, 263, 269, 270, 272], "\u6a21\u578b\u5bfc\u51fa\u5230": 20, "\u5e76\u4f7f\u7528": 20, "runtim": [20, 105, 108, 247], "\u8fd0\u884c": 20, "syntax": [21, 85, 203], "appli": [21, 124, 137, 149, 199], "ensembl": [21, 138], "bidirect": 21, "layer": [21, 90, 124, 129, 247], "asid": 21, "visual": [21, 105, 117, 152, 157, 165, 166, 226, 229], "project": [22, 260, 269], "With": [22, 168, 208], "cmake": [22, 23, 208], "save": [22, 25, 53, 55, 60, 105, 112, 122, 125, 130, 131, 133, 146, 152, 197, 198, 214, 230, 240], "To": [22, 213], "ivalu": 22, "take": 22, "return": [22, 125], "bound": [22, 177], "appendix": [23, 192], "more": [23, 58, 59, 119, 125, 144, 145, 161, 168, 175, 187, 188, 194, 209, 218, 222, 224, 225, 227, 228, 234, 245, 252, 257], "wai": [23, 154, 262, 271], "supervis": 24, "learn": [24, 35, 46, 58, 59, 85, 98, 99, 100, 110, 117, 119, 120, 137, 146, 157, 161, 163, 168, 176, 187, 188, 194, 209, 218, 222, 224, 225, 227, 228, 234, 245, 252], "usb": 24, "built": [24, 179, 188], "upon": 24, "freematch": 24, "softmatch": 24, "cifar": [24, 97], "10": [24, 97, 152, 182, 264, 273], "onli": [24, 183, 220, 221], "40": 24, "label": [24, 171], "specif": [24, 171, 197, 198, 247], "imbalanc": 24, "algorithm": [24, 160], "\u4ecb\u7ecd": [25, 82, 88, 90, 94, 95, 107, 231, 233, 249, 250], "author": [25, 105], "further": [25, 32, 43, 53, 55, 56, 105, 107, 108, 109, 114, 117, 131, 132, 136, 179, 189, 191, 192], "read": [25, 32, 43, 53, 55, 56, 105, 107, 108, 109, 114, 131, 132, 136, 171, 177, 179, 189, 191, 192, 226], "\u97f3\u9891\u6570\u636e\u589e\u5f3a": 26, "\u97f3\u9891\u6570\u636e\u96c6": 27, "\u97f3\u9891\u7279\u5f81\u589e\u5f3a": 28, "\u97f3\u9891\u7279\u5f81\u63d0\u53d6": 29, "\u97f3\u9891": 30, "i": [30, 44], "o": 30, "audio": 31, "\u91cd\u91c7\u6837": 31, "\u81ea\u52a8\u5fae\u5206": 32, "\u5f20\u91cf": [32, 40, 72, 92, 111], "\u51fd\u6570\u548c\u8ba1\u7b97\u56fe": 32, "\u8ba1\u7b97\u68af\u5ea6": 32, "\u7981\u7528\u68af\u5ea6\u8ddf\u8e2a": 32, "\u66f4\u591a\u5173\u4e8e\u8ba1\u7b97\u56fe": 32, "\u53ef\u9009\u9605\u8bfb": 32, "\u5f20\u91cf\u68af\u5ea6": 32, "tensor": [32, 48, 63, 72, 76, 80, 95, 101, 110, 111, 120, 124, 125, 127, 152, 164, 192, 193, 200, 211, 223, 244, 247, 252], "\u548c\u96c5\u53ef\u6bd4\u4e58\u79ef": 32, "jacobian": [32, 145, 150], "product": [32, 145, 150, 164], "\u6784\u5efa\u795e\u7ecf\u7f51\u7edc": [33, 250], "\u83b7\u53d6\u8bad\u7ec3\u8bbe\u5907": 33, "\u5b9a\u4e49\u7c7b": 33, "\u6a21\u578b\u5c42": 33, "nn": [33, 61, 67, 68, 78, 85, 93, 104, 111, 112, 156, 175, 237, 240, 244], "flatten": 33, "linear": [33, 99, 104], "relu": [33, 179], "sequenti": [33, 104], "softmax": [33, 99, 191], "\u6a21\u578b\u53c2\u6570": 33, "\u5ef6\u4f38\u9605\u8bfb": [33, 34, 37, 41], "\u6570\u636e\u96c6\u4e0e\u6570\u636e\u52a0\u8f7d\u5668": 34, "\u52a0\u8f7d\u6570\u636e\u96c6": 34, "\u8fed\u4ee3\u548c\u53ef\u89c6\u5316\u6570\u636e\u96c6": 34, "\u521b\u5efa\u81ea\u5b9a\u4e49\u6570\u636e\u96c6": 34, "__len__": 34, "__getitem__": 34, "\u4f7f\u7528\u6570\u636e\u52a0\u8f7d\u5668\u4e3a\u8bad\u7ec3\u51c6\u5907\u6570\u636e": 34, "\u901a\u8fc7": [34, 242], "dataload": [34, 51, 104, 110], "\u8fdb\u884c\u8fed\u4ee3": 34, "\u57fa\u7840\u77e5\u8bc6": 36, "\u8fd0\u884c\u6559\u7a0b\u4ee3\u7801": [36, 88], "\u5982\u4f55\u4f7f\u7528\u672c\u6307\u5357": 36, "\u4f18\u5316\u6a21\u578b\u53c2\u6570": [37, 38], "\u524d\u7f6e\u4ee3\u7801": 37, "\u8d85\u53c2\u6570": 37, "\u4f18\u5316\u5faa\u73af": 37, "\u635f\u5931\u51fd\u6570": [37, 93, 96], "\u4f18\u5316\u5668": [37, 96], "\u5b8c\u6574\u5b9e\u73b0": 37, "\u5feb\u901f\u5165\u95e8": 38, "\u5904\u7406\u6570\u636e": 38, "\u521b\u5efa\u6a21\u578b": 38, "\u4fdd\u5b58\u6a21\u578b": [38, 248], "\u52a0\u8f7d\u6a21\u578b": 38, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": [39, 242], "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b\u6743\u91cd": 39, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u5e26\u6709\u7ed3\u6784\u7684\u6a21\u578b": 39, "\u76f8\u5173\u6559\u7a0b": 39, "\u521d\u59cb\u5316\u5f20\u91cf": 40, "\u5f20\u91cf\u7684\u5c5e\u6027": 40, "\u5f20\u91cf\u64cd\u4f5c": 40, "\u4e0enumpy\u8f6c\u6362": 40, "\u5f20\u91cf\u8f6c\u4e3anumpi": 40, "arrai": [40, 48, 80], "array\u8f6c\u4e3a\u5f20\u91cf": 40, "totensor": 41, "lambda": 41, "better": 42, "\u8fdb\u884c\u5feb\u901f": 42, "\u63a8\u65ad": 42, "featur": [42, 102, 117, 122, 157, 168, 171, 220, 221], "thi": [42, 57, 122, 152, 263, 266, 272, 275], "inform": [42, 85, 144], "summari": [42, 45, 113, 122, 164, 227], "gentl": 43, "background": 43, "usag": [43, 110, 129, 141, 149, 152, 172, 173, 174, 176, 206, 219, 221, 253, 254], "differenti": [43, 101, 141], "vector": [43, 138, 145, 150], "calculu": 43, "exclus": 43, "dag": 43, "classifi": [44, 99, 105, 119, 157, 171], "about": [44, 137, 239], "cifar10": 44, "convolut": [44, 129, 136, 142, 247], "where": [44, 52, 73, 171, 191], "dummi": 45, "8": [45, 182, 231, 246, 264, 273], "deep": [46, 98, 99, 100, 110, 176], "60": 46, "minut": 46, "blitz": 46, "backprop": 47, "weight": [47, 52, 65, 195], "attribut": [48, 229, 252], "bridg": [48, 80, 95], "chatbot": 49, "preprocess": [49, 146], "format": [49, 105, 112, 147, 177, 223, 247], "trim": 49, "seq2seq": [49, 60, 118, 165], "encod": [49, 60, 103, 165], "decod": [49, 60, 165], "procedur": 49, "mask": [49, 191], "singl": [49, 149], "iter": [49, 51, 115, 156], "greedi": [49, 60], "my": 49, "googl": [50, 257], "colab": 50, "version": [50, 150], "drive": 50, "enabl": [50, 186, 247], "compos": [51, 145, 254], "through": [51, 85, 179, 199], "afterword": 51, "torchvis": [51, 74, 178], "\u6559\u7a0b": [52, 75, 86, 97, 121, 159, 160, 166], "adversari": [52, 73], "fault": 53, "toler": 53, "torchrun": [53, 133], "why": [53, 56, 124, 125, 191, 193, 215], "grace": 53, "restart": 53, "group": [53, 55, 155], "provid": 53, "variabl": [53, 247], "snapshot": [53, 152], "trainer": 53, "constructor": [53, 247], "resum": [53, 112, 230], "\u5206\u5e03\u5f0f\u5e76\u884c": 54, "video": 54, "section": [54, 265, 274], "ddp": [55, 56, 120, 131, 133, 247], "\u8fdb\u884c\u591a": 55, "\u8bad\u7ec3": 55, "job": 55, "you": [56, 124, 229], "should": [56, 124], "prefer": [56, 223], "over": 56, "dp": 56, "\u6df1\u5ea6\u5b66\u4e60": 57, "60\u5206\u949f\u5165\u95e8": 57, "goal": 57, "segment": [58, 59, 178], "deeplabv3": [58, 59], "android": [58, 204, 206, 208, 218, 222, 223, 224], "deploy": [58, 59, 221, 256], "reus": [58, 59, 223], "complet": [58, 59], "ui": [58, 59], "refactor": [58, 59, 183], "recap": [58, 59, 122], "deploi": [60, 213, 257], "acknowledg": [60, 126, 176, 177], "handl": 60, "attent": [60, 164, 165], "search": [60, 87], "chang": [60, 232], "host": [60, 194], "own": [60, 135, 183, 213], "greedysearchdecod": 60, "print": [60, 109], "\u5206\u5e03\u5f0f\u6982\u8ff0": 61, "fullyshardeddataparallel": 61, "elast": 61, "base": [61, 113, 157, 180, 204, 217, 260, 269], "develop": 61, "control": [65, 164, 173, 174, 247], "flow": [65, 173, 174, 200], "share": [65, 200], "warm": 71, "up": [71, 126, 149, 171, 178, 179, 184, 210, 211, 219, 234], "\u5bf9\u6297\u6837\u672c\u751f\u6210": 73, "threat": 73, "fast": [73, 219], "sign": 73, "attack": 73, "under": 73, "fgsm": 73, "accuraci": [73, 87, 137, 144, 197, 221, 234], "vs": [73, 145, 190], "epsilon": 73, "sampl": [73, 128, 154, 226], "finetun": [74, 117, 157, 178], "torchmultimod": 75, "\u5fae\u8c03": 75, "flava": 75, "track": [76, 130, 169], "histori": 76, "convnet": [78, 117], "hook": [78, 125, 152], "recurr": [78, 136], "net": 78, "multi": [79, 87, 126, 176], "part": [79, 85, 102, 157, 177], "cpu": [79, 112, 122, 125, 143, 144, 176, 177, 207, 220, 247], "inplac": 80, "out": [80, 129, 142], "zero": 80, "index": [80, 191, 261, 270], "No": 80, "camel": 80, "case": [80, 133, 209, 247], "former": 81, "holist": [82, 83], "analysi": [82, 83, 177], "hta": 82, "tempor": 82, "breakdown": 82, "idl": 82, "durat": 82, "commun": [82, 87, 135, 212], "overlap": 82, "augment": [82, 102, 247], "counter": 82, "memori": [82, 102, 109, 125, 129, 147, 152, 160, 176, 177, 219, 223, 247], "bandwidth": 82, "queue": 82, "length": [82, 247], "launch": [82, 134, 226], "statist": 82, "\u5dee\u5f02\u5206\u6790": 83, "hybrid": [85, 86], "pure": 85, "top": [85, 177], "level": [85, 102, 260, 262, 263, 269, 271, 272], "rai": 87, "tune": [87, 122, 137, 177, 219, 247], "\u8d85\u53c2\u6570\u8c03\u4f18": 87, "configur": [87, 126, 137, 177, 185, 197, 198, 226, 260, 269], "set": [87, 126, 137, 171, 176, 179, 182, 184, 185, 197, 210, 211, 234, 247], "space": 87, "youtub": [88, 91], "\u81ea\u52a8\u5fae\u5206\u57fa\u7840": 89, "\u6211\u4eec\u4e3a\u4ec0\u4e48\u9700\u8981": 89, "\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50": 89, "\u81ea\u52a8\u6c42\u5bfc\u5728\u8bad\u7ec3\u4e2d": 89, "\u5173\u95ed\u548c\u6253\u5f00\u81ea\u52a8\u6c42\u5bfc": 89, "\u548c\u539f\u4f4d\u64cd\u4f5c": 89, "\u5206\u6790\u5668": 89, "\u9ad8\u7ea7\u4e3b\u9898": 89, "\u66f4\u591a": 89, "\u7ec6\u8282\u548c\u9ad8\u7ea7": 89, "\u9ad8\u7ea7": 89, "captum": [90, 229], "\u8fdb\u884c\u6a21\u578b\u7406\u89e3": 90, "\u5b89\u88c5": [90, 158], "\u7b2c\u4e00\u4e2a\u793a\u4f8b": 90, "\u4f7f\u7528\u96c6\u6210\u68af\u5ea6\u8fdb\u884c\u7279\u5f81\u5f52\u56e0": 90, "\u4f7f\u7528\u906e\u6321\u8fdb\u884c\u7279\u5f81\u5f52\u56e0": 90, "\u4f7f\u7528\u5c42\u68af\u5ea6\u7c7b\u6fc0\u6d3b\u6620\u5c04": 90, "gradcam": 90, "\u8fdb\u884c\u5c42\u5f52\u56e0": 90, "\u4f7f\u7528captum": 90, "insights\u8fdb\u884c\u53ef\u89c6\u5316": 90, "\u7b80\u4ecb": [92, 95, 96, 236, 238, 240, 241, 242, 243, 248], "\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668": [92, 96], "\u8bad\u7ec3\u4f60\u7684": 92, "\u6784\u5efa\u6a21\u578b": 93, "\u548c": [93, 104, 158, 171, 248], "\u5e38\u89c1\u5c42\u7c7b\u578b": 93, "\u7ebf\u6027\u5c42": 93, "\u5377\u79ef\u5c42": 93, "\u5faa\u73af\u5c42": 93, "\u8f6c\u6362\u5668": 93, "\u5176\u4ed6\u5c42\u548c\u51fd\u6570": 93, "\u6570\u636e\u64cd\u4f5c\u5c42": 93, "\u6fc0\u6d3b\u51fd\u6570": 93, "tensorboard": [94, 168, 169, 245], "\u652f\u6301": 94, "\u5f00\u59cb\u4e4b\u524d": 94, "\u5728tensorboard\u4e2d\u663e\u793a\u56fe\u50cf": 94, "\u7ed8\u5236\u6807\u91cf\u4ee5\u53ef\u89c6\u5316\u8bad\u7ec3": 94, "\u53ef\u89c6\u5316\u60a8\u7684\u6a21\u578b": 94, "\u4f7f\u7528\u5d4c\u5165\u53ef\u89c6\u5316\u60a8\u7684\u6570\u636e\u96c6": 94, "\u5176\u4ed6\u8d44\u6e90": [94, 96], "\u521b\u5efa\u5f20\u91cf": 95, "\u968f\u673a\u5f20\u91cf\u548c\u79cd\u5b50": 95, "\u5f20\u91cf\u5f62\u72b6": 95, "\u5f20\u91cf\u6570\u636e\u7c7b\u578b": 95, "\u4f7f\u7528pytorch\u5f20\u91cf\u8fdb\u884c\u6570\u5b66\u548c\u903b\u8f91\u8fd0\u7b97": 95, "\u5f20\u91cf\u5e7f\u64ad": 95, "\u66f4\u591a\u5f20\u91cf\u6570\u5b66\u8fd0\u7b97": 95, "\u672c\u5730\u4fee\u6539\u5f20\u91cf": 95, "\u590d\u5236\u5f20\u91cf": 95, "\u79fb\u52a8\u5230": 95, "\u64cd\u4f5c\u5f20\u91cf\u5f62\u72b6": 95, "\u6539\u53d8\u7ef4\u5ea6\u6570\u91cf": 95, "\u8bad\u7ec3\u6a21\u578b": 96, "\u8bad\u7ec3\u5faa\u73af": 96, "\u6bcf\u5468\u671f\u6d3b\u52a8": 96, "knowledg": 97, "distil": 97, "util": [97, 110, 156, 160, 207, 223, 231, 244, 247], "cross": 97, "entropi": 97, "cosin": 97, "intermedi": [97, 130, 247], "regressor": 97, "advanc": [98, 122, 135, 168, 177, 190, 207, 230, 254], "decis": 98, "bi": 98, "crf": 98, "versu": 98, "toolkit": 98, "condit": 98, "random": [98, 115], "field": [98, 263, 272], "discuss": 98, "exercis": [98, 102, 103, 114, 127, 128, 165, 177], "tag": [98, 102], "block": [99, 231, 262, 271], "affin": 99, "map": 99, "non": [99, 174, 183, 211, 218, 247], "probabl": 99, "compon": [99, 144], "logist": 99, "regress": 99, "bag": [99, 103], "nlp": 100, "librari": [101, 171, 188, 208, 224, 225, 247], "reshap": 101, "automat": [101, 141, 230], "long": [102, 264, 266, 273, 275], "short": [102, 226], "term": 102, "speech": 102, "tagger": 102, "charact": 102, "lexic": 103, "semant": [103, 189, 190], "dens": [103, 164], "n": 103, "gram": 103, "continu": 103, "\u5177\u4f53\u662f\u4ec0\u4e48": 104, "mnist": 104, "\u6570\u636e\u96c6\u8bbe\u7f6e": 104, "\u4ece\u96f6\u5f00\u59cb\u7684\u795e\u7ecf\u7f51\u7edc": 104, "\u4e0d\u4f7f\u7528": 104, "\u91cd\u6784": 104, "\u6dfb\u52a0\u9a8c\u8bc1\u96c6": 104, "\u521b\u5efa": 104, "fit": [104, 152], "get_data": 104, "cnn": 104, "\u5305\u88c5": 104, "\u603b\u7ed3": [104, 158, 246], "export": [105, 112, 173, 174, 197, 198, 199, 200, 256], "netron": 105, "6": [105, 168, 169, 179, 182, 223, 231, 238, 240, 246, 264, 273], "7": [105, 168, 179, 182, 231, 238, 246, 264, 273], "compar": [105, 119, 185, 195, 218], "ones": 105, "registri": 108, "unsupport": 108, "aten": [108, 200], "exist": [108, 147, 149], "without": [108, 206, 218], "registr": 108, "fx": [108, 142, 143, 172, 181, 182, 183, 199], "\u6a21\u578b\u5206\u6790": 109, "debug": [109, 144, 182, 185, 197, 247], "profil": [109, 143, 144, 168, 177, 180, 217, 226, 238], "cheat": 110, "sheet": 110, "vision": [110, 157, 247], "creation": 110, "dimension": 110, "algebra": 110, "activ": 110, "rate": 110, "schedul": [110, 126, 211], "datasampl": 110, "also": [110, 210, 254], "see": [110, 210, 254], "\u8ddf\u7740\u793a\u4f8b\u5b66\u4e60": 111, "\u70ed\u8eab": 111, "\u81ea\u52a8\u6c42\u5bfc": 111, "\u5f20\u91cf\u548c\u81ea\u52a8\u6c42\u5bfc": 111, "\u5b9a\u4e49\u65b0\u7684\u81ea\u52a8\u6c42\u5bfc\u51fd\u6570": 111, "\u81ea\u5b9a\u4e49": 111, "\u6a21\u5757": 111, "\u63a7\u5236\u6d41": 111, "\u6743\u91cd\u5171\u4eab": 111, "\u793a\u4f8b": [111, 251], "state_dict": [112, 242, 249], "recommend": [112, 127, 200], "entir": 112, "One": [112, 134], "warmstart": 112, "differ": [112, 178], "across": 112, "t5": [113, 122], "summar": 113, "sentiment": 113, "classif": 113, "generationutil": 113, "templat": 114, "torchtext": [115, 116], "\u6587\u672c\u5206\u7c7b": 115, "access": [115, 176, 191, 247], "raw": 115, "instanc": [115, 178], "split": 115, "\u9884\u5904\u7406\u81ea\u5b9a\u4e49\u6587\u672c\u6570\u636e\u96c6": 116, "vocabulari": 116, "numeric": 116, "sentenc": 116, "bucket": 116, "pad": 116, "\u8ba1\u7b97\u673a\u89c6\u89c9\u8fc1\u79fb\u5b66\u4e60\u6559\u7a0b": 117, "few": [117, 157], "predict": [117, 139, 157, 171], "fix": [117, 200, 252], "extractor": [117, 157], "\u6570\u636e\u83b7\u53d6\u548c\u5904\u7406": 118, "\u7684": 118, "\u6570\u636e\u6574\u7406": 118, "\u5f15\u7528": 118, "\u4f18\u5316\u89c6\u89c9": 119, "deit": 119, "lite": [119, 188], "interpret": [119, 143, 204, 222, 229], "speed": [119, 133, 149, 219], "fsdp": [120, 122, 123], "tp": [120, 124], "devicemesh": [120, 215], "\u6b22\u8fce\u6765\u5230": 121, "\u66f4\u591a\u8d44\u6e90": 121, "fulli": [122, 123, 124], "fine": [122, 137], "hf": 122, "precis": [122, 131, 230, 247], "intial": 122, "strategi": [122, 126], "prefetch": 122, "stream": 122, "rank0": 122, "larg": 124, "when": [124, 130, 131, 191, 252], "layernorm": 124, "rmsnorm": 124, "typic": 125, "than": [125, 176], "concept": 125, "pack": 125, "unpack": 125, "some": 125, "unconvent": 125, "int": 125, "tupl": 125, "str": 125, "disk": 125, "na": 126, "ax": 126, "torchx": 126, "runner": 126, "searchspac": 126, "metric": 126, "optimizationconfig": 126, "choos": 126, "\u4ece\u96f6\u5f00\u59cb\u7684\u81ea\u7136\u8bed\u8a00\u5904\u7406": [127, 128, 165], "\u5b57\u7b26\u7ea7": [127, 128], "rnn": [127, 128, 163], "\u8fdb\u884c\u59d3\u540d\u5206\u7c7b": 127, "turn": 127, "plot": [127, 128, 165], "\u751f\u6210\u59d3\u540d": 128, "fuse": [129, 142, 152, 164, 218, 223, 247], "norm": [129, 142, 247], "formula": 129, "batchnorm": 129, "doubl": 130, "real": 131, "world": 131, "cloud": [131, 257], "enough": 131, "multinod": 132, "local": [132, 176], "global": [132, 137, 156, 185], "rank": 132, "heteregen": 132, "troubleshoot": [132, 230], "between": [133, 191], "skew": 133, "partit": 134, "resnet50": 134, "stitch": 134, "Into": 134, "point": [135, 195, 244], "collect": [135, 159], "ring": 135, "allreduc": 135, "topic": [135, 230, 262, 271], "dqn": [136, 160], "mlp": 136, "q": [136, 160], "huggingfac": 137, "necessari": 137, "token": 137, "check": [137, 185, 197], "refer": [137, 179, 195, 262, 271], "vmap": [138, 205], "\u5b9a\u4e49": 139, "\u4f9d\u8d56": 139, "\u7b80\u5355\u7684": 139, "web": 139, "server": [139, 161, 162], "\u63a8\u7406": 139, "wav2vec2": [140, 167], "\u5f3a\u5236\u5bf9\u9f50": 140, "fuser": 142, "fusion": [142, 179], "benchmark": [142, 185, 194, 210, 218, 223, 231], "resnet18": [142, 143, 200], "captur": [143, 152, 199], "symbol": [143, 183], "investig": 143, "inductor": [144, 186, 199], "log": [144, 146, 245], "determin": 144, "error": [144, 230, 252], "hessian": 145, "hvp": 145, "vhp": 145, "revers": 145, "jacrev": 145, "jacfwd": 145, "functorch": 145, "\u8bad\u7ec3\u4e00\u4e2a\u9a6c\u91cc\u5965\u6e38\u620f\u7684": 146, "rl": 146, "agent": 146, "definit": [146, 263, 272], "act": 146, "cach": [146, 153], "recal": 146, "td": 146, "all": [146, 152, 175, 230, 247, 252], "let": 146, "plai": 146, "channel": [147, 177, 223], "last": [147, 177, 223], "gain": 147, "machin": 149, "best": 149, "practic": [149, 168], "tangent": 150, "ntk": 150, "contract": 150, "nvfuser": 151, "dure": [152, 247], "disclaim": 152, "techniqu": 152, "register_post_accumulate_grad_hook": 152, "everyth": [152, 178], "line": [152, 185, 262, 271], "hand": 153, "ar": 153, "first": [153, 176, 177], "citizen": 153, "concaten": 153, "remov": [153, 156], "per": 154, "grad": [154, 191, 247], "effici": [154, 176, 189, 222, 247], "cpp": 155, "subclass": [155, 164, 244], "expos": 155, "re": 156, "0": [157, 191], "nightli": [157, 173], "raspberri": 158, "pi": 158, "\u4e0a\u8fdb\u884c\u5b9e\u65f6\u63a8\u7406": 158, "30": 158, "fp": 158, "\u51c6\u5907\u73af\u5883": 158, "\u8bbe\u7f6e": [158, 231], "opencv": 158, "\u89c6\u9891\u6355\u83b7": 158, "\u56fe\u7247\u5904\u7406": 158, "\u9009\u62e9\u6a21\u578b": 158, "mobilenetv2": [158, 187, 194], "\u91cf\u5316\u548c": 158, "\u6027\u80fd\u4f18\u5316": 158, "\u540e\u7eed": 158, "\u5f3a\u5316\u5b66\u4e60": [159, 160], "ppo": 159, "hyperparamet": [159, 160], "asynchron": [161, 247], "cartpol": 161, "solver": 161, "reinforc": 163, "rref": 163, "high": 164, "dot": 164, "sdpa": 164, "explicit": 164, "hardwar": 164, "causal": 164, "self": 164, "nestedtensor": 164, "attn_bia": 164, "\u5e8f\u5217\u5230\u5e8f\u5217\u7f51\u7edc\u548c\u6ce8\u610f\u529b\u673a\u5236\u8fdb\u884c\u7ffb\u8bd1": 165, "spatial": 166, "depict": 166, "stn": 166, "\u8fdb\u884c\u8bed\u97f3\u8bc6\u522b": 167, "event": 168, "analyz": 168, "amd": 168, "\u53ef\u89c6\u5316\u6a21\u578b": 169, "\u6570\u636e\u548c\u8bad\u7ec3": 169, "projector": 169, "assess": 169, "tacotron2": 170, "\u6587\u672c\u8f6c\u8bed\u97f3": 170, "tiatoolbox": 171, "\u8fdb\u884c\u5168\u5207\u7247\u56fe\u50cf\u5206\u7c7b": 171, "clean": 171, "befor": [171, 229], "patch": 171, "patchpredictor": 171, "whole": 171, "slide": 171, "extract": 171, "patholog": 171, "here": 171, "demonstr": 172, "torchdynamo": 172, "break": [173, 174], "constraint": [173, 174, 179], "decomposit": [173, 174], "exportdb": [173, 174], "strict": 174, "program": 174, "embeddingbag": 175, "embeddingbagcollect": 175, "queri": 175, "vanilla": 175, "offset": 175, "repres": 175, "minibatch": 175, "keyedjaggedtensor": 175, "kjt": 175, "resourc": [175, 213, 234, 256, 257], "grok": [176, 177], "intel": [176, 177, 207, 220, 221, 226, 247, 253], "avoid": [176, 247], "logic": 176, "core": [176, 187], "alwai": 176, "faster": 176, "remot": 176, "pin": 176, "worker": 176, "default": [176, 230, 232], "torchserv": [176, 177, 257], "set_num_thread": 176, "number": [176, 262, 263, 271, 272], "physic": 176, "launcher": [176, 177], "down": [177, 263, 272], "microarchitectur": 177, "tma": 177, "back": 177, "end": 177, "vtune": [177, 226], "instrument": [177, 226], "technolog": [177, 226], "itt": [177, 226], "leverag": [177, 207], "alloc": [177, 219, 247], "tcmalloc": 177, "jemalloc": 177, "ptmalloc": 177, "boost": 177, "\u5bf9\u8c61\u68c0\u6d4b\u5fae\u8c03\u6559\u7a0b": 178, "pennfudan": 178, "modifi": [178, 230], "add": [178, 224, 225], "backbon": 178, "detect": 178, "prototyp": [179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 192, 196, 197, 198, 201, 204], "backendconfig": 179, "deriv": [179, 200], "pattern": [179, 200], "each": 179, "dtypeconfig": 179, "conv": 179, "qconfigmap": [179, 182], "satisfi": 179, "faulti": 179, "workload": [180, 207, 217, 226, 247], "eval": [182, 197], "specifi": [182, 185], "calibr": [182, 197], "9": [182, 264, 273], "float": [182, 195], "guid": [183, 247], "skip": [183, 202, 247], "traceabl": 183, "torchao": 184, "glue": 185, "qconfig_dict": 185, "one": [185, 263, 272], "wrapper": [186, 206], "ml": 187, "maco": 187, "metal": 188, "sourc": [188, 208], "adagrad": 189, "maskedtensor": [189, 190, 191, 192], "simpler": 189, "origin": 189, "maskedarrai": 190, "reduct": [190, 192], "slice": 191, "distinguish": 191, "nan": [191, 230], "anoth": 191, "x": 191, "yield": 191, "nansum": 191, "nanmean": 191, "safe": 191, "miss": 191, "coo": 192, "csr": 192, "unari": 192, "binari": 192, "nest": 193, "nnapi": 194, "numer": 195, "suit": 195, "correspond": 195, "locat": 195, "its": 195, "equival": 195, "same": 195, "recip": [196, 218, 223, 224, 225, 227, 228, 235, 252], "lower": [197, 199], "qat": 198, "x86": 199, "common": [200, 209, 252], "param": 200, "ir": 200, "pt2e": 200, "match": [200, 247], "directli": [200, 247], "subgraphmatcherwithnamenodemap": 200, "detail": 202, "freez": 203, "mobil": [204, 222, 223, 224, 225, 227, 252], "so": 205, "vulkan": 206, "workflow": [206, 228], "desktop": 206, "sdk": 206, "java": [206, 208], "upload": [206, 257], "matrix": 207, "amx": 207, "guidelin": 207, "can": [207, 263, 272], "confirm": 207, "being": 207, "prebuilt": [208, 257], "gradl": 208, "manifest": [208, 230], "bundl": 209, "uncommon": 209, "inflat": 209, "arg": [209, 261, 270], "lr": 211, "happen": 211, "direct": [212, 262, 271], "tensorpip": 212, "flask": 213, "both": 213, "quickli": 213, "bring": 213, "servic": 213, "pre": [213, 218, 224, 225, 227, 228, 252], "dcp": 214, "hsdp": 215, "requisit": [218, 224, 225, 227, 228, 252], "two": 218, "fuse_modul": [218, 223], "tool": 218, "aw": 219, "graviton": 219, "processor": 219, "bfloat16": [219, 220], "math": [219, 262, 271], "openbla": 219, "smaller": 219, "dimens": 219, "overhead": 219, "linux": 219, "transpar": 219, "huge": 219, "page": [219, 260, 269], "thp": 219, "float32": 220, "imper": 220, "float16": 220, "zoo": 220, "eas": 221, "compressor": 221, "driven": 221, "mobile_optim": 223, "mobilenet": [224, 225, 228], "v2": [224, 225, 228], "showcas": 226, "begin": 229, "final": 229, "gradscal": 230, "e": 230, "g": 230, "clip": 230, "amp": [230, 247], "minor": 230, "inf": 230, "type": [230, 252], "mismatch": 230, "mai": 230, "cudnn_status_bad_param": 230, "\u5177\u4f53\u6b65\u9aa4": [231, 233, 238, 240, 241, 242, 243, 248, 249, 250], "\u5b9a\u4e49\u8981\u57fa\u51c6\u6d4b\u8bd5\u7684\u51fd\u6570": 231, "timeit": 231, "timer": [231, 246], "\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5": 231, "autorang": 231, "\u6bd4\u8f83\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c": 231, "\u4fdd\u5b58": 231, "\u52a0\u8f7d\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c": 231, "fuzz": 231, "\u751f\u6210\u8f93\u5165": 231, "callgrind": [231, 246], "\u6536\u96c6\u6307\u4ee4\u8ba1\u6570": 231, "\u5b66\u4e60\u66f4\u591a": [231, 233, 236, 248, 249], "\u521b\u5efa\u795e\u7ecf\u7f51\u7edc": 233, "\u73af\u5883\u8bbe\u7f6e": [233, 238, 240, 241, 242, 243, 248, 249, 250], "\u5bfc\u5165\u52a0\u8f7d\u6570\u636e\u6240\u9700\u7684\u5fc5\u8981\u5e93": [233, 236, 240, 241, 242, 243, 248, 250], "\u5b9a\u4e49\u548c\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc": [233, 241, 242, 243], "\u6307\u5b9a\u6570\u636e\u5982\u4f55\u901a\u8fc7\u4f60\u7684\u6a21\u578b": 233, "\u53ef\u9009": [233, 236], "\u901a\u8fc7\u4f60\u7684\u6a21\u578b\u4f20\u9012\u6570\u636e\u8fdb\u884c\u6d4b\u8bd5": 233, "look": 234, "latenc": 234, "\u52a0\u8f7d\u6570\u636e": 236, "\u4f7f\u7528\u6b65\u9aa4": 236, "\u8bbf\u95ee\u6570\u636e\u96c6\u4e2d\u7684\u6570\u636e": 236, "\u904d\u5386\u6570\u636e": 236, "\u53ef\u89c6\u5316\u6570\u636e": 236, "tip": 237, "mmap": 237, "true": [237, 247], "meta": [237, 262, 271], "load_state_dict": [237, 244], "assign": 237, "\u5bfc\u5165\u4f9d\u8d56\u7684\u5e93": 238, "\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684": 238, "resnet": 238, "\u4f7f\u7528profiler\u5206\u6790\u6267\u884c\u65f6\u95f4": 238, "\u5206\u6790\u5185\u5b58\u6d88\u8017": 238, "\u4f7f\u7528\u8ddf\u8e2a\u529f\u80fd": 238, "\u68c0\u67e5\u5806\u6808\u8ddf\u8e2a": 238, "\u4f7f\u7528\u5206\u6790\u5668\u5206\u6790\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u4f5c\u4e1a": 238, "\u4e86\u89e3\u66f4\u591a": 238, "reason": 239, "\u4e2d\u8de8\u8bbe\u5907\u4fdd\u5b58\u548c\u52a0\u8f7d\u6a21\u578b": 240, "\u5b9a\u4e49\u5e76\u521d\u59cb\u5316\u795e\u7ecf\u7f51\u7edc": [240, 248, 249], "\u5728gpu\u4e0a\u4fdd\u5b58": 240, "cpu\u4e0a\u52a0\u8f7d": 240, "gpu\u4e0a\u52a0\u8f7d": 240, "\u5728cpu\u4e0a\u4fdd\u5b58": 240, "\u5728gpu\u4e0a\u52a0\u8f7d": 240, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u521d\u59cb\u5316\u4f18\u5316\u5668": [241, 242, 243, 249], "\u4fdd\u5b58\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u52a0\u8f7d\u901a\u7528\u68c0\u67e5\u70b9": 241, "\u4fdd\u5b58\u548c\u52a0\u8f7d\u6574\u4e2a\u6a21\u578b": 242, "\u7ee7\u7eed\u5b66\u4e60": [242, 250], "\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\u4fdd\u5b58\u548c\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 243, "\u4fdd\u5b58\u591a\u4e2a\u6a21\u578b": 243, "\u52a0\u8f7d\u591a\u4e2a\u6a21\u578b": 243, "swap_tensor": 244, "scalar": 245, "timer\u5feb\u901f\u5165\u95e8": 246, "\u5b9a\u4e49timer": 246, "wall\u65f6\u95f4": 246, "blocked_autorang": 246, "\u4ee3\u7801\u7247\u6bb5": 246, "\u6307\u4ee4\u8ba1\u6570": 246, "collect_callgrind": 246, "\u6df1\u5165\u63a2\u8ba8": 246, "\u8fdb\u884ca": 246, "b\u6d4b\u8bd5": 246, "\u811a\u6ce8": 246, "disabl": 247, "calcul": 247, "valid": 247, "bia": 247, "follow": 247, "none": 247, "instead": 247, "zero_grad": 247, "pointwis": 247, "channels_last": 247, "uniform": 247, "numa": 247, "openmp": 247, "libiomp": 247, "switch": 247, "onednn": 247, "cudnn": 247, "auto": 247, "tuner": 247, "unnecessari": 247, "synchron": 247, "prealloc": 247, "reduc": 247, "accumul": 247, "find_unused_paramet": 247, "balanc": 247, "\u4f7f\u7528\u4e0d\u540c\u6a21\u578b\u7684\u53c2\u6570\u5bf9\u6a21\u578b\u8fdb\u884c\u70ed\u542f\u52a8": 248, "b": 248, "\u52a0\u8f7d\u5230\u6a21\u578b": 248, "\u4e2d": 249, "\u662f\u4ec0\u4e48": 249, "\u4e2d\u7684": 249, "\u8bbf\u95ee\u6a21\u578b\u548c\u4f18\u5316\u5668\u7684": 249, "\u52a0\u8f7d\u548c\u6807\u51c6\u5316\u6570\u636e\u96c6": 250, "\u5b9a\u4e49\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668": 250, "\u5728\u8bad\u7ec3\u7f51\u7edc\u65f6\u6e05\u96f6\u68af\u5ea6": 250, "convers": 252, "runtimeerror": 252, "lookup": 252, "cannot": 252, "rang": 252, "must": 252, "found": 252, "fp32": 253, "bf16": 253, "triton": 254, "limit": 254, "torch_log": 255, "engin": 256, "stabl": 257, "diffus": 257, "vertex": 257, "ai": 257, "endpoint": 257, "handler": 257, "artifact": 257, "gc": 257, "contain": 257, "onto": 257, "changelog": [259, 268], "wide": [260, 269], "html": [260, 269], "theme": [260, 266, 269, 275], "toc": [260, 269], "test_py_modul": [261, 270], "paragraph": [262, 265, 271, 274], "markup": [262, 271], "inlin": [262, 271], "liter": [262, 271], "quot": [262, 271], "doctest": [262, 271], "emphas": [262, 271], "sidebar": [262, 271], "ch": [262, 271], "ien": [262, 271], "creativ": [262, 271], "footnot": [262, 271], "citat": [262, 271], "glossari": [262, 271], "center": [262, 271], "figur": [262, 271], "admonit": [262, 271], "And": [262, 271], "rubric": [262, 271], "titl": [262, 271], "replac": [262, 271], "compound": [262, 271], "link": [262, 271], "enumer": [263, 272], "bullet": [263, 272], "second": [263, 272], "But": [263, 272], "deeper": [263, 272], "rabbit": [263, 272], "hole": [263, 272], "hlist": [263, 272], "grid": [263, 272], "giant": [263, 272], "have": [263, 272], "caption": [263, 266, 272, 275], "like": [263, 272], "sticki": [264, 273], "nav": [264, 273], "menu": [264, 266, 273, 275], "11": [264, 273], "12": [264, 273], "13": [264, 273], "14": [264, 273], "15": [264, 273], "16": [264, 273], "17": [264, 273], "18": [264, 273], "19": [264, 273], "20": [264, 273], "submenu": [264, 273], "subsubmenu": [264, 273], "element": [265, 274], "document": [265, 266, 274, 275], "subsect": [265, 274], "subsubsect": [265, 274], "demo": [266, 275], "incred": [266, 275], "git": [267, 276]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file From 079f0f243ba2b80db84730502550763ab3d1cb97 Mon Sep 17 00:00:00 2001 From: hippocookie Date: Wed, 3 Jul 2024 17:25:01 +0800 Subject: [PATCH 3/4] Translate receipes --- recipes_source/profile_with_itt.rst | 90 ++--- recipes_source/recipes/Captum_Recipe.py | 262 +++++++-------- .../recipes/dynamic_quantization.py | 308 +++++++----------- .../recipes/module_load_state_dict_tips.py | 166 +++++----- .../recipes/reasoning_about_shapes.py | 38 +-- recipes_source/recipes/swap_tensors.py | 210 ++++++------ .../recipes/tensorboard_with_pytorch.py | 107 +++--- recipes_source/torch_compile_backend_ipex.rst | 43 ++- recipes_source/torch_logs.py | 70 ++-- recipes_source/torchscript_inference.rst | 47 ++- 10 files changed, 599 insertions(+), 742 deletions(-) diff --git a/recipes_source/profile_with_itt.rst b/recipes_source/profile_with_itt.rst index 7ddb1ab..0d8e794 100644 --- a/recipes_source/profile_with_itt.rst +++ b/recipes_source/profile_with_itt.rst @@ -1,112 +1,112 @@ -Profiling PyTorch workloads with The Instrumentation and Tracing Technology (ITT) API +使用 Instrumentation and Tracing Technology (ITT) API 分析 PyTorch 工作负载 ===================================================================================== -In this recipe, you will learn: +在本教程中,您将学习: -* What is Intel® VTune™ Profiler -* What is Instrumentation and Tracing Technology (ITT) API -* How to visualize PyTorch model hierarchy in Intel® VTune™ Profiler -* A short sample code showcasing how to use PyTorch ITT APIs +* 什么是 Intel® VTune™ Profiler +* 什么是 Instrumentation and Tracing Technology (ITT) API +* 如何在 Intel® VTune™ Profiler 中可视化 PyTorch 模型层次结构 +* 一个简短的示例代码,展示如何使用 PyTorch ITT API -Requirements +要求 ------------ -* PyTorch 1.13 or later +* PyTorch 1.13 或更高版本 * Intel® VTune™ Profiler -The instructions for installing PyTorch are available at `pytorch.org `__. +安装 PyTorch 的说明可在 `pytorch.org `__ 上找到。 -What is Intel® VTune™ Profiler +什么是 Intel® VTune™ Profiler ------------------------------ -Intel® VTune™ Profiler is a performance analysis tool for serial and multithreaded applications. For those who are familiar with Intel Architecture, Intel® VTune™ Profiler provides a rich set of metrics to help users understand how the application executed on Intel platforms, and thus have an idea where the performance bottleneck is. +Intel® VTune™ Profiler 是一款用于串行和多线程应用程序的性能分析工具。对于熟悉 Intel 架构的人来说,Intel® VTune™ Profiler 提供了丰富的指标集,帮助用户了解应用程序在 Intel 平台上的执行情况,从而了解性能瓶颈所在。 -More detailed information, including a Getting Started guide, are available `on the Intel website `__. +更多详细信息,包括入门指南,可在 `Intel 网站 `__ 上找到。 -What is Instrumentation and Tracing Technology (ITT) API +什么是 Instrumentation and Tracing Technology (ITT) API -------------------------------------------------------- -`The Instrumentation and Tracing Technology API (ITT API) `_ provided by the Intel® VTune™ Profiler enables target application to generate and control the collection of trace data during its execution. +`Instrumentation and Tracing Technology API (ITT API) `_ 由 Intel® VTune™ Profiler 提供,使目标应用程序能够在执行期间生成和控制跟踪数据的收集。 -The advantage of ITT feature is to label time span of individual PyTorch operators, as well as customized regions, on Intel® VTune™ Profiler GUI. When users find anything abnormal, it will be very helpful to locate which operator behaved unexpectedly. +ITT 功能的优势在于能够在 Intel® VTune™ Profiler GUI 上标记单个 PyTorch 算子和自定义区域的时间跨度。当用户发现任何异常时,这将非常有助于定位哪个算子表现异常。 .. note:: - The ITT API had been integrated into PyTorch since 1.13. Users don't need to invoke the original ITT C/C++ APIs, but only need to invoke the Python APIs in PyTorch. More detailed information can be found at `PyTorch Docs `__. + ITT API 已在 PyTorch 1.13 中集成。用户无需调用原始的 ITT C/C++ API,只需调用 PyTorch 中的 Python API 即可。更多详细信息可在 `PyTorch 文档 `__ 中找到。 -How to visualize PyTorch model hierarchy in Intel® VTune™ Profiler +如何在 Intel® VTune™ Profiler 中可视化 PyTorch 模型层次结构 ------------------------------------------------------------------ -Two types of usage are provided in PyTorch: +PyTorch 提供了两种使用方式: -1. Implicit invocation: By default, all operators that are registered by following the PyTorch operator registration mechanism will be labeled by ITT feature automatically when its feature is enabled. +1. 隐式调用: 默认情况下,所有通过 PyTorch 算子注册机制注册的算子在启用 ITT 功能时都会自动标记。 -2. Explicit invocation: If customized labeling is needed, users can use APIs mentioned at `PyTorch Docs `__ explicitly to label a desired range. +2. 显式调用: 如果需要自定义标记,用户可以在 `PyTorch 文档 `__ 中使用显式 API 对所需范围进行标记。 -To enable explicit invocation, code which are expected to be labeled should be invoked under a `torch.autograd.profiler.emit_itt()` scope. For example: +要启用显式调用,需要在 `torch.autograd.profiler.emit_itt()` 作用域下调用预期标记的代码。例如: .. code:: python3 with torch.autograd.profiler.emit_itt(): -Launch Intel® VTune™ Profiler +启动 Intel® VTune™ Profiler ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To verify the functionality, you need to start an Intel® VTune™ Profiler instance. Please check the `Intel® VTune™ Profiler User Guide `__ for steps to launch Intel® VTune™ Profiler. +要验证功能,您需要启动一个 Intel® VTune™ Profiler 实例。启动 Intel® VTune™ Profiler 的步骤请查看 `Intel® VTune™ Profiler 用户指南 `__。 -Once you get the Intel® VTune™ Profiler GUI launched, you should see a user interface as below: +一旦启动了 Intel® VTune™ Profiler GUI,您应该会看到如下用户界面: .. figure:: /_static/img/itt_tutorial/vtune_start.png :width: 100% :align: center -Three sample results are available on the left side navigation bar under `sample (matrix)` project. If you do not want profiling results appear in this default sample project, you can create a new project via the button `New Project...` under the blue `Configure Analysis...` button. To start a new profiling, click the blue `Configure Analysis...` button to initiate configuration of the profiling. +左侧导航栏下的 `sample (matrix)` 项目中有三个示例结果。如果您不希望分析结果出现在此默认示例项目中,可以通过蓝色 `Configure Analysis...` 按钮下的 `New Project...` 按钮创建一个新项目。要启动新的分析,请单击蓝色的 `Configure Analysis...` 按钮以开始配置分析。 -Configure Profiling +配置分析 ~~~~~~~~~~~~~~~~~~~ -Once you click the `Configure Analysis...` button, you should see the screen below: +单击 `Configure Analysis...` 按钮后,您应该会看到如下界面: .. figure:: /_static/img/itt_tutorial/vtune_config.png :width: 100% :align: center -The right side of the windows is split into 3 parts: `WHERE` (top left), `WHAT` (bottom left), and `HOW` (right). With `WHERE`, you can assign a machine where you want to run the profiling on. With `WHAT`, you can set the path of the application that you want to profile. To profile a PyTorch script, it is recommended to wrap all manual steps, including activating a Python environment and setting required environment variables, into a bash script, then profile this bash script. In the screenshot above, we wrapped all steps into the `launch.sh` bash script and profile `bash` with the parameter to be ``. On the right side `HOW`, you can choose whatever type that you would like to profile. Intel® VTune™ Profiler provides a bunch of profiling types that you can choose from. Details can be found at `Intel® VTune™ Profiler User Guide `__. +窗口的右侧分为三部分: `WHERE`(左上角)、`WHAT`(左下角)和 `HOW`(右侧)。在 `WHERE` 中,您可以指定要在哪台机器上运行分析。在 `WHAT` 中,您可以设置要分析的应用程序的路径。要分析 PyTorch 脚本,建议将所有手动步骤(包括激活 Python 环境和设置所需环境变量)封装到一个 bash 脚本中,然后对该 bash 脚本进行分析。在上面的截图中,我们将所有步骤封装到 `launch.sh` bash 脚本中,并将 `bash` 的参数设置为 `` 的路径。在右侧的 `HOW` 中,您可以选择要分析的类型。Intel® VTune™ Profiler 提供了多种可选的分析类型。详情请查看 `Intel® VTune™ Profiler 用户指南 `__。 -Read Profiling Result +读取分析结果 ~~~~~~~~~~~~~~~~~~~~~ -With a successful profiling with ITT, you can open `Platform` tab of the profiling result to see labels in the Intel® VTune™ Profiler timeline. +成功进行了带有 ITT 的分析后,您可以打开分析结果的 `Platform` 选项卡,在 Intel® VTune™ Profiler 时间线上查看标记。 .. figure:: /_static/img/itt_tutorial/vtune_timeline.png :width: 100% :align: center -The timeline shows the main thread as a `python` thread on the top, and individual OpenMP threads below. Labeled PyTorch operators and customized regions are shown in the main thread row. All operators starting with `aten::` are operators labeled implicitly by the ITT feature in PyTorch. Labels `iteration_N` are explicitly labeled with specific APIs `torch.profiler.itt.range_push()`, `torch.profiler.itt.range_pop()` or `torch.profiler.itt.range()` scope. Please check the sample code in the next section for details. +时间线显示了顶部的主线程作为 `python` 线程,下面是各个 OpenMP 线程。标记的 PyTorch 算子和自定义区域显示在主线程行中。所有以 `aten::` 开头的算子都是由 PyTorch 中的 ITT 功能隐式标记的。标签 `iteration_N` 是使用特定的 API `torch.profiler.itt.range_push()`、`torch.profiler.itt.range_pop()` 或 `torch.profiler.itt.range()` 作用域显式标记的。请查看下一节中的示例代码以了解详情。 .. note:: - Red boxes marked with `convolution` and `reorder` are labeled from Intel® oneAPI Deep Neural Network Library (oneDNN). + 时间线中标记为 `convolution` 和 `reorder` 的红色框是由 Intel® oneAPI Deep Neural Network Library (oneDNN) 标记的。 -As illustrated on the right side navigation bar, brown portions in the timeline rows show CPU usage of individual threads. The percerntage of height of a thread row that the brown portion occupies at a timestamp aligns with that of the CPU usage in that thread at that timestamp. Thus, it is intuitive from this timeline to understand the followings: +如右侧导航栏所示,时间线行中的棕色部分显示了各个线程的 CPU 使用情况。在某个时间点,棕色部分在线程行中所占的高度百分比与该线程在该时间点的 CPU 使用率相对应。因此,从这个时间线可以直观地了解以下几点: -1. How well CPU cores are utilized on each thread. -2. How balance CPU cores are utilized on all threads. Do all threads have good CPU usage? -3. How well OpenMP threads are synchronized. Are there jitters when starting OpenMP threads or OpenMP threads finish. +1. 每个线程的 CPU 核心利用率如何。 +2. 所有线程的 CPU 核心利用率是否平衡。所有线程的 CPU 使用情况是否良好? +3. OpenMP 线程是否同步良好。启动 OpenMP 线程或 OpenMP 线程完成时是否存在抖动? -Of course there are much more enriched sets of profiling features that Intel® VTune™ Profiler provides to help you understand a performance issue. When you understand the root cause of a performance issue, you can get it fixed. More detailed usage instructions are available at `Intel® VTune™ Profiler User Guide `__. +当然,Intel® VTune™ Profiler 还提供了更多丰富的分析功能,帮助您了解性能问题的根源。一旦您了解了性能问题的根源,就可以加以修复。更多详细的使用说明可在 `Intel® VTune™ Profiler 用户指南 `__ 中找到。 -A short sample code showcasing how to use PyTorch ITT APIs +一个简短的示例代码,展示如何使用 PyTorch ITT API ---------------------------------------------------------- -The sample code below is the script that was used for profiling in the screenshots above. +下面的示例代码就是在上面的截图中用于分析的脚本。 -The topology is formed by two operators, `Conv2d` and `Linear`. Three iterations of inference were performed. Each iteration was labeled by PyTorch ITT APIs as text string `iteration_N`. Either pair of `torch.profile.itt.range_push` and `torch.profile.itt.range_pop` or `torch.profile.itt.range` scope does the customized labeling feature. +该拓扑由两个算子 `Conv2d` 和 `Linear` 组成。进行了三次推理迭代,每次迭代都使用 PyTorch ITT API 标记为文本字符串 `iteration_N`。无论是使用 `torch.profile.itt.range_push` 和 `torch.profile.itt.range_pop` 的配对,还是使用 `torch.profile.itt.range` 作用域,都可以实现自定义标记功能。 .. code:: python3 @@ -132,12 +132,12 @@ The topology is formed by two operators, `Conv2d` and `Linear`. Three iterations x = torch.rand(10, 3, 244, 244) with torch.autograd.profiler.emit_itt(): for i in range(3) - # Labeling a region with pair of range_push and range_pop + # 使用 range_push 和 range_pop 配对标记区域 #torch.profiler.itt.range_push(f'iteration_{i}') #m(x) #torch.profiler.itt.range_pop() - # Labeling a region with range scope + # 使用 range 作用域标记区域 with torch.profiler.itt.range(f'iteration_{i}'): m(x) @@ -145,7 +145,7 @@ The topology is formed by two operators, `Conv2d` and `Linear`. Three iterations main() -The `launch.sh` bash script, mentioned in the Intel® VTune™ Profiler GUI screenshot, to wrap all manual steps is shown below. +下面是在 Intel® VTune™ Profiler GUI 截图中提到的 `launch.sh` bash 脚本,用于封装所有手动步骤。 .. code:: bash @@ -153,8 +153,8 @@ The `launch.sh` bash script, mentioned in the Intel® VTune™ Profiler GUI scre #!/bin/bash - # Retrieve the directory path where the path contains both the sample.py and launch.sh so that this bash script can be invoked from any directory + # 获取包含 sample.py 和 launch.sh 的目录路径,以便从任何目录调用此 bash 脚本 BASEFOLDER=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - + <激活 Python 环境> cd ${BASEFOLDER} python sample.py diff --git a/recipes_source/recipes/Captum_Recipe.py b/recipes_source/recipes/Captum_Recipe.py index 11fdc24..99b0814 100644 --- a/recipes_source/recipes/Captum_Recipe.py +++ b/recipes_source/recipes/Captum_Recipe.py @@ -1,190 +1,174 @@ """ -Model Interpretability using Captum +使用 Captum 进行模型可解释性 =================================== - """ - ###################################################################### -# Captum helps you understand how the data features impact your model -# predictions or neuron activations, shedding light on how your model -# operates. -# -# Using Captum, you can apply a wide range of state-of-the-art feature -# attribution algorithms such as \ ``Guided GradCam``\ and -# \ ``Integrated Gradients``\ in a unified way. -# -# In this recipe you will learn how to use Captum to: +# Captum 可以帮助您了解数据特征如何影响模型的预测或神经元激活,从而揭示模型的工作原理。 +# +# 使用 Captum,您可以统一地应用广泛的最先进的特征归因算法,如 ``Guided GradCam`` 和 ``Integrated Gradients``。 +# +# 在本教程中,您将学习如何使用 Captum: +# +# - 将图像分类器的预测归因于相应的图像特征。 +# - 可视化归因结果。 # -# - Attribute the predictions of an image classifier to their corresponding image features. -# - Visualize the attribution results. -# - ###################################################################### -# Before you begin +# 开始之前 # ---------------- -# - +# ###################################################################### -# Make sure Captum is installed in your active Python environment. Captum -# is available both on GitHub, as a ``pip`` package, or as a ``conda`` -# package. For detailed instructions, consult the installation guide at -# https://captum.ai/ -# - +# 确保在您的活跃 Python 环境中安装了 Captum。Captum 可以在 GitHub 上获取,也可以作为 ``pip`` 包或 ``conda`` 包获取。 +# 有关详细说明,请查阅安装指南 https://captum.ai/ +# ###################################################################### -# For a model, we use a built-in image classifier in PyTorch. Captum can -# reveal which parts of a sample image support certain predictions made by -# the model. -# +# 对于模型,我们使用 PyTorch 中的内置图像分类器。Captum 可以揭示样本图像的哪些部分支持了模型做出的某些预测。 +# +from io import BytesIO +import requests import torchvision -from torchvision import models, transforms from PIL import Image -import requests -from io import BytesIO +from torchvision import models, transforms -model = torchvision.models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1).eval() +model = torchvision.models.resnet18( + weights=models.ResNet18_Weights.IMAGENET1K_V1 +).eval() -response = requests.get("https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg") +response = requests.get( + "https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg" +) img = Image.open(BytesIO(response.content)) -center_crop = transforms.Compose([ - transforms.Resize(256), - transforms.CenterCrop(224), -]) - -normalize = transforms.Compose([ - transforms.ToTensor(), # converts the image to a tensor with values between 0 and 1 - transforms.Normalize( # normalize to follow 0-centered imagenet pixel RGB distribution - mean=[0.485, 0.456, 0.406], - std=[0.229, 0.224, 0.225] - ) -]) +center_crop = transforms.Compose( + [ + transforms.Resize(256), + transforms.CenterCrop(224), + ] +) + +normalize = transforms.Compose( + [ + transforms.ToTensor(), # 将图像转换为值在 0 到 1 之间的张量 + transforms.Normalize( # 归一化以遵循 0 均值的 ImageNet 像素 RGB 分布 + mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] + ), + ] +) input_img = normalize(center_crop(img)).unsqueeze(0) - ###################################################################### -# Computing Attribution +# 计算归因 # --------------------- -# - +# ###################################################################### -# Among the top-3 predictions of the models are classes 208 and 283 which -# correspond to dog and cat. -# -# Let us attribute each of these predictions to the corresponding part of -# the input, using Captum’s \ ``Occlusion``\ algorithm. -# +# 在模型的前 3 个预测中,类别 208 和 283 分别对应于狗和猫。 +# +# 让我们使用 Captum 的 ``Occlusion`` 算法将这些预测归因于输入的相应部分。 +# -from captum.attr import Occlusion +from captum.attr import Occlusion occlusion = Occlusion(model) -strides = (3, 9, 9) # smaller = more fine-grained attribution but slower -target=208, # Labrador index in ImageNet -sliding_window_shapes=(3,45, 45) # choose size enough to change object appearance -baselines = 0 # values to occlude the image with. 0 corresponds to gray - -attribution_dog = occlusion.attribute(input_img, - strides = strides, - target=target, - sliding_window_shapes=sliding_window_shapes, - baselines=baselines) - - -target=283, # Persian cat index in ImageNet -attribution_cat = occlusion.attribute(input_img, - strides = strides, - target=target, - sliding_window_shapes=sliding_window_shapes, - baselines=0) - +strides = (3, 9, 9) # 步长越小,归因越细粒度,但速度越慢 +target = (208,) # ImageNet 中的拉布拉多索引 +sliding_window_shapes = (3, 45, 45) # 选择足以改变对象外观的大小 +baselines = 0 # 用于遮挡图像的值。0 对应灰色 + +attribution_dog = occlusion.attribute( + input_img, + strides=strides, + target=target, + sliding_window_shapes=sliding_window_shapes, + baselines=baselines, +) + + +target = (283,) # ImageNet 中的波斯猫索引 +attribution_cat = occlusion.attribute( + input_img, + strides=strides, + target=target, + sliding_window_shapes=sliding_window_shapes, + baselines=0, +) ###################################################################### -# Besides ``Occlusion``, Captum features many algorithms such as -# \ ``Integrated Gradients``\ , \ ``Deconvolution``\ , -# \ ``GuidedBackprop``\ , \ ``Guided GradCam``\ , \ ``DeepLift``\ , and -# \ ``GradientShap``\ . All of these algorithms are subclasses of -# ``Attribution`` which expects your model as a callable ``forward_func`` -# upon initialization and has an ``attribute(...)`` method which returns -# the attribution result in a unified format. -# -# Let us visualize the computed attribution results in case of images. -# - +# 除了 ``Occlusion`` 之外,Captum 还提供了许多算法,如 ``Integrated Gradients``、``Deconvolution``、 +# ``GuidedBackprop``、``Guided GradCam``、``DeepLift`` 和 ``GradientShap``。所有这些算法都是 ``Attribution`` 的子类, +# 在初始化时需要将您的模型作为可调用的 ``forward_func``传入,并具有 ``attribute(...)`` 方法,该方法以统一的格式返回归因结果。 +# +# 让我们可视化计算出的图像归因结果。 +# ###################################################################### -# Visualizing the Results +# 可视化结果 # ----------------------- -# - +# ###################################################################### -# Captum’s \ ``visualization``\ utility provides out-of-the-box methods -# to visualize attribution results both for pictorial and for textual -# inputs. -# +# Captum 的 ``visualization`` 实用程序提供了开箱即用的方法,用于可视化图像和文本输入的归因结果。 +# import numpy as np from captum.attr import visualization as viz -# Convert the compute attribution tensor into an image-like numpy array -attribution_dog = np.transpose(attribution_dog.squeeze().cpu().detach().numpy(), (1,2,0)) +# 将计算出的归因张量转换为类似图像的 numpy 数组 +attribution_dog = np.transpose( + attribution_dog.squeeze().cpu().detach().numpy(), (1, 2, 0) +) vis_types = ["heat_map", "original_image"] -vis_signs = ["all", "all"] # "positive", "negative", or "all" to show both -# positive attribution indicates that the presence of the area increases the prediction score -# negative attribution indicates distractor areas whose absence increases the score - -_ = viz.visualize_image_attr_multiple(attribution_dog, - np.array(center_crop(img)), - vis_types, - vis_signs, - ["attribution for dog", "image"], - show_colorbar = True - ) - - -attribution_cat = np.transpose(attribution_cat.squeeze().cpu().detach().numpy(), (1,2,0)) - -_ = viz.visualize_image_attr_multiple(attribution_cat, - np.array(center_crop(img)), - ["heat_map", "original_image"], - ["all", "all"], # positive/negative attribution or all - ["attribution for cat", "image"], - show_colorbar = True - ) - +vis_signs = ["all", "all"] # "positive"、"negative" 或 "all" 以显示两者 +# 正归因表示该区域的存在会增加预测分数 +# 负归因表示该区域的缺失会增加预测分数 + +_ = viz.visualize_image_attr_multiple( + attribution_dog, + np.array(center_crop(img)), + vis_types, + vis_signs, + ["attribution for dog", "image"], + show_colorbar=True, +) + + +attribution_cat = np.transpose( + attribution_cat.squeeze().cpu().detach().numpy(), (1, 2, 0) +) + +_ = viz.visualize_image_attr_multiple( + attribution_cat, + np.array(center_crop(img)), + ["heat_map", "original_image"], + ["all", "all"], # 正/负归因或全部 + ["attribution for cat", "image"], + show_colorbar=True, +) ###################################################################### -# If your data is textual, ``visualization.visualize_text()`` offers a -# dedicated view to explore attribution on top of the input text. Find out -# more at http://captum.ai/tutorials/IMDB_TorchText_Interpret -# - +# 如果您的数据是文本,``visualization.visualize_text()`` 提供了一个专用视图,用于探索输入文本的归因。 +# 更多信息请访问 http://captum.ai/tutorials/IMDB_TorchText_Interpret +# ###################################################################### -# Final Notes +# 最后注意 # ----------- -# - +# ###################################################################### -# Captum can handle most model types in PyTorch across modalities -# including vision, text, and more. With Captum you can: \* Attribute a -# specific output to the model input as illustrated above. \* Attribute a -# specific output to a hidden-layer neuron (see Captum API reference). \* -# Attribute a hidden-layer neuron response to the model input (see Captum -# API reference). -# -# For complete API of the supported methods and a list of tutorials, -# consult our website http://captum.ai -# -# Another useful post by Gilbert Tanner: +# Captum 可以处理 PyTorch 中包括视觉、文本等各种模态的大多数模型类型。使用 Captum 您可以: +# * 将特定输出归因于模型输入,如上所示。 +# * 将特定输出归因于隐藏层神经元(参见 Captum API 参考)。 +# * 将隐藏层神经元响应归因于模型输入(参见 Captum API 参考)。 +# +# 有关支持方法的完整 API 和教程列表,请查阅我们的网站 http://captum.ai +# +# Gilbert Tanner 的另一篇有用文章: # https://gilberttanner.com/blog/interpreting-pytorch-models-with-captum -# +# diff --git a/recipes_source/recipes/dynamic_quantization.py b/recipes_source/recipes/dynamic_quantization.py index eb9605d..2777025 100644 --- a/recipes_source/recipes/dynamic_quantization.py +++ b/recipes_source/recipes/dynamic_quantization.py @@ -1,243 +1,179 @@ """ -Dynamic Quantization +动态量化 ==================== -In this recipe you will see how to take advantage of Dynamic -Quantization to accelerate inference on an LSTM-style recurrent neural -network. This reduces the size of the model weights and speeds up model -execution. +在这个示例中,您将看到如何利用动态量化来加速 LSTM 风格的循环神经网络的推理。这可以减小模型权重的大小,并加快模型执行速度。 -Introduction +介绍 ------------- -There are a number of trade-offs that can be made when designing neural -networks. During model development and training you can alter the -number of layers and number of parameters in a recurrent neural network -and trade-off accuracy against model size and/or model latency or -throughput. Such changes can take lot of time and compute resources -because you are iterating over the model training. Quantization gives -you a way to make a similar trade off between performance and model -accuracy with a known model after training is completed. +在设计神经网络时,可以做出多种权衡。在模型开发和训练期间,您可以改变循环神经网络中的层数和参数数量,在模型大小和/或模型延迟或吞吐量与精度之间进行权衡。由于您需要重复模型训练过程,因此这种改变需要大量的时间和计算资源。量化为您提供了一种在已知模型上在性能和模型精度之间进行权衡的方式,而无需重新训练模型。 -You can give it a try in a single session and you will certainly reduce -your model size significantly and may get a significant latency -reduction without losing a lot of accuracy. +您可以在单个会话中尝试一下,您肯定会显著减小模型大小,并可能在不会损失太多精度的情况下获得显著的延迟减少。 -What is dynamic quantization? +什么是动态量化? ----------------------------- -Quantizing a network means converting it to use a reduced precision -integer representation for the weights and/or activations. This saves on -model size and allows the use of higher throughput math operations on -your CPU or GPU. +量化网络意味着将其转换为使用较低精度的整数表示形式来表示权重和/或激活。这可以减小模型大小,并允许在 CPU 或 GPU 上使用更高吞吐量的数学运算。 -When converting from floating point to integer values you are -essentially multiplying the floating point value by some scale factor -and rounding the result to a whole number. The various quantization -approaches differ in the way they approach determining that scale -factor. +从浮点数转换为整数值时,您实际上是将浮点数乘以某个比例因子,然后将结果舍入为整数。不同的量化方法在确定该比例因子的方式上有所不同。 -The key idea with dynamic quantization as described here is that we are -going to determine the scale factor for activations dynamically based on -the data range observed at runtime. This ensures that the scale factor -is "tuned" so that as much signal as possible about each observed -dataset is preserved. +这里介绍的动态量化的关键思想是,我们将根据运行时观察到的数据范围动态确定激活的比例因子。这可确保比例因子被"调整"为尽可能保留每个观察到的数据集的信号。 -The model parameters on the other hand are known during model conversion -and they are converted ahead of time and stored in INT8 form. +另一方面,模型参数在模型转换期间是已知的,它们会提前转换并以 INT8 形式存储。 -Arithmetic in the quantized model is done using vectorized INT8 -instructions. Accumulation is typically done with INT16 or INT32 to -avoid overflow. This higher precision value is scaled back to INT8 if -the next layer is quantized or converted to FP32 for output. +量化模型中的算术运算使用矢量化的 INT8 指令完成。累加通常使用 INT16 或 INT32 来避免溢出。如果下一层是量化的,则将此较高精度值缩放回 INT8;如果是输出,则将其转换为 FP32。 -Dynamic quantization is relatively free of tuning parameters which makes -it well suited to be added into production pipelines as a standard part -of converting LSTM models to deployment. +动态量化相对来说没有太多需要调整的参数,因此非常适合作为将 LSTM 模型转换为部署的标准部分添加到生产管道中。 +.. note:: + 本示例中采用的方法的局限性 + 本示例提供了对 PyTorch 中动态量化功能的快速介绍,以及使用它的工作流程。我们的重点是解释用于转换模型的特定函数。为了简洁和清晰,我们做出了一些重大简化,包括: -.. note:: - Limitations on the approach taken here - - - This recipe provides a quick introduction to the dynamic quantization - features in PyTorch and the workflow for using it. Our focus is on - explaining the specific functions used to convert the model. We will - make a number of significant simplifications in the interest of brevity - and clarity - - -1. You will start with a minimal LSTM network -2. You are simply going to initialize the network with a random hidden - state -3. You are going to test the network with random inputs -4. You are not going to train the network in this tutorial -5. You will see that the quantized form of this network is smaller and - runs faster than the floating point network we started with -6. You will see that the output values are generally in the same - ballpark as the output of the FP32 network, but we are not - demonstrating here the expected accuracy loss on a real trained - network - -You will see how dynamic quantization is done and be able to see -suggestive reductions in memory use and latency times. Providing a -demonstration that the technique can preserve high levels of model -accuracy on a trained LSTM is left to a more advanced tutorial. If you -want to move right away to that more rigorous treatment please proceed -to the `advanced dynamic quantization -tutorial `__. - -Steps -------------- +1. 您将从一个最小的 LSTM 网络开始 +2. 您只需用随机隐藏状态初始化网络 +3. 您将使用随机输入来测试网络 +4. 您不会在本教程中训练网络 +5. 您将看到,与我们开始时的浮点网络相比,量化后的网络更小且运行速度更快 +6. 您将看到,量化网络产生的输出张量值与 FP32 网络输出的值在同一数量级,但我们并未在这里展示该技术在经过训练的 LSTM 上能够保留较高模型精度的情况 -This recipe has 5 steps. +您将了解如何进行动态量化,并能够看到内存使用和延迟时间的潜在减小。关于该技术在经过训练的 LSTM 上能够保留较高模型精度的演示,将留待更高级的教程。如果您想直接进入更严格的处理,请继续学习 `高级动态量化教程 `__。 -1. Set Up - Here you define a very simple LSTM, import modules, and establish - some random input tensors. +步骤 +------------- -2. Do the Quantization - Here you instantiate a floating point model and then create quantized - version of it. +本示例包含 5 个步骤。 -3. Look at Model Size - Here you show that the model size gets smaller. +1. 设置 - 在这里,您定义一个非常简单的 LSTM,导入模块,并建立一些随机输入张量。 -4. Look at Latency - Here you run the two models and compare model runtime (latency). +2. 执行量化 - 在这里,您实例化一个浮点模型,然后创建其量化版本。 -5. Look at Accuracy - Here you run the two models and compare outputs. +3. 查看模型大小 - 在这里,您显示模型大小变小了。 +4. 查看延迟 - 在这里,您运行两个模型并比较模型运行时间(延迟)。 -1: Set Up -~~~~~~~~~~~~~~~ -This is a straightforward bit of code to set up for the rest of the -recipe. +5. 查看精度 - 在这里,您运行两个模型并比较输出。 -The unique module we are importing here is torch.quantization which -includes PyTorch's quantized operators and conversion functions. We also -define a very simple LSTM model and set up some inputs. +1: 设置 +~~~~~~~~~~~~~~~ +这是一段直接的代码,用于为本示例的其余部分做准备。 +我们在这里导入的唯一模块是 torch.quantization,它包含了 PyTorch 的量化算子和转换函数。我们还定义了一个非常简单的 LSTM 模型,并设置了一些输入。 """ -# import the modules used here in this recipe -import torch -import torch.quantization -import torch.nn as nn +# 导入本示例中使用的模块 import copy import os import time -# define a very, very simple LSTM for demonstration purposes -# in this case, we are wrapping ``nn.LSTM``, one layer, no preprocessing or postprocessing -# inspired by -# `Sequence Models and Long Short-Term Memory Networks tutorial `__. +import torch +import torch.nn as nn +import torch.quantization + + +# 为演示目的定义一个非常简单的 LSTM +# 在这种情况下,我们只是包装了 ``nn.LSTM``、一层,没有预处理或后处理 +# 受到以下教程的启发: +# `序列模型和长短期记忆网络教程 `_, 作者 Robert Guthrie +# 和 `动态量化教程 `__。 class lstm_for_demonstration(nn.Module): - """Elementary Long Short Term Memory style model which simply wraps ``nn.LSTM`` - Not to be used for anything other than demonstration. - """ - def __init__(self,in_dim,out_dim,depth): - super(lstm_for_demonstration,self).__init__() - self.lstm = nn.LSTM(in_dim,out_dim,depth) + """基本的长短期记忆风格模型,只是包装了 ``nn.LSTM`` + 不应用于除演示之外的任何其他用途。 + """ + + def __init__(self, in_dim, out_dim, depth): + super(lstm_for_demonstration, self).__init__() + self.lstm = nn.LSTM(in_dim, out_dim, depth) - def forward(self,inputs,hidden): - out,hidden = self.lstm(inputs,hidden) - return out, hidden + def forward(self, inputs, hidden): + out, hidden = self.lstm(inputs, hidden) + return out, hidden -torch.manual_seed(29592) # set the seed for reproducibility +torch.manual_seed(29592) # 设置种子以获得可重复结果 -#shape parameters -model_dimension=8 -sequence_length=20 -batch_size=1 -lstm_depth=1 +# 形状参数 +model_dimension = 8 +sequence_length = 20 +batch_size = 1 +lstm_depth = 1 -# random data for input -inputs = torch.randn(sequence_length,batch_size,model_dimension) -# hidden is actually is a tuple of the initial hidden state and the initial cell state -hidden = (torch.randn(lstm_depth,batch_size,model_dimension), torch.randn(lstm_depth,batch_size,model_dimension)) +# 随机输入数据 +inputs = torch.randn(sequence_length, batch_size, model_dimension) +# hidden 实际上是初始隐藏状态和初始细胞状态的元组 +hidden = ( + torch.randn(lstm_depth, batch_size, model_dimension), + torch.randn(lstm_depth, batch_size, model_dimension), +) ###################################################################### -# 2: Do the Quantization +# 2: 执行量化 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# Now we get to the fun part. First we create an instance of the model -# called ``float\_lstm`` then we are going to quantize it. We're going to use -# the `torch.quantization.quantize_dynamic `__ function, which takes the model, then a list of the submodules -# which we want to -# have quantized if they appear, then the datatype we are targeting. This -# function returns a quantized version of the original model as a new -# module. +# 现在我们来执行有趣的部分。首先,我们创建一个名为 ``float_lstm`` 的模型实例,然后我们将对其进行量化。我们将使用 `torch.quantization.quantize_dynamic `__ 函数,它接受模型、我们希望量化的子模块列表(如果存在)以及目标数据类型。此函数返回原始模型的量化版本,作为一个新模块。 # -# That's all it takes. +# 就这么简单。 # - # here is our floating point instance -float_lstm = lstm_for_demonstration(model_dimension, model_dimension,lstm_depth) +# 这是我们的浮点实例 +float_lstm = lstm_for_demonstration(model_dimension, model_dimension, lstm_depth) -# this is the call that does the work +# 这是执行量化的调用 quantized_lstm = torch.quantization.quantize_dynamic( float_lstm, {nn.LSTM, nn.Linear}, dtype=torch.qint8 ) -# show the changes that were made -print('Here is the floating point version of this module:') +# 显示所做的更改 +print("这是该模块的浮点版本:") print(float_lstm) -print('') -print('and now the quantized version:') +print("") +print("现在是量化版本:") print(quantized_lstm) ###################################################################### -# 3. Look at Model Size +# 3. 查看模型大小 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# We've quantized the model. What does that get us? Well the first -# benefit is that we've replaced the FP32 model parameters with INT8 -# values (and some recorded scale factors). This means about 75% less data -# to store and move around. With the default values the reduction shown -# below will be less than 75% but if you increase the model size above -# (for example you can set model dimension to something like 80) this will -# converge towards 4x smaller as the stored model size dominated more and -# more by the parameter values. +# 我们已经量化了模型。这给我们带来了什么好处?好处之一是我们用 INT8 值(和一些记录的比例因子)替换了 FP32 模型参数。这意味着存储和移动数据的大小减小了约 75%。使用默认值时,下面显示的减小量将小于 75%,但如果您将模型大小增加到更大值(例如将 model_dimension 设置为 80),随着存储的模型大小越来越多地由参数值主导,减小量将趋近于 4 倍。 # + def print_size_of_model(model, label=""): torch.save(model.state_dict(), "temp.p") - size=os.path.getsize("temp.p") - print("model: ",label,' \t','Size (KB):', size/1e3) - os.remove('temp.p') + size = os.path.getsize("temp.p") + print("模型: ", label, " \t", "大小 (KB):", size / 1e3) + os.remove("temp.p") return size -# compare the sizes -f=print_size_of_model(float_lstm,"fp32") -q=print_size_of_model(quantized_lstm,"int8") -print("{0:.2f} times smaller".format(f/q)) + +# 比较大小 +f = print_size_of_model(float_lstm, "fp32") +q = print_size_of_model(quantized_lstm, "int8") +print("{0:.2f} 倍更小".format(f / q)) ###################################################################### -# 4. Look at Latency +# 4. 查看延迟 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# The second benefit is that the quantized model will typically run -# faster. This is due to a combinations of effects including at least: +# 第二个好处是量化模型通常会运行得更快。这是由于多种效果的组合,至少包括: # -# 1. Less time spent moving parameter data in -# 2. Faster INT8 operations +# 1. 减少了移动参数数据所花费的时间 +# 2. INT8 操作更快 # -# As you will see the quantized version of this super-simple network runs -# faster. This will generally be true of more complex networks but as they -# say "your mileage may vary" depending on a number of factors including -# the structure of the model and the hardware you are running on. +# 如您所见,这个超级简单的网络的量化版本运行速度更快。对于更复杂的网络通常也是如此,但正如他们所说,"您的里程可能会有所不同",这取决于许多因素,包括模型的结构和您运行的硬件。 # -# compare the performance -print("Floating point FP32") +# 比较性能 +print("浮点 FP32") ##################################################################### # .. code-block:: python # # %timeit float_lstm.forward(inputs, hidden) -print("Quantized INT8") +print("量化 INT8") ###################################################################### # .. code-block:: python @@ -246,49 +182,45 @@ def print_size_of_model(model, label=""): ###################################################################### -# 5: Look at Accuracy +# 5: 查看精度 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# We are not going to do a careful look at accuracy here because we are -# working with a randomly initialized network rather than a properly -# trained one. However, I think it is worth quickly showing that the -# quantized network does produce output tensors that are "in the same -# ballpark" as the original one. +# 我们不会在这里仔细查看精度,因为我们使用的是随机初始化的网络,而不是经过正确训练的网络。但是,我认为值得快速展示一下量化网络确实产生了与原始网络"同一数量级"的输出张量值。 # -# For a more detailed analysis please see the more advanced tutorials -# referenced at the end of this recipe. +# 有关更详细的分析,请参阅本示例结尾处引用的更高级教程。 # -# run the float model +# 运行浮点模型 out1, hidden1 = float_lstm(inputs, hidden) mag1 = torch.mean(abs(out1)).item() -print('mean absolute value of output tensor values in the FP32 model is {0:.5f} '.format(mag1)) +print("FP32 模型中输出张量值的绝对值均值为 {0:.5f} ".format(mag1)) -# run the quantized model +# 运行量化模型 out2, hidden2 = quantized_lstm(inputs, hidden) mag2 = torch.mean(abs(out2)).item() -print('mean absolute value of output tensor values in the INT8 model is {0:.5f}'.format(mag2)) - -# compare them -mag3 = torch.mean(abs(out1-out2)).item() -print('mean absolute value of the difference between the output tensors is {0:.5f} or {1:.2f} percent'.format(mag3,mag3/mag1*100)) +print("INT8 模型中输出张量值的绝对值均值为 {0:.5f}".format(mag2)) + +# 比较它们 +mag3 = torch.mean(abs(out1 - out2)).item() +print( + "输出张量之间差值的绝对值均值为 {0:.5f},或占 {1:.2f} 百分比".format( + mag3, mag3 / mag1 * 100 + ) +) ###################################################################### -# Learn More +# 了解更多 # ------------ -# We've explained what dynamic quantization is, what benefits it brings, -# and you have used the ``torch.quantization.quantize_dynamic()`` function -# to quickly quantize a simple LSTM model. +# 我们已经解释了什么是动态量化,它带来了什么好处,您已经使用 ``torch.quantization.quantize_dynamic()`` 函数快速量化了一个简单的 LSTM 模型。 # -# This was a fast and high level treatment of this material; for more -# detail please continue learning with `(beta) Dynamic Quantization on an LSTM Word Language Model Tutorial `_. +# 这是对该材料的快速和高级处理;要了解更多详细信息,请继续学习 `(beta) 动态量化 LSTM 词语言模型教程 `_。 # # -# Additional Resources +# 其他资源 # -------------------- # -# * `Quantization API Documentaion `_ -# * `(beta) Dynamic Quantization on BERT `_ -# * `(beta) Dynamic Quantization on an LSTM Word Language Model `_ -# * `Introduction to Quantization on PyTorch `_ +# * `量化 API 文档 `_ +# * `(beta) 动态量化 BERT `_ +# * `(beta) 动态量化 LSTM 词语言模型 `_ +# * `PyTorch 量化介绍 `_ # diff --git a/recipes_source/recipes/module_load_state_dict_tips.py b/recipes_source/recipes/module_load_state_dict_tips.py index 17c812b..1ed96c3 100644 --- a/recipes_source/recipes/module_load_state_dict_tips.py +++ b/recipes_source/recipes/module_load_state_dict_tips.py @@ -1,26 +1,25 @@ """ - -Tips for Loading an ``nn.Module`` from a Checkpoint +从检查点加载 ``nn.Module`` 的技巧 =================================================== -**Author:** `Mikayla Gawarecki `_ +**作者:** `Mikayla Gawarecki `_ -If you're loading a checkpoint and want to reduce compute and memory as much as possible, -this tutorial shares some recommended practices. In particular, we will discuss +如果你要加载一个检查点并希望尽可能减少计算和内存的使用,本教程将分享一些推荐的做法。特别是我们将讨论以下几点: -1. The ``mmap`` keyword argument on ``torch.load`` -2. The ``torch.device()`` context manager -3. The ``assign`` keyword argument on ``nn.Module.load_state_dict()`` +1. ``torch.load`` 中的 ``mmap`` 关键字参数 +2. ``torch.device()`` 上下文管理器 +3. ``nn.Module.load_state_dict()`` 中的 ``assign`` 关键字参数 .. note:: - This recipe requires PyTorch 2.1.0 or later. + 本教程需要 PyTorch 2.1.0 或更高版本。 """ +import time ############################################################################### -# Let us consider a simple ``nn.Module`` that contains a list of Linear layers: +# 让我们考虑一个简单的 ``nn.Module``,它包含一个线性层列表: import torch from torch import nn -import time + class SomeModule(torch.nn.Module): def __init__(self, size): @@ -32,141 +31,122 @@ def forward(self, x): m = SomeModule(1000) -torch.save(m.state_dict(), 'checkpoint.pth') +torch.save(m.state_dict(), "checkpoint.pth") ################################################################################# -# The following snippet demonstrates the use of the the ``mmap`` keyword argument -# to ``torch.load``, the ``torch.device()`` context manager and the ``assign`` -# keyword argument to ``nn.Module.load_state_dict()``. +# 以下代码片段演示了如何使用 ``torch.load`` 中的 ``mmap`` 关键字参数、``torch.device()`` 上下文管理器和 ``nn.Module.load_state_dict()`` 中的 ``assign`` 关键字参数。 -state_dict = torch.load('checkpoint.pth', mmap=True) -with torch.device('meta'): - meta_m = SomeModule(1000) +state_dict = torch.load("checkpoint.pth", mmap=True) +with torch.device("meta"): + meta_m = SomeModule(1000) meta_m.load_state_dict(state_dict, assign=True) ############################################################################# -# Compare the snippet below to the one above: +# 将下面的代码片段与上面的进行比较: -state_dict = torch.load('checkpoint.pth') +state_dict = torch.load("checkpoint.pth") m = SomeModule(1000) m.load_state_dict(state_dict) ############################################################################# -# The second example does not use any of the features listed above and will be -# less compute and memory efficient for loading a checkpoint. In the following -# sections, we will discuss each of the features in further detail. +# 第二个示例没有使用上面列出的任何特性,因此在加载检查点时计算和内存效率会较低。在下面的部分中,我们将详细讨论每个特性。 ##################################################################################### -# Using ``torch.load(mmap=True)`` +# 使用 ``torch.load(mmap=True)`` # ------------------------------- -# First, let us consider what happens when we load the checkpoint with ``torch.load``. -# When we save a checkpoint with ``torch.save``, tensor storages are tagged with the device they are -# saved on. With ``torch.load``, tensor storages will be loaded to the device -# they were tagged with (unless this behavior is overridden using the -# ``map_location`` flag). For ease of explanation, let us assume that the tensors -# were saved on CPU. This means that on the first line all tensor storages will be -# loaded into CPU RAM, which can be undesirable when: -# -# * CPU RAM is smaller than the size of the checkpoint. -# * Waiting for the entire checkpoint to be loaded into RAM before performing, for example, some per-tensor processing. +# 首先,让我们考虑使用 ``torch.load`` 加载检查点时会发生什么。 +# 当我们使用 ``torch.save`` 保存检查点时,张量存储会被标记为保存时所在的设备。 +# 使用 ``torch.load`` 时,张量存储将被加载到它们被标记的设备上(除非使用 ``map_location`` 标志覆盖此行为)。 +# 为了解释方便,我们假设张量是保存在 CPU 上的。这意味着在第一行中,所有张量存储将被加载到 CPU 内存中,在以下情况下这是不可取的: + +# * CPU 内存小于检查点的大小。 +# * 在执行一些每张量处理之前等待整个检查点被加载到内存中。 start_time = time.time() -state_dict = torch.load('checkpoint.pth') +state_dict = torch.load("checkpoint.pth") end_time = time.time() -print(f"loading time without mmap={end_time - start_time}") +print(f"不使用 mmap 的加载时间={end_time - start_time}") ################################################################################# -# The ``mmap`` keyword argument to ``torch.load`` attempts to solve the above two -# problems. As its name implies, the ``mmap`` keyword argument to ``torch.load`` -# makes use of an `mmap call `_ -# which maps a file on disk into virtual memory and lets the OS handle loading and -# unloading into physical memory automatically. When this flag is passed, tensor -# storages will be memory-mapped. +# ``torch.load`` 中的 ``mmap`` 关键字参数试图解决上述两个问题。 +# 顾名思义,``torch.load`` 中的 ``mmap`` 关键字参数使用了 `mmap 调用 `_, +# 它将磁盘上的文件映射到虚拟内存中,并让操作系统自动处理加载和卸载到物理内存。 +# 当传递此标志时,张量存储将被内存映射。 start_time = time.time() -state_dict = torch.load('checkpoint.pth', mmap=True) +state_dict = torch.load("checkpoint.pth", mmap=True) end_time = time.time() -print(f"loading time with mmap={end_time - start_time}") +print(f"使用 mmap 的加载时间={end_time - start_time}") + ###################################################################################### -# As mentioned above, one can use this argument to do per-tensor processing on a -# checkpoint without loading all tensor storages into CPU memory upfront. For example: +# 如上所述,可以使用此参数在不将所有张量存储加载到 CPU 内存中的情况下对检查点执行每张量处理。例如: def my_special_routine(t, device): - # this could be a much fancier operation + # 这可能是一个更复杂的操作 return t.to(dtype=torch.bfloat16, device=device) + def my_processing_function(key, device): t = state_dict[key] processed_t = my_special_routine(t, device) del t state_dict[key] = processed_t + for key in state_dict.keys(): - device = torch.device('cuda') + device = torch.device("cuda") my_processing_function(key, device) ################################################## -# Using ``torch.device('meta')`` +# 使用 ``torch.device('meta')`` # ------------------------------ -# Next, let's consider the creation of the module. +# 接下来,让我们考虑模块的创建。 m = SomeModule(1000) ####################################################################################################### -# This allocates memory for all parameters/buffers and initializes them per -# the default initialization schemes defined in ``SomeModule.__init__()``, which -# is wasteful when we want to load a checkpoint for the following reasons: -# -# * The result of the initialization kernels will be overwritten by ``load_state_dict()`` without ever being used, so -# initialization is wasteful. -# * We are allocating memory for these parameters/buffers in RAM while ``torch.load`` of the saved state dictionary also -# allocates memory in RAM for the parameters/buffers in the checkpoint. -# -# In order to solve these two problems, we can use the ``torch.device()`` -# context manager with ``device='meta'`` when we instantiate the ``nn.Module()``. -# -# The `torch.device() `_ -# context manager makes sure that factory calls will be performed as if they -# were passed the specified ``device`` as an argument. Tensors on ``torch.device('meta')`` do not -# carry data. However, they possess all other metadata a tensor carries such as ``.size()``, ``.stride()``, -# ``.requires_grad``, and others. -with torch.device('meta'): - new_m = SomeModule(1000) +# 这将为所有参数/缓冲区分配内存并根据 ``SomeModule.__init__()`` 中定义的默认初始化方案对其进行初始化, +# 当我们想要加载检查点时,这是浪费的,原因如下: + +# * 初始化内核的结果将被 ``load_state_dict()`` 覆盖而从未被使用,因此初始化是浪费的。 +# * 我们在 RAM 中为这些参数/缓冲区分配了内存,而 ``torch.load`` 保存的状态字典也在 RAM 中为检查点中的参数/缓冲区分配了内存。 + +# 为了解决这两个问题,我们可以在实例化 ``nn.Module()`` 时使用 ``device='meta'`` 的 ``torch.device()`` 上下文管理器。 + +# `torch.device() `_ +# 上下文管理器确保工厂调用将被视为传递了指定的 ``device`` 作为参数。 +# 在 ``torch.device('meta')`` 上的张量不携带数据。 +# 但是,它们具有张量所携带的其他元数据,如 ``.size()``, ``.stride()``, ``.requires_grad`` 等。 +with torch.device("meta"): + new_m = SomeModule(1000) ######################################################## -# Using ``load_state_dict(assign=True)`` +# 使用 ``load_state_dict(assign=True)`` # -------------------------------------- -# Next, we consider the loading of the state dictionary. +# 接下来,我们考虑加载状态字典。 m.load_state_dict(state_dict) ###################################################################################### -# ``nn.Module.load_state_dict()`` is usually implemented via an in-place -# ``param_in_model.copy_(param_in_state_dict)``. This means that the parameter/buffer -# with the corresponding key in the state dictionary is copied into the -# parameter/buffer in the ``nn.Module``. -# -# However, an in-place copy into a tensor on the ``meta`` device is a no-op. -# In order to avoid this, we can pass the ``assign=True`` keyword argument to -# ``load_state_dict()``. -# -# A caveat here is that since optimizers hold a reference to -# ``nn.Module.parameters()``, the optimizer must be initialized after the module -# is loaded from state dict if ``assign=True`` is passed. +# ``nn.Module.load_state_dict()`` 通常是通过 ``param_in_model.copy_(param_in_state_dict)`` 的就地复制实现的。 +# 这意味着状态字典中对应键的参数/缓冲区将被复制到 ``nn.Module`` 中的参数/缓冲区。 + +# 然而,对 ``meta`` 设备上的张量进行就地复制是无操作的。 +# 为了避免这种情况,我们可以在 ``load_state_dict()`` 中传递 ``assign=True`` 关键字参数。 + +# 这里的一个警告是,由于优化器持有对 ``nn.Module.parameters()`` 的引用, +# 如果传递了 ``assign=True``,则必须在从状态字典加载模块后初始化优化器。 -# As of PyTorch 2.3.0, one can use ``torch.__future__.set_swap_module_params_on_conversion`` to -# avoid this caveat. This `recipe `_ -# provides more details. +# 从 PyTorch 2.3.0 开始,可以使用 ``torch.__future__.set_swap_module_params_on_conversion`` 来避免这个警告。 +# 这个 `教程 `_ 提供了更多细节。 new_m.load_state_dict(state_dict, assign=True) -# Before 2.3.0, this MUST be done AFTER the load_state_dict with assign. -# In versions >= 2.3.0, one can consider setting ``torch.__future__.set_swap_module_params_on_conversion`` +# 在 2.3.0 之前,这一步必须在 load_state_dict 使用 assign 之后完成。 +# 在版本 >= 2.3.0 中,可以考虑设置 ``torch.__future__.set_swap_module_params_on_conversion`` opt = torch.optim.SGD(new_m.parameters(), lr=1e-3) ############################################################################### -# Conclusion +# 结论 # ------------- # -# To recap, in this tutorial we learned about ``torch.load(mmap=True)``, the -# ``torch.device()`` context manager with ``device=meta``, and -# ``nn.Module.load_state_dict(assign=True)`` as well as how these tools could -# be used to aid when loading a model from a checkpoint. +# 总结一下,在本教程中,我们学习了 ``torch.load(mmap=True)``、``device='meta'`` 的 ``torch.device()`` 上下文管理器和 ``nn.Module.load_state_dict(assign=True)`` +# 以及如何在从检查点加载模型时使用这些工具来提高效率。 diff --git a/recipes_source/recipes/reasoning_about_shapes.py b/recipes_source/recipes/reasoning_about_shapes.py index 12c85dc..5ee8a2a 100644 --- a/recipes_source/recipes/reasoning_about_shapes.py +++ b/recipes_source/recipes/reasoning_about_shapes.py @@ -1,23 +1,19 @@ """ -Reasoning about Shapes in PyTorch +在PyTorch中推理形状 ================================= -When writing models with PyTorch, it is commonly the case that the parameters -to a given layer depend on the shape of the output of the previous layer. For -example, the ``in_features`` of an ``nn.Linear`` layer must match the -``size(-1)`` of the input. For some layers, the shape computation involves -complex equations, for example convolution operations. +在使用PyTorch编写模型时,通常会遇到某一层的参数取决于前一层输出的形状的情况。例如, +``nn.Linear``层的``in_features``必须与输入的``size(-1)``相匹配。对于某些层,形状计算涉及复杂的等式,例如卷积运算。 -One way around this is to run the forward pass with random inputs, but this is -wasteful in terms of memory and compute. +一种解决方法是使用随机输入进行前向传播,但这在内存和计算方面是浪费的。 -Instead, we can make use of the ``meta`` device to determine the output shapes -of a layer without materializing any data. +相反,我们可以使用``meta``设备来确定层的输出形状,而无需实际化任何数据。 """ -import torch import timeit +import torch + t = torch.rand(2, 3, 10, 10, device="meta") conv = torch.nn.Conv2d(3, 5, 2, device="meta") start = timeit.default_timer() @@ -25,12 +21,11 @@ end = timeit.default_timer() print(out) -print(f"Time taken: {end-start}") +print(f"所需时间: {end-start}") ########################################################################## -# Observe that since data is not materialized, passing arbitrarily large -# inputs will not significantly alter the time taken for shape computation. +# 观察到,由于没有实际化数据,即使传入任意大的输入,用于形状计算的时间也不会显著改变。 t_large = torch.rand(2**10, 3, 2**16, 2**16, device="meta") start = timeit.default_timer() @@ -38,11 +33,11 @@ end = timeit.default_timer() print(out) -print(f"Time taken: {end-start}") +print(f"所需时间: {end-start}") ###################################################### -# Consider an arbitrary network such as the following: +# 考虑以下任意网络: import torch.nn as nn import torch.nn.functional as F @@ -61,7 +56,7 @@ def __init__(self): def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) - x = torch.flatten(x, 1) # flatten all dimensions except batch + x = torch.flatten(x, 1) # 展平除批次维度外的所有维度 x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) @@ -69,15 +64,14 @@ def forward(self, x): ############################################################################### -# We can view the intermediate shapes within an entire network by registering a -# forward hook to each layer that prints the shape of the output. +# 我们可以通过为每一层注册一个前向钩子来打印输出的形状,从而查看整个网络中间层的形状。 + def fw_hook(module, input, output): - print(f"Shape of output to {module} is {output.shape}.") + print(f"{module}的输出形状为{output.shape}。") -# Any tensor created within this torch.device context manager will be -# on the meta device. +# 在此torch.device上下文管理器中创建的任何张量都将在meta设备上。 with torch.device("meta"): net = Net() inp = torch.randn((1024, 3, 32, 32)) diff --git a/recipes_source/recipes/swap_tensors.py b/recipes_source/recipes/swap_tensors.py index d3b90c6..d0f3007 100644 --- a/recipes_source/recipes/swap_tensors.py +++ b/recipes_source/recipes/swap_tensors.py @@ -1,81 +1,77 @@ """ -Extension points in ``nn.Module`` for ``load_state_dict`` and tensor subclasses +在 ``nn.Module`` 中为 ``load_state_dict`` 和张量子类提供扩展点 =============================================================================== -**Author:** `Mikayla Gawarecki `_ +**作者:** `Mikayla Gawarecki `_ -This recipe introduces a new utility function ``torch.utils.swap_tensors`` -as well as two new extension points where it has been integrated in -``nn.Module``: +本教程介绍了一个新的实用函数 ``torch.utils.swap_tensors``, +以及在 ``nn.Module`` 中集成它的两个新扩展点: -* ``nn.Module.to()`` and related methods +* ``nn.Module.to()`` 和相关方法 * ``nn.Module.load_state_dict()`` .. note:: - This recipe requires PyTorch 2.3.0 or later. + 本教程需要 PyTorch 2.3.0 或更高版本。 """ ############################################################################### # ``torch.utils.swap_tensors`` # ---------------------------- -# ``torch.utils.swap_tensors`` (hereafter referred to as ``swap_tensors``) is a -# utility function that takes in two Python tensors and swaps them. +# ``torch.utils.swap_tensors``(以下简称为 ``swap_tensors``) 是一个 +# 实用函数,它接受两个 Python 张量并交换它们。 import torch import torch.nn as nn + t1 = torch.arange(2) t2 = torch.arange(3) -print(f"Before swapping, t1: {t1}, t2: {t2}") +print(f"交换前, t1: {t1}, t2: {t2}") torch.utils.swap_tensors(t1, t2) -print(f"After swapping, t1: {t1}, t2: {t2}") +print(f"交换后, t1: {t1}, t2: {t2}") ################################################################################ -# More specifically, ``swap_tensors`` swaps the Python ``__class__``, ``__dict__`` -# and ``__slots__`` of the two tensors, as well as their associated ``at::Tensor``. +# 更具体地说,``swap_tensors`` 交换了两个张量的 Python ``__class__``、``__dict__`` +# 和 ``__slots__``,以及它们相关的 ``at::Tensor``。 # # -# Application to ``nn.Module`` +# 应用于 ``nn.Module`` # ---------------------------- -# This utility is pertinent to ``nn.Module`` when a Python object outside -# of the module holds a reference to parameters of the module. If an ``nn.Module`` -# modifies any of its parameters out of place, the object holding references to -# the parameters will not see the change. A classic example of this is the -# optimizer, which holds a reference to the parameters of the ``nn.Module``. -# This leads to a silent correctness issue where the ``optimizer.step()`` will -# run without error but the weights of the ``nn.Module`` will not be updated. +# 当 ``nn.Module`` 之外的 Python 对象持有该模块参数的引用时,此实用函数就很有用。 +# 如果 ``nn.Module`` 就地修改了任何参数,持有这些参数引用的对象将无法看到更改。 +# 一个典型的例子是优化器,它持有 ``nn.Module`` 参数的引用。 +# 这会导致一个潜在的正确性问题,即 ``optimizer.step()`` 会无错误运行, +# 但 ``nn.Module`` 的权重不会被更新。 mod = torch.nn.Linear(1, 2, bias=False) optimizer = torch.optim.SGD(mod.parameters()) -print(f"weight in mod: {mod.weight}") -print(f"weight in optimizer: {optimizer.param_groups[0]['params']}") +print(f"mod 中的权重: {mod.weight}") +print(f"优化器中的权重: {optimizer.param_groups[0]['params']}") mod.weight = torch.nn.Parameter(2 * mod.weight) -print(f"weight in mod: {mod.weight}") -print(f"weight in optimizer: {optimizer.param_groups[0]['params']}") +print(f"mod 中的权重: {mod.weight}") +print(f"优化器中的权重: {optimizer.param_groups[0]['params']}") ################################################################################ -# ``nn.Module.to()`` and related methods +# ``nn.Module.to()`` 和相关方法 # -------------------------------------- -# This includes methods that change the device of the module (such as ``nn.Module.cpu()``), -# methods that change the ``dtype`` of the module (such as ``nn.Module.float()``) -# as well as methods that allow the module to be materialized -# (such as ``nn.Module.to_empty()``). +# 这包括改变模块设备的方法(如 ``nn.Module.cpu()``)、 +# 改变模块 ``dtype`` 的方法(如 ``nn.Module.float()``)、 +# 以及允许模块实例化的方法(如 ``nn.Module.to_empty()``)。 # -# At first glance, it might be non-intuitive that these methods are able to -# modify the parameters of the module in-place. The existing approach has been -# to use a nasty hack dating back from the first days of PyTorch. +# 乍一看,这些方法能够就地修改模块的参数可能看起来不太直观。 +# 现有的方法是使用一种追溯到 PyTorch 最初几天的丑陋黑客手段。 # -# Notably, the existing approach does not work in these cases: +# 值得注意的是,现有方法在以下情况下无法工作: # -# * when using ``__torch_dispatch__`` subclasses -# * when ``param`` and ``new_param`` do not have the same Python ``type()`` -# * For tensors with special C++ representations (such as sparse tensors and ``XLA`` tensors) +# * 使用 ``__torch_dispatch__`` 子类 +# * ``param`` 和 ``new_param`` 的 Python ``type()`` 不同 +# * 对于具有特殊 C++ 表示的张量(如稀疏张量和 ``XLA`` 张量) # -# In the following part of this recipe, we will define a toy ``__torch_dispatch__`` -# subclass ``MyQuantizedLinearWeight`` that represents quantized linear weights. -# This subclass will be used for illustration purposes throughout the rest of -# the tutorial. For brevity, we omit most of the ``__torch_dispatch__`` -# implementation. +# 在本教程的下一部分,我们将定义一个玩具 ``__torch_dispatch__`` 子类 ``MyQuantizedLinearWeight`` +# 来表示量化的线性权重。在本教程的剩余部分,我们将使用这个子类进行说明。 +# 为简洁起见,我们省略了大部分 ``__torch_dispatch__`` 实现。 + aten = torch.ops.aten + class MyQuantizedLinearWeight(torch.Tensor): @staticmethod def __new__(cls, elem, scale): @@ -86,7 +82,8 @@ def __new__(cls, elem, scale): layout=elem.layout, device=elem.device, strides=elem.stride(), - storage_offset=elem.storage_offset()) + storage_offset=elem.storage_offset(), + ) def __init__(self, elem: torch.Tensor, scale: float): self.elem = elem @@ -100,42 +97,39 @@ def __torch_dispatch__(cls, func, types, args, kwargs): if func in (aten.detach.default, aten._to_copy.default): new_elem = func(args[0].elem, *args[1:], **kwargs) return cls(new_elem, args[0].scale) - # Implementations for certain ops would be added to ``OP_TABLE``. - # We omit this for brevity. + # 某些操作的实现将添加到 ``OP_TABLE``。 + # 为简洁起见,我们在此省略。 OP_TABLE = dict() if func in OP_TABLE: - return OP_TABLE[func](func, args, kwargs) - raise NotImplementedError(f"Unsupported function {func}") + return OP_TABLE[func](func, args, kwargs) + raise NotImplementedError(f"不支持的函数 {func}") + ################################################################################# -# Let us create an ``nn.Linear`` layer of ``dtype`` ``torch.float32`` where the weight is -# a ``MyQuantizedLinearWeight`` and try to convert it to ``torch.bfloat16``. -# Observe that the weight's ``dtype`` changes as expected. However, the ``dtype`` -# of the subclass' payload (``elem``) does not change. +# 让我们创建一个 ``dtype`` 为 ``torch.float32`` 的 ``nn.Linear`` 层, +# 其权重是 ``MyQuantizedLinearWeight``。然后尝试将其转换为 ``torch.bfloat16``。 +# 观察到权重的 ``dtype`` 如预期般改变了。但是子类的有效载荷(``elem``)的 ``dtype`` 没有改变。 m = nn.Linear(3, 5, dtype=torch.float32) m.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5)) -print(f"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之前: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") m.bfloat16() -print(f"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之后: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") print(f"m.weight.dtype: {m.weight.dtype}") print(f"m.weight.elem.dtype: {m.weight.elem.dtype}") print(f"m.bias.dtype: {m.bias.dtype}") ################################################################################ -# To this end, we introduce a global config -# ``torch.__future__.set_swap_module_params_on_conversion`` that will use -# ``swap_tensors`` to swap the parameters of the module while preserving -# references in place of ``.data`` setting. When this config is set, -# ``swap_tensors`` will be used during the conversion, which ensures that -# the ``dtype`` of the payload is properly converted. +# 为此,我们引入了一个全局配置 ``torch.__future__.set_swap_module_params_on_conversion`` +# 它将使用 ``swap_tensors`` 交换模块的参数,同时保留 ``.data`` 设置中的引用。 +# 设置此配置后,在转换期间将使用 ``swap_tensors``,从而确保有效载荷的 ``dtype`` 正确转换。 torch.__future__.set_swap_module_params_on_conversion(True) m = nn.Linear(3, 5, dtype=torch.float32) m.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5)) -print(f"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之前: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") m.bfloat16() -print(f"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之后: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") print(f"m.weight.dtype: {m.weight.dtype}") print(f"m.weight.elem.dtype: {m.weight.elem.dtype}") print(f"m.bias.dtype: {m.bias.dtype}") @@ -144,42 +138,33 @@ def __torch_dispatch__(cls, func, types, args, kwargs): ################################################################################ # ``nn.Module.load_state_dict()`` # -------------------------------- -# Depending on the value of the ``assign`` keyword argument passed -# to ``load_state_dict()``, there are two ways to load the ``state_dict``: +# 根据传递给 ``load_state_dict()`` 的 ``assign`` 关键字参数的值, +# 有两种方式加载 ``state_dict``: # -# * ``assign=False``: preserves the properties of ``module.param`` and only takes the values -# from ``state_dict['param_name']`` -# * ``assign=True``: preserves the properties and values of ``state_dict['param_name']``. +# * ``assign=False``: 保留 ``module.param`` 的属性,只从 ``state_dict['param_name']`` 中获取值 +# * ``assign=True``: 保留 ``state_dict['param_name']`` 的属性和值。 # # -# Previously, these were implemented with in-place ``copy_`` and ``__setattr__`` respectively. -# With the existing implementation, each approach had its own limitations -- ``assign=False`` -# imposes the constraint that the type of the parameter in the ``state_dict`` must -# be the same as the type of the parameter in the module while ``assign=True`` imposes -# the constraint that anything that holds references to the module's parameters must -# be initialized after ``nn.Module.load_state_dict()``. +# 之前,这些分别是通过就地 ``copy_`` 和 ``__setattr__`` 实现的。 +# 在现有实现中,每种方法都有自己的限制 - ``assign=False`` 要求 ``state_dict`` 中的参数类型 +# 必须与模块中的参数类型相同,而 ``assign=True`` 要求在 ``nn.Module.load_state_dict()`` 之后 +# 初始化任何持有模块参数引用的对象。 # -# Now, we address both constraints by adding a ``swap_tensors`` path to ``load_state_dict()`` -# and introducing a new extension point ``torch.Tensor.module_load(self, other, assign=False)``. -# When the ``swap_tensors`` path is enabled via the ``__future__`` mentioned above, -# we can use a ``__torch_function__`` handler for ``module_load`` to apply a -# custom transformation to the value in the ``state_dict``. The result of this -# transformation will be swapped with the parameter in the module. +# 现在,我们通过在 ``load_state_dict()`` 中添加 ``swap_tensors`` 路径并引入新的扩展点 +# ``torch.Tensor.module_load(self, other, assign=False)`` 来解决这两个限制。 +# 当启用上述 ``__future__`` 时,我们可以使用 ``module_load`` 的 ``__torch_function__`` 处理程序 +# 对 ``state_dict`` 中的值应用自定义转换。转换的结果将与模块中的参数交换。 # -# In the following example, we will use the ``MyQuantizedLinearWeight`` subclass -# defined above to illustrate how we can use these features to apply a -# custom quantization scheme to the weights of a linear layer when -# loading the ``state_dict``. +# 在下面的示例中,我们将使用上面定义的 ``MyQuantizedLinearWeight`` 子类 +# 来说明如何使用这些功能在加载 ``state_dict`` 时对线性层的权重应用自定义量化方案。 # -# Recall that the ``__torch_function__`` handler for ``module_load`` will be -# invoked if either ``self`` or ``other`` (in this case ``param`` or -# ``state_dict[param_key]``) are ``MyQuantizedLinearWeight`` subclasses. +# 回顾一下,如果 ``self`` 或 ``other``(在本例中是 ``param`` 或 ``state_dict[param_key]``) +# 是 ``MyQuantizedLinearWeight`` 子类,则会调用 ``module_load`` 的 ``__torch_function__`` 处理程序。 # -# Assume that we expect the ``state_dict`` to contain plain tensors and the -# module to contain ``MyQuantizedLinearWeight`` parameters where we want the -# tensors in the ``state_dict`` to be transformed into the subclass. Then we -# can define a ``__torch_function__`` handler for ``torch.Tensor.module_load`` -# as such: +# 假设我们期望 ``state_dict`` 包含普通张量,而模块包含 ``MyQuantizedLinearWeight`` 参数, +# 我们希望将 ``state_dict`` 中的张量转换为子类。那么我们可以为 ``torch.Tensor.module_load`` 定义 +# 一个 ``__torch_function__`` 处理程序,如下所示: + @classmethod def custom_torch_function(cls, func, types, args=(), kwargs=None): @@ -191,51 +176,48 @@ def custom_torch_function(cls, func, types, args=(), kwargs=None): return MyQuantizedLinearWeight(src, dest.scale) else: with torch._C.DisableTorchFunctionSubclass(): - return func(*args, **kwargs) + return func(*args, **kwargs) + MyQuantizedLinearWeight.__torch_function__ = custom_torch_function ################################################################################# -# First, let us create a skeleton of a model on the meta device to avoid -# materializing storages. We convert all weights in the modules to -# ``MyQuantizedLinearWeight`` subclasses while leaving biases intact. +# 首先,让我们在 meta 设备上创建一个模型框架,以避免实例化存储。 +# 我们将模块中的所有权重转换为 ``MyQuantizedLinearWeight`` 子类,同时保留偏置不变。 + def fn(m): if isinstance(m, nn.Linear): requires_grad = m.weight.requires_grad m.weight = torch.nn.Parameter( - MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad - ) + MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad + ) + with torch.device("meta"): m = nn.Linear(3, 5) m.apply(fn) ################################################################################# -# We can then load the ``state_dict``. Observe that we use ``assign=True`` because -# for biases, we want to preserve the properties of the tensor in the ``state_dict`` -# (for example, we do not want the bias to be on the ``meta`` device after loading). +# 然后我们可以加载 ``state_dict``。注意我们使用 ``assign=True``,因为对于偏置, +# 我们希望保留 ``state_dict`` 中张量的属性(例如,我们不希望偏置在加载后位于 ``meta`` 设备上)。 torch.__future__.set_swap_module_params_on_conversion(True) -print(f"Before: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") -print(f"m.state_dict() before load_state_dict():\n {m.state_dict()}") +print(f"之前: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") +print(f"load_state_dict() 之前的 m.state_dict():\n {m.state_dict()}") state_dict = nn.Linear(3, 5).state_dict() print(f"state_dict:\n {state_dict}") m.load_state_dict(state_dict, assign=True) -print(f"After: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") -print(f"m.state_dict() after load_state_dict():\n {m.state_dict()}") +print(f"之后: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") +print(f"load_state_dict() 之后的 m.state_dict():\n {m.state_dict()}") ################################################################################# -# The above is a toy example of how we can use the new extension point in -# ``nn.Module.load_state_dict()``. One can also imagine alternate scenarios such -# as when we have tensor subclasses in the ``state_dict`` and plain ``nn.Parameters``/ -# tensors in the module or when both are tensor subclasses. Based on the use -# case, we can define the ``__torch_function__`` handler for ``module_load`` -# to apply the transforms as needed. +# 上面是一个如何使用 ``nn.Module.load_state_dict()`` 中的新扩展点的玩具示例。 +# 我们还可以想象其他场景,例如当 ``state_dict`` 中有张量子类而模块中有普通 ``nn.Parameters``/张量时, +# 或者两者都是张量子类时。根据使用场景,我们可以定义 ``module_load`` 的 ``__torch_function__`` 处理程序 +# 来应用所需的转换。 # -# Conclusion +# 结论 # ---------- -# In this recipe, we learned about ``swap_tensors``, the importance -# of preserving references for parameters in ``nn.Module`` as well as how to -# use the two new extension points that are gated by -# ``torch.__future__.set_swap_module_params_on_conversion``. +# 在本教程中,我们学习了 ``swap_tensors``、在 ``nn.Module`` 中保留参数引用的重要性, +# 以及如何使用由 ``torch.__future__.set_swap_module_params_on_conversion`` 控制的两个新扩展点。 diff --git a/recipes_source/recipes/tensorboard_with_pytorch.py b/recipes_source/recipes/tensorboard_with_pytorch.py index 4bceda8..d1a7bf9 100644 --- a/recipes_source/recipes/tensorboard_with_pytorch.py +++ b/recipes_source/recipes/tensorboard_with_pytorch.py @@ -1,24 +1,23 @@ """ -How to use TensorBoard with PyTorch +如何在PyTorch中使用TensorBoard =================================== -TensorBoard is a visualization toolkit for machine learning experimentation. -TensorBoard allows tracking and visualizing metrics such as loss and accuracy, -visualizing the model graph, viewing histograms, displaying images and much more. -In this tutorial we are going to cover TensorBoard installation, -basic usage with PyTorch, and how to visualize data you logged in TensorBoard UI. +TensorBoard是一个用于机器学习实验的可视化工具包。 +TensorBoard允许跟踪和可视化指标,如损失和准确率, +可视化模型图,查看直方图,显示图像等。 +在本教程中,我们将介绍TensorBoard的安装、 +在PyTorch中的基本用法,以及如何在TensorBoard UI中可视化您记录的数据。 -Installation +安装 ---------------------- -PyTorch should be installed to log models and metrics into TensorBoard log -directory. The following command will install PyTorch 1.4+ via -Anaconda (recommended): +应安装PyTorch以将模型和指标记录到TensorBoard日志 +目录。以下命令将通过Anaconda(推荐)安装PyTorch 1.4+: .. code-block:: sh - $ conda install pytorch torchvision -c pytorch + $ conda install pytorch torchvision -c pytorch -or pip +或者使用pip: .. code-block:: sh @@ -27,34 +26,34 @@ """ ###################################################################### -# Using TensorBoard in PyTorch +# 在PyTorch中使用TensorBoard # ----------------------------- -# -# Let’s now try using TensorBoard with PyTorch! Before logging anything, -# we need to create a ``SummaryWriter`` instance. -# +# +# 现在让我们尝试在PyTorch中使用TensorBoard!在记录任何内容之前, +# 我们需要创建一个 ``SummaryWriter`` 实例。 +# import torch from torch.utils.tensorboard import SummaryWriter + writer = SummaryWriter() ###################################################################### -# Writer will output to ``./runs/`` directory by default. -# +# 写入器默认将输出到 ``./runs/`` 目录。 +# ###################################################################### -# Log scalars +# 记录标量 # ----------- -# -# In machine learning, it’s important to understand key metrics such as -# loss and how they change during training. Scalar helps to save -# the loss value of each training step, or the accuracy after each epoch. # -# To log a scalar value, use -# ``add_scalar(tag, scalar_value, global_step=None, walltime=None)``. -# For example, lets create a simple linear regression training, and -# log loss value using ``add_scalar`` +# 在机器学习中,了解关键指标(如损失)及其在训练期间的变化非常重要。 +# 标量可用于保存每个训练步骤的损失值或每个epoch的准确率。 +# +# 要记录标量值,请使用 +# ``add_scalar(tag, scalar_value, global_step=None, walltime=None)``。 +# 例如,让我们创建一个简单的线性回归训练,并 +# 使用 ``add_scalar`` 记录损失值 # x = torch.arange(-5, 5, 0.1).view(-1, 1) @@ -62,7 +61,8 @@ model = torch.nn.Linear(1, 1) criterion = torch.nn.MSELoss() -optimizer = torch.optim.SGD(model.parameters(), lr = 0.1) +optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + def train_model(iter): for epoch in range(iter): @@ -72,59 +72,58 @@ def train_model(iter): optimizer.zero_grad() loss.backward() optimizer.step() - + + train_model(10) writer.flush() -###################################################################### -# Call ``flush()`` method to make sure that all pending events -# have been written to disk. -# -# See `torch.utils.tensorboard tutorials `_ -# to find more TensorBoard visualization types you can log. -# -# If you do not need the summary writer anymore, call ``close()`` method. +###################################################################### +# 调用 ``flush()`` 方法以确保所有待处理事件 +# 已写入磁盘。 +# +# 请参阅 `torch.utils.tensorboard 教程 `_ +# 以了解您可以记录的更多TensorBoard可视化类型。 +# +# 如果您不再需要摘要写入器,请调用 ``close()`` 方法。 # writer.close() ###################################################################### -# Run TensorBoard +# 运行TensorBoard # ---------------- -# -# Install TensorBoard through the command line to visualize data you logged +# +# 通过命令行安装TensorBoard以可视化您记录的数据 # # .. code-block:: sh # # pip install tensorboard # # -# Now, start TensorBoard, specifying the root log directory you used above. -# Argument ``logdir`` points to directory where TensorBoard will look to find -# event files that it can display. TensorBoard will recursively walk -# the directory structure rooted at ``logdir``, looking for ``.*tfevents.*`` files. +# 现在,启动TensorBoard,指定您之前使用的根日志目录。 +# 参数 ``logdir`` 指向TensorBoard将查找可显示的事件文件的目录。 +# TensorBoard将递归遍历 ``logdir`` 根目录下的目录结构,寻找 ``.*tfevents.*`` 文件。 # # .. code-block:: sh # # tensorboard --logdir=runs # -# Go to the URL it provides OR to `http://localhost:6006/ `_ +# 转到它提供的URL或 `http://localhost:6006/ `_ # # .. image:: ../../_static/img/thumbnails/tensorboard_scalars.png # :scale: 40 % # -# This dashboard shows how the loss and accuracy change with every epoch. -# You can use it to also track training speed, learning rate, and other -# scalar values. It’s helpful to compare these metrics across different -# training runs to improve your model. +# 此仪表板显示了损失和准确率如何随着每个epoch而变化。 +# 您可以使用它来跟踪训练速度、学习率和其他标量值。 +# 比较不同训练运行的这些指标有助于改进您的模型。 # ######################################################################## -# Learn More +# 了解更多 # ---------------------------- -# -# - `torch.utils.tensorboard `_ docs -# - `Visualizing models, data, and training with TensorBoard `_ tutorial +# +# - `torch.utils.tensorboard `_ 文档 +# - `使用TensorBoard可视化模型、数据和训练 `_ 教程 # diff --git a/recipes_source/torch_compile_backend_ipex.rst b/recipes_source/torch_compile_backend_ipex.rst index 8d38a68..0d8613d 100644 --- a/recipes_source/torch_compile_backend_ipex.rst +++ b/recipes_source/torch_compile_backend_ipex.rst @@ -1,18 +1,17 @@ -Intel® Extension for PyTorch* Backend +Intel® PyTorch* 扩展后端 ===================================== -To work better with `torch.compile`, Intel® Extension for PyTorch* implements a backend ``ipex``. -It targets to improve hardware resource usage efficiency on Intel platforms for better performance. -The `ipex` backend is implemented with further customizations designed in Intel® Extension for -PyTorch* for the model compilation. +为了更好地与 `torch.compile` 协作,Intel® PyTorch* 扩展实现了一个名为 `ipex` 的后端。 +它旨在提高 Intel 平台上的硬件资源使用效率,从而获得更好的性能。 +`ipex` 后端是通过 Intel® PyTorch* 扩展中进一步的定制设计来实现模型编译的。 -Usage Example +使用示例 ~~~~~~~~~~~~~ -Train FP32 +FP32 训练 ---------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model training with FP32 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 FP32 数据类型的模型训练。 .. code:: python @@ -44,10 +43,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer = torch.optim.SGD(model.parameters(), lr = LR, momentum=0.9) model.train() - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model, optimizer = ipex.optimize(model, optimizer=optimizer) compile_model = torch.compile(model, backend="ipex") @@ -61,10 +60,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer.step() -Train BF16 +BF16 训练 ---------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model training with BFloat16 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 BFloat16 数据类型的模型训练。 .. code:: python @@ -96,10 +95,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer = torch.optim.SGD(model.parameters(), lr = LR, momentum=0.9) model.train() - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model, optimizer = ipex.optimize(model, dtype=torch.bfloat16, optimizer=optimizer) compile_model = torch.compile(model, backend="ipex") @@ -114,10 +113,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer.step() -Inference FP32 +FP32 推理 -------------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model inference with FP32 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 FP32 数据类型的模型推理。 .. code:: python @@ -128,10 +127,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c model.eval() data = torch.rand(1, 3, 224, 224) - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model = ipex.optimize(model, weights_prepack=False) compile_model = torch.compile(model, backend="ipex") @@ -141,10 +140,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c compile_model(data) -Inference BF16 +BF16 推理 -------------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model inference with BFloat16 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 BFloat16 数据类型的模型推理。 .. code:: python @@ -155,10 +154,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c model.eval() data = torch.rand(1, 3, 224, 224) - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model = ipex.optimize(model, dtype=torch.bfloat16, weights_prepack=False) compile_model = torch.compile(model, backend="ipex") diff --git a/recipes_source/torch_logs.py b/recipes_source/torch_logs.py index b5c3f0b..2dfa426 100644 --- a/recipes_source/torch_logs.py +++ b/recipes_source/torch_logs.py @@ -1,96 +1,86 @@ """ -(beta) Using TORCH_LOGS python API with torch.compile +(Beta) 使用 TORCH_LOGS python API 与 torch.compile ========================================================================================== -**Author:** `Michael Lazos `_ +**作者:** `Michael Lazos `_ """ import logging ###################################################################### # -# This tutorial introduces the ``TORCH_LOGS`` environment variable, as well as the Python API, and -# demonstrates how to apply it to observe the phases of ``torch.compile``. +# 本教程介绍了 ``TORCH_LOGS`` 环境变量以及 Python API,并演示了如何将其应用于观察 ``torch.compile`` 的各个阶段。 # # .. note:: # -# This tutorial requires PyTorch 2.2.0 or later. +# 本教程需要 PyTorch 2.2.0 或更高版本。 # # ###################################################################### -# Setup +# 设置 # ~~~~~~~~~~~~~~~~~~~~~ -# In this example, we'll set up a simple Python function which performs an elementwise -# add and observe the compilation process with ``TORCH_LOGS`` Python API. +# 在这个例子中,我们将设置一个简单的 Python 函数,执行元素级加法,并使用 ``TORCH_LOGS`` Python API 观察编译过程。 # # .. note:: # -# There is also an environment variable ``TORCH_LOGS``, which can be used to -# change logging settings at the command line. The equivalent environment -# variable setting is shown for each example. +# 还有一个环境变量 ``TORCH_LOGS``,可用于在命令行中更改日志设置。每个示例都显示了等效的环境变量设置。 import torch -# exit cleanly if we are on a device that doesn't support torch.compile +# 如果设备不支持 torch.compile,则干净地退出 if torch.cuda.get_device_capability() < (7, 0): - print("Skipping because torch.compile is not supported on this device.") + print("跳过,因为此设备不支持 torch.compile。") else: + @torch.compile() def fn(x, y): z = x + y return z + 2 - inputs = (torch.ones(2, 2, device="cuda"), torch.zeros(2, 2, device="cuda")) - -# print separator and reset dynamo -# between each example + # 在每个示例之间打印分隔符并重置 dynamo def separator(name): print(f"==================={name}=========================") torch._dynamo.reset() - - separator("Dynamo Tracing") -# View dynamo tracing -# TORCH_LOGS="+dynamo" + separator("Dynamo 跟踪") + # 查看 dynamo 跟踪 + # TORCH_LOGS="+dynamo" torch._logging.set_logs(dynamo=logging.DEBUG) fn(*inputs) - separator("Traced Graph") -# View traced graph -# TORCH_LOGS="graph" + separator("跟踪的图形") + # 查看跟踪的图形 + # TORCH_LOGS="graph" torch._logging.set_logs(graph=True) fn(*inputs) - separator("Fusion Decisions") -# View fusion decisions -# TORCH_LOGS="fusion" + separator("融合决策") + # 查看融合决策 + # TORCH_LOGS="fusion" torch._logging.set_logs(fusion=True) fn(*inputs) - separator("Output Code") -# View output code generated by inductor -# TORCH_LOGS="output_code" + separator("输出代码") + # 查看 inductor 生成的输出代码 + # TORCH_LOGS="output_code" torch._logging.set_logs(output_code=True) fn(*inputs) separator("") ###################################################################### -# Conclusion +# 结论 # ~~~~~~~~~~ # -# In this tutorial we introduced the TORCH_LOGS environment variable and python API -# by experimenting with a small number of the available logging options. -# To view descriptions of all available options, run any python script -# which imports torch and set TORCH_LOGS to "help". +# 在本教程中,我们介绍了 TORCH_LOGS 环境变量和 python API,并通过实验了一小部分可用的日志选项。 +# 要查看所有可用选项的描述,请运行任何导入 torch 的 python 脚本,并将 TORCH_LOGS 设置为 "help"。 # -# Alternatively, you can view the `torch._logging documentation`_ to see -# descriptions of all available logging options. +# 或者,您可以查看 `torch._logging 文档`_ 以查看所有可用日志选项的描述。 # -# For more information on torch.compile, see the `torch.compile tutorial`_. +# 有关 torch.compile 的更多信息,请参阅 `torch.compile 教程`_。 # -# .. _torch._logging documentation: https://pytorch.org/docs/main/logging.html -# .. _torch.compile tutorial: https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html +# .. _torch._logging 文档: https://pytorch.org/docs/main/logging.html +# .. _torch.compile 教程: https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html diff --git a/recipes_source/torchscript_inference.rst b/recipes_source/torchscript_inference.rst index 2f904e4..50e18e3 100644 --- a/recipes_source/torchscript_inference.rst +++ b/recipes_source/torchscript_inference.rst @@ -1,13 +1,16 @@ -TorchScript for Deployment +TorchScript 部署 ========================== -In this recipe, you will learn: +在本教程中,您将学习: - What TorchScript is - How to export your trained model in TorchScript format - How to load your TorchScript model in C++ and do inference +- TorchScript 是什么 +- 如何将训练好的模型导出为 TorchScript 格式 +- 如何在 C++ 中加载 TorchScript 模型并进行推理 -Requirements +环境要求 ------------ - PyTorch 1.5 @@ -15,31 +18,25 @@ Requirements - libtorch 1.5 - C++ compiler -The instructions for installing the three PyTorch components are -available at `pytorch.org`_. The C++ compiler will depend on your -platform. +安装这三个 PyTorch 组件的说明可在 `pytorch.org_` 上找到。C++ 编译器则取决于您的平台。 -What is TorchScript? + + +什么是 TorchScript? -------------------- -**TorchScript** is an intermediate representation of a PyTorch model -(subclass of ``nn.Module``) that can then be run in a high-performance -environment like C++. It’s a high-performance subset of Python that is -meant to be consumed by the **PyTorch JIT Compiler,** which performs -run-time optimization on your model’s computation. TorchScript is the -recommended model format for doing scaled inference with PyTorch models. -For more information, see the PyTorch `Introduction to TorchScript -tutorial`_, the `Loading A TorchScript Model in C++ tutorial`_, and the -`full TorchScript documentation`_, all of which are available on -`pytorch.org`_. - -How to Export Your Model +**TorchScript** 是 PyTorch 模型( ``nn.Module`` 的子类)的中间表示,可以在高性能环境(如 C++)中运行。 +它是 Python 的一个高性能子集,旨在被 **PyTorch JIT 编译器** 使用,后者会对模型的计算进行运行时优化。 +TorchScript 是使用 PyTorch 模型进行大规模推理的推荐模型格式。更多信息, +请参阅 `pytorch.org_` 上的 `PyTorch TorchScript 入门教程`、 `在 C++ 中加载 TorchScript 模型教程` +和 `完整的 TorchScript 文档_` 。 + +如何导出模型 ------------------------ -As an example, let’s take a pretrained vision model. All of the -pretrained models in TorchVision are compatible with TorchScript. +作为示例,让我们使用一个预训练的视觉模型。TorchVision 中的所有预训练模型都与 TorchScript 兼容。 -Run the following Python 3 code, either in a script or from the REPL: +运行以下 Python 3 代码,可以在脚本中或从 REPL 中运行: .. code:: python3 @@ -47,9 +44,9 @@ Run the following Python 3 code, either in a script or from the REPL: import torch.nn.functional as F import torchvision.models as models - r18 = models.resnet18(pretrained=True) # We now have an instance of the pretrained model - r18_scripted = torch.jit.script(r18) # *** This is the TorchScript export - dummy_input = torch.rand(1, 3, 224, 224) # We should run a quick test + r18 = models.resnet18(pretrained=True) # 现在我们有一个预训练模型的实例 + r18_scripted = torch.jit.script(r18) # *** 这是 TorchScript 导出 + dummy_input = torch.rand(1, 3, 224, 224) # 快速测试一下 Let’s do a sanity check on the equivalence of the two models: From ad033bb91f028a7b485de8bd0bc227127df44422 Mon Sep 17 00:00:00 2001 From: hippocookie Date: Wed, 3 Jul 2024 17:28:00 +0800 Subject: [PATCH 4/4] Rebuild docs --- docs/.buildinfo | 2 +- docs/.doctrees/environment.pickle | Bin 4210980 -> 4210086 bytes .../recipes/profile_with_itt.doctree | Bin 38793 -> 36043 bytes .../recipes/recipes/Captum_Recipe.doctree | Bin 31246 -> 28124 bytes .../recipes/dynamic_quantization.doctree | Bin 47618 -> 43756 bytes docs/.doctrees/recipes/recipes/index.doctree | Bin 59769 -> 60309 bytes .../module_load_state_dict_tips.doctree | Bin 42259 -> 36605 bytes .../recipes/reasoning_about_shapes.doctree | Bin 17306 -> 16705 bytes .../recipes/recipes/swap_tensors.doctree | Bin 55682 -> 52336 bytes .../recipes/tensorboard_with_pytorch.doctree | Bin 25480 -> 24815 bytes .../torch_compile_backend_ipex.doctree | Bin 16401 -> 15973 bytes docs/.doctrees/recipes/torch_logs.doctree | Bin 18778 -> 18092 bytes .../recipes/torchscript_inference.doctree | Bin 25957 -> 25165 bytes .../reasoning_about_shapes.ipynb | 16 +- .../torch_logs.ipynb | 10 +- .../dynamic_quantization.py | 308 ++++++--------- .../Captum_Recipe.ipynb | 32 +- .../swap_tensors.ipynb | 36 +- .../tensorboard_with_pytorch.py | 107 +++--- .../reasoning_about_shapes.py | 38 +- .../torch_logs.py | 70 ++-- .../Captum_Recipe.py | 262 ++++++------- .../tensorboard_with_pytorch.ipynb | 18 +- .../swap_tensors.py | 210 +++++----- .../module_load_state_dict_tips.py | 166 ++++---- .../dynamic_quantization.ipynb | 24 +- .../module_load_state_dict_tips.ipynb | 53 ++- .../_sources/recipes/profile_with_itt.rst.txt | 90 ++--- .../recipes/recipes/Captum_Recipe.rst.txt | 232 ++++++----- .../recipes/dynamic_quantization.rst.txt | 333 +++++++--------- docs/_sources/recipes/recipes/index.rst.txt | 100 ++--- .../module_load_state_dict_tips.rst.txt | 210 +++++----- .../recipes/reasoning_about_shapes.rst.txt | 52 ++- .../recipes/recipes/swap_tensors.rst.txt | 244 ++++++------ .../recipes/tensorboard_with_pytorch.rst.txt | 105 +++-- .../torch_compile_backend_ipex.rst.txt | 43 +-- docs/_sources/recipes/torch_logs.rst.txt | 78 ++-- .../recipes/torchscript_inference.rst.txt | 47 ++- docs/objects.inv | Bin 14227 -> 14299 bytes docs/recipes/compiling_optimizer.html | 4 +- docs/recipes/deployment_with_flask.html | 4 +- docs/recipes/profile_with_itt.html | 130 +++---- docs/recipes/recipes/Captum_Recipe.html | 241 ++++++------ docs/recipes/recipes/amp_recipe.html | 4 +- .../recipes/defining_a_neural_network.html | 4 +- .../recipes/recipes/dynamic_quantization.html | 359 ++++++++---------- docs/recipes/recipes/index.html | 36 +- .../recipes/module_load_state_dict_tips.html | 189 +++++---- docs/recipes/recipes/profiler_recipe.html | 4 +- .../recipes/reasoning_about_shapes.html | 47 +-- docs/recipes/recipes/swap_tensors.html | 232 +++++------ .../recipes/tensorboard_with_pytorch.html | 121 +++--- docs/recipes/recipes/what_is_state_dict.html | 4 +- docs/recipes/torch_compile_backend_ipex.html | 75 ++-- docs/recipes/torch_logs.html | 82 ++-- docs/recipes/torchscript_inference.html | 67 ++-- docs/searchindex.js | 2 +- 57 files changed, 2055 insertions(+), 2436 deletions(-) diff --git a/docs/.buildinfo b/docs/.buildinfo index 67ddc47..7f70517 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 5827a299dc035063dcd82b826d40b4cc +config: ff98f6fae0a75c232c4a4aa789f50b6c tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index 3a25512cf14ecbc2717e38745fbefbe33ae326de..772ffe64b27f9da3534e209bdfede5f5d4b9a7d5 100644 GIT binary patch delta 254057 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%0DZ9AruY@(dIYq8{yT-gtDK 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 z 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 delta 258747 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%0A?GAs)y>pRo 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 TJ}nJi{8di>3$>+pCC~pqDMF== diff --git a/docs/.doctrees/recipes/profile_with_itt.doctree b/docs/.doctrees/recipes/profile_with_itt.doctree index c4b99b0d7ce140fd9059b5bbc6deabec4b3691d1..66c4eb8d82c29bbea72e426df2109704cee3b935 100644 GIT binary patch literal 36043 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 z

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 diff --git a/docs/.doctrees/recipes/recipes/dynamic_quantization.doctree b/docs/.doctrees/recipes/recipes/dynamic_quantization.doctree index 8a2004a34e908769fb1cd3d9f266f3afb2809bfa..fffd58bb2b0ea96b40bf4535ed7236ebfe519840 100644 GIT binary patch literal 43756 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 bfe~4`U1uVu?Mo4%4e}R6#T&VITJ`?`ehXZR literal 47618 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 diff --git a/docs/.doctrees/recipes/recipes/index.doctree b/docs/.doctrees/recipes/recipes/index.doctree index 3fff436cce16b2a232c7b69f90d0d02cb89d4ad7..981e441bda1b6771c071ee53a11db5366ff63277 100644 GIT binary patch delta 3338 zcmd5;ZA?>F7|w<1W;8QS*oKO`bs{3=YnT{GG=jPUx@i0WH35lbF^f$Vp7wGYRvcVe5)~CiBZm(8mQv5B z<%ly+vQ7iC$T?#xYF4AqG@M4k=@lN61-WXG(vp@X%F7Wa<)n*`arFk|uBZ7%6aI8Z zBEuV5yBgKFSZ4=D@JbpyZbhOfJu^piEPW$aW%N{5N6a|t6*?|@b98j{y6w7?FCNjI zjL|H#3|}A_f;1-xmZzPiWFXbQ1to{pLFC~j>rtnS#WiU%{#Q7AAM0}SI^z>Hg8hd# zgv}|^mU?I`fcgjoMH}Z74}x!l=M$bfy2dv7;U7WN?^pzJCH_pOGUrF?ko=OLa;|<* zh^a$%J3G?gl`1gjTuU`;mmsT*Zzw}r8CPpTTD-x=I;v1brT>#>6p+F}0$gppY7qb7 zO3RUafaqdWjY}n@8Ac?EPR6H1S#SW_*{|%<6w1rkE&N~6R3mV8h^8oG^W!SFgQvpy_ zeAc$}TnYsnBtnQe5)b#zM?#B40R10F;s39Jq;NR|NUgBrLK^%f)c{>|!}d<;h1E8d zp_GCp`T{8Hx(^erLNFTNg_Je{tmxhbgKbv$r+Yh?+qH1L#{l7mOzM58Nso#3bt1hp z{q&jqQ?$q3=xNnVd79Sj>1y{XRGg%1+IW1M!sfII9(5|ASQ8J$4tj&XkDhi8AuxQd zu}ht4P-GN>+PMqv83l09xfN2ntuQ%~0NZ-BxH1uQg(9?;%{`oOoZFibp!wD35gzv? z*51Q+IB*BE_C6seGh$!oo7C77rp!;-jr|U(jGRR3RcMi>j=O9?D!o_ILMIo)1o~$WR&#N<5 zbeh0?akfsg3lb~C;peNNpdWY{sCPa0f6JD{L7`go9Qsl}H|z85q6? z8Oq2HVgVS~8wtnqMe(2akS;M|ZF-1{Sd=?{b0 z{!Hk%XHqxGm{HOxdTm)_GU#jJT;F8oknIdSb0uEoI1h6$T?4cF9&EG|sGr_|*m zzs6%~>~$t;MJ-<(6r@Wrr_Qe&Agn^s0g3O4cEtl2x6B@Na4+exz{W z83iKUA-l0?Xksf`6@FZ4Jb(C$Lt{JhHp)3=H8PbFh1olZH0vx}MK`k6&eX=U9Gvj% z2g5_R5-MObTpJ4}W5MerbKmUrm{^=WYj?ouvEa3&Pe$~_d;6++tCQ1Kv!jiVZ$XF; z+4~#-wuUiX03{(LKUW@v^{1n(p5-<$QS^rGy)Tyr13xLG_Q3Y7d%!T61S@Y1!NXhO hR4CkD6}ng_*QIFI10z@up|@k<+O0TS!|h*|{R@QiixdC= delta 2589 zcmcguTWl0n7|yh*lmPlbi>x4?rEH6KY0JeRcgigg%C(E2meASRv)u`^GuyfBuv}6q z$jyaCz7m24V+)lc$g(UJ2(*Z3AST>uqAyT=(L@qRNPG|l^_*#`#Atv9e3~;e|M|~< z{_k?m&hIksv}Idh^eOrWDT&*98KNh)hu%c() zOwHzHSOz6Nsv4R;MHBS^v1KzvI!njZiu@su6gX*Par)k(9T~zB++H{Ik*1Wc&V7vN z`o@9jH{ZCGlOAPV6fhqp7wWV^*ec=xrYstcoMP?lQhz?dOm#TO6V) zv31#$)h?_a?2nhoCXo#yY2mP@DluY)D3L_gQ8Of(&Ray(MFuU^4c=^#RLN16QxRiS zcTj%nYj|q52x}PdBY+-)mEtYfRm-E-t*zS@Q4|z&Y}$ zv78}qtzR`j*oE6=#Wg_^)2#fw6(dHE(q!5*sM>HlgM|QTz1`HXU1}uqz zr-dVyNjnu8*7O(=4HCAPjM+1y8HVgvsFy*@U@s~v8a%Ns)MIH~s5riBd_ay8Nf8ZW z!eAqUKg-60S{32HhiyT56bR932L(Ht#cDYUYZ1a&RU zxHz?|6eNslB5^3xeP7IY$TH|v^AF^`$!639-o5WjwEnq!OPgb zr56UBd;#-T_rQ%46&P~Vk4w8tUY(_O&_<_{9HE?^%xo2f7?hGwhZ&pVa>l(tl#x=b zqC^W4Y$rMW9P5xIs!&~IxUEi?y)FvV7)R5RuSkw@-Rd|Fv9^X~N1gD0?{^xP%>u2#|ix&+| z)9^uy8$Aw;L1t?Tw-1cP-PT0MIm72Vj^dnA&Ks}A|GC7?ewdF-x)U4b4muNy#B5O{ zDz%Aa%8G2pNYGLx=YSt{*5%@sU{i)5dz!Z91kx2|2QrVJZ{UCC>cyKOLEVg)-6{tulq6R51@-nWe1O-#BhAWJ6GKfiDAx$L)L`5n)q2KRvZ zPdaJ3^;}(su%65RNvC$8d^(x=QL_AeuUs@-+luHluP_wDNB6}xPcD{R--dVEhvTQ~ b1%e0dlRQ}4o`sV3SJ0BohO)6;)sQ9YzGrRLu|K*x+QU&G2X?tj0qsJ1}Av4-d3yoN!?AWyVHk} zl6Xge1rj{2p}D~Z8ykEeaO@BvaZGJZvQw4WnVrqn>{VO4Tcg*KYEnD1$82hMXKMEM z|GxKq?@+7zwZKU{1yyvb-}{dL_rL%D@9La#^nV5(ZIA| zqRm!6JVl%N;wGhW(-x)S#dTYJx$v~tbKweY@)ot7dU3q%%CTOhQ_ zv&{jmGLXrnBF)(h;3T*vMM7!7piK+L0_ij!;_oT(KpX#SdMKMTe>4Yz+fr%^D^t@FZ=j7uZL%YiNCm@Q;3ppNX0rGd3B=O1DK!{Ls^)iFB9x7({#YUq@~1O_ zjOq_Xf*F4%l1%$j=}bFRaVM?uGV_&*>2AIJYE@PA?W>)G&=CI-V#g`W<4)=#pH#k*ybvT@D&2IYm9*EFte z*j&RnL)r3jgR*(ktFOG!pnU7KEiZ3sWW!y>8Kz1rvz8s|72|<=vJL9G1?5mO*|9(X zUVcS8><#0AeTohC`5V?XHYkm+ZhXGs6)?{$4a(Ye-)?ABo^RN&={u4|N|drgwRt>H zO#@UDw8@EhtV1do5_O>y;)#rEd7-`WLM#&8rmTYOu4)RaDOGtEDy!Y!8cX>@iS2PF zL;=7oDB|DyLs>~!5QCZ1^Riz~xiz#Y*pe-3w6_RD4qbi_)0DlqX!J zP31_*NqWd95YITn@XVwd4@Kgw{&rx_3VY+-MWsO0)JU8uEnzf3(;qOJR%w%oY$mLr z_1y69I(f&VO=gg4lhT7XX zhMgJ9vT0L5=m>aog&eriE*O;=crS0?OFGHR47-;MyO#{RH`&2P(g#~OhejYq#6~hL ztp+oZMBE~%TqSxi%qf{jCT3HLiv|Y{ zp;K?=_jc+(xya;`bjAY(>X<@V_%-1CmmJQaqFwERbrmY<&x(S0Ujs zyJ52b?~2i$c;(NiU-VX`RaypO^0)P=6U5>i{c{xmLxFivVlH}VlOEPfixv&uJTu(c zwQA8KrDcmOpb^zj{+Ycx8CkO?}Tn{p#W2-t$Af z$MxUS^xa+hi4s7770h^&Q>7%0WF$7hswVS)QRqqofJbbTJ?S&14#% zS)IYrTrM2(AWBGmBN9|S z)r{7AAw~IPdxjvZhj!~HFFDD(iyC#1ch2aR1X5>n5{oVz=gGLM4L z#Bjmazyz=F4#|(9{EpIaxkU2w7N3PNx+N21VBC-{q?RJB@zL^C>7anN=8l_WEn4OC z@e)l6YR;3s*66V~NPDF;3dsSBek@2^Qi6?=rUX|uH3_5%0H^W?4p{zqxv-3uRFlU> zzmubI$6)hO{$go}#$>Rud(ozo*5~2mR3sFdBZy9?BJZDyBInxPquY9Xx3#n{nv9I1&r{uejlXst3T>7VEcu&biQqP?EuRr-OD0ko zB@>}^Gbe=YnH`J=T!5iXX#oqUxgKqLED&$a23nE4m=;o70@)Z+6SKpS)^H5}Gkzp1 zD1lDSaTOXiIPB{J;pJoc8SmmcF$!0hW)UnRh0_B#q0<1Lj) zXOn8mQ|*(bs#!($3gvy2i4COE%4$Wny#W!0=ezj1fxYuki$=Q&^o9~qB5@@Jy`g&Q z>#AR`u9TqQEfOFh1Cn+N7%4TAO~n-gQFQ5PN6pGM^lTYseO+B$wGmUK18=CFHlI1| z<*BYw76ijcup|?ac*d8^gcnpBq`imPyN_AB41`?BK=cU|>WMDEr)f{3U&qf;Hl%Lc z61`-FcS%{+npd!oCgWl>g>1-+HXHIYp0XGmcyH+3j-j4C`Q9JrZ{&t9^bhv$Mvi6h z=24y=LFCN^*j+sS=bbx51rc=>4D67Hu_kjzJM^qpiQq)Id}O;kZpULWV(#le`|kwW z$FOE)Cm8mXAfd2l)F-oNCBu^<(78%Ayj?Ct4>(f|pu7dO1z#7(;<)4ZPs@e<;R10y zF{B0lF^d!*!xs?B{z18;E5Iw!vuMPC9Q-tnAokD7g`xlh?6lyw;Ohdob?0L>j9(+K z^e$amj*qp3Rj_O1zbt{Av3#tT9X^(J*7O+QT$p;-ZQDYP~ zbnb#SH4|81I5G6Mzo4_i-;C0|CJ;3W&uH+D1e$)!p|sQHZ(Y!)4BNkM+?=*_nRjVf z-aM~hAI+>uip3H?)??lRiPn*`@6s%Y#RC}ZJAe!)e?ENs^zeBteMq3ea6%mE@#dc!H%nBEnDMP@vj+@TQ7JHX1DTmIyf_*e=U5uuXa~-e=*r!9E zd@|UtVOo+L>RbErKRTa3)59HVE?`K#=zIE^_zl3<#=Ig@GL*D9eJ+3bf_~-_pWBqP zn)&0`921!NquoOX_6*)Q1^FDjc>umJYDuXc*>#C#GW#ym^roDvyz;@&fH7m4zjBbk zWBm$08gBHL5OPVt=yyo7%#FTEUu7$p=J7M$GVk)T6wESKLBh=xOmLixr-JeRg-Ft% zB{n(sN8*8|6o}$Hrti?y!~}){C@j#R>2RwPEFS@>83$4=PUNE^;-e68bmM6IA&Vyf2$F1bamNr#V4~lX5VN(ptyT%$`gh1?jeKxS@9KttIMbdS5!O-B z#28zFWEDuro__G~Q0|?8A>>fIO3_1$V0U)eq zpa9bT-NP5(8`-lrf9(3;t=p#7*@2Fz3GLa}$vR;AtEUs%(~2g?m{?Z_ma+(i4l`vMfUzaZ0M?$>t}ray?|!TVM~GPT5mpX{~zFd41pitCDMB%i79Gh{PD~fC>7lN-kDPl^e1=Yn$6~JM1 z26T>0_dI{+VlI^F3}#BX!mxm6dklD5OJG54bFtNn&Iiz1z1ZC1S_@gWx-fwP(aha0 zOUI+u_-N(c7rqML-0ot7Iv}=xn;Tu)Y4o(wC0c_K(FPX*SC#hBmq=ksd-$b-x_~&i zbMmphRvPlMo%|Kcyek(ADRJd;unH2z%*j7oLTrjS`MVrWzV@!^(~i@@woNBXXW8zo zOJAF3N5|!8e2tc&#TVQrrf^w09X_8WHs!vu%-QN!uA8ZH z7L#Jq${LNr)x+c(z>xFPzf~|vyhm>X=OFw|`YL;3>d;s$Q|)4Zz{;gwEKC*Js*D;E zc&4s?K7OV-;!syx_rX%q>fg2w>|w{A@<7a=O5kvvxa!H&U|le62Q!wgEL4!U=bJcL z_P&!64yQlYFYM2s-H9llM;2@mudz%ww&vr73#XrGp2#bGMAAqOS@C@F#N0#3*ve*Ui z-@6dNGRzP*&r9WQbAT4P&?)tG^-wC(5S3HKKBy5FgBrsWU9!#qYY#F3;73xBW8%$V zVVq^x`eR0R&^ZlF#i~)x*uYMG{Y)$aFl-)88yA^hf81zUq-6{le43WlJ&irBOuAf5 zuirPtZW=7X=p#kjM(%-+-e>RH4B40hpMmz>>~$qLtf&-2@t>-VD*UuiO{A~AWeV||DYA}eh>PR+G z98y50Rj%lBCk4EU1fP+{TY@y!P{4uqUWaYf9xSxZQ&|7PFYUnmjtgMQ&@)%=48tpc z;b#Q+?l8=&*ax-V#h`?qabWnzHpc!Lxg)f8vfprMnU`BTbmNG=`$xLgk0ng6fp@U9jCt()%#{zz#x)*O zwP@pP09^5!Lt-ro59^7>K$u{KhYG$o;bL;tT!QLEaoPh;kbufnTKjK|9+F*ugD@1J ziMwRVwL6pXXT0@`Wje*3jPoiIX^h%GC_(KaTD0GxMYnzv6I^UAR0ty^I)APYax^q> z1gFpNIU zBXJ`%4MY@2(eQZMscC4h7MuF0L4Sb9^l#*1GXi?=wS4CeIx?lJZ}9p%wED_yUTO^< ze3$5l00pG9G>t9z!mJg+XPL69F~-2s0q9EaeVbx*?HIt5`!w0v6PU`8&J*`tR&%!r zumfs29K)|Ed_af+kTG&m)XW4MrHKH3^fWT;_3aN=yp{Fzd}myO`WSU=8$3=uUh_fUr=_L;=h?FF})7)tw| zRE;UU1{2?ts(VsJMG+|?M zuarC5(656XOdz#iPk+T}Qs&`OOUlLRSBr4GR2f>aQU&05muvZtccuv!d+V335KQRG zU@hTQzl2 z5u;6hR;BXXYSDP#WdqgR-v!eT-J~glaU#4jk)(A9yf*%hwD~r#ebK{*Z{@WbC6-!U zuX>k=Lj&$fBKcVNByrz8No0p={w5^RZf5_n3o~0r6!l;3$ah$}(pzsHui?sfFsj%G z6?HMFF`}sdX-zU{^GN$zFCgJ+*SYj#p^=1f=xUE)*6+;Z=#B za@5f-j2NijMPIHL|Ir$YPFaKHOa9s#L~fmkRdo4IY^gcI+zuFQY}^y~7$71O&d%iz z2Ctvv&I30Jgb3Rq4eZE1p7t8Y1Wc)e{45?6{F_Rw5!DawrFrO^N4eJ`C!kE1R3=1+>RHfE9HV_0O#k&N;??Lr~O_LLbFjG?XAd2c2*8BKms?wB{- zZ6P#qb=R9NfMa)o@~==+=ufNO)YdFov?Y-V#FSJv9>R_&B!3mH@I^@1Ws{p5Du+TtF zS&qZs`j23;F<$v@)hb0^vL=Q;`U&n-%Y+j+SzA$7iBhYYUNmlnMDR{;6@Gy$yVY@( zVua)lCBm;>O?D{H7JrYMBP+)NW;6>x)znyUev`je=;FNQL}FWUC?m;^cyn<;S&`?A z1-8*gr&)GEhJRg%;xa7{=8r0Xg0a8^ZH}N7n0fS_WM)aZ>C}8wrTxwwkk_F-76Bxu zGvNv2`UC;r=*uT*QQXr7s#&F5-ai>WX1h~zs(GhmbSc^x^GeB{@EPrE#TgOz7PmxV zD!(S}AE=>V-Qs$6S<8yxvSmPNAhbBJ@|osm>Vu({fVy}^ZHdO9kD^Z!eb`mK8!JeV z7nB&KMThYUUn@|-qg9O(eo|T+C4k#V0`%f7{?30`>SogaHs+G&SVYE?{b)P84ZA>-g zqAyY-&$k4Ffu&29g_bT|(o$cis=@kZb>)iX&onP?UJ|IQuPe&8yd?+g&LY;`T4Iz| z)@2p86sS;`bsrtgx`uKu!Mk? zUYR?!@BC6)xeX+It?;F+8}AdwUwagHx8gEWQ@4lw%^iNGsou;*j{vf0B|g&H!vzcC zf>jiw0q|l4oCs-Dv~^8u1F@Kz>QGu$cocN0p3>Z*Y-V@bd&N6>qz5pJyY6v$Bdg;x zZt;vH00c8xRoX()R*`;85p`D_ocb<$a9SXnJQ^2ay6T>v9H5Ak1I8Mx z^`L;aS^t)U0v4JX&avu0$1S@&7hs`*POn6bx4FY>uWeaUB#PT9HmdljdozDTpxTcU z;LzJ8OPhnHxaUo`wgqTPW=!XM4iKpD8YwQQkuBv^|(yMvLKw|==V8E<8~6zNJA z{9Cm>63T>EDfP>f?Y8G(m2Pz6FF0XvUodOe+UKS(q$j}w&P7eyqySwwHJJvP)21-c z@snW3t!Er!`Fj$(%=Mvy7|3ar!2oVC4?(c$!YXazqFi(c zpH1P)Of?yaC0fCvp7r+?qG$BKqO{az)XE>T>e0WTFH}N2E@xm>YNZ`P;GQxDEI8YO`^vb0mqW+_pAUO{2+q{D~S< z*%Lo42KTeOo&Yj>G%Cc9+F}o8rc}E7%^y?WP-D6E_i2@32#okSMXOTVarF~Tz-H6t z(*!}k;>j!|As$SGDD$9IWHT+^m0qaB zoc5UgrC&{@u-HEgA%hhKo(a?-g!U`gb#8BE3Tq{&&3C+UG!d-^uV}M*yCw{x_G9)J zj>_8oG=?+~6$Xl87*h^c=oxp}0plV3zE6$kv;T#r2A_1KCW%Z$8rQqift}g|cl)zhpchmOa3+d1@*ih!N?&!kz%T@idX&e3VS9 z*-*mYj_c_gwfo`7B+@F@pqVupm%s~pBa)6_a)H|Nha%}fGu8u0D5nX52tTdO#9&}L zV6n(vfNP9mev0$bIVg+SNi}JDRRqgSdeR&~*Tmb}Bf|9KaoWdoBW!m^PJ4(-QcG0Q zk9&oI-3+if9nZZ_)-44(W~W+$j^^o!+5A(YdB|FTIBuJo@Iclx){GMn(wPo` z5LVR;I(aCFQrrA0Hr&MgflvthNk}tvBU(nwpg*`W*248yk2aIHz?x5^_9Qj_My@g2 ztWD>71cD15jKEGpDsY%2Zg*6nm%uSqPIrWiC^Lb~YNp{VS^X9A(V3a$mYWq!Q!g#@ z%~X=95Eb%-e~Nrwe}K8_ujiPv9>{9bsHjnb+l`+_CqN}c{|2@r>Oq<>`Xqh)4K_(f z{||laq>taFk590QH2NWZyor2m^!xPjE2{Rt=z~QLEH1b~Kd<8>3!6&o5^$si1BrFm z&H8I(eRZ>b8d)FRto=sTb|Y)Ik+s#TSF~aRQdXNhhCjI6DYf z1}E)^<#5ufRt_h*4?KRM0FA*J{fq%S%PIs6(X)aPh!PPTc;!z>Rf%$(h}I{(97qdM zXlqWyq+GG04>}&o(iOHAD@3oX(i~g+usW#>nYo9YZ5eMSXq8Z;!98{)>q`Yt+A><64PKPKGcg~S|)%w^2H+puuBMluT9-C%= zijhW^5uowAN_+ifFhPn$PT>NeERepH$YYCd?mvx{&t9NJ(v*r-q^1h_%+QX_E9Ee- zLf)m-nTo-aJY1rjHpOrOCTf%U<-n8IHNLco>@atfU>8V@sJZoX$X7kc+KV2-m&iGd ziIA2e2od>BufT}-zGKW>DKTR52MIHulqfd}Gtm!GV>Dhc>0ly8)n-VRVoDLm*uYIN KEGiH2eE%O{!Tclu literal 42259 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 diff --git a/docs/.doctrees/recipes/recipes/reasoning_about_shapes.doctree b/docs/.doctrees/recipes/recipes/reasoning_about_shapes.doctree index 5710d309db814467cdb2df6eae6c32607d319099..3ca9ce31c923df9601a3d6368b28d10d300152ab 100644 GIT binary patch delta 4580 zcmd5zb7r`M`lOXowkZ3HN^dB;qh3|xk?EsnzE^LqVg&b$cz)X3 z+m4s7db@7(Ok@Sm#Bg74f&LJ6!X8CE_Z;{TmRG%ez>{}r0Jjf`)8qI`w>WrP>u(vx zZnv;B?EkO>cg~BWy@I<1-)Qv?pTo{pv40*rVS-CoJdYhc@+aR4!X1mmKmr2|@oXDz zzxBtKR$-+Zf7GgtHW=#a^!B$*b+plJFv#u<22E;q|y@LqCbZo%Ky15WYW0xVCEEnWgwT6tOD?6`M!P`vHH&MrLBBVHzu zy)zEHU0O>2Ow~O3oXgvobVeZSfcF@#50vn~5`z63Dj`$|n{jwDbk$Eqry=Oj zC)?k)pN6C6o$B#T{S*$LIItkP`o)WL@=5j&JH?Sj`PleYFZsqfIGVV(PgoigFU)9# z<#yld5J()ix8a$K_yV_nR0bCOm#=~s@zyop%>_6ufinS73R%zo^cLLUo(+fe#Hd&W z`4^-}BlA)-(#E7xyU>xCczZQT1BN_=nmsHz0UC!g4>PH?e0nh=#`(JM}bH+vFft z=HNx7jwz&)(8#V5Wp17>Z$G*hr`tgqn>mAt0J4(NNmUwpEpZ2>LEqVtlK3Z6Z9~1; zs&L?Sw@L3VyGq%`P$?9PG z2BjW!E@ABD;Bb9S$R)$a-iqr;9IuMs5h&rU2TC!;eH??Q1#f8-gP}DY(1kxO$iSyq=K*0a^YB zi%s^r2^JOWkl6b+K@*;<$^Vf%({(3yLNDAHvZkD%C8&YG;8PbKBBGOxwD z;(VD`(hA}AUVzuw+ED4#BI}-fdsA(FwXKG3h6RIfA0WA@-ezsES@jmi*g!V}8>v~* z(a|8Zk!f*e!b+00zM5_{RndaG3(kW$(BXyh7RvphX`mB#Ucw$yaLczAUK;avIQ?gr z@q9aYAeSJy0=G;+JiEX-D$H1+{?8!Y%3P!FKdIX5NCANEXDw5IgQ+PmkmU0hIc#50 z=vRA>QeU8oxFocH-#+Rrs@k_iwYxN0J4Gdy7DnC(e+4=yCQ^+`v)_GjFZm+pJttUXfJF)# zP2Z{{y)?~kbroa`K(PCu5lGkU#%RtXqv-EB$0+(SM3oYv zdN7p`J;+U?%8)Yea4;?eNKS6xBE5GcKcjhvwghmYV?}Z3A9=5(tq&v+Y$5d*yiwGE zR*fq1Yp722>-@B>!(hg4haU^~61tlokG2&=M5v`flu*z`O`*vGBlR;_PJ=QEf3)Re z;#S2@qVB?LiA&HS&jL3W4KD@SOxIP>)qEKx85}Dr-8u}dt7HZMLHBkhqQxRLHQ@SP zQ7skwXBfAT*x#33ex^X*E!HM{4n1Sw1wuamo_yZJK2)Hg;zTME-7U^eATQ*GGtvnQ zc|)V!CEriD0#llKHarYwE?U?zsmrWE8$F0jbX_m`Cq-#p*IpS9izLgju=MeRsfy1P zsPW*-cCve5iI8HnaglXKsKKf&Xhb`OZJ^CvF)@mYVv4YW9~?R}!}_D*EJ zG;+!sx{<|>+JGDuu)BswbCwj@%i z?oh+c_9Y{-5}`!EkrJcqGD>^>uj%Xom{F#%wDHGzZd-%VY@tuq(iV&HG!P8|BS?)% zU%FGtHbN7vp?Q=b;}fej9B2n}BUhGJ6M% QgTMzi)GqA;HN3I+UzoYCSO5S3 delta 5179 zcmd5=TWlOx8Sbp_i|fSp#vy4MpIyh^^<~$wy{?ng&P9a-Lt#Lo|(*L zJr{4bt~&)O)D=tW_Dn>ncqoV$c%t|L6;RqDss<^7074ZZpdy9K10aET;8F_zIkU67 z-ZXJrXh2%coH_fSf4=|r{pZYUpB7$tN@#ep;o>s~UuyVl%hB*d1e>}hX>$mtb=yKG zM4Tfgk~B13IH?;M(G{D{xMF*8eMx$yMd@l$sWH_ zK2nuaRBhcx9}I1z`={!i8%&R#hL|;#GOfxV<*C}2iNEgmeRlVn%=F*aQqIg#NR0XcHgR z*nSFZ@20QTwbEQytI$jLw|C$3M@h};22=yv-UR&zNhOj+7u&x*c@l=mg3QtOphehe z#7zqu)>5S3ck((4f)xeyoz2??Qo>MApXeNK&9HFxiBU0jq>sMRxw~O(G(MK(2Jlgh z0q3d=*x*#<`pWUNNsI;NR@gI{k_PF_GLi9uru&J?97&)a7%lL8HPVu0U_*jkmx7Hs z667q)C__>BI#Zg{q*)27#{wCwK)UnFu)r&h=N7&_xoJb=vqka4L-xR}q1_%?IXC5H zk3~MiSVY+E1t1wumIA;=H34v|0?^tqWvAsVs3=p;%k)Cmi;+siZ;>)wtTr*e>?g*M zY=X|GWecvwrYxDowqm*R0z59cw%99ICCy%rIXNCr-p7-Mk7_V~qZ+ewbPY!)4??ez zvJh3^M_fvW0@8?;*NwBtv|)#fp|!wP}m;|N#DtG^b zo+779M+6LMoP|^c8^KQ4L}y6O zLTR>fr!Q@r7vARrc|$pMIGpPrBxEz(&WX|ZgqLP~RAcAwtL=2OH6i=l!(KOAkVu{f zM$%Z%B3TKVQK?t)0~WM%2rAJm$spy3rVGd*a}qR0gEK(T-ztc@ewKAWf+6JIDTi}O z&T!xbUJ9%|UGe5vuJaEM*5O;=x;?CNq~y1~Ec-jpGM#z9ej*v)Mc?j>cd^0l8s|3$ z=#RQ1^lBv3Vb*4tMfDwH&I$jNS=u0g+ZN$uYb#`l5$>Wlo#5_TN<{jD!C((M0Gk8I zNfQop83PWPBZ_>AV+X7w8r#*x3o!Bh8x9`U^Gl=NUXno5-fD=VufKElH18{pLdRTaxz8U?F zP+WCmjv$<(p@Bu=G+i0!51nSx>^nvItR$bNKO2}9X6e=VNFzI4$Qimag6Ke^N667* z2}Cas&b4E<&TGaOLFAJR^LBsh-N2?k0SZF2e|QsperRypNe|V>;Rbnf3U1{_kfz~* z5WUoYV!YC%<>#0@;F8l-qUG5tw9nBe;xobv6||o(qx}k?-6uRrFC-3Et=(C$X8jz>yZ-y1&0zI*_r}2jXO+G{)-x+S3=0mtZ6^LoN zGP#9*Z>J<&r->0Pyak9JZ~i6x3$M9GL!)04{zP9H-6~w8*G3OCya=;zQZzOxd~x;6 zm@0Hc>zE#BULhF3pBwAw_2ke*7@n}$4Y3NJ;k~Vm{oN-IvRmv(pt7+i<+E$77^d^F z&2^F%r~Af-BVnkfHD9fG-SMwhxdJaMx;%br<4*wVk}L0Kn!jbrKVAL9cuzpUtL?kK zRM*6CFibDs9|?r(=r8Wy;V|}C3|y*ude{(0fIT#Wfk3g*)NLa}Trpa#SKvtG9x1W_zCkx182C4P Cq8EPv diff --git a/docs/.doctrees/recipes/recipes/swap_tensors.doctree b/docs/.doctrees/recipes/recipes/swap_tensors.doctree index c4e30f8eba48d5d2afbadb80ea66d5276396894d..b3c51c3a2cf54277964b6cb82b26618017f01c01 100644 GIT binary patch literal 52336 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≠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 literal 55682 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 UifLHfA^RQ-fJj%0oni6+0TiRsi~s-t diff --git a/docs/.doctrees/recipes/recipes/tensorboard_with_pytorch.doctree b/docs/.doctrees/recipes/recipes/tensorboard_with_pytorch.doctree index ae19a5dec249ba360d6bccd8c53d8fa8080e84fd..245d33d9c3afbb2cdf9afe48b7c48741178d233d 100644 GIT binary patch literal 24815 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 Cng@oWymEntclUTb_V$kz&~tHDd>D-j~xHs-gI6 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 Vtzk14r&yXPSYH>hbH6Ys{}-m1aHIeL literal 16401 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 N#hU6MI`89#`d=_a0YLx& diff --git a/docs/.doctrees/recipes/torch_logs.doctree b/docs/.doctrees/recipes/torch_logs.doctree index cf7fe089db0a5944f350a990e8f755d35cd468b3..963bf6fc4ceb0264d2c97f456109013ce00dcd1f 100644 GIT binary patch delta 5005 zcmeHLT~Hg>70yBgnAi&eZH|q}V zd$sW=b^8y~9Upcv?Z@c7^#^Ev{w(@7tME}-t*crx_((u<_o2(H>I#*|on>Vlli9#A zx!z3WP3Xz&(R8W`U0zcG{}0x@#d?LnEn(!MIOXBP9x?3W7yD_uJ#LfTPK#%Q_}VG# zAB_(9`S5k@KSS4RhMMuhUEw|_PA-BZzR}A^M(|ue?z@W@IXE4^cviaEi-Y5^X;=I4 zBaHP(ds|0KtCQ?Ib{ZcXKF!ZhM@R1pv!8wA?v>3ofxY=D%;NgE9_|EZVhkzCs4{mg zvOWDvcK?6KVx7Ln*|O+iUXYDs3x0s^<-GqwzU+b|59kh=f(-KYl@*$Eq5-#bqX)wA zCh;w8v)Zf`v@m#HxO6A_$*4Fq2%O+nG?%;aUy%B1ZjE6pV|4YQKjxI8#=L#$l@=Qc ztg#qu@UR2@E^j|&MkV>h#tdn8NsP>@Xp1e;8~KM>Yj+dVwoMJ39|xwS<%bn@_NMCzaPukxM?~(eNW1Cx*%*}>WL>9)Kzfu ztxc*ENo7gxhB)jVfmz-hEmahuoDGF+IV`7%E{aKqU?0_j?U9y8g}_iOpt>rORAJ26 zA5>}u!~ma*@Zm{_F+c-gEN~0Lh3k0vf&vbRm=N?6d_cij@usXpS&kT5a` zkkJ<`O-#Y2hD6sNh{aGGNwrzOqM^E&t;9t6(a#DGQc*~fGW4Ku72Evpo#zpc6AxID zzV{y2fsd#VqWl&34DHP{8D4j7=Y0Yf6udojLd!7Y!Ham|Q#|0t zfw`#LjRzLd$&I_KrF$VrXEVNZm7iY}W+orH2>_^cTeh>c)44MnQAPFWP|=~CH2j{W z0epIF@e7{lg*(C!!oE2?*dHC^#9KEY!=eK|D0Ou6hsPXk?dbPKCu@j!r?bOx+yVBQ zN?(>Kv~+J=nx6(`%I?DWbur+HiN%OA2^E*N*c4{c5ic#_$h9P?B&s4-QruvcuK4iq zAnp%|Gv||KbRr<@!^lft362qbjz{k?jvvlTI9xs!C^2)&#mmSr=*km zf585$0@j+Nl?pi@jY>W?Jy*WEN>{m2M_#3&>P5>AG98+Y@>5bKZ%N4HeJ$NhPG%h$ z$ksP--t?B{O3uM-gmLp3SgI3&gDHVGn;N)oW;62}#>jk5+61$O*~*w+vy$OqTZR}$ z((Ix(Jj9lo)vmp1P^yitm(W+6E7{#-5#Qqdgz@4#lEd0StIZbi(KbHVCJc%ABd>1w zCgViZJqASu&t8d6dttJL9){=q(Nj|_lmew)L4GKmDe4}IPAouS$%a`>NpoSy4UJFX zQ^|t7IX;ACv zQpVZZQL0Wc(8&JsKYxC+{`_CN1H=PgyDt+T!~s*M0OqFv7z?V%%VOIAJ}Ph$0Mh`& zGF+O>Lhlqr3vM^DG9A0DG`6-MJ=${YC@q{H5GFphH_{r5KE!$)Xn|J40s{u?UAKas zxX~-KfbH*Upnsh)y$&b%PHmsw!j()_^QoY#y_#ISlFp*j3>>K#KyNcDDcfpHO-Dz{ zc2V!5@v;Ke`j~FfBISKt$rQeDGU!3YYIzdvSSid0NH+F`66Xn$Z7^Zt$uWL;Lg)#S z%*6iQ=x84u^J(m^N-Gy+d!sI--tvFml5KT9WKW&LQ^-DC6wcMVG6dGe%srHBuL^;+ z33F8JI68Y$(?O|+#J?aV8U4-twuuvCiYlgmKf=4OWsKG!K2J zOSa;J@&a_pn!Vm0wA>bGq}v*P3>JEdyx2YT}Cx9xwfO-weL{XXr#6# pXFGX8ZlSKv)8TJ-=$qOiD$DiMlYq^%&d}dqc|MIgfu285{tpF+;~M|~ delta 5693 zcmeHLU2Ggz70%dM$C(;xyYr&NmNJv{^gWX~fmiO-LwP%*u zneqJW))L92^e3X)N`xp7h-dGdbMLw5eCM3+%-gRDcYY$oZpMB(d-a{z@7o7+#KA-88C%s?(ZcMv zX1>1s^z4;+WUf1kp`+=!tEj9x3jM6Tcdw$U!)n{K3+fiVeR#Ilf6NRISCvCcRi&$P z$Y0q!DE_>a&UQ<&v9r?HB>m`1&v+XPifSXrbqq_z8d7z~GV-oWU`-(?n+*-jW)aa# zs%7X!qC2RBK_RD+B*Hc-6HQ}(na*7O9`H)fi+NHsblb781Dh&F894^Rrm3wX)j=No zFmg7rN`xz$3bsKE87pu$*d!|{*(jQ-MzYxyzfJ<~)7RAK>PywShJ`c;vgOA~DGt@5P`Jg;^pUvVop>ne zM%QF40T#VP*E;*@;qIA(Y3W>=&UH)v!}Hx&1d0A`;N-)xdE&TcfP4QJ{ZIG2H|pj> ziz;ti)d6k*eDWMFnheBcat0u569>5_!pK(Ha)9L(SC<_XlC!L+a9xvFD~46H0p5sc zgr!4SwTX!Hd4~8cfcDXgySTb(8IW0!E-b%4c<7iHLi)vBEV_I17x&X9NA=)JQJYW% z13%owpfB1*kN8Pn^U)3$A%?>D>50xh`uF%4J<@ajbVm>pD3ejdZds?l?8$g%L3g7D zc8L9IfX2!P3ktCag5YD#hEfDE+@-8-D}4YE9(ozXa|F3I$wM6zWd-Z21Zl?VDy!xI z9|!)z&W^{+8QiSM5TU6$Ng+5GvD7JHjaAUdv0_k7gDseOHWW)80n!k`fVvt~w`W&_ z`|KzxpZ7xhypLCF4|}~3E9--Mi%bNhjWs%=J&OJ*{-p3XC?3P!UjY&Thpx&i`wrGv2n%_bT8>yvX7ADhpBai#^l2#{=IU@?%7ETy6UL9@uO>$qru2#~rm zAy7*qsY*XRc4Ix$N4kJ6$5O${y@ccEx{_58jCMqZ7*$v#w*h4w^CYBosCLMHv>+ zD$xleYve{w>5*ER9;C1Lk915$8Yca5?^tXy zEj>EHbDTeI%keYO96xQkIieh4r2FVnwGxBW02YRo<1l{o)febznUlgO<7s2!jG@aK z2WLRmqDyr<3m02}JH`u7P&_Dke}t#6vIS0Hl`~4>DJ#nB79WH%6Y!S$OarB)KGs0j zh9(>iHPI$qA8B}ghvS$CIY6ER(&wp+>ao(o2pnUHMGOQ@cZ)eK&PHfpy{Z*#MHVM^g;z?w=Q2g}uU@)|0k12^h5%KFMOkA9Rvx3CR zQRHGU2J|aLGy7|Vp=&+8nI4}6WhbN`)F0H-$g&OV)U_vRbSJ$G;3j_}CBoDa8a z0Jm|^iNGxivx+;d!JMOGM=cR;J&D#07cpkYqsu^$R-V@Dk95JW4 z9GF7D6gP)!#e{w%-A#+b?R`!4sF;}Y*c~eE(3TCYMDo?A1WxlV?9JCZTwSj~l|Akd z-?0VvD}A%)ytm#6NLMcdn!wFeZzKVSRCu!i92{vNL|+;H z_TUSEfI=DmtHnP0O`~uFsvk4Ag+(OugRK#HFW{z?r&B4k+ziWfZDfiZ=Mqva8&>p|CR4p6=+X^KHeC4$AE_AgU%sl$yeMGR@+we2R{j+o#v6E^Q8t3vEWZjGIyv0Hrcfzh+A!fW)g^r-OKrj~xRrHu{h z$yPd@9_EjUR=So>ywy4`#D2sz+AnOhbo>e)jaI*V)3uI1`sc~s*w6U;e@%WUTnIY* z7AhgiAyEkVL}Znbig928A^k{H&aqFd60i$>RjNnImi(43VN;d(7nsSZ$6=CZ{hSN2 zYHbJI7KC`0-+X-vx6L#UBt(!^EnI2jW)P^*v5T{984xQ>(3dYR3K{yBi;s6sum$#+ aqVNas3^-hxIU#I*^U_F*aEo5QJo;a5UFfp_ diff --git a/docs/.doctrees/recipes/torchscript_inference.doctree b/docs/.doctrees/recipes/torchscript_inference.doctree index 94f49bd7b215420f4acc6d5aaf41affa725e00fa..8ae9b5b8cca2140f4cf66026156a3b10f813a412 100644 GIT binary patch delta 6586 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 literal 25957 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 BEE)g+ diff --git a/docs/_downloads/1bba1c0153db192997cdb32f9c312b2c/reasoning_about_shapes.ipynb b/docs/_downloads/1bba1c0153db192997cdb32f9c312b2c/reasoning_about_shapes.ipynb index 430b711..845367e 100644 --- a/docs/_downloads/1bba1c0153db192997cdb32f9c312b2c/reasoning_about_shapes.ipynb +++ b/docs/_downloads/1bba1c0153db192997cdb32f9c312b2c/reasoning_about_shapes.ipynb @@ -15,7 +15,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# Reasoning about Shapes in PyTorch\n\nWhen writing models with PyTorch, it is commonly the case that the parameters\nto a given layer depend on the shape of the output of the previous layer. For\nexample, the ``in_features`` of an ``nn.Linear`` layer must match the\n``size(-1)`` of the input. For some layers, the shape computation involves\ncomplex equations, for example convolution operations.\n\nOne way around this is to run the forward pass with random inputs, but this is\nwasteful in terms of memory and compute.\n\nInstead, we can make use of the ``meta`` device to determine the output shapes\nof a layer without materializing any data.\n" + "\n# \u5728PyTorch\u4e2d\u63a8\u7406\u5f62\u72b6\n\n\u5728\u4f7f\u7528PyTorch\u7f16\u5199\u6a21\u578b\u65f6,\u901a\u5e38\u4f1a\u9047\u5230\u67d0\u4e00\u5c42\u7684\u53c2\u6570\u53d6\u51b3\u4e8e\u524d\u4e00\u5c42\u8f93\u51fa\u7684\u5f62\u72b6\u7684\u60c5\u51b5\u3002\u4f8b\u5982,\n``nn.Linear``\u5c42\u7684``in_features``\u5fc5\u987b\u4e0e\u8f93\u5165\u7684``size(-1)``\u76f8\u5339\u914d\u3002\u5bf9\u4e8e\u67d0\u4e9b\u5c42,\u5f62\u72b6\u8ba1\u7b97\u6d89\u53ca\u590d\u6742\u7684\u7b49\u5f0f,\u4f8b\u5982\u5377\u79ef\u8fd0\u7b97\u3002\n\n\u4e00\u79cd\u89e3\u51b3\u65b9\u6cd5\u662f\u4f7f\u7528\u968f\u673a\u8f93\u5165\u8fdb\u884c\u524d\u5411\u4f20\u64ad,\u4f46\u8fd9\u5728\u5185\u5b58\u548c\u8ba1\u7b97\u65b9\u9762\u662f\u6d6a\u8d39\u7684\u3002\n\n\u76f8\u53cd,\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528``meta``\u8bbe\u5907\u6765\u786e\u5b9a\u5c42\u7684\u8f93\u51fa\u5f62\u72b6,\u800c\u65e0\u9700\u5b9e\u9645\u5316\u4efb\u4f55\u6570\u636e\u3002\n" ] }, { @@ -26,14 +26,14 @@ }, "outputs": [], "source": [ - "import torch\nimport timeit\n\nt = torch.rand(2, 3, 10, 10, device=\"meta\")\nconv = torch.nn.Conv2d(3, 5, 2, device=\"meta\")\nstart = timeit.default_timer()\nout = conv(t)\nend = timeit.default_timer()\n\nprint(out)\nprint(f\"Time taken: {end-start}\")" + "import timeit\n\nimport torch\n\nt = torch.rand(2, 3, 10, 10, device=\"meta\")\nconv = torch.nn.Conv2d(3, 5, 2, device=\"meta\")\nstart = timeit.default_timer()\nout = conv(t)\nend = timeit.default_timer()\n\nprint(out)\nprint(f\"\u6240\u9700\u65f6\u95f4: {end-start}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Observe that since data is not materialized, passing arbitrarily large\ninputs will not significantly alter the time taken for shape computation.\n\n" + "\u89c2\u5bdf\u5230,\u7531\u4e8e\u6ca1\u6709\u5b9e\u9645\u5316\u6570\u636e,\u5373\u4f7f\u4f20\u5165\u4efb\u610f\u5927\u7684\u8f93\u5165,\u7528\u4e8e\u5f62\u72b6\u8ba1\u7b97\u7684\u65f6\u95f4\u4e5f\u4e0d\u4f1a\u663e\u8457\u6539\u53d8\u3002\n\n" ] }, { @@ -44,14 +44,14 @@ }, "outputs": [], "source": [ - "t_large = torch.rand(2**10, 3, 2**16, 2**16, device=\"meta\")\nstart = timeit.default_timer()\nout = conv(t_large)\nend = timeit.default_timer()\n\nprint(out)\nprint(f\"Time taken: {end-start}\")" + "t_large = torch.rand(2**10, 3, 2**16, 2**16, device=\"meta\")\nstart = timeit.default_timer()\nout = conv(t_large)\nend = timeit.default_timer()\n\nprint(out)\nprint(f\"\u6240\u9700\u65f6\u95f4: {end-start}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Consider an arbitrary network such as the following:\n\n" + "\u8003\u8651\u4ee5\u4e0b\u4efb\u610f\u7f51\u7edc:\n\n" ] }, { @@ -62,14 +62,14 @@ }, "outputs": [], "source": [ - "import torch.nn as nn\nimport torch.nn.functional as F\n\n\nclass Net(nn.Module):\n def __init__(self):\n super().__init__()\n self.conv1 = nn.Conv2d(3, 6, 5)\n self.pool = nn.MaxPool2d(2, 2)\n self.conv2 = nn.Conv2d(6, 16, 5)\n self.fc1 = nn.Linear(16 * 5 * 5, 120)\n self.fc2 = nn.Linear(120, 84)\n self.fc3 = nn.Linear(84, 10)\n\n def forward(self, x):\n x = self.pool(F.relu(self.conv1(x)))\n x = self.pool(F.relu(self.conv2(x)))\n x = torch.flatten(x, 1) # flatten all dimensions except batch\n x = F.relu(self.fc1(x))\n x = F.relu(self.fc2(x))\n x = self.fc3(x)\n return x" + "import torch.nn as nn\nimport torch.nn.functional as F\n\n\nclass Net(nn.Module):\n def __init__(self):\n super().__init__()\n self.conv1 = nn.Conv2d(3, 6, 5)\n self.pool = nn.MaxPool2d(2, 2)\n self.conv2 = nn.Conv2d(6, 16, 5)\n self.fc1 = nn.Linear(16 * 5 * 5, 120)\n self.fc2 = nn.Linear(120, 84)\n self.fc3 = nn.Linear(84, 10)\n\n def forward(self, x):\n x = self.pool(F.relu(self.conv1(x)))\n x = self.pool(F.relu(self.conv2(x)))\n x = torch.flatten(x, 1) # \u5c55\u5e73\u9664\u6279\u6b21\u7ef4\u5ea6\u5916\u7684\u6240\u6709\u7ef4\u5ea6\n x = F.relu(self.fc1(x))\n x = F.relu(self.fc2(x))\n x = self.fc3(x)\n return x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can view the intermediate shapes within an entire network by registering a\nforward hook to each layer that prints the shape of the output.\n\n" + "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4e3a\u6bcf\u4e00\u5c42\u6ce8\u518c\u4e00\u4e2a\u524d\u5411\u94a9\u5b50\u6765\u6253\u5370\u8f93\u51fa\u7684\u5f62\u72b6,\u4ece\u800c\u67e5\u770b\u6574\u4e2a\u7f51\u7edc\u4e2d\u95f4\u5c42\u7684\u5f62\u72b6\u3002\n\n" ] }, { @@ -80,7 +80,7 @@ }, "outputs": [], "source": [ - "def fw_hook(module, input, output):\n print(f\"Shape of output to {module} is {output.shape}.\")\n\n\n# Any tensor created within this torch.device context manager will be\n# on the meta device.\nwith torch.device(\"meta\"):\n net = Net()\n inp = torch.randn((1024, 3, 32, 32))\n\nfor name, layer in net.named_modules():\n layer.register_forward_hook(fw_hook)\n\nout = net(inp)" + "def fw_hook(module, input, output):\n print(f\"{module}\u7684\u8f93\u51fa\u5f62\u72b6\u4e3a{output.shape}\u3002\")\n\n\n# \u5728\u6b64torch.device\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u4e2d\u521b\u5efa\u7684\u4efb\u4f55\u5f20\u91cf\u90fd\u5c06\u5728meta\u8bbe\u5907\u4e0a\u3002\nwith torch.device(\"meta\"):\n net = Net()\n inp = torch.randn((1024, 3, 32, 32))\n\nfor name, layer in net.named_modules():\n layer.register_forward_hook(fw_hook)\n\nout = net(inp)" ] } ], diff --git a/docs/_downloads/41526f38c5c72d94f024660d73cef185/torch_logs.ipynb b/docs/_downloads/41526f38c5c72d94f024660d73cef185/torch_logs.ipynb index b0cf651..bc9dd66 100644 --- a/docs/_downloads/41526f38c5c72d94f024660d73cef185/torch_logs.ipynb +++ b/docs/_downloads/41526f38c5c72d94f024660d73cef185/torch_logs.ipynb @@ -15,7 +15,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# (beta) Using TORCH_LOGS python API with torch.compile\n**Author:** [Michael Lazos](https://github.com/mlazos)\n" + "\n# (Beta) \u4f7f\u7528 TORCH_LOGS python API \u4e0e torch.compile\n**\u4f5c\u8005:** [Michael Lazos](https://github.com/mlazos)\n" ] }, { @@ -33,14 +33,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This tutorial introduces the ``TORCH_LOGS`` environment variable, as well as the Python API, and\ndemonstrates how to apply it to observe the phases of ``torch.compile``.\n\n

Note

This tutorial requires PyTorch 2.2.0 or later.

\n\n\n\n" + "\u672c\u6559\u7a0b\u4ecb\u7ecd\u4e86 ``TORCH_LOGS`` \u73af\u5883\u53d8\u91cf\u4ee5\u53ca Python API,\u5e76\u6f14\u793a\u4e86\u5982\u4f55\u5c06\u5176\u5e94\u7528\u4e8e\u89c2\u5bdf ``torch.compile`` \u7684\u5404\u4e2a\u9636\u6bb5\u3002\n\n

Note

\u672c\u6559\u7a0b\u9700\u8981 PyTorch 2.2.0 \u6216\u66f4\u9ad8\u7248\u672c\u3002

\n\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Setup\nIn this example, we'll set up a simple Python function which performs an elementwise\nadd and observe the compilation process with ``TORCH_LOGS`` Python API.\n\n

Note

There is also an environment variable ``TORCH_LOGS``, which can be used to\n change logging settings at the command line. The equivalent environment\n variable setting is shown for each example.

\n\n" + "## \u8bbe\u7f6e\n\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d,\u6211\u4eec\u5c06\u8bbe\u7f6e\u4e00\u4e2a\u7b80\u5355\u7684 Python \u51fd\u6570,\u6267\u884c\u5143\u7d20\u7ea7\u52a0\u6cd5,\u5e76\u4f7f\u7528 ``TORCH_LOGS`` Python API \u89c2\u5bdf\u7f16\u8bd1\u8fc7\u7a0b\u3002\n\n

Note

\u8fd8\u6709\u4e00\u4e2a\u73af\u5883\u53d8\u91cf ``TORCH_LOGS``,\u53ef\u7528\u4e8e\u5728\u547d\u4ee4\u884c\u4e2d\u66f4\u6539\u65e5\u5fd7\u8bbe\u7f6e\u3002\u6bcf\u4e2a\u793a\u4f8b\u90fd\u663e\u793a\u4e86\u7b49\u6548\u7684\u73af\u5883\u53d8\u91cf\u8bbe\u7f6e\u3002

\n\n" ] }, { @@ -51,14 +51,14 @@ }, "outputs": [], "source": [ - "import torch\n\n# exit cleanly if we are on a device that doesn't support torch.compile\nif torch.cuda.get_device_capability() < (7, 0):\n print(\"Skipping because torch.compile is not supported on this device.\")\nelse:\n @torch.compile()\n def fn(x, y):\n z = x + y\n return z + 2\n\n\n inputs = (torch.ones(2, 2, device=\"cuda\"), torch.zeros(2, 2, device=\"cuda\"))\n\n\n# print separator and reset dynamo\n# between each example\n def separator(name):\n print(f\"==================={name}=========================\")\n torch._dynamo.reset()\n\n\n separator(\"Dynamo Tracing\")\n# View dynamo tracing\n# TORCH_LOGS=\"+dynamo\"\n torch._logging.set_logs(dynamo=logging.DEBUG)\n fn(*inputs)\n\n separator(\"Traced Graph\")\n# View traced graph\n# TORCH_LOGS=\"graph\"\n torch._logging.set_logs(graph=True)\n fn(*inputs)\n\n separator(\"Fusion Decisions\")\n# View fusion decisions\n# TORCH_LOGS=\"fusion\"\n torch._logging.set_logs(fusion=True)\n fn(*inputs)\n\n separator(\"Output Code\")\n# View output code generated by inductor\n# TORCH_LOGS=\"output_code\"\n torch._logging.set_logs(output_code=True)\n fn(*inputs)\n\n separator(\"\")" + "import torch\n\n# \u5982\u679c\u8bbe\u5907\u4e0d\u652f\u6301 torch.compile,\u5219\u5e72\u51c0\u5730\u9000\u51fa\nif torch.cuda.get_device_capability() < (7, 0):\n print(\"\u8df3\u8fc7,\u56e0\u4e3a\u6b64\u8bbe\u5907\u4e0d\u652f\u6301 torch.compile\u3002\")\nelse:\n\n @torch.compile()\n def fn(x, y):\n z = x + y\n return z + 2\n\n inputs = (torch.ones(2, 2, device=\"cuda\"), torch.zeros(2, 2, device=\"cuda\"))\n\n # \u5728\u6bcf\u4e2a\u793a\u4f8b\u4e4b\u95f4\u6253\u5370\u5206\u9694\u7b26\u5e76\u91cd\u7f6e dynamo\n def separator(name):\n print(f\"==================={name}=========================\")\n torch._dynamo.reset()\n\n separator(\"Dynamo \u8ddf\u8e2a\")\n # \u67e5\u770b dynamo \u8ddf\u8e2a\n # TORCH_LOGS=\"+dynamo\"\n torch._logging.set_logs(dynamo=logging.DEBUG)\n fn(*inputs)\n\n separator(\"\u8ddf\u8e2a\u7684\u56fe\u5f62\")\n # \u67e5\u770b\u8ddf\u8e2a\u7684\u56fe\u5f62\n # TORCH_LOGS=\"graph\"\n torch._logging.set_logs(graph=True)\n fn(*inputs)\n\n separator(\"\u878d\u5408\u51b3\u7b56\")\n # \u67e5\u770b\u878d\u5408\u51b3\u7b56\n # TORCH_LOGS=\"fusion\"\n torch._logging.set_logs(fusion=True)\n fn(*inputs)\n\n separator(\"\u8f93\u51fa\u4ee3\u7801\")\n # \u67e5\u770b inductor \u751f\u6210\u7684\u8f93\u51fa\u4ee3\u7801\n # TORCH_LOGS=\"output_code\"\n torch._logging.set_logs(output_code=True)\n fn(*inputs)\n\n separator(\"\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Conclusion\n\nIn this tutorial we introduced the TORCH_LOGS environment variable and python API\nby experimenting with a small number of the available logging options.\nTo view descriptions of all available options, run any python script\nwhich imports torch and set TORCH_LOGS to \"help\".\n\nAlternatively, you can view the `torch._logging documentation`_ to see\ndescriptions of all available logging options.\n\nFor more information on torch.compile, see the `torch.compile tutorial`_.\n\n\n" + "## \u7ed3\u8bba\n\n\u5728\u672c\u6559\u7a0b\u4e2d,\u6211\u4eec\u4ecb\u7ecd\u4e86 TORCH_LOGS \u73af\u5883\u53d8\u91cf\u548c python API,\u5e76\u901a\u8fc7\u5b9e\u9a8c\u4e86\u4e00\u5c0f\u90e8\u5206\u53ef\u7528\u7684\u65e5\u5fd7\u9009\u9879\u3002\n\u8981\u67e5\u770b\u6240\u6709\u53ef\u7528\u9009\u9879\u7684\u63cf\u8ff0,\u8bf7\u8fd0\u884c\u4efb\u4f55\u5bfc\u5165 torch \u7684 python \u811a\u672c,\u5e76\u5c06 TORCH_LOGS \u8bbe\u7f6e\u4e3a \"help\"\u3002\n\n\u6216\u8005,\u60a8\u53ef\u4ee5\u67e5\u770b `torch._logging \u6587\u6863`_ \u4ee5\u67e5\u770b\u6240\u6709\u53ef\u7528\u65e5\u5fd7\u9009\u9879\u7684\u63cf\u8ff0\u3002\n\n\u6709\u5173 torch.compile \u7684\u66f4\u591a\u4fe1\u606f,\u8bf7\u53c2\u9605 `torch.compile \u6559\u7a0b`_\u3002\n\n\n" ] } ], diff --git a/docs/_downloads/46064f5dec95799fe5460a89db85ffdd/dynamic_quantization.py b/docs/_downloads/46064f5dec95799fe5460a89db85ffdd/dynamic_quantization.py index eb9605d..2777025 100644 --- a/docs/_downloads/46064f5dec95799fe5460a89db85ffdd/dynamic_quantization.py +++ b/docs/_downloads/46064f5dec95799fe5460a89db85ffdd/dynamic_quantization.py @@ -1,243 +1,179 @@ """ -Dynamic Quantization +动态量化 ==================== -In this recipe you will see how to take advantage of Dynamic -Quantization to accelerate inference on an LSTM-style recurrent neural -network. This reduces the size of the model weights and speeds up model -execution. +在这个示例中,您将看到如何利用动态量化来加速 LSTM 风格的循环神经网络的推理。这可以减小模型权重的大小,并加快模型执行速度。 -Introduction +介绍 ------------- -There are a number of trade-offs that can be made when designing neural -networks. During model development and training you can alter the -number of layers and number of parameters in a recurrent neural network -and trade-off accuracy against model size and/or model latency or -throughput. Such changes can take lot of time and compute resources -because you are iterating over the model training. Quantization gives -you a way to make a similar trade off between performance and model -accuracy with a known model after training is completed. +在设计神经网络时,可以做出多种权衡。在模型开发和训练期间,您可以改变循环神经网络中的层数和参数数量,在模型大小和/或模型延迟或吞吐量与精度之间进行权衡。由于您需要重复模型训练过程,因此这种改变需要大量的时间和计算资源。量化为您提供了一种在已知模型上在性能和模型精度之间进行权衡的方式,而无需重新训练模型。 -You can give it a try in a single session and you will certainly reduce -your model size significantly and may get a significant latency -reduction without losing a lot of accuracy. +您可以在单个会话中尝试一下,您肯定会显著减小模型大小,并可能在不会损失太多精度的情况下获得显著的延迟减少。 -What is dynamic quantization? +什么是动态量化? ----------------------------- -Quantizing a network means converting it to use a reduced precision -integer representation for the weights and/or activations. This saves on -model size and allows the use of higher throughput math operations on -your CPU or GPU. +量化网络意味着将其转换为使用较低精度的整数表示形式来表示权重和/或激活。这可以减小模型大小,并允许在 CPU 或 GPU 上使用更高吞吐量的数学运算。 -When converting from floating point to integer values you are -essentially multiplying the floating point value by some scale factor -and rounding the result to a whole number. The various quantization -approaches differ in the way they approach determining that scale -factor. +从浮点数转换为整数值时,您实际上是将浮点数乘以某个比例因子,然后将结果舍入为整数。不同的量化方法在确定该比例因子的方式上有所不同。 -The key idea with dynamic quantization as described here is that we are -going to determine the scale factor for activations dynamically based on -the data range observed at runtime. This ensures that the scale factor -is "tuned" so that as much signal as possible about each observed -dataset is preserved. +这里介绍的动态量化的关键思想是,我们将根据运行时观察到的数据范围动态确定激活的比例因子。这可确保比例因子被"调整"为尽可能保留每个观察到的数据集的信号。 -The model parameters on the other hand are known during model conversion -and they are converted ahead of time and stored in INT8 form. +另一方面,模型参数在模型转换期间是已知的,它们会提前转换并以 INT8 形式存储。 -Arithmetic in the quantized model is done using vectorized INT8 -instructions. Accumulation is typically done with INT16 or INT32 to -avoid overflow. This higher precision value is scaled back to INT8 if -the next layer is quantized or converted to FP32 for output. +量化模型中的算术运算使用矢量化的 INT8 指令完成。累加通常使用 INT16 或 INT32 来避免溢出。如果下一层是量化的,则将此较高精度值缩放回 INT8;如果是输出,则将其转换为 FP32。 -Dynamic quantization is relatively free of tuning parameters which makes -it well suited to be added into production pipelines as a standard part -of converting LSTM models to deployment. +动态量化相对来说没有太多需要调整的参数,因此非常适合作为将 LSTM 模型转换为部署的标准部分添加到生产管道中。 +.. note:: + 本示例中采用的方法的局限性 + 本示例提供了对 PyTorch 中动态量化功能的快速介绍,以及使用它的工作流程。我们的重点是解释用于转换模型的特定函数。为了简洁和清晰,我们做出了一些重大简化,包括: -.. note:: - Limitations on the approach taken here - - - This recipe provides a quick introduction to the dynamic quantization - features in PyTorch and the workflow for using it. Our focus is on - explaining the specific functions used to convert the model. We will - make a number of significant simplifications in the interest of brevity - and clarity - - -1. You will start with a minimal LSTM network -2. You are simply going to initialize the network with a random hidden - state -3. You are going to test the network with random inputs -4. You are not going to train the network in this tutorial -5. You will see that the quantized form of this network is smaller and - runs faster than the floating point network we started with -6. You will see that the output values are generally in the same - ballpark as the output of the FP32 network, but we are not - demonstrating here the expected accuracy loss on a real trained - network - -You will see how dynamic quantization is done and be able to see -suggestive reductions in memory use and latency times. Providing a -demonstration that the technique can preserve high levels of model -accuracy on a trained LSTM is left to a more advanced tutorial. If you -want to move right away to that more rigorous treatment please proceed -to the `advanced dynamic quantization -tutorial `__. - -Steps -------------- +1. 您将从一个最小的 LSTM 网络开始 +2. 您只需用随机隐藏状态初始化网络 +3. 您将使用随机输入来测试网络 +4. 您不会在本教程中训练网络 +5. 您将看到,与我们开始时的浮点网络相比,量化后的网络更小且运行速度更快 +6. 您将看到,量化网络产生的输出张量值与 FP32 网络输出的值在同一数量级,但我们并未在这里展示该技术在经过训练的 LSTM 上能够保留较高模型精度的情况 -This recipe has 5 steps. +您将了解如何进行动态量化,并能够看到内存使用和延迟时间的潜在减小。关于该技术在经过训练的 LSTM 上能够保留较高模型精度的演示,将留待更高级的教程。如果您想直接进入更严格的处理,请继续学习 `高级动态量化教程 `__。 -1. Set Up - Here you define a very simple LSTM, import modules, and establish - some random input tensors. +步骤 +------------- -2. Do the Quantization - Here you instantiate a floating point model and then create quantized - version of it. +本示例包含 5 个步骤。 -3. Look at Model Size - Here you show that the model size gets smaller. +1. 设置 - 在这里,您定义一个非常简单的 LSTM,导入模块,并建立一些随机输入张量。 -4. Look at Latency - Here you run the two models and compare model runtime (latency). +2. 执行量化 - 在这里,您实例化一个浮点模型,然后创建其量化版本。 -5. Look at Accuracy - Here you run the two models and compare outputs. +3. 查看模型大小 - 在这里,您显示模型大小变小了。 +4. 查看延迟 - 在这里,您运行两个模型并比较模型运行时间(延迟)。 -1: Set Up -~~~~~~~~~~~~~~~ -This is a straightforward bit of code to set up for the rest of the -recipe. +5. 查看精度 - 在这里,您运行两个模型并比较输出。 -The unique module we are importing here is torch.quantization which -includes PyTorch's quantized operators and conversion functions. We also -define a very simple LSTM model and set up some inputs. +1: 设置 +~~~~~~~~~~~~~~~ +这是一段直接的代码,用于为本示例的其余部分做准备。 +我们在这里导入的唯一模块是 torch.quantization,它包含了 PyTorch 的量化算子和转换函数。我们还定义了一个非常简单的 LSTM 模型,并设置了一些输入。 """ -# import the modules used here in this recipe -import torch -import torch.quantization -import torch.nn as nn +# 导入本示例中使用的模块 import copy import os import time -# define a very, very simple LSTM for demonstration purposes -# in this case, we are wrapping ``nn.LSTM``, one layer, no preprocessing or postprocessing -# inspired by -# `Sequence Models and Long Short-Term Memory Networks tutorial `__. +import torch +import torch.nn as nn +import torch.quantization + + +# 为演示目的定义一个非常简单的 LSTM +# 在这种情况下,我们只是包装了 ``nn.LSTM``、一层,没有预处理或后处理 +# 受到以下教程的启发: +# `序列模型和长短期记忆网络教程 `_, 作者 Robert Guthrie +# 和 `动态量化教程 `__。 class lstm_for_demonstration(nn.Module): - """Elementary Long Short Term Memory style model which simply wraps ``nn.LSTM`` - Not to be used for anything other than demonstration. - """ - def __init__(self,in_dim,out_dim,depth): - super(lstm_for_demonstration,self).__init__() - self.lstm = nn.LSTM(in_dim,out_dim,depth) + """基本的长短期记忆风格模型,只是包装了 ``nn.LSTM`` + 不应用于除演示之外的任何其他用途。 + """ + + def __init__(self, in_dim, out_dim, depth): + super(lstm_for_demonstration, self).__init__() + self.lstm = nn.LSTM(in_dim, out_dim, depth) - def forward(self,inputs,hidden): - out,hidden = self.lstm(inputs,hidden) - return out, hidden + def forward(self, inputs, hidden): + out, hidden = self.lstm(inputs, hidden) + return out, hidden -torch.manual_seed(29592) # set the seed for reproducibility +torch.manual_seed(29592) # 设置种子以获得可重复结果 -#shape parameters -model_dimension=8 -sequence_length=20 -batch_size=1 -lstm_depth=1 +# 形状参数 +model_dimension = 8 +sequence_length = 20 +batch_size = 1 +lstm_depth = 1 -# random data for input -inputs = torch.randn(sequence_length,batch_size,model_dimension) -# hidden is actually is a tuple of the initial hidden state and the initial cell state -hidden = (torch.randn(lstm_depth,batch_size,model_dimension), torch.randn(lstm_depth,batch_size,model_dimension)) +# 随机输入数据 +inputs = torch.randn(sequence_length, batch_size, model_dimension) +# hidden 实际上是初始隐藏状态和初始细胞状态的元组 +hidden = ( + torch.randn(lstm_depth, batch_size, model_dimension), + torch.randn(lstm_depth, batch_size, model_dimension), +) ###################################################################### -# 2: Do the Quantization +# 2: 执行量化 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -# Now we get to the fun part. First we create an instance of the model -# called ``float\_lstm`` then we are going to quantize it. We're going to use -# the `torch.quantization.quantize_dynamic `__ function, which takes the model, then a list of the submodules -# which we want to -# have quantized if they appear, then the datatype we are targeting. This -# function returns a quantized version of the original model as a new -# module. +# 现在我们来执行有趣的部分。首先,我们创建一个名为 ``float_lstm`` 的模型实例,然后我们将对其进行量化。我们将使用 `torch.quantization.quantize_dynamic `__ 函数,它接受模型、我们希望量化的子模块列表(如果存在)以及目标数据类型。此函数返回原始模型的量化版本,作为一个新模块。 # -# That's all it takes. +# 就这么简单。 # - # here is our floating point instance -float_lstm = lstm_for_demonstration(model_dimension, model_dimension,lstm_depth) +# 这是我们的浮点实例 +float_lstm = lstm_for_demonstration(model_dimension, model_dimension, lstm_depth) -# this is the call that does the work +# 这是执行量化的调用 quantized_lstm = torch.quantization.quantize_dynamic( float_lstm, {nn.LSTM, nn.Linear}, dtype=torch.qint8 ) -# show the changes that were made -print('Here is the floating point version of this module:') +# 显示所做的更改 +print("这是该模块的浮点版本:") print(float_lstm) -print('') -print('and now the quantized version:') +print("") +print("现在是量化版本:") print(quantized_lstm) ###################################################################### -# 3. Look at Model Size +# 3. 查看模型大小 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# We've quantized the model. What does that get us? Well the first -# benefit is that we've replaced the FP32 model parameters with INT8 -# values (and some recorded scale factors). This means about 75% less data -# to store and move around. With the default values the reduction shown -# below will be less than 75% but if you increase the model size above -# (for example you can set model dimension to something like 80) this will -# converge towards 4x smaller as the stored model size dominated more and -# more by the parameter values. +# 我们已经量化了模型。这给我们带来了什么好处?好处之一是我们用 INT8 值(和一些记录的比例因子)替换了 FP32 模型参数。这意味着存储和移动数据的大小减小了约 75%。使用默认值时,下面显示的减小量将小于 75%,但如果您将模型大小增加到更大值(例如将 model_dimension 设置为 80),随着存储的模型大小越来越多地由参数值主导,减小量将趋近于 4 倍。 # + def print_size_of_model(model, label=""): torch.save(model.state_dict(), "temp.p") - size=os.path.getsize("temp.p") - print("model: ",label,' \t','Size (KB):', size/1e3) - os.remove('temp.p') + size = os.path.getsize("temp.p") + print("模型: ", label, " \t", "大小 (KB):", size / 1e3) + os.remove("temp.p") return size -# compare the sizes -f=print_size_of_model(float_lstm,"fp32") -q=print_size_of_model(quantized_lstm,"int8") -print("{0:.2f} times smaller".format(f/q)) + +# 比较大小 +f = print_size_of_model(float_lstm, "fp32") +q = print_size_of_model(quantized_lstm, "int8") +print("{0:.2f} 倍更小".format(f / q)) ###################################################################### -# 4. Look at Latency +# 4. 查看延迟 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# The second benefit is that the quantized model will typically run -# faster. This is due to a combinations of effects including at least: +# 第二个好处是量化模型通常会运行得更快。这是由于多种效果的组合,至少包括: # -# 1. Less time spent moving parameter data in -# 2. Faster INT8 operations +# 1. 减少了移动参数数据所花费的时间 +# 2. INT8 操作更快 # -# As you will see the quantized version of this super-simple network runs -# faster. This will generally be true of more complex networks but as they -# say "your mileage may vary" depending on a number of factors including -# the structure of the model and the hardware you are running on. +# 如您所见,这个超级简单的网络的量化版本运行速度更快。对于更复杂的网络通常也是如此,但正如他们所说,"您的里程可能会有所不同",这取决于许多因素,包括模型的结构和您运行的硬件。 # -# compare the performance -print("Floating point FP32") +# 比较性能 +print("浮点 FP32") ##################################################################### # .. code-block:: python # # %timeit float_lstm.forward(inputs, hidden) -print("Quantized INT8") +print("量化 INT8") ###################################################################### # .. code-block:: python @@ -246,49 +182,45 @@ def print_size_of_model(model, label=""): ###################################################################### -# 5: Look at Accuracy +# 5: 查看精度 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# We are not going to do a careful look at accuracy here because we are -# working with a randomly initialized network rather than a properly -# trained one. However, I think it is worth quickly showing that the -# quantized network does produce output tensors that are "in the same -# ballpark" as the original one. +# 我们不会在这里仔细查看精度,因为我们使用的是随机初始化的网络,而不是经过正确训练的网络。但是,我认为值得快速展示一下量化网络确实产生了与原始网络"同一数量级"的输出张量值。 # -# For a more detailed analysis please see the more advanced tutorials -# referenced at the end of this recipe. +# 有关更详细的分析,请参阅本示例结尾处引用的更高级教程。 # -# run the float model +# 运行浮点模型 out1, hidden1 = float_lstm(inputs, hidden) mag1 = torch.mean(abs(out1)).item() -print('mean absolute value of output tensor values in the FP32 model is {0:.5f} '.format(mag1)) +print("FP32 模型中输出张量值的绝对值均值为 {0:.5f} ".format(mag1)) -# run the quantized model +# 运行量化模型 out2, hidden2 = quantized_lstm(inputs, hidden) mag2 = torch.mean(abs(out2)).item() -print('mean absolute value of output tensor values in the INT8 model is {0:.5f}'.format(mag2)) - -# compare them -mag3 = torch.mean(abs(out1-out2)).item() -print('mean absolute value of the difference between the output tensors is {0:.5f} or {1:.2f} percent'.format(mag3,mag3/mag1*100)) +print("INT8 模型中输出张量值的绝对值均值为 {0:.5f}".format(mag2)) + +# 比较它们 +mag3 = torch.mean(abs(out1 - out2)).item() +print( + "输出张量之间差值的绝对值均值为 {0:.5f},或占 {1:.2f} 百分比".format( + mag3, mag3 / mag1 * 100 + ) +) ###################################################################### -# Learn More +# 了解更多 # ------------ -# We've explained what dynamic quantization is, what benefits it brings, -# and you have used the ``torch.quantization.quantize_dynamic()`` function -# to quickly quantize a simple LSTM model. +# 我们已经解释了什么是动态量化,它带来了什么好处,您已经使用 ``torch.quantization.quantize_dynamic()`` 函数快速量化了一个简单的 LSTM 模型。 # -# This was a fast and high level treatment of this material; for more -# detail please continue learning with `(beta) Dynamic Quantization on an LSTM Word Language Model Tutorial `_. +# 这是对该材料的快速和高级处理;要了解更多详细信息,请继续学习 `(beta) 动态量化 LSTM 词语言模型教程 `_。 # # -# Additional Resources +# 其他资源 # -------------------- # -# * `Quantization API Documentaion `_ -# * `(beta) Dynamic Quantization on BERT `_ -# * `(beta) Dynamic Quantization on an LSTM Word Language Model `_ -# * `Introduction to Quantization on PyTorch `_ +# * `量化 API 文档 `_ +# * `(beta) 动态量化 BERT `_ +# * `(beta) 动态量化 LSTM 词语言模型 `_ +# * `PyTorch 量化介绍 `_ # diff --git a/docs/_downloads/642248c95070825e7ac912504a919140/Captum_Recipe.ipynb b/docs/_downloads/642248c95070825e7ac912504a919140/Captum_Recipe.ipynb index 5a7365e..d19050f 100644 --- a/docs/_downloads/642248c95070825e7ac912504a919140/Captum_Recipe.ipynb +++ b/docs/_downloads/642248c95070825e7ac912504a919140/Captum_Recipe.ipynb @@ -15,35 +15,35 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# Model Interpretability using Captum\n" + "\n# \u4f7f\u7528 Captum \u8fdb\u884c\u6a21\u578b\u53ef\u89e3\u91ca\u6027\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Captum helps you understand how the data features impact your model\npredictions or neuron activations, shedding light on how your model\noperates.\n\nUsing Captum, you can apply a wide range of state-of-the-art feature\nattribution algorithms such as \\ ``Guided GradCam``\\ and\n\\ ``Integrated Gradients``\\ in a unified way.\n\nIn this recipe you will learn how to use Captum to: \n\n- Attribute the predictions of an image classifier to their corresponding image features. \n- Visualize the attribution results.\n\n\n" + "Captum \u53ef\u4ee5\u5e2e\u52a9\u60a8\u4e86\u89e3\u6570\u636e\u7279\u5f81\u5982\u4f55\u5f71\u54cd\u6a21\u578b\u7684\u9884\u6d4b\u6216\u795e\u7ecf\u5143\u6fc0\u6d3b,\u4ece\u800c\u63ed\u793a\u6a21\u578b\u7684\u5de5\u4f5c\u539f\u7406\u3002\n\n\u4f7f\u7528 Captum,\u60a8\u53ef\u4ee5\u7edf\u4e00\u5730\u5e94\u7528\u5e7f\u6cdb\u7684\u6700\u5148\u8fdb\u7684\u7279\u5f81\u5f52\u56e0\u7b97\u6cd5,\u5982 ``Guided GradCam`` \u548c ``Integrated Gradients``\u3002\n\n\u5728\u672c\u6559\u7a0b\u4e2d,\u60a8\u5c06\u5b66\u4e60\u5982\u4f55\u4f7f\u7528 Captum:\n\n- \u5c06\u56fe\u50cf\u5206\u7c7b\u5668\u7684\u9884\u6d4b\u5f52\u56e0\u4e8e\u76f8\u5e94\u7684\u56fe\u50cf\u7279\u5f81\u3002\n- \u53ef\u89c6\u5316\u5f52\u56e0\u7ed3\u679c\u3002\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Before you begin\n\n\n" + "## \u5f00\u59cb\u4e4b\u524d\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Make sure Captum is installed in your active Python environment. Captum\nis available both on GitHub, as a ``pip`` package, or as a ``conda``\npackage. For detailed instructions, consult the installation guide at\nhttps://captum.ai/\n\n\n" + "\u786e\u4fdd\u5728\u60a8\u7684\u6d3b\u8dc3 Python \u73af\u5883\u4e2d\u5b89\u88c5\u4e86 Captum\u3002Captum \u53ef\u4ee5\u5728 GitHub \u4e0a\u83b7\u53d6,\u4e5f\u53ef\u4ee5\u4f5c\u4e3a ``pip`` \u5305\u6216 ``conda`` \u5305\u83b7\u53d6\u3002\n\u6709\u5173\u8be6\u7ec6\u8bf4\u660e,\u8bf7\u67e5\u9605\u5b89\u88c5\u6307\u5357 https://captum.ai/\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "For a model, we use a built-in image classifier in PyTorch. Captum can\nreveal which parts of a sample image support certain predictions made by\nthe model.\n\n\n" + "\u5bf9\u4e8e\u6a21\u578b,\u6211\u4eec\u4f7f\u7528 PyTorch \u4e2d\u7684\u5185\u7f6e\u56fe\u50cf\u5206\u7c7b\u5668\u3002Captum \u53ef\u4ee5\u63ed\u793a\u6837\u672c\u56fe\u50cf\u7684\u54ea\u4e9b\u90e8\u5206\u652f\u6301\u4e86\u6a21\u578b\u505a\u51fa\u7684\u67d0\u4e9b\u9884\u6d4b\u3002\n\n\n" ] }, { @@ -54,21 +54,21 @@ }, "outputs": [], "source": [ - "import torchvision\nfrom torchvision import models, transforms\nfrom PIL import Image\nimport requests\nfrom io import BytesIO\n\nmodel = torchvision.models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1).eval()\n\nresponse = requests.get(\"https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg\")\nimg = Image.open(BytesIO(response.content))\n\ncenter_crop = transforms.Compose([\n transforms.Resize(256),\n transforms.CenterCrop(224),\n])\n\nnormalize = transforms.Compose([\n transforms.ToTensor(), # converts the image to a tensor with values between 0 and 1\n transforms.Normalize( # normalize to follow 0-centered imagenet pixel RGB distribution\n mean=[0.485, 0.456, 0.406],\n std=[0.229, 0.224, 0.225]\n )\n])\ninput_img = normalize(center_crop(img)).unsqueeze(0)" + "from io import BytesIO\nimport requests\nimport torchvision\nfrom PIL import Image\nfrom torchvision import models, transforms\n\nmodel = torchvision.models.resnet18(\n weights=models.ResNet18_Weights.IMAGENET1K_V1\n).eval()\n\nresponse = requests.get(\n \"https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg\"\n)\nimg = Image.open(BytesIO(response.content))\n\ncenter_crop = transforms.Compose(\n [\n transforms.Resize(256),\n transforms.CenterCrop(224),\n ]\n)\n\nnormalize = transforms.Compose(\n [\n transforms.ToTensor(), # \u5c06\u56fe\u50cf\u8f6c\u6362\u4e3a\u503c\u5728 0 \u5230 1 \u4e4b\u95f4\u7684\u5f20\u91cf\n transforms.Normalize( # \u5f52\u4e00\u5316\u4ee5\u9075\u5faa 0 \u5747\u503c\u7684 ImageNet \u50cf\u7d20 RGB \u5206\u5e03\n mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]\n ),\n ]\n)\ninput_img = normalize(center_crop(img)).unsqueeze(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Computing Attribution\n\n\n" + "## \u8ba1\u7b97\u5f52\u56e0\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Among the top-3 predictions of the models are classes 208 and 283 which\ncorrespond to dog and cat.\n\nLet us attribute each of these predictions to the corresponding part of\nthe input, using Captum\u2019s \\ ``Occlusion``\\ algorithm.\n\n\n" + "\u5728\u6a21\u578b\u7684\u524d 3 \u4e2a\u9884\u6d4b\u4e2d,\u7c7b\u522b 208 \u548c 283 \u5206\u522b\u5bf9\u5e94\u4e8e\u72d7\u548c\u732b\u3002\n\n\u8ba9\u6211\u4eec\u4f7f\u7528 Captum \u7684 ``Occlusion`` \u7b97\u6cd5\u5c06\u8fd9\u4e9b\u9884\u6d4b\u5f52\u56e0\u4e8e\u8f93\u5165\u7684\u76f8\u5e94\u90e8\u5206\u3002\n\n\n" ] }, { @@ -79,28 +79,28 @@ }, "outputs": [], "source": [ - "from captum.attr import Occlusion \n\nocclusion = Occlusion(model)\n\nstrides = (3, 9, 9) # smaller = more fine-grained attribution but slower\ntarget=208, # Labrador index in ImageNet \nsliding_window_shapes=(3,45, 45) # choose size enough to change object appearance\nbaselines = 0 # values to occlude the image with. 0 corresponds to gray\n\nattribution_dog = occlusion.attribute(input_img,\n strides = strides,\n target=target,\n sliding_window_shapes=sliding_window_shapes,\n baselines=baselines)\n\n\ntarget=283, # Persian cat index in ImageNet \nattribution_cat = occlusion.attribute(input_img,\n strides = strides,\n target=target,\n sliding_window_shapes=sliding_window_shapes,\n baselines=0)" + "from captum.attr import Occlusion\n\nocclusion = Occlusion(model)\n\nstrides = (3, 9, 9) # \u6b65\u957f\u8d8a\u5c0f,\u5f52\u56e0\u8d8a\u7ec6\u7c92\u5ea6,\u4f46\u901f\u5ea6\u8d8a\u6162\ntarget = (208,) # ImageNet \u4e2d\u7684\u62c9\u5e03\u62c9\u591a\u7d22\u5f15\nsliding_window_shapes = (3, 45, 45) # \u9009\u62e9\u8db3\u4ee5\u6539\u53d8\u5bf9\u8c61\u5916\u89c2\u7684\u5927\u5c0f\nbaselines = 0 # \u7528\u4e8e\u906e\u6321\u56fe\u50cf\u7684\u503c\u30020 \u5bf9\u5e94\u7070\u8272\n\nattribution_dog = occlusion.attribute(\n input_img,\n strides=strides,\n target=target,\n sliding_window_shapes=sliding_window_shapes,\n baselines=baselines,\n)\n\n\ntarget = (283,) # ImageNet \u4e2d\u7684\u6ce2\u65af\u732b\u7d22\u5f15\nattribution_cat = occlusion.attribute(\n input_img,\n strides=strides,\n target=target,\n sliding_window_shapes=sliding_window_shapes,\n baselines=0,\n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Besides ``Occlusion``, Captum features many algorithms such as\n\\ ``Integrated Gradients``\\ , \\ ``Deconvolution``\\ ,\n\\ ``GuidedBackprop``\\ , \\ ``Guided GradCam``\\ , \\ ``DeepLift``\\ , and\n\\ ``GradientShap``\\ . All of these algorithms are subclasses of\n``Attribution`` which expects your model as a callable ``forward_func``\nupon initialization and has an ``attribute(...)`` method which returns\nthe attribution result in a unified format.\n\nLet us visualize the computed attribution results in case of images.\n\n\n" + "\u9664\u4e86 ``Occlusion`` \u4e4b\u5916,Captum \u8fd8\u63d0\u4f9b\u4e86\u8bb8\u591a\u7b97\u6cd5,\u5982 ``Integrated Gradients``\u3001``Deconvolution``\u3001\n``GuidedBackprop``\u3001``Guided GradCam``\u3001``DeepLift`` \u548c ``GradientShap``\u3002\u6240\u6709\u8fd9\u4e9b\u7b97\u6cd5\u90fd\u662f ``Attribution`` \u7684\u5b50\u7c7b,\n\u5728\u521d\u59cb\u5316\u65f6\u9700\u8981\u5c06\u60a8\u7684\u6a21\u578b\u4f5c\u4e3a\u53ef\u8c03\u7528\u7684 ``forward_func``\u4f20\u5165,\u5e76\u5177\u6709 ``attribute(...)`` \u65b9\u6cd5,\u8be5\u65b9\u6cd5\u4ee5\u7edf\u4e00\u7684\u683c\u5f0f\u8fd4\u56de\u5f52\u56e0\u7ed3\u679c\u3002\n\n\u8ba9\u6211\u4eec\u53ef\u89c6\u5316\u8ba1\u7b97\u51fa\u7684\u56fe\u50cf\u5f52\u56e0\u7ed3\u679c\u3002\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Visualizing the Results\n\n\n" + "## \u53ef\u89c6\u5316\u7ed3\u679c\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Captum\u2019s \\ ``visualization``\\ utility provides out-of-the-box methods\nto visualize attribution results both for pictorial and for textual\ninputs.\n\n\n" + "Captum \u7684 ``visualization`` \u5b9e\u7528\u7a0b\u5e8f\u63d0\u4f9b\u4e86\u5f00\u7bb1\u5373\u7528\u7684\u65b9\u6cd5,\u7528\u4e8e\u53ef\u89c6\u5316\u56fe\u50cf\u548c\u6587\u672c\u8f93\u5165\u7684\u5f52\u56e0\u7ed3\u679c\u3002\n\n\n" ] }, { @@ -111,28 +111,28 @@ }, "outputs": [], "source": [ - "import numpy as np\nfrom captum.attr import visualization as viz\n\n# Convert the compute attribution tensor into an image-like numpy array\nattribution_dog = np.transpose(attribution_dog.squeeze().cpu().detach().numpy(), (1,2,0))\n\nvis_types = [\"heat_map\", \"original_image\"]\nvis_signs = [\"all\", \"all\"] # \"positive\", \"negative\", or \"all\" to show both\n# positive attribution indicates that the presence of the area increases the prediction score\n# negative attribution indicates distractor areas whose absence increases the score\n\n_ = viz.visualize_image_attr_multiple(attribution_dog,\n np.array(center_crop(img)),\n vis_types,\n vis_signs,\n [\"attribution for dog\", \"image\"],\n show_colorbar = True\n )\n\n\nattribution_cat = np.transpose(attribution_cat.squeeze().cpu().detach().numpy(), (1,2,0))\n\n_ = viz.visualize_image_attr_multiple(attribution_cat,\n np.array(center_crop(img)),\n [\"heat_map\", \"original_image\"], \n [\"all\", \"all\"], # positive/negative attribution or all\n [\"attribution for cat\", \"image\"],\n show_colorbar = True\n )" + "import numpy as np\nfrom captum.attr import visualization as viz\n\n# \u5c06\u8ba1\u7b97\u51fa\u7684\u5f52\u56e0\u5f20\u91cf\u8f6c\u6362\u4e3a\u7c7b\u4f3c\u56fe\u50cf\u7684 numpy \u6570\u7ec4\nattribution_dog = np.transpose(\n attribution_dog.squeeze().cpu().detach().numpy(), (1, 2, 0)\n)\n\nvis_types = [\"heat_map\", \"original_image\"]\nvis_signs = [\"all\", \"all\"] # \"positive\"\u3001\"negative\" \u6216 \"all\" \u4ee5\u663e\u793a\u4e24\u8005\n# \u6b63\u5f52\u56e0\u8868\u793a\u8be5\u533a\u57df\u7684\u5b58\u5728\u4f1a\u589e\u52a0\u9884\u6d4b\u5206\u6570\n# \u8d1f\u5f52\u56e0\u8868\u793a\u8be5\u533a\u57df\u7684\u7f3a\u5931\u4f1a\u589e\u52a0\u9884\u6d4b\u5206\u6570\n\n_ = viz.visualize_image_attr_multiple(\n attribution_dog,\n np.array(center_crop(img)),\n vis_types,\n vis_signs,\n [\"attribution for dog\", \"image\"],\n show_colorbar=True,\n)\n\n\nattribution_cat = np.transpose(\n attribution_cat.squeeze().cpu().detach().numpy(), (1, 2, 0)\n)\n\n_ = viz.visualize_image_attr_multiple(\n attribution_cat,\n np.array(center_crop(img)),\n [\"heat_map\", \"original_image\"],\n [\"all\", \"all\"], # \u6b63/\u8d1f\u5f52\u56e0\u6216\u5168\u90e8\n [\"attribution for cat\", \"image\"],\n show_colorbar=True,\n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "If your data is textual, ``visualization.visualize_text()`` offers a\ndedicated view to explore attribution on top of the input text. Find out\nmore at http://captum.ai/tutorials/IMDB_TorchText_Interpret\n\n\n" + "\u5982\u679c\u60a8\u7684\u6570\u636e\u662f\u6587\u672c,``visualization.visualize_text()`` \u63d0\u4f9b\u4e86\u4e00\u4e2a\u4e13\u7528\u89c6\u56fe,\u7528\u4e8e\u63a2\u7d22\u8f93\u5165\u6587\u672c\u7684\u5f52\u56e0\u3002\n\u66f4\u591a\u4fe1\u606f\u8bf7\u8bbf\u95ee http://captum.ai/tutorials/IMDB_TorchText_Interpret\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Final Notes\n\n\n" + "## \u6700\u540e\u6ce8\u610f\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Captum can handle most model types in PyTorch across modalities\nincluding vision, text, and more. With Captum you can: \\* Attribute a\nspecific output to the model input as illustrated above. \\* Attribute a\nspecific output to a hidden-layer neuron (see Captum API reference). \\*\nAttribute a hidden-layer neuron response to the model input (see Captum\nAPI reference).\n\nFor complete API of the supported methods and a list of tutorials,\nconsult our website http://captum.ai\n\nAnother useful post by Gilbert Tanner:\nhttps://gilberttanner.com/blog/interpreting-pytorch-models-with-captum\n\n\n" + "Captum \u53ef\u4ee5\u5904\u7406 PyTorch \u4e2d\u5305\u62ec\u89c6\u89c9\u3001\u6587\u672c\u7b49\u5404\u79cd\u6a21\u6001\u7684\u5927\u591a\u6570\u6a21\u578b\u7c7b\u578b\u3002\u4f7f\u7528 Captum \u60a8\u53ef\u4ee5:\n* \u5c06\u7279\u5b9a\u8f93\u51fa\u5f52\u56e0\u4e8e\u6a21\u578b\u8f93\u5165,\u5982\u4e0a\u6240\u793a\u3002\n* \u5c06\u7279\u5b9a\u8f93\u51fa\u5f52\u56e0\u4e8e\u9690\u85cf\u5c42\u795e\u7ecf\u5143(\u53c2\u89c1 Captum API \u53c2\u8003)\u3002\n* \u5c06\u9690\u85cf\u5c42\u795e\u7ecf\u5143\u54cd\u5e94\u5f52\u56e0\u4e8e\u6a21\u578b\u8f93\u5165(\u53c2\u89c1 Captum API \u53c2\u8003)\u3002\n\n\u6709\u5173\u652f\u6301\u65b9\u6cd5\u7684\u5b8c\u6574 API \u548c\u6559\u7a0b\u5217\u8868,\u8bf7\u67e5\u9605\u6211\u4eec\u7684\u7f51\u7ad9 http://captum.ai\n\nGilbert Tanner \u7684\u53e6\u4e00\u7bc7\u6709\u7528\u6587\u7ae0:\nhttps://gilberttanner.com/blog/interpreting-pytorch-models-with-captum\n\n\n" ] } ], diff --git a/docs/_downloads/8ec147fe4546ad23cb0cefdb015f3352/swap_tensors.ipynb b/docs/_downloads/8ec147fe4546ad23cb0cefdb015f3352/swap_tensors.ipynb index 7d9ea29..425f272 100644 --- a/docs/_downloads/8ec147fe4546ad23cb0cefdb015f3352/swap_tensors.ipynb +++ b/docs/_downloads/8ec147fe4546ad23cb0cefdb015f3352/swap_tensors.ipynb @@ -15,14 +15,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# Extension points in ``nn.Module`` for ``load_state_dict`` and tensor subclasses\n**Author:** [Mikayla Gawarecki](https://github.com/mikaylagawarecki)\n\nThis recipe introduces a new utility function ``torch.utils.swap_tensors``\nas well as two new extension points where it has been integrated in\n``nn.Module``:\n\n* ``nn.Module.to()`` and related methods\n* ``nn.Module.load_state_dict()``\n\n

Note

This recipe requires PyTorch 2.3.0 or later.

\n" + "\n# \u5728 ``nn.Module`` \u4e2d\u4e3a ``load_state_dict`` \u548c\u5f20\u91cf\u5b50\u7c7b\u63d0\u4f9b\u6269\u5c55\u70b9\n**\u4f5c\u8005:** [Mikayla Gawarecki](https://github.com/mikaylagawarecki)\n\n\u672c\u6559\u7a0b\u4ecb\u7ecd\u4e86\u4e00\u4e2a\u65b0\u7684\u5b9e\u7528\u51fd\u6570 ``torch.utils.swap_tensors``\uff0c\n\u4ee5\u53ca\u5728 ``nn.Module`` \u4e2d\u96c6\u6210\u5b83\u7684\u4e24\u4e2a\u65b0\u6269\u5c55\u70b9:\n\n* ``nn.Module.to()`` \u548c\u76f8\u5173\u65b9\u6cd5\n* ``nn.Module.load_state_dict()``\n\n

Note

\u672c\u6559\u7a0b\u9700\u8981 PyTorch 2.3.0 \u6216\u66f4\u9ad8\u7248\u672c\u3002

\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## ``torch.utils.swap_tensors``\n``torch.utils.swap_tensors`` (hereafter referred to as ``swap_tensors``) is a\nutility function that takes in two Python tensors and swaps them.\n\n" + "## ``torch.utils.swap_tensors``\n``torch.utils.swap_tensors``(\u4ee5\u4e0b\u7b80\u79f0\u4e3a ``swap_tensors``) \u662f\u4e00\u4e2a\n\u5b9e\u7528\u51fd\u6570,\u5b83\u63a5\u53d7\u4e24\u4e2a Python \u5f20\u91cf\u5e76\u4ea4\u6362\u5b83\u4eec\u3002\n\n" ] }, { @@ -33,14 +33,14 @@ }, "outputs": [], "source": [ - "import torch\nimport torch.nn as nn\nt1 = torch.arange(2)\nt2 = torch.arange(3)\nprint(f\"Before swapping, t1: {t1}, t2: {t2}\")\ntorch.utils.swap_tensors(t1, t2)\nprint(f\"After swapping, t1: {t1}, t2: {t2}\")" + "import torch\nimport torch.nn as nn\n\nt1 = torch.arange(2)\nt2 = torch.arange(3)\nprint(f\"\u4ea4\u6362\u524d, t1: {t1}, t2: {t2}\")\ntorch.utils.swap_tensors(t1, t2)\nprint(f\"\u4ea4\u6362\u540e, t1: {t1}, t2: {t2}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "More specifically, ``swap_tensors`` swaps the Python ``__class__``, ``__dict__``\nand ``__slots__`` of the two tensors, as well as their associated ``at::Tensor``.\n\n\n## Application to ``nn.Module``\nThis utility is pertinent to ``nn.Module`` when a Python object outside\nof the module holds a reference to parameters of the module. If an ``nn.Module``\nmodifies any of its parameters out of place, the object holding references to\nthe parameters will not see the change. A classic example of this is the\noptimizer, which holds a reference to the parameters of the ``nn.Module``.\nThis leads to a silent correctness issue where the ``optimizer.step()`` will\nrun without error but the weights of the ``nn.Module`` will not be updated.\n\n" + "\u66f4\u5177\u4f53\u5730\u8bf4,``swap_tensors`` \u4ea4\u6362\u4e86\u4e24\u4e2a\u5f20\u91cf\u7684 Python ``__class__``\u3001``__dict__``\n\u548c ``__slots__``,\u4ee5\u53ca\u5b83\u4eec\u76f8\u5173\u7684 ``at::Tensor``\u3002\n\n\n## \u5e94\u7528\u4e8e ``nn.Module``\n\u5f53 ``nn.Module`` \u4e4b\u5916\u7684 Python \u5bf9\u8c61\u6301\u6709\u8be5\u6a21\u5757\u53c2\u6570\u7684\u5f15\u7528\u65f6,\u6b64\u5b9e\u7528\u51fd\u6570\u5c31\u5f88\u6709\u7528\u3002\n\u5982\u679c ``nn.Module`` \u5c31\u5730\u4fee\u6539\u4e86\u4efb\u4f55\u53c2\u6570,\u6301\u6709\u8fd9\u4e9b\u53c2\u6570\u5f15\u7528\u7684\u5bf9\u8c61\u5c06\u65e0\u6cd5\u770b\u5230\u66f4\u6539\u3002\n\u4e00\u4e2a\u5178\u578b\u7684\u4f8b\u5b50\u662f\u4f18\u5316\u5668,\u5b83\u6301\u6709 ``nn.Module`` \u53c2\u6570\u7684\u5f15\u7528\u3002\n\u8fd9\u4f1a\u5bfc\u81f4\u4e00\u4e2a\u6f5c\u5728\u7684\u6b63\u786e\u6027\u95ee\u9898,\u5373 ``optimizer.step()`` \u4f1a\u65e0\u9519\u8bef\u8fd0\u884c,\n\u4f46 ``nn.Module`` \u7684\u6743\u91cd\u4e0d\u4f1a\u88ab\u66f4\u65b0\u3002\n\n" ] }, { @@ -51,14 +51,14 @@ }, "outputs": [], "source": [ - "mod = torch.nn.Linear(1, 2, bias=False)\noptimizer = torch.optim.SGD(mod.parameters())\nprint(f\"weight in mod: {mod.weight}\")\nprint(f\"weight in optimizer: {optimizer.param_groups[0]['params']}\")\nmod.weight = torch.nn.Parameter(2 * mod.weight)\nprint(f\"weight in mod: {mod.weight}\")\nprint(f\"weight in optimizer: {optimizer.param_groups[0]['params']}\")" + "mod = torch.nn.Linear(1, 2, bias=False)\noptimizer = torch.optim.SGD(mod.parameters())\nprint(f\"mod \u4e2d\u7684\u6743\u91cd: {mod.weight}\")\nprint(f\"\u4f18\u5316\u5668\u4e2d\u7684\u6743\u91cd: {optimizer.param_groups[0]['params']}\")\nmod.weight = torch.nn.Parameter(2 * mod.weight)\nprint(f\"mod \u4e2d\u7684\u6743\u91cd: {mod.weight}\")\nprint(f\"\u4f18\u5316\u5668\u4e2d\u7684\u6743\u91cd: {optimizer.param_groups[0]['params']}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## ``nn.Module.to()`` and related methods\nThis includes methods that change the device of the module (such as ``nn.Module.cpu()``),\nmethods that change the ``dtype`` of the module (such as ``nn.Module.float()``)\nas well as methods that allow the module to be materialized\n(such as ``nn.Module.to_empty()``).\n\nAt first glance, it might be non-intuitive that these methods are able to\nmodify the parameters of the module in-place. The existing approach has been\nto use a nasty hack dating back from the first days of PyTorch.\n\nNotably, the existing approach does not work in these cases:\n\n* when using ``__torch_dispatch__`` subclasses\n* when ``param`` and ``new_param`` do not have the same Python ``type()``\n* For tensors with special C++ representations (such as sparse tensors and ``XLA`` tensors)\n\nIn the following part of this recipe, we will define a toy ``__torch_dispatch__``\nsubclass ``MyQuantizedLinearWeight`` that represents quantized linear weights.\nThis subclass will be used for illustration purposes throughout the rest of\nthe tutorial. For brevity, we omit most of the ``__torch_dispatch__``\nimplementation.\n\n" + "## ``nn.Module.to()`` \u548c\u76f8\u5173\u65b9\u6cd5\n\u8fd9\u5305\u62ec\u6539\u53d8\u6a21\u5757\u8bbe\u5907\u7684\u65b9\u6cd5(\u5982 ``nn.Module.cpu()``)\u3001\n\u6539\u53d8\u6a21\u5757 ``dtype`` \u7684\u65b9\u6cd5(\u5982 ``nn.Module.float()``)\u3001\n\u4ee5\u53ca\u5141\u8bb8\u6a21\u5757\u5b9e\u4f8b\u5316\u7684\u65b9\u6cd5(\u5982 ``nn.Module.to_empty()``)\u3002\n\n\u4e4d\u4e00\u770b,\u8fd9\u4e9b\u65b9\u6cd5\u80fd\u591f\u5c31\u5730\u4fee\u6539\u6a21\u5757\u7684\u53c2\u6570\u53ef\u80fd\u770b\u8d77\u6765\u4e0d\u592a\u76f4\u89c2\u3002\n\u73b0\u6709\u7684\u65b9\u6cd5\u662f\u4f7f\u7528\u4e00\u79cd\u8ffd\u6eaf\u5230 PyTorch \u6700\u521d\u51e0\u5929\u7684\u4e11\u964b\u9ed1\u5ba2\u624b\u6bb5\u3002\n\n\u503c\u5f97\u6ce8\u610f\u7684\u662f,\u73b0\u6709\u65b9\u6cd5\u5728\u4ee5\u4e0b\u60c5\u51b5\u4e0b\u65e0\u6cd5\u5de5\u4f5c:\n\n* \u4f7f\u7528 ``__torch_dispatch__`` \u5b50\u7c7b\n* ``param`` \u548c ``new_param`` \u7684 Python ``type()`` \u4e0d\u540c\n* \u5bf9\u4e8e\u5177\u6709\u7279\u6b8a C++ \u8868\u793a\u7684\u5f20\u91cf(\u5982\u7a00\u758f\u5f20\u91cf\u548c ``XLA`` \u5f20\u91cf)\n\n\u5728\u672c\u6559\u7a0b\u7684\u4e0b\u4e00\u90e8\u5206,\u6211\u4eec\u5c06\u5b9a\u4e49\u4e00\u4e2a\u73a9\u5177 ``__torch_dispatch__`` \u5b50\u7c7b ``MyQuantizedLinearWeight``\n\u6765\u8868\u793a\u91cf\u5316\u7684\u7ebf\u6027\u6743\u91cd\u3002\u5728\u672c\u6559\u7a0b\u7684\u5269\u4f59\u90e8\u5206,\u6211\u4eec\u5c06\u4f7f\u7528\u8fd9\u4e2a\u5b50\u7c7b\u8fdb\u884c\u8bf4\u660e\u3002\n\u4e3a\u7b80\u6d01\u8d77\u89c1,\u6211\u4eec\u7701\u7565\u4e86\u5927\u90e8\u5206 ``__torch_dispatch__`` \u5b9e\u73b0\u3002\n\n" ] }, { @@ -69,14 +69,14 @@ }, "outputs": [], "source": [ - "aten = torch.ops.aten\n\nclass MyQuantizedLinearWeight(torch.Tensor):\n @staticmethod\n def __new__(cls, elem, scale):\n return torch.Tensor._make_wrapper_subclass(\n cls,\n elem.shape,\n dtype=elem.dtype,\n layout=elem.layout,\n device=elem.device,\n strides=elem.stride(),\n storage_offset=elem.storage_offset())\n\n def __init__(self, elem: torch.Tensor, scale: float):\n self.elem = elem\n self.scale = scale\n\n def __repr__(self):\n return f\"MyQuantizedLinearWeight({self.elem}, scale={self.scale})\"\n\n @classmethod\n def __torch_dispatch__(cls, func, types, args, kwargs):\n if func in (aten.detach.default, aten._to_copy.default):\n new_elem = func(args[0].elem, *args[1:], **kwargs)\n return cls(new_elem, args[0].scale)\n # Implementations for certain ops would be added to ``OP_TABLE``.\n # We omit this for brevity.\n OP_TABLE = dict()\n if func in OP_TABLE:\n return OP_TABLE[func](func, args, kwargs)\n raise NotImplementedError(f\"Unsupported function {func}\")" + "aten = torch.ops.aten\n\n\nclass MyQuantizedLinearWeight(torch.Tensor):\n @staticmethod\n def __new__(cls, elem, scale):\n return torch.Tensor._make_wrapper_subclass(\n cls,\n elem.shape,\n dtype=elem.dtype,\n layout=elem.layout,\n device=elem.device,\n strides=elem.stride(),\n storage_offset=elem.storage_offset(),\n )\n\n def __init__(self, elem: torch.Tensor, scale: float):\n self.elem = elem\n self.scale = scale\n\n def __repr__(self):\n return f\"MyQuantizedLinearWeight({self.elem}, scale={self.scale})\"\n\n @classmethod\n def __torch_dispatch__(cls, func, types, args, kwargs):\n if func in (aten.detach.default, aten._to_copy.default):\n new_elem = func(args[0].elem, *args[1:], **kwargs)\n return cls(new_elem, args[0].scale)\n # \u67d0\u4e9b\u64cd\u4f5c\u7684\u5b9e\u73b0\u5c06\u6dfb\u52a0\u5230 ``OP_TABLE``\u3002\n # \u4e3a\u7b80\u6d01\u8d77\u89c1,\u6211\u4eec\u5728\u6b64\u7701\u7565\u3002\n OP_TABLE = dict()\n if func in OP_TABLE:\n return OP_TABLE[func](func, args, kwargs)\n raise NotImplementedError(f\"\u4e0d\u652f\u6301\u7684\u51fd\u6570 {func}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let us create an ``nn.Linear`` layer of ``dtype`` ``torch.float32`` where the weight is\na ``MyQuantizedLinearWeight`` and try to convert it to ``torch.bfloat16``.\nObserve that the weight's ``dtype`` changes as expected. However, the ``dtype``\nof the subclass' payload (``elem``) does not change.\n\n" + "\u8ba9\u6211\u4eec\u521b\u5efa\u4e00\u4e2a ``dtype`` \u4e3a ``torch.float32`` \u7684 ``nn.Linear`` \u5c42,\n\u5176\u6743\u91cd\u662f ``MyQuantizedLinearWeight``\u3002\u7136\u540e\u5c1d\u8bd5\u5c06\u5176\u8f6c\u6362\u4e3a ``torch.bfloat16``\u3002\n\u89c2\u5bdf\u5230\u6743\u91cd\u7684 ``dtype`` \u5982\u9884\u671f\u822c\u6539\u53d8\u4e86\u3002\u4f46\u662f\u5b50\u7c7b\u7684\u6709\u6548\u8f7d\u8377(``elem``)\u7684 ``dtype`` \u6ca1\u6709\u6539\u53d8\u3002\n\n" ] }, { @@ -87,14 +87,14 @@ }, "outputs": [], "source": [ - "m = nn.Linear(3, 5, dtype=torch.float32)\nm.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5))\nprint(f\"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nm.bfloat16()\nprint(f\"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nprint(f\"m.weight.dtype: {m.weight.dtype}\")\nprint(f\"m.weight.elem.dtype: {m.weight.elem.dtype}\")\nprint(f\"m.bias.dtype: {m.bias.dtype}\")" + "m = nn.Linear(3, 5, dtype=torch.float32)\nm.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5))\nprint(f\"\u4e4b\u524d: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nm.bfloat16()\nprint(f\"\u4e4b\u540e: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nprint(f\"m.weight.dtype: {m.weight.dtype}\")\nprint(f\"m.weight.elem.dtype: {m.weight.elem.dtype}\")\nprint(f\"m.bias.dtype: {m.bias.dtype}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To this end, we introduce a global config\n``torch.__future__.set_swap_module_params_on_conversion`` that will use\n``swap_tensors`` to swap the parameters of the module while preserving\nreferences in place of ``.data`` setting. When this config is set,\n``swap_tensors`` will be used during the conversion, which ensures that\nthe ``dtype`` of the payload is properly converted.\n\n" + "\u4e3a\u6b64,\u6211\u4eec\u5f15\u5165\u4e86\u4e00\u4e2a\u5168\u5c40\u914d\u7f6e ``torch.__future__.set_swap_module_params_on_conversion``\n\u5b83\u5c06\u4f7f\u7528 ``swap_tensors`` \u4ea4\u6362\u6a21\u5757\u7684\u53c2\u6570,\u540c\u65f6\u4fdd\u7559 ``.data`` \u8bbe\u7f6e\u4e2d\u7684\u5f15\u7528\u3002\n\u8bbe\u7f6e\u6b64\u914d\u7f6e\u540e,\u5728\u8f6c\u6362\u671f\u95f4\u5c06\u4f7f\u7528 ``swap_tensors``,\u4ece\u800c\u786e\u4fdd\u6709\u6548\u8f7d\u8377\u7684 ``dtype`` \u6b63\u786e\u8f6c\u6362\u3002\n\n" ] }, { @@ -105,14 +105,14 @@ }, "outputs": [], "source": [ - "torch.__future__.set_swap_module_params_on_conversion(True)\nm = nn.Linear(3, 5, dtype=torch.float32)\nm.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5))\nprint(f\"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nm.bfloat16()\nprint(f\"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nprint(f\"m.weight.dtype: {m.weight.dtype}\")\nprint(f\"m.weight.elem.dtype: {m.weight.elem.dtype}\")\nprint(f\"m.bias.dtype: {m.bias.dtype}\")\ntorch.__future__.set_swap_module_params_on_conversion(False)" + "torch.__future__.set_swap_module_params_on_conversion(True)\nm = nn.Linear(3, 5, dtype=torch.float32)\nm.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5))\nprint(f\"\u4e4b\u524d: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nm.bfloat16()\nprint(f\"\u4e4b\u540e: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}\")\nprint(f\"m.weight.dtype: {m.weight.dtype}\")\nprint(f\"m.weight.elem.dtype: {m.weight.elem.dtype}\")\nprint(f\"m.bias.dtype: {m.bias.dtype}\")\ntorch.__future__.set_swap_module_params_on_conversion(False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## ``nn.Module.load_state_dict()``\nDepending on the value of the ``assign`` keyword argument passed\nto ``load_state_dict()``, there are two ways to load the ``state_dict``:\n\n* ``assign=False``: preserves the properties of ``module.param`` and only takes the values\n from ``state_dict['param_name']``\n* ``assign=True``: preserves the properties and values of ``state_dict['param_name']``.\n\n\nPreviously, these were implemented with in-place ``copy_`` and ``__setattr__`` respectively.\nWith the existing implementation, each approach had its own limitations -- ``assign=False``\nimposes the constraint that the type of the parameter in the ``state_dict`` must\nbe the same as the type of the parameter in the module while ``assign=True`` imposes\nthe constraint that anything that holds references to the module's parameters must\nbe initialized after ``nn.Module.load_state_dict()``.\n\nNow, we address both constraints by adding a ``swap_tensors`` path to ``load_state_dict()``\nand introducing a new extension point ``torch.Tensor.module_load(self, other, assign=False)``.\nWhen the ``swap_tensors`` path is enabled via the ``__future__`` mentioned above,\nwe can use a ``__torch_function__`` handler for ``module_load`` to apply a\ncustom transformation to the value in the ``state_dict``. The result of this\ntransformation will be swapped with the parameter in the module.\n\nIn the following example, we will use the ``MyQuantizedLinearWeight`` subclass\ndefined above to illustrate how we can use these features to apply a\ncustom quantization scheme to the weights of a linear layer when\nloading the ``state_dict``.\n\nRecall that the ``__torch_function__`` handler for ``module_load`` will be\ninvoked if either ``self`` or ``other`` (in this case ``param`` or\n``state_dict[param_key]``) are ``MyQuantizedLinearWeight`` subclasses.\n\nAssume that we expect the ``state_dict`` to contain plain tensors and the\nmodule to contain ``MyQuantizedLinearWeight`` parameters where we want the\ntensors in the ``state_dict`` to be transformed into the subclass. Then we\ncan define a ``__torch_function__`` handler for ``torch.Tensor.module_load``\nas such:\n\n" + "## ``nn.Module.load_state_dict()``\n\u6839\u636e\u4f20\u9012\u7ed9 ``load_state_dict()`` \u7684 ``assign`` \u5173\u952e\u5b57\u53c2\u6570\u7684\u503c,\n\u6709\u4e24\u79cd\u65b9\u5f0f\u52a0\u8f7d ``state_dict``\uff1a\n\n* ``assign=False``: \u4fdd\u7559 ``module.param`` \u7684\u5c5e\u6027,\u53ea\u4ece ``state_dict['param_name']`` \u4e2d\u83b7\u53d6\u503c\n* ``assign=True``: \u4fdd\u7559 ``state_dict['param_name']`` \u7684\u5c5e\u6027\u548c\u503c\u3002\n\n\n\u4e4b\u524d,\u8fd9\u4e9b\u5206\u522b\u662f\u901a\u8fc7\u5c31\u5730 ``copy_`` \u548c ``__setattr__`` \u5b9e\u73b0\u7684\u3002\n\u5728\u73b0\u6709\u5b9e\u73b0\u4e2d,\u6bcf\u79cd\u65b9\u6cd5\u90fd\u6709\u81ea\u5df1\u7684\u9650\u5236 - ``assign=False`` \u8981\u6c42 ``state_dict`` \u4e2d\u7684\u53c2\u6570\u7c7b\u578b\n\u5fc5\u987b\u4e0e\u6a21\u5757\u4e2d\u7684\u53c2\u6570\u7c7b\u578b\u76f8\u540c,\u800c ``assign=True`` \u8981\u6c42\u5728 ``nn.Module.load_state_dict()`` \u4e4b\u540e\n\u521d\u59cb\u5316\u4efb\u4f55\u6301\u6709\u6a21\u5757\u53c2\u6570\u5f15\u7528\u7684\u5bf9\u8c61\u3002\n\n\u73b0\u5728,\u6211\u4eec\u901a\u8fc7\u5728 ``load_state_dict()`` \u4e2d\u6dfb\u52a0 ``swap_tensors`` \u8def\u5f84\u5e76\u5f15\u5165\u65b0\u7684\u6269\u5c55\u70b9\n``torch.Tensor.module_load(self, other, assign=False)`` \u6765\u89e3\u51b3\u8fd9\u4e24\u4e2a\u9650\u5236\u3002\n\u5f53\u542f\u7528\u4e0a\u8ff0 ``__future__`` \u65f6,\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 ``module_load`` \u7684 ``__torch_function__`` \u5904\u7406\u7a0b\u5e8f\n\u5bf9 ``state_dict`` \u4e2d\u7684\u503c\u5e94\u7528\u81ea\u5b9a\u4e49\u8f6c\u6362\u3002\u8f6c\u6362\u7684\u7ed3\u679c\u5c06\u4e0e\u6a21\u5757\u4e2d\u7684\u53c2\u6570\u4ea4\u6362\u3002\n\n\u5728\u4e0b\u9762\u7684\u793a\u4f8b\u4e2d,\u6211\u4eec\u5c06\u4f7f\u7528\u4e0a\u9762\u5b9a\u4e49\u7684 ``MyQuantizedLinearWeight`` \u5b50\u7c7b\n\u6765\u8bf4\u660e\u5982\u4f55\u4f7f\u7528\u8fd9\u4e9b\u529f\u80fd\u5728\u52a0\u8f7d ``state_dict`` \u65f6\u5bf9\u7ebf\u6027\u5c42\u7684\u6743\u91cd\u5e94\u7528\u81ea\u5b9a\u4e49\u91cf\u5316\u65b9\u6848\u3002\n\n\u56de\u987e\u4e00\u4e0b,\u5982\u679c ``self`` \u6216 ``other``(\u5728\u672c\u4f8b\u4e2d\u662f ``param`` \u6216 ``state_dict[param_key]``)\n\u662f ``MyQuantizedLinearWeight`` \u5b50\u7c7b,\u5219\u4f1a\u8c03\u7528 ``module_load`` \u7684 ``__torch_function__`` \u5904\u7406\u7a0b\u5e8f\u3002\n\n\u5047\u8bbe\u6211\u4eec\u671f\u671b ``state_dict`` \u5305\u542b\u666e\u901a\u5f20\u91cf,\u800c\u6a21\u5757\u5305\u542b ``MyQuantizedLinearWeight`` \u53c2\u6570,\n\u6211\u4eec\u5e0c\u671b\u5c06 ``state_dict`` \u4e2d\u7684\u5f20\u91cf\u8f6c\u6362\u4e3a\u5b50\u7c7b\u3002\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u4e3a ``torch.Tensor.module_load`` \u5b9a\u4e49\n\u4e00\u4e2a ``__torch_function__`` \u5904\u7406\u7a0b\u5e8f,\u5982\u4e0b\u6240\u793a:\n\n" ] }, { @@ -123,14 +123,14 @@ }, "outputs": [], "source": [ - "@classmethod\ndef custom_torch_function(cls, func, types, args=(), kwargs=None):\n kwargs = {} if kwargs is None else kwargs\n\n if func is torch.Tensor.module_load:\n dest, src = args[0], args[1]\n assert type(dest) == cls and type(src) == torch.Tensor\n return MyQuantizedLinearWeight(src, dest.scale)\n else:\n with torch._C.DisableTorchFunctionSubclass():\n return func(*args, **kwargs)\n\nMyQuantizedLinearWeight.__torch_function__ = custom_torch_function" + "@classmethod\ndef custom_torch_function(cls, func, types, args=(), kwargs=None):\n kwargs = {} if kwargs is None else kwargs\n\n if func is torch.Tensor.module_load:\n dest, src = args[0], args[1]\n assert type(dest) == cls and type(src) == torch.Tensor\n return MyQuantizedLinearWeight(src, dest.scale)\n else:\n with torch._C.DisableTorchFunctionSubclass():\n return func(*args, **kwargs)\n\n\nMyQuantizedLinearWeight.__torch_function__ = custom_torch_function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "First, let us create a skeleton of a model on the meta device to avoid\nmaterializing storages. We convert all weights in the modules to\n``MyQuantizedLinearWeight`` subclasses while leaving biases intact.\n\n" + "\u9996\u5148,\u8ba9\u6211\u4eec\u5728 meta \u8bbe\u5907\u4e0a\u521b\u5efa\u4e00\u4e2a\u6a21\u578b\u6846\u67b6,\u4ee5\u907f\u514d\u5b9e\u4f8b\u5316\u5b58\u50a8\u3002\n\u6211\u4eec\u5c06\u6a21\u5757\u4e2d\u7684\u6240\u6709\u6743\u91cd\u8f6c\u6362\u4e3a ``MyQuantizedLinearWeight`` \u5b50\u7c7b,\u540c\u65f6\u4fdd\u7559\u504f\u7f6e\u4e0d\u53d8\u3002\n\n" ] }, { @@ -141,14 +141,14 @@ }, "outputs": [], "source": [ - "def fn(m):\n if isinstance(m, nn.Linear):\n requires_grad = m.weight.requires_grad\n m.weight = torch.nn.Parameter(\n MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad\n )\n\nwith torch.device(\"meta\"):\n m = nn.Linear(3, 5)\n m.apply(fn)" + "def fn(m):\n if isinstance(m, nn.Linear):\n requires_grad = m.weight.requires_grad\n m.weight = torch.nn.Parameter(\n MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad\n )\n\n\nwith torch.device(\"meta\"):\n m = nn.Linear(3, 5)\n m.apply(fn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can then load the ``state_dict``. Observe that we use ``assign=True`` because\nfor biases, we want to preserve the properties of the tensor in the ``state_dict``\n(for example, we do not want the bias to be on the ``meta`` device after loading).\n\n" + "\u7136\u540e\u6211\u4eec\u53ef\u4ee5\u52a0\u8f7d ``state_dict``\u3002\u6ce8\u610f\u6211\u4eec\u4f7f\u7528 ``assign=True``\uff0c\u56e0\u4e3a\u5bf9\u4e8e\u504f\u7f6e,\n\u6211\u4eec\u5e0c\u671b\u4fdd\u7559 ``state_dict`` \u4e2d\u5f20\u91cf\u7684\u5c5e\u6027(\u4f8b\u5982,\u6211\u4eec\u4e0d\u5e0c\u671b\u504f\u7f6e\u5728\u52a0\u8f7d\u540e\u4f4d\u4e8e ``meta`` \u8bbe\u5907\u4e0a)\u3002\n\n" ] }, { @@ -159,14 +159,14 @@ }, "outputs": [], "source": [ - "torch.__future__.set_swap_module_params_on_conversion(True)\nprint(f\"Before: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}\")\nprint(f\"m.state_dict() before load_state_dict():\\n {m.state_dict()}\")\nstate_dict = nn.Linear(3, 5).state_dict()\nprint(f\"state_dict:\\n {state_dict}\")\nm.load_state_dict(state_dict, assign=True)\nprint(f\"After: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}\")\nprint(f\"m.state_dict() after load_state_dict():\\n {m.state_dict()}\")" + "torch.__future__.set_swap_module_params_on_conversion(True)\nprint(f\"\u4e4b\u524d: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}\")\nprint(f\"load_state_dict() \u4e4b\u524d\u7684 m.state_dict():\\n {m.state_dict()}\")\nstate_dict = nn.Linear(3, 5).state_dict()\nprint(f\"state_dict:\\n {state_dict}\")\nm.load_state_dict(state_dict, assign=True)\nprint(f\"\u4e4b\u540e: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}\")\nprint(f\"load_state_dict() \u4e4b\u540e\u7684 m.state_dict():\\n {m.state_dict()}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The above is a toy example of how we can use the new extension point in\n``nn.Module.load_state_dict()``. One can also imagine alternate scenarios such\nas when we have tensor subclasses in the ``state_dict`` and plain ``nn.Parameters``/\ntensors in the module or when both are tensor subclasses. Based on the use\ncase, we can define the ``__torch_function__`` handler for ``module_load``\nto apply the transforms as needed.\n\n## Conclusion\nIn this recipe, we learned about ``swap_tensors``, the importance\nof preserving references for parameters in ``nn.Module`` as well as how to\nuse the two new extension points that are gated by\n``torch.__future__.set_swap_module_params_on_conversion``.\n\n" + "\u4e0a\u9762\u662f\u4e00\u4e2a\u5982\u4f55\u4f7f\u7528 ``nn.Module.load_state_dict()`` \u4e2d\u7684\u65b0\u6269\u5c55\u70b9\u7684\u73a9\u5177\u793a\u4f8b\u3002\n\u6211\u4eec\u8fd8\u53ef\u4ee5\u60f3\u8c61\u5176\u4ed6\u573a\u666f,\u4f8b\u5982\u5f53 ``state_dict`` \u4e2d\u6709\u5f20\u91cf\u5b50\u7c7b\u800c\u6a21\u5757\u4e2d\u6709\u666e\u901a ``nn.Parameters``/\u5f20\u91cf\u65f6,\n\u6216\u8005\u4e24\u8005\u90fd\u662f\u5f20\u91cf\u5b50\u7c7b\u65f6\u3002\u6839\u636e\u4f7f\u7528\u573a\u666f,\u6211\u4eec\u53ef\u4ee5\u5b9a\u4e49 ``module_load`` \u7684 ``__torch_function__`` \u5904\u7406\u7a0b\u5e8f\n\u6765\u5e94\u7528\u6240\u9700\u7684\u8f6c\u6362\u3002\n\n## \u7ed3\u8bba\n\u5728\u672c\u6559\u7a0b\u4e2d,\u6211\u4eec\u5b66\u4e60\u4e86 ``swap_tensors``\u3001\u5728 ``nn.Module`` \u4e2d\u4fdd\u7559\u53c2\u6570\u5f15\u7528\u7684\u91cd\u8981\u6027,\n\u4ee5\u53ca\u5982\u4f55\u4f7f\u7528\u7531 ``torch.__future__.set_swap_module_params_on_conversion`` \u63a7\u5236\u7684\u4e24\u4e2a\u65b0\u6269\u5c55\u70b9\u3002\n\n" ] } ], diff --git a/docs/_downloads/9d3fdce6265a4c437c6242553a2aa24d/tensorboard_with_pytorch.py b/docs/_downloads/9d3fdce6265a4c437c6242553a2aa24d/tensorboard_with_pytorch.py index 4bceda8..d1a7bf9 100644 --- a/docs/_downloads/9d3fdce6265a4c437c6242553a2aa24d/tensorboard_with_pytorch.py +++ b/docs/_downloads/9d3fdce6265a4c437c6242553a2aa24d/tensorboard_with_pytorch.py @@ -1,24 +1,23 @@ """ -How to use TensorBoard with PyTorch +如何在PyTorch中使用TensorBoard =================================== -TensorBoard is a visualization toolkit for machine learning experimentation. -TensorBoard allows tracking and visualizing metrics such as loss and accuracy, -visualizing the model graph, viewing histograms, displaying images and much more. -In this tutorial we are going to cover TensorBoard installation, -basic usage with PyTorch, and how to visualize data you logged in TensorBoard UI. +TensorBoard是一个用于机器学习实验的可视化工具包。 +TensorBoard允许跟踪和可视化指标,如损失和准确率, +可视化模型图,查看直方图,显示图像等。 +在本教程中,我们将介绍TensorBoard的安装、 +在PyTorch中的基本用法,以及如何在TensorBoard UI中可视化您记录的数据。 -Installation +安装 ---------------------- -PyTorch should be installed to log models and metrics into TensorBoard log -directory. The following command will install PyTorch 1.4+ via -Anaconda (recommended): +应安装PyTorch以将模型和指标记录到TensorBoard日志 +目录。以下命令将通过Anaconda(推荐)安装PyTorch 1.4+: .. code-block:: sh - $ conda install pytorch torchvision -c pytorch + $ conda install pytorch torchvision -c pytorch -or pip +或者使用pip: .. code-block:: sh @@ -27,34 +26,34 @@ """ ###################################################################### -# Using TensorBoard in PyTorch +# 在PyTorch中使用TensorBoard # ----------------------------- -# -# Let’s now try using TensorBoard with PyTorch! Before logging anything, -# we need to create a ``SummaryWriter`` instance. -# +# +# 现在让我们尝试在PyTorch中使用TensorBoard!在记录任何内容之前, +# 我们需要创建一个 ``SummaryWriter`` 实例。 +# import torch from torch.utils.tensorboard import SummaryWriter + writer = SummaryWriter() ###################################################################### -# Writer will output to ``./runs/`` directory by default. -# +# 写入器默认将输出到 ``./runs/`` 目录。 +# ###################################################################### -# Log scalars +# 记录标量 # ----------- -# -# In machine learning, it’s important to understand key metrics such as -# loss and how they change during training. Scalar helps to save -# the loss value of each training step, or the accuracy after each epoch. # -# To log a scalar value, use -# ``add_scalar(tag, scalar_value, global_step=None, walltime=None)``. -# For example, lets create a simple linear regression training, and -# log loss value using ``add_scalar`` +# 在机器学习中,了解关键指标(如损失)及其在训练期间的变化非常重要。 +# 标量可用于保存每个训练步骤的损失值或每个epoch的准确率。 +# +# 要记录标量值,请使用 +# ``add_scalar(tag, scalar_value, global_step=None, walltime=None)``。 +# 例如,让我们创建一个简单的线性回归训练,并 +# 使用 ``add_scalar`` 记录损失值 # x = torch.arange(-5, 5, 0.1).view(-1, 1) @@ -62,7 +61,8 @@ model = torch.nn.Linear(1, 1) criterion = torch.nn.MSELoss() -optimizer = torch.optim.SGD(model.parameters(), lr = 0.1) +optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + def train_model(iter): for epoch in range(iter): @@ -72,59 +72,58 @@ def train_model(iter): optimizer.zero_grad() loss.backward() optimizer.step() - + + train_model(10) writer.flush() -###################################################################### -# Call ``flush()`` method to make sure that all pending events -# have been written to disk. -# -# See `torch.utils.tensorboard tutorials `_ -# to find more TensorBoard visualization types you can log. -# -# If you do not need the summary writer anymore, call ``close()`` method. +###################################################################### +# 调用 ``flush()`` 方法以确保所有待处理事件 +# 已写入磁盘。 +# +# 请参阅 `torch.utils.tensorboard 教程 `_ +# 以了解您可以记录的更多TensorBoard可视化类型。 +# +# 如果您不再需要摘要写入器,请调用 ``close()`` 方法。 # writer.close() ###################################################################### -# Run TensorBoard +# 运行TensorBoard # ---------------- -# -# Install TensorBoard through the command line to visualize data you logged +# +# 通过命令行安装TensorBoard以可视化您记录的数据 # # .. code-block:: sh # # pip install tensorboard # # -# Now, start TensorBoard, specifying the root log directory you used above. -# Argument ``logdir`` points to directory where TensorBoard will look to find -# event files that it can display. TensorBoard will recursively walk -# the directory structure rooted at ``logdir``, looking for ``.*tfevents.*`` files. +# 现在,启动TensorBoard,指定您之前使用的根日志目录。 +# 参数 ``logdir`` 指向TensorBoard将查找可显示的事件文件的目录。 +# TensorBoard将递归遍历 ``logdir`` 根目录下的目录结构,寻找 ``.*tfevents.*`` 文件。 # # .. code-block:: sh # # tensorboard --logdir=runs # -# Go to the URL it provides OR to `http://localhost:6006/ `_ +# 转到它提供的URL或 `http://localhost:6006/ `_ # # .. image:: ../../_static/img/thumbnails/tensorboard_scalars.png # :scale: 40 % # -# This dashboard shows how the loss and accuracy change with every epoch. -# You can use it to also track training speed, learning rate, and other -# scalar values. It’s helpful to compare these metrics across different -# training runs to improve your model. +# 此仪表板显示了损失和准确率如何随着每个epoch而变化。 +# 您可以使用它来跟踪训练速度、学习率和其他标量值。 +# 比较不同训练运行的这些指标有助于改进您的模型。 # ######################################################################## -# Learn More +# 了解更多 # ---------------------------- -# -# - `torch.utils.tensorboard `_ docs -# - `Visualizing models, data, and training with TensorBoard `_ tutorial +# +# - `torch.utils.tensorboard `_ 文档 +# - `使用TensorBoard可视化模型、数据和训练 `_ 教程 # diff --git a/docs/_downloads/9f4fb47ef3d58524029d86df50e90a08/reasoning_about_shapes.py b/docs/_downloads/9f4fb47ef3d58524029d86df50e90a08/reasoning_about_shapes.py index 12c85dc..5ee8a2a 100644 --- a/docs/_downloads/9f4fb47ef3d58524029d86df50e90a08/reasoning_about_shapes.py +++ b/docs/_downloads/9f4fb47ef3d58524029d86df50e90a08/reasoning_about_shapes.py @@ -1,23 +1,19 @@ """ -Reasoning about Shapes in PyTorch +在PyTorch中推理形状 ================================= -When writing models with PyTorch, it is commonly the case that the parameters -to a given layer depend on the shape of the output of the previous layer. For -example, the ``in_features`` of an ``nn.Linear`` layer must match the -``size(-1)`` of the input. For some layers, the shape computation involves -complex equations, for example convolution operations. +在使用PyTorch编写模型时,通常会遇到某一层的参数取决于前一层输出的形状的情况。例如, +``nn.Linear``层的``in_features``必须与输入的``size(-1)``相匹配。对于某些层,形状计算涉及复杂的等式,例如卷积运算。 -One way around this is to run the forward pass with random inputs, but this is -wasteful in terms of memory and compute. +一种解决方法是使用随机输入进行前向传播,但这在内存和计算方面是浪费的。 -Instead, we can make use of the ``meta`` device to determine the output shapes -of a layer without materializing any data. +相反,我们可以使用``meta``设备来确定层的输出形状,而无需实际化任何数据。 """ -import torch import timeit +import torch + t = torch.rand(2, 3, 10, 10, device="meta") conv = torch.nn.Conv2d(3, 5, 2, device="meta") start = timeit.default_timer() @@ -25,12 +21,11 @@ end = timeit.default_timer() print(out) -print(f"Time taken: {end-start}") +print(f"所需时间: {end-start}") ########################################################################## -# Observe that since data is not materialized, passing arbitrarily large -# inputs will not significantly alter the time taken for shape computation. +# 观察到,由于没有实际化数据,即使传入任意大的输入,用于形状计算的时间也不会显著改变。 t_large = torch.rand(2**10, 3, 2**16, 2**16, device="meta") start = timeit.default_timer() @@ -38,11 +33,11 @@ end = timeit.default_timer() print(out) -print(f"Time taken: {end-start}") +print(f"所需时间: {end-start}") ###################################################### -# Consider an arbitrary network such as the following: +# 考虑以下任意网络: import torch.nn as nn import torch.nn.functional as F @@ -61,7 +56,7 @@ def __init__(self): def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) - x = torch.flatten(x, 1) # flatten all dimensions except batch + x = torch.flatten(x, 1) # 展平除批次维度外的所有维度 x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) @@ -69,15 +64,14 @@ def forward(self, x): ############################################################################### -# We can view the intermediate shapes within an entire network by registering a -# forward hook to each layer that prints the shape of the output. +# 我们可以通过为每一层注册一个前向钩子来打印输出的形状,从而查看整个网络中间层的形状。 + def fw_hook(module, input, output): - print(f"Shape of output to {module} is {output.shape}.") + print(f"{module}的输出形状为{output.shape}。") -# Any tensor created within this torch.device context manager will be -# on the meta device. +# 在此torch.device上下文管理器中创建的任何张量都将在meta设备上。 with torch.device("meta"): net = Net() inp = torch.randn((1024, 3, 32, 32)) diff --git a/docs/_downloads/aa116673383c7eeeacfb92b8c9beb97a/torch_logs.py b/docs/_downloads/aa116673383c7eeeacfb92b8c9beb97a/torch_logs.py index b5c3f0b..2dfa426 100644 --- a/docs/_downloads/aa116673383c7eeeacfb92b8c9beb97a/torch_logs.py +++ b/docs/_downloads/aa116673383c7eeeacfb92b8c9beb97a/torch_logs.py @@ -1,96 +1,86 @@ """ -(beta) Using TORCH_LOGS python API with torch.compile +(Beta) 使用 TORCH_LOGS python API 与 torch.compile ========================================================================================== -**Author:** `Michael Lazos `_ +**作者:** `Michael Lazos `_ """ import logging ###################################################################### # -# This tutorial introduces the ``TORCH_LOGS`` environment variable, as well as the Python API, and -# demonstrates how to apply it to observe the phases of ``torch.compile``. +# 本教程介绍了 ``TORCH_LOGS`` 环境变量以及 Python API,并演示了如何将其应用于观察 ``torch.compile`` 的各个阶段。 # # .. note:: # -# This tutorial requires PyTorch 2.2.0 or later. +# 本教程需要 PyTorch 2.2.0 或更高版本。 # # ###################################################################### -# Setup +# 设置 # ~~~~~~~~~~~~~~~~~~~~~ -# In this example, we'll set up a simple Python function which performs an elementwise -# add and observe the compilation process with ``TORCH_LOGS`` Python API. +# 在这个例子中,我们将设置一个简单的 Python 函数,执行元素级加法,并使用 ``TORCH_LOGS`` Python API 观察编译过程。 # # .. note:: # -# There is also an environment variable ``TORCH_LOGS``, which can be used to -# change logging settings at the command line. The equivalent environment -# variable setting is shown for each example. +# 还有一个环境变量 ``TORCH_LOGS``,可用于在命令行中更改日志设置。每个示例都显示了等效的环境变量设置。 import torch -# exit cleanly if we are on a device that doesn't support torch.compile +# 如果设备不支持 torch.compile,则干净地退出 if torch.cuda.get_device_capability() < (7, 0): - print("Skipping because torch.compile is not supported on this device.") + print("跳过,因为此设备不支持 torch.compile。") else: + @torch.compile() def fn(x, y): z = x + y return z + 2 - inputs = (torch.ones(2, 2, device="cuda"), torch.zeros(2, 2, device="cuda")) - -# print separator and reset dynamo -# between each example + # 在每个示例之间打印分隔符并重置 dynamo def separator(name): print(f"==================={name}=========================") torch._dynamo.reset() - - separator("Dynamo Tracing") -# View dynamo tracing -# TORCH_LOGS="+dynamo" + separator("Dynamo 跟踪") + # 查看 dynamo 跟踪 + # TORCH_LOGS="+dynamo" torch._logging.set_logs(dynamo=logging.DEBUG) fn(*inputs) - separator("Traced Graph") -# View traced graph -# TORCH_LOGS="graph" + separator("跟踪的图形") + # 查看跟踪的图形 + # TORCH_LOGS="graph" torch._logging.set_logs(graph=True) fn(*inputs) - separator("Fusion Decisions") -# View fusion decisions -# TORCH_LOGS="fusion" + separator("融合决策") + # 查看融合决策 + # TORCH_LOGS="fusion" torch._logging.set_logs(fusion=True) fn(*inputs) - separator("Output Code") -# View output code generated by inductor -# TORCH_LOGS="output_code" + separator("输出代码") + # 查看 inductor 生成的输出代码 + # TORCH_LOGS="output_code" torch._logging.set_logs(output_code=True) fn(*inputs) separator("") ###################################################################### -# Conclusion +# 结论 # ~~~~~~~~~~ # -# In this tutorial we introduced the TORCH_LOGS environment variable and python API -# by experimenting with a small number of the available logging options. -# To view descriptions of all available options, run any python script -# which imports torch and set TORCH_LOGS to "help". +# 在本教程中,我们介绍了 TORCH_LOGS 环境变量和 python API,并通过实验了一小部分可用的日志选项。 +# 要查看所有可用选项的描述,请运行任何导入 torch 的 python 脚本,并将 TORCH_LOGS 设置为 "help"。 # -# Alternatively, you can view the `torch._logging documentation`_ to see -# descriptions of all available logging options. +# 或者,您可以查看 `torch._logging 文档`_ 以查看所有可用日志选项的描述。 # -# For more information on torch.compile, see the `torch.compile tutorial`_. +# 有关 torch.compile 的更多信息,请参阅 `torch.compile 教程`_。 # -# .. _torch._logging documentation: https://pytorch.org/docs/main/logging.html -# .. _torch.compile tutorial: https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html +# .. _torch._logging 文档: https://pytorch.org/docs/main/logging.html +# .. _torch.compile 教程: https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html diff --git a/docs/_downloads/b94668e8c8d352e04672e8eaad180ae6/Captum_Recipe.py b/docs/_downloads/b94668e8c8d352e04672e8eaad180ae6/Captum_Recipe.py index 11fdc24..99b0814 100644 --- a/docs/_downloads/b94668e8c8d352e04672e8eaad180ae6/Captum_Recipe.py +++ b/docs/_downloads/b94668e8c8d352e04672e8eaad180ae6/Captum_Recipe.py @@ -1,190 +1,174 @@ """ -Model Interpretability using Captum +使用 Captum 进行模型可解释性 =================================== - """ - ###################################################################### -# Captum helps you understand how the data features impact your model -# predictions or neuron activations, shedding light on how your model -# operates. -# -# Using Captum, you can apply a wide range of state-of-the-art feature -# attribution algorithms such as \ ``Guided GradCam``\ and -# \ ``Integrated Gradients``\ in a unified way. -# -# In this recipe you will learn how to use Captum to: +# Captum 可以帮助您了解数据特征如何影响模型的预测或神经元激活,从而揭示模型的工作原理。 +# +# 使用 Captum,您可以统一地应用广泛的最先进的特征归因算法,如 ``Guided GradCam`` 和 ``Integrated Gradients``。 +# +# 在本教程中,您将学习如何使用 Captum: +# +# - 将图像分类器的预测归因于相应的图像特征。 +# - 可视化归因结果。 # -# - Attribute the predictions of an image classifier to their corresponding image features. -# - Visualize the attribution results. -# - ###################################################################### -# Before you begin +# 开始之前 # ---------------- -# - +# ###################################################################### -# Make sure Captum is installed in your active Python environment. Captum -# is available both on GitHub, as a ``pip`` package, or as a ``conda`` -# package. For detailed instructions, consult the installation guide at -# https://captum.ai/ -# - +# 确保在您的活跃 Python 环境中安装了 Captum。Captum 可以在 GitHub 上获取,也可以作为 ``pip`` 包或 ``conda`` 包获取。 +# 有关详细说明,请查阅安装指南 https://captum.ai/ +# ###################################################################### -# For a model, we use a built-in image classifier in PyTorch. Captum can -# reveal which parts of a sample image support certain predictions made by -# the model. -# +# 对于模型,我们使用 PyTorch 中的内置图像分类器。Captum 可以揭示样本图像的哪些部分支持了模型做出的某些预测。 +# +from io import BytesIO +import requests import torchvision -from torchvision import models, transforms from PIL import Image -import requests -from io import BytesIO +from torchvision import models, transforms -model = torchvision.models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1).eval() +model = torchvision.models.resnet18( + weights=models.ResNet18_Weights.IMAGENET1K_V1 +).eval() -response = requests.get("https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg") +response = requests.get( + "https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg" +) img = Image.open(BytesIO(response.content)) -center_crop = transforms.Compose([ - transforms.Resize(256), - transforms.CenterCrop(224), -]) - -normalize = transforms.Compose([ - transforms.ToTensor(), # converts the image to a tensor with values between 0 and 1 - transforms.Normalize( # normalize to follow 0-centered imagenet pixel RGB distribution - mean=[0.485, 0.456, 0.406], - std=[0.229, 0.224, 0.225] - ) -]) +center_crop = transforms.Compose( + [ + transforms.Resize(256), + transforms.CenterCrop(224), + ] +) + +normalize = transforms.Compose( + [ + transforms.ToTensor(), # 将图像转换为值在 0 到 1 之间的张量 + transforms.Normalize( # 归一化以遵循 0 均值的 ImageNet 像素 RGB 分布 + mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] + ), + ] +) input_img = normalize(center_crop(img)).unsqueeze(0) - ###################################################################### -# Computing Attribution +# 计算归因 # --------------------- -# - +# ###################################################################### -# Among the top-3 predictions of the models are classes 208 and 283 which -# correspond to dog and cat. -# -# Let us attribute each of these predictions to the corresponding part of -# the input, using Captum’s \ ``Occlusion``\ algorithm. -# +# 在模型的前 3 个预测中,类别 208 和 283 分别对应于狗和猫。 +# +# 让我们使用 Captum 的 ``Occlusion`` 算法将这些预测归因于输入的相应部分。 +# -from captum.attr import Occlusion +from captum.attr import Occlusion occlusion = Occlusion(model) -strides = (3, 9, 9) # smaller = more fine-grained attribution but slower -target=208, # Labrador index in ImageNet -sliding_window_shapes=(3,45, 45) # choose size enough to change object appearance -baselines = 0 # values to occlude the image with. 0 corresponds to gray - -attribution_dog = occlusion.attribute(input_img, - strides = strides, - target=target, - sliding_window_shapes=sliding_window_shapes, - baselines=baselines) - - -target=283, # Persian cat index in ImageNet -attribution_cat = occlusion.attribute(input_img, - strides = strides, - target=target, - sliding_window_shapes=sliding_window_shapes, - baselines=0) - +strides = (3, 9, 9) # 步长越小,归因越细粒度,但速度越慢 +target = (208,) # ImageNet 中的拉布拉多索引 +sliding_window_shapes = (3, 45, 45) # 选择足以改变对象外观的大小 +baselines = 0 # 用于遮挡图像的值。0 对应灰色 + +attribution_dog = occlusion.attribute( + input_img, + strides=strides, + target=target, + sliding_window_shapes=sliding_window_shapes, + baselines=baselines, +) + + +target = (283,) # ImageNet 中的波斯猫索引 +attribution_cat = occlusion.attribute( + input_img, + strides=strides, + target=target, + sliding_window_shapes=sliding_window_shapes, + baselines=0, +) ###################################################################### -# Besides ``Occlusion``, Captum features many algorithms such as -# \ ``Integrated Gradients``\ , \ ``Deconvolution``\ , -# \ ``GuidedBackprop``\ , \ ``Guided GradCam``\ , \ ``DeepLift``\ , and -# \ ``GradientShap``\ . All of these algorithms are subclasses of -# ``Attribution`` which expects your model as a callable ``forward_func`` -# upon initialization and has an ``attribute(...)`` method which returns -# the attribution result in a unified format. -# -# Let us visualize the computed attribution results in case of images. -# - +# 除了 ``Occlusion`` 之外,Captum 还提供了许多算法,如 ``Integrated Gradients``、``Deconvolution``、 +# ``GuidedBackprop``、``Guided GradCam``、``DeepLift`` 和 ``GradientShap``。所有这些算法都是 ``Attribution`` 的子类, +# 在初始化时需要将您的模型作为可调用的 ``forward_func``传入,并具有 ``attribute(...)`` 方法,该方法以统一的格式返回归因结果。 +# +# 让我们可视化计算出的图像归因结果。 +# ###################################################################### -# Visualizing the Results +# 可视化结果 # ----------------------- -# - +# ###################################################################### -# Captum’s \ ``visualization``\ utility provides out-of-the-box methods -# to visualize attribution results both for pictorial and for textual -# inputs. -# +# Captum 的 ``visualization`` 实用程序提供了开箱即用的方法,用于可视化图像和文本输入的归因结果。 +# import numpy as np from captum.attr import visualization as viz -# Convert the compute attribution tensor into an image-like numpy array -attribution_dog = np.transpose(attribution_dog.squeeze().cpu().detach().numpy(), (1,2,0)) +# 将计算出的归因张量转换为类似图像的 numpy 数组 +attribution_dog = np.transpose( + attribution_dog.squeeze().cpu().detach().numpy(), (1, 2, 0) +) vis_types = ["heat_map", "original_image"] -vis_signs = ["all", "all"] # "positive", "negative", or "all" to show both -# positive attribution indicates that the presence of the area increases the prediction score -# negative attribution indicates distractor areas whose absence increases the score - -_ = viz.visualize_image_attr_multiple(attribution_dog, - np.array(center_crop(img)), - vis_types, - vis_signs, - ["attribution for dog", "image"], - show_colorbar = True - ) - - -attribution_cat = np.transpose(attribution_cat.squeeze().cpu().detach().numpy(), (1,2,0)) - -_ = viz.visualize_image_attr_multiple(attribution_cat, - np.array(center_crop(img)), - ["heat_map", "original_image"], - ["all", "all"], # positive/negative attribution or all - ["attribution for cat", "image"], - show_colorbar = True - ) - +vis_signs = ["all", "all"] # "positive"、"negative" 或 "all" 以显示两者 +# 正归因表示该区域的存在会增加预测分数 +# 负归因表示该区域的缺失会增加预测分数 + +_ = viz.visualize_image_attr_multiple( + attribution_dog, + np.array(center_crop(img)), + vis_types, + vis_signs, + ["attribution for dog", "image"], + show_colorbar=True, +) + + +attribution_cat = np.transpose( + attribution_cat.squeeze().cpu().detach().numpy(), (1, 2, 0) +) + +_ = viz.visualize_image_attr_multiple( + attribution_cat, + np.array(center_crop(img)), + ["heat_map", "original_image"], + ["all", "all"], # 正/负归因或全部 + ["attribution for cat", "image"], + show_colorbar=True, +) ###################################################################### -# If your data is textual, ``visualization.visualize_text()`` offers a -# dedicated view to explore attribution on top of the input text. Find out -# more at http://captum.ai/tutorials/IMDB_TorchText_Interpret -# - +# 如果您的数据是文本,``visualization.visualize_text()`` 提供了一个专用视图,用于探索输入文本的归因。 +# 更多信息请访问 http://captum.ai/tutorials/IMDB_TorchText_Interpret +# ###################################################################### -# Final Notes +# 最后注意 # ----------- -# - +# ###################################################################### -# Captum can handle most model types in PyTorch across modalities -# including vision, text, and more. With Captum you can: \* Attribute a -# specific output to the model input as illustrated above. \* Attribute a -# specific output to a hidden-layer neuron (see Captum API reference). \* -# Attribute a hidden-layer neuron response to the model input (see Captum -# API reference). -# -# For complete API of the supported methods and a list of tutorials, -# consult our website http://captum.ai -# -# Another useful post by Gilbert Tanner: +# Captum 可以处理 PyTorch 中包括视觉、文本等各种模态的大多数模型类型。使用 Captum 您可以: +# * 将特定输出归因于模型输入,如上所示。 +# * 将特定输出归因于隐藏层神经元(参见 Captum API 参考)。 +# * 将隐藏层神经元响应归因于模型输入(参见 Captum API 参考)。 +# +# 有关支持方法的完整 API 和教程列表,请查阅我们的网站 http://captum.ai +# +# Gilbert Tanner 的另一篇有用文章: # https://gilberttanner.com/blog/interpreting-pytorch-models-with-captum -# +# diff --git a/docs/_downloads/d493dae89f8804b07cdf678f7d0c2dc6/tensorboard_with_pytorch.ipynb b/docs/_downloads/d493dae89f8804b07cdf678f7d0c2dc6/tensorboard_with_pytorch.ipynb index 86352e0..1e3b81f 100644 --- a/docs/_downloads/d493dae89f8804b07cdf678f7d0c2dc6/tensorboard_with_pytorch.ipynb +++ b/docs/_downloads/d493dae89f8804b07cdf678f7d0c2dc6/tensorboard_with_pytorch.ipynb @@ -15,14 +15,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# How to use TensorBoard with PyTorch\nTensorBoard is a visualization toolkit for machine learning experimentation. \nTensorBoard allows tracking and visualizing metrics such as loss and accuracy, \nvisualizing the model graph, viewing histograms, displaying images and much more. \nIn this tutorial we are going to cover TensorBoard installation, \nbasic usage with PyTorch, and how to visualize data you logged in TensorBoard UI.\n\n## Installation\nPyTorch should be installed to log models and metrics into TensorBoard log \ndirectory. The following command will install PyTorch 1.4+ via \nAnaconda (recommended):\n\n```sh\n$ conda install pytorch torchvision -c pytorch\n```\nor pip\n\n```sh\n$ pip install torch torchvision\n```\n" + "\n# \u5982\u4f55\u5728PyTorch\u4e2d\u4f7f\u7528TensorBoard\nTensorBoard\u662f\u4e00\u4e2a\u7528\u4e8e\u673a\u5668\u5b66\u4e60\u5b9e\u9a8c\u7684\u53ef\u89c6\u5316\u5de5\u5177\u5305\u3002\nTensorBoard\u5141\u8bb8\u8ddf\u8e2a\u548c\u53ef\u89c6\u5316\u6307\u6807,\u5982\u635f\u5931\u548c\u51c6\u786e\u7387,\n\u53ef\u89c6\u5316\u6a21\u578b\u56fe,\u67e5\u770b\u76f4\u65b9\u56fe,\u663e\u793a\u56fe\u50cf\u7b49\u3002\n\u5728\u672c\u6559\u7a0b\u4e2d,\u6211\u4eec\u5c06\u4ecb\u7ecdTensorBoard\u7684\u5b89\u88c5\u3001\n\u5728PyTorch\u4e2d\u7684\u57fa\u672c\u7528\u6cd5,\u4ee5\u53ca\u5982\u4f55\u5728TensorBoard UI\u4e2d\u53ef\u89c6\u5316\u60a8\u8bb0\u5f55\u7684\u6570\u636e\u3002\n\n## \u5b89\u88c5\n\u5e94\u5b89\u88c5PyTorch\u4ee5\u5c06\u6a21\u578b\u548c\u6307\u6807\u8bb0\u5f55\u5230TensorBoard\u65e5\u5fd7\n\u76ee\u5f55\u3002\u4ee5\u4e0b\u547d\u4ee4\u5c06\u901a\u8fc7Anaconda(\u63a8\u8350)\u5b89\u88c5PyTorch 1.4+:\n\n```sh\n$ conda install pytorch torchvision -c pytorch\n```\n\u6216\u8005\u4f7f\u7528pip:\n\n```sh\n$ pip install torch torchvision\n```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Using TensorBoard in PyTorch\n\nLet\u2019s now try using TensorBoard with PyTorch! Before logging anything, \nwe need to create a ``SummaryWriter`` instance.\n\n\n" + "## \u5728PyTorch\u4e2d\u4f7f\u7528TensorBoard\n\n\u73b0\u5728\u8ba9\u6211\u4eec\u5c1d\u8bd5\u5728PyTorch\u4e2d\u4f7f\u7528TensorBoard!\u5728\u8bb0\u5f55\u4efb\u4f55\u5185\u5bb9\u4e4b\u524d,\n\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a ``SummaryWriter`` \u5b9e\u4f8b\u3002\n\n\n" ] }, { @@ -33,21 +33,21 @@ }, "outputs": [], "source": [ - "import torch\nfrom torch.utils.tensorboard import SummaryWriter\nwriter = SummaryWriter()" + "import torch\nfrom torch.utils.tensorboard import SummaryWriter\n\nwriter = SummaryWriter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Writer will output to ``./runs/`` directory by default.\n\n\n" + "\u5199\u5165\u5668\u9ed8\u8ba4\u5c06\u8f93\u51fa\u5230 ``./runs/`` \u76ee\u5f55\u3002\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Log scalars\n\nIn machine learning, it\u2019s important to understand key metrics such as \nloss and how they change during training. Scalar helps to save \nthe loss value of each training step, or the accuracy after each epoch. \n\nTo log a scalar value, use \n``add_scalar(tag, scalar_value, global_step=None, walltime=None)``. \nFor example, lets create a simple linear regression training, and \nlog loss value using ``add_scalar``\n\n\n" + "## \u8bb0\u5f55\u6807\u91cf\n\n\u5728\u673a\u5668\u5b66\u4e60\u4e2d,\u4e86\u89e3\u5173\u952e\u6307\u6807(\u5982\u635f\u5931)\u53ca\u5176\u5728\u8bad\u7ec3\u671f\u95f4\u7684\u53d8\u5316\u975e\u5e38\u91cd\u8981\u3002\n\u6807\u91cf\u53ef\u7528\u4e8e\u4fdd\u5b58\u6bcf\u4e2a\u8bad\u7ec3\u6b65\u9aa4\u7684\u635f\u5931\u503c\u6216\u6bcf\u4e2aepoch\u7684\u51c6\u786e\u7387\u3002\n\n\u8981\u8bb0\u5f55\u6807\u91cf\u503c,\u8bf7\u4f7f\u7528\n``add_scalar(tag, scalar_value, global_step=None, walltime=None)``\u3002\n\u4f8b\u5982,\u8ba9\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u7ebf\u6027\u56de\u5f52\u8bad\u7ec3,\u5e76\n\u4f7f\u7528 ``add_scalar`` \u8bb0\u5f55\u635f\u5931\u503c\n\n\n" ] }, { @@ -58,14 +58,14 @@ }, "outputs": [], "source": [ - "x = torch.arange(-5, 5, 0.1).view(-1, 1)\ny = -5 * x + 0.1 * torch.randn(x.size())\n\nmodel = torch.nn.Linear(1, 1)\ncriterion = torch.nn.MSELoss()\noptimizer = torch.optim.SGD(model.parameters(), lr = 0.1)\n\ndef train_model(iter):\n for epoch in range(iter):\n y1 = model(x)\n loss = criterion(y1, y)\n writer.add_scalar(\"Loss/train\", loss, epoch)\n optimizer.zero_grad()\n loss.backward()\n optimizer.step()\n \ntrain_model(10)\nwriter.flush()" + "x = torch.arange(-5, 5, 0.1).view(-1, 1)\ny = -5 * x + 0.1 * torch.randn(x.size())\n\nmodel = torch.nn.Linear(1, 1)\ncriterion = torch.nn.MSELoss()\noptimizer = torch.optim.SGD(model.parameters(), lr=0.1)\n\n\ndef train_model(iter):\n for epoch in range(iter):\n y1 = model(x)\n loss = criterion(y1, y)\n writer.add_scalar(\"Loss/train\", loss, epoch)\n optimizer.zero_grad()\n loss.backward()\n optimizer.step()\n\n\ntrain_model(10)\nwriter.flush()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Call ``flush()`` method to make sure that all pending events \nhave been written to disk.\n\nSee [torch.utils.tensorboard tutorials](https://pytorch.org/docs/stable/tensorboard.html) \nto find more TensorBoard visualization types you can log.\n\nIf you do not need the summary writer anymore, call ``close()`` method.\n\n\n" + "\u8c03\u7528 ``flush()`` \u65b9\u6cd5\u4ee5\u786e\u4fdd\u6240\u6709\u5f85\u5904\u7406\u4e8b\u4ef6\n\u5df2\u5199\u5165\u78c1\u76d8\u3002\n\n\u8bf7\u53c2\u9605 [torch.utils.tensorboard \u6559\u7a0b](https://pytorch.org/docs/stable/tensorboard.html)\n\u4ee5\u4e86\u89e3\u60a8\u53ef\u4ee5\u8bb0\u5f55\u7684\u66f4\u591aTensorBoard\u53ef\u89c6\u5316\u7c7b\u578b\u3002\n\n\u5982\u679c\u60a8\u4e0d\u518d\u9700\u8981\u6458\u8981\u5199\u5165\u5668,\u8bf7\u8c03\u7528 ``close()`` \u65b9\u6cd5\u3002\n\n\n" ] }, { @@ -83,14 +83,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Run TensorBoard\n\nInstall TensorBoard through the command line to visualize data you logged\n\n```sh\npip install tensorboard\n```\nNow, start TensorBoard, specifying the root log directory you used above. \nArgument ``logdir`` points to directory where TensorBoard will look to find \nevent files that it can display. TensorBoard will recursively walk \nthe directory structure rooted at ``logdir``, looking for ``.*tfevents.*`` files.\n\n```sh\ntensorboard --logdir=runs\n```\nGo to the URL it provides OR to [http://localhost:6006/](http://localhost:6006/)\n\n\n\nThis dashboard shows how the loss and accuracy change with every epoch. \nYou can use it to also track training speed, learning rate, and other \nscalar values. It\u2019s helpful to compare these metrics across different \ntraining runs to improve your model.\n\n\n" + "## \u8fd0\u884cTensorBoard\n\n\u901a\u8fc7\u547d\u4ee4\u884c\u5b89\u88c5TensorBoard\u4ee5\u53ef\u89c6\u5316\u60a8\u8bb0\u5f55\u7684\u6570\u636e\n\n```sh\npip install tensorboard\n```\n\u73b0\u5728,\u542f\u52a8TensorBoard,\u6307\u5b9a\u60a8\u4e4b\u524d\u4f7f\u7528\u7684\u6839\u65e5\u5fd7\u76ee\u5f55\u3002\n\u53c2\u6570 ``logdir`` \u6307\u5411TensorBoard\u5c06\u67e5\u627e\u53ef\u663e\u793a\u7684\u4e8b\u4ef6\u6587\u4ef6\u7684\u76ee\u5f55\u3002\nTensorBoard\u5c06\u9012\u5f52\u904d\u5386 ``logdir`` \u6839\u76ee\u5f55\u4e0b\u7684\u76ee\u5f55\u7ed3\u6784,\u5bfb\u627e ``.*tfevents.*`` \u6587\u4ef6\u3002\n\n```sh\ntensorboard --logdir=runs\n```\n\u8f6c\u5230\u5b83\u63d0\u4f9b\u7684URL\u6216 [http://localhost:6006/](http://localhost:6006/)\n\n\n\n\u6b64\u4eea\u8868\u677f\u663e\u793a\u4e86\u635f\u5931\u548c\u51c6\u786e\u7387\u5982\u4f55\u968f\u7740\u6bcf\u4e2aepoch\u800c\u53d8\u5316\u3002\n\u60a8\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u8ddf\u8e2a\u8bad\u7ec3\u901f\u5ea6\u3001\u5b66\u4e60\u7387\u548c\u5176\u4ed6\u6807\u91cf\u503c\u3002\n\u6bd4\u8f83\u4e0d\u540c\u8bad\u7ec3\u8fd0\u884c\u7684\u8fd9\u4e9b\u6307\u6807\u6709\u52a9\u4e8e\u6539\u8fdb\u60a8\u7684\u6a21\u578b\u3002\n\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Learn More\n\n- [torch.utils.tensorboard](https://pytorch.org/docs/stable/tensorboard.html) docs\n- [Visualizing models, data, and training with TensorBoard](https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html) tutorial\n\n\n" + "## \u4e86\u89e3\u66f4\u591a\n\n- [torch.utils.tensorboard](https://pytorch.org/docs/stable/tensorboard.html) \u6587\u6863\n- [\u4f7f\u7528TensorBoard\u53ef\u89c6\u5316\u6a21\u578b\u3001\u6570\u636e\u548c\u8bad\u7ec3](https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html) \u6559\u7a0b\n\n\n" ] } ], diff --git a/docs/_downloads/db0de66558b1ca13e18495862bf4b024/swap_tensors.py b/docs/_downloads/db0de66558b1ca13e18495862bf4b024/swap_tensors.py index d3b90c6..d0f3007 100644 --- a/docs/_downloads/db0de66558b1ca13e18495862bf4b024/swap_tensors.py +++ b/docs/_downloads/db0de66558b1ca13e18495862bf4b024/swap_tensors.py @@ -1,81 +1,77 @@ """ -Extension points in ``nn.Module`` for ``load_state_dict`` and tensor subclasses +在 ``nn.Module`` 中为 ``load_state_dict`` 和张量子类提供扩展点 =============================================================================== -**Author:** `Mikayla Gawarecki `_ +**作者:** `Mikayla Gawarecki `_ -This recipe introduces a new utility function ``torch.utils.swap_tensors`` -as well as two new extension points where it has been integrated in -``nn.Module``: +本教程介绍了一个新的实用函数 ``torch.utils.swap_tensors``, +以及在 ``nn.Module`` 中集成它的两个新扩展点: -* ``nn.Module.to()`` and related methods +* ``nn.Module.to()`` 和相关方法 * ``nn.Module.load_state_dict()`` .. note:: - This recipe requires PyTorch 2.3.0 or later. + 本教程需要 PyTorch 2.3.0 或更高版本。 """ ############################################################################### # ``torch.utils.swap_tensors`` # ---------------------------- -# ``torch.utils.swap_tensors`` (hereafter referred to as ``swap_tensors``) is a -# utility function that takes in two Python tensors and swaps them. +# ``torch.utils.swap_tensors``(以下简称为 ``swap_tensors``) 是一个 +# 实用函数,它接受两个 Python 张量并交换它们。 import torch import torch.nn as nn + t1 = torch.arange(2) t2 = torch.arange(3) -print(f"Before swapping, t1: {t1}, t2: {t2}") +print(f"交换前, t1: {t1}, t2: {t2}") torch.utils.swap_tensors(t1, t2) -print(f"After swapping, t1: {t1}, t2: {t2}") +print(f"交换后, t1: {t1}, t2: {t2}") ################################################################################ -# More specifically, ``swap_tensors`` swaps the Python ``__class__``, ``__dict__`` -# and ``__slots__`` of the two tensors, as well as their associated ``at::Tensor``. +# 更具体地说,``swap_tensors`` 交换了两个张量的 Python ``__class__``、``__dict__`` +# 和 ``__slots__``,以及它们相关的 ``at::Tensor``。 # # -# Application to ``nn.Module`` +# 应用于 ``nn.Module`` # ---------------------------- -# This utility is pertinent to ``nn.Module`` when a Python object outside -# of the module holds a reference to parameters of the module. If an ``nn.Module`` -# modifies any of its parameters out of place, the object holding references to -# the parameters will not see the change. A classic example of this is the -# optimizer, which holds a reference to the parameters of the ``nn.Module``. -# This leads to a silent correctness issue where the ``optimizer.step()`` will -# run without error but the weights of the ``nn.Module`` will not be updated. +# 当 ``nn.Module`` 之外的 Python 对象持有该模块参数的引用时,此实用函数就很有用。 +# 如果 ``nn.Module`` 就地修改了任何参数,持有这些参数引用的对象将无法看到更改。 +# 一个典型的例子是优化器,它持有 ``nn.Module`` 参数的引用。 +# 这会导致一个潜在的正确性问题,即 ``optimizer.step()`` 会无错误运行, +# 但 ``nn.Module`` 的权重不会被更新。 mod = torch.nn.Linear(1, 2, bias=False) optimizer = torch.optim.SGD(mod.parameters()) -print(f"weight in mod: {mod.weight}") -print(f"weight in optimizer: {optimizer.param_groups[0]['params']}") +print(f"mod 中的权重: {mod.weight}") +print(f"优化器中的权重: {optimizer.param_groups[0]['params']}") mod.weight = torch.nn.Parameter(2 * mod.weight) -print(f"weight in mod: {mod.weight}") -print(f"weight in optimizer: {optimizer.param_groups[0]['params']}") +print(f"mod 中的权重: {mod.weight}") +print(f"优化器中的权重: {optimizer.param_groups[0]['params']}") ################################################################################ -# ``nn.Module.to()`` and related methods +# ``nn.Module.to()`` 和相关方法 # -------------------------------------- -# This includes methods that change the device of the module (such as ``nn.Module.cpu()``), -# methods that change the ``dtype`` of the module (such as ``nn.Module.float()``) -# as well as methods that allow the module to be materialized -# (such as ``nn.Module.to_empty()``). +# 这包括改变模块设备的方法(如 ``nn.Module.cpu()``)、 +# 改变模块 ``dtype`` 的方法(如 ``nn.Module.float()``)、 +# 以及允许模块实例化的方法(如 ``nn.Module.to_empty()``)。 # -# At first glance, it might be non-intuitive that these methods are able to -# modify the parameters of the module in-place. The existing approach has been -# to use a nasty hack dating back from the first days of PyTorch. +# 乍一看,这些方法能够就地修改模块的参数可能看起来不太直观。 +# 现有的方法是使用一种追溯到 PyTorch 最初几天的丑陋黑客手段。 # -# Notably, the existing approach does not work in these cases: +# 值得注意的是,现有方法在以下情况下无法工作: # -# * when using ``__torch_dispatch__`` subclasses -# * when ``param`` and ``new_param`` do not have the same Python ``type()`` -# * For tensors with special C++ representations (such as sparse tensors and ``XLA`` tensors) +# * 使用 ``__torch_dispatch__`` 子类 +# * ``param`` 和 ``new_param`` 的 Python ``type()`` 不同 +# * 对于具有特殊 C++ 表示的张量(如稀疏张量和 ``XLA`` 张量) # -# In the following part of this recipe, we will define a toy ``__torch_dispatch__`` -# subclass ``MyQuantizedLinearWeight`` that represents quantized linear weights. -# This subclass will be used for illustration purposes throughout the rest of -# the tutorial. For brevity, we omit most of the ``__torch_dispatch__`` -# implementation. +# 在本教程的下一部分,我们将定义一个玩具 ``__torch_dispatch__`` 子类 ``MyQuantizedLinearWeight`` +# 来表示量化的线性权重。在本教程的剩余部分,我们将使用这个子类进行说明。 +# 为简洁起见,我们省略了大部分 ``__torch_dispatch__`` 实现。 + aten = torch.ops.aten + class MyQuantizedLinearWeight(torch.Tensor): @staticmethod def __new__(cls, elem, scale): @@ -86,7 +82,8 @@ def __new__(cls, elem, scale): layout=elem.layout, device=elem.device, strides=elem.stride(), - storage_offset=elem.storage_offset()) + storage_offset=elem.storage_offset(), + ) def __init__(self, elem: torch.Tensor, scale: float): self.elem = elem @@ -100,42 +97,39 @@ def __torch_dispatch__(cls, func, types, args, kwargs): if func in (aten.detach.default, aten._to_copy.default): new_elem = func(args[0].elem, *args[1:], **kwargs) return cls(new_elem, args[0].scale) - # Implementations for certain ops would be added to ``OP_TABLE``. - # We omit this for brevity. + # 某些操作的实现将添加到 ``OP_TABLE``。 + # 为简洁起见,我们在此省略。 OP_TABLE = dict() if func in OP_TABLE: - return OP_TABLE[func](func, args, kwargs) - raise NotImplementedError(f"Unsupported function {func}") + return OP_TABLE[func](func, args, kwargs) + raise NotImplementedError(f"不支持的函数 {func}") + ################################################################################# -# Let us create an ``nn.Linear`` layer of ``dtype`` ``torch.float32`` where the weight is -# a ``MyQuantizedLinearWeight`` and try to convert it to ``torch.bfloat16``. -# Observe that the weight's ``dtype`` changes as expected. However, the ``dtype`` -# of the subclass' payload (``elem``) does not change. +# 让我们创建一个 ``dtype`` 为 ``torch.float32`` 的 ``nn.Linear`` 层, +# 其权重是 ``MyQuantizedLinearWeight``。然后尝试将其转换为 ``torch.bfloat16``。 +# 观察到权重的 ``dtype`` 如预期般改变了。但是子类的有效载荷(``elem``)的 ``dtype`` 没有改变。 m = nn.Linear(3, 5, dtype=torch.float32) m.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5)) -print(f"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之前: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") m.bfloat16() -print(f"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之后: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") print(f"m.weight.dtype: {m.weight.dtype}") print(f"m.weight.elem.dtype: {m.weight.elem.dtype}") print(f"m.bias.dtype: {m.bias.dtype}") ################################################################################ -# To this end, we introduce a global config -# ``torch.__future__.set_swap_module_params_on_conversion`` that will use -# ``swap_tensors`` to swap the parameters of the module while preserving -# references in place of ``.data`` setting. When this config is set, -# ``swap_tensors`` will be used during the conversion, which ensures that -# the ``dtype`` of the payload is properly converted. +# 为此,我们引入了一个全局配置 ``torch.__future__.set_swap_module_params_on_conversion`` +# 它将使用 ``swap_tensors`` 交换模块的参数,同时保留 ``.data`` 设置中的引用。 +# 设置此配置后,在转换期间将使用 ``swap_tensors``,从而确保有效载荷的 ``dtype`` 正确转换。 torch.__future__.set_swap_module_params_on_conversion(True) m = nn.Linear(3, 5, dtype=torch.float32) m.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5)) -print(f"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之前: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") m.bfloat16() -print(f"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") +print(f"之后: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") print(f"m.weight.dtype: {m.weight.dtype}") print(f"m.weight.elem.dtype: {m.weight.elem.dtype}") print(f"m.bias.dtype: {m.bias.dtype}") @@ -144,42 +138,33 @@ def __torch_dispatch__(cls, func, types, args, kwargs): ################################################################################ # ``nn.Module.load_state_dict()`` # -------------------------------- -# Depending on the value of the ``assign`` keyword argument passed -# to ``load_state_dict()``, there are two ways to load the ``state_dict``: +# 根据传递给 ``load_state_dict()`` 的 ``assign`` 关键字参数的值, +# 有两种方式加载 ``state_dict``: # -# * ``assign=False``: preserves the properties of ``module.param`` and only takes the values -# from ``state_dict['param_name']`` -# * ``assign=True``: preserves the properties and values of ``state_dict['param_name']``. +# * ``assign=False``: 保留 ``module.param`` 的属性,只从 ``state_dict['param_name']`` 中获取值 +# * ``assign=True``: 保留 ``state_dict['param_name']`` 的属性和值。 # # -# Previously, these were implemented with in-place ``copy_`` and ``__setattr__`` respectively. -# With the existing implementation, each approach had its own limitations -- ``assign=False`` -# imposes the constraint that the type of the parameter in the ``state_dict`` must -# be the same as the type of the parameter in the module while ``assign=True`` imposes -# the constraint that anything that holds references to the module's parameters must -# be initialized after ``nn.Module.load_state_dict()``. +# 之前,这些分别是通过就地 ``copy_`` 和 ``__setattr__`` 实现的。 +# 在现有实现中,每种方法都有自己的限制 - ``assign=False`` 要求 ``state_dict`` 中的参数类型 +# 必须与模块中的参数类型相同,而 ``assign=True`` 要求在 ``nn.Module.load_state_dict()`` 之后 +# 初始化任何持有模块参数引用的对象。 # -# Now, we address both constraints by adding a ``swap_tensors`` path to ``load_state_dict()`` -# and introducing a new extension point ``torch.Tensor.module_load(self, other, assign=False)``. -# When the ``swap_tensors`` path is enabled via the ``__future__`` mentioned above, -# we can use a ``__torch_function__`` handler for ``module_load`` to apply a -# custom transformation to the value in the ``state_dict``. The result of this -# transformation will be swapped with the parameter in the module. +# 现在,我们通过在 ``load_state_dict()`` 中添加 ``swap_tensors`` 路径并引入新的扩展点 +# ``torch.Tensor.module_load(self, other, assign=False)`` 来解决这两个限制。 +# 当启用上述 ``__future__`` 时,我们可以使用 ``module_load`` 的 ``__torch_function__`` 处理程序 +# 对 ``state_dict`` 中的值应用自定义转换。转换的结果将与模块中的参数交换。 # -# In the following example, we will use the ``MyQuantizedLinearWeight`` subclass -# defined above to illustrate how we can use these features to apply a -# custom quantization scheme to the weights of a linear layer when -# loading the ``state_dict``. +# 在下面的示例中,我们将使用上面定义的 ``MyQuantizedLinearWeight`` 子类 +# 来说明如何使用这些功能在加载 ``state_dict`` 时对线性层的权重应用自定义量化方案。 # -# Recall that the ``__torch_function__`` handler for ``module_load`` will be -# invoked if either ``self`` or ``other`` (in this case ``param`` or -# ``state_dict[param_key]``) are ``MyQuantizedLinearWeight`` subclasses. +# 回顾一下,如果 ``self`` 或 ``other``(在本例中是 ``param`` 或 ``state_dict[param_key]``) +# 是 ``MyQuantizedLinearWeight`` 子类,则会调用 ``module_load`` 的 ``__torch_function__`` 处理程序。 # -# Assume that we expect the ``state_dict`` to contain plain tensors and the -# module to contain ``MyQuantizedLinearWeight`` parameters where we want the -# tensors in the ``state_dict`` to be transformed into the subclass. Then we -# can define a ``__torch_function__`` handler for ``torch.Tensor.module_load`` -# as such: +# 假设我们期望 ``state_dict`` 包含普通张量,而模块包含 ``MyQuantizedLinearWeight`` 参数, +# 我们希望将 ``state_dict`` 中的张量转换为子类。那么我们可以为 ``torch.Tensor.module_load`` 定义 +# 一个 ``__torch_function__`` 处理程序,如下所示: + @classmethod def custom_torch_function(cls, func, types, args=(), kwargs=None): @@ -191,51 +176,48 @@ def custom_torch_function(cls, func, types, args=(), kwargs=None): return MyQuantizedLinearWeight(src, dest.scale) else: with torch._C.DisableTorchFunctionSubclass(): - return func(*args, **kwargs) + return func(*args, **kwargs) + MyQuantizedLinearWeight.__torch_function__ = custom_torch_function ################################################################################# -# First, let us create a skeleton of a model on the meta device to avoid -# materializing storages. We convert all weights in the modules to -# ``MyQuantizedLinearWeight`` subclasses while leaving biases intact. +# 首先,让我们在 meta 设备上创建一个模型框架,以避免实例化存储。 +# 我们将模块中的所有权重转换为 ``MyQuantizedLinearWeight`` 子类,同时保留偏置不变。 + def fn(m): if isinstance(m, nn.Linear): requires_grad = m.weight.requires_grad m.weight = torch.nn.Parameter( - MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad - ) + MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad + ) + with torch.device("meta"): m = nn.Linear(3, 5) m.apply(fn) ################################################################################# -# We can then load the ``state_dict``. Observe that we use ``assign=True`` because -# for biases, we want to preserve the properties of the tensor in the ``state_dict`` -# (for example, we do not want the bias to be on the ``meta`` device after loading). +# 然后我们可以加载 ``state_dict``。注意我们使用 ``assign=True``,因为对于偏置, +# 我们希望保留 ``state_dict`` 中张量的属性(例如,我们不希望偏置在加载后位于 ``meta`` 设备上)。 torch.__future__.set_swap_module_params_on_conversion(True) -print(f"Before: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") -print(f"m.state_dict() before load_state_dict():\n {m.state_dict()}") +print(f"之前: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") +print(f"load_state_dict() 之前的 m.state_dict():\n {m.state_dict()}") state_dict = nn.Linear(3, 5).state_dict() print(f"state_dict:\n {state_dict}") m.load_state_dict(state_dict, assign=True) -print(f"After: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") -print(f"m.state_dict() after load_state_dict():\n {m.state_dict()}") +print(f"之后: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") +print(f"load_state_dict() 之后的 m.state_dict():\n {m.state_dict()}") ################################################################################# -# The above is a toy example of how we can use the new extension point in -# ``nn.Module.load_state_dict()``. One can also imagine alternate scenarios such -# as when we have tensor subclasses in the ``state_dict`` and plain ``nn.Parameters``/ -# tensors in the module or when both are tensor subclasses. Based on the use -# case, we can define the ``__torch_function__`` handler for ``module_load`` -# to apply the transforms as needed. +# 上面是一个如何使用 ``nn.Module.load_state_dict()`` 中的新扩展点的玩具示例。 +# 我们还可以想象其他场景,例如当 ``state_dict`` 中有张量子类而模块中有普通 ``nn.Parameters``/张量时, +# 或者两者都是张量子类时。根据使用场景,我们可以定义 ``module_load`` 的 ``__torch_function__`` 处理程序 +# 来应用所需的转换。 # -# Conclusion +# 结论 # ---------- -# In this recipe, we learned about ``swap_tensors``, the importance -# of preserving references for parameters in ``nn.Module`` as well as how to -# use the two new extension points that are gated by -# ``torch.__future__.set_swap_module_params_on_conversion``. +# 在本教程中,我们学习了 ``swap_tensors``、在 ``nn.Module`` 中保留参数引用的重要性, +# 以及如何使用由 ``torch.__future__.set_swap_module_params_on_conversion`` 控制的两个新扩展点。 diff --git a/docs/_downloads/edc021e5f7c55efead2a89b91cdfae27/module_load_state_dict_tips.py b/docs/_downloads/edc021e5f7c55efead2a89b91cdfae27/module_load_state_dict_tips.py index 17c812b..1ed96c3 100644 --- a/docs/_downloads/edc021e5f7c55efead2a89b91cdfae27/module_load_state_dict_tips.py +++ b/docs/_downloads/edc021e5f7c55efead2a89b91cdfae27/module_load_state_dict_tips.py @@ -1,26 +1,25 @@ """ - -Tips for Loading an ``nn.Module`` from a Checkpoint +从检查点加载 ``nn.Module`` 的技巧 =================================================== -**Author:** `Mikayla Gawarecki `_ +**作者:** `Mikayla Gawarecki `_ -If you're loading a checkpoint and want to reduce compute and memory as much as possible, -this tutorial shares some recommended practices. In particular, we will discuss +如果你要加载一个检查点并希望尽可能减少计算和内存的使用,本教程将分享一些推荐的做法。特别是我们将讨论以下几点: -1. The ``mmap`` keyword argument on ``torch.load`` -2. The ``torch.device()`` context manager -3. The ``assign`` keyword argument on ``nn.Module.load_state_dict()`` +1. ``torch.load`` 中的 ``mmap`` 关键字参数 +2. ``torch.device()`` 上下文管理器 +3. ``nn.Module.load_state_dict()`` 中的 ``assign`` 关键字参数 .. note:: - This recipe requires PyTorch 2.1.0 or later. + 本教程需要 PyTorch 2.1.0 或更高版本。 """ +import time ############################################################################### -# Let us consider a simple ``nn.Module`` that contains a list of Linear layers: +# 让我们考虑一个简单的 ``nn.Module``,它包含一个线性层列表: import torch from torch import nn -import time + class SomeModule(torch.nn.Module): def __init__(self, size): @@ -32,141 +31,122 @@ def forward(self, x): m = SomeModule(1000) -torch.save(m.state_dict(), 'checkpoint.pth') +torch.save(m.state_dict(), "checkpoint.pth") ################################################################################# -# The following snippet demonstrates the use of the the ``mmap`` keyword argument -# to ``torch.load``, the ``torch.device()`` context manager and the ``assign`` -# keyword argument to ``nn.Module.load_state_dict()``. +# 以下代码片段演示了如何使用 ``torch.load`` 中的 ``mmap`` 关键字参数、``torch.device()`` 上下文管理器和 ``nn.Module.load_state_dict()`` 中的 ``assign`` 关键字参数。 -state_dict = torch.load('checkpoint.pth', mmap=True) -with torch.device('meta'): - meta_m = SomeModule(1000) +state_dict = torch.load("checkpoint.pth", mmap=True) +with torch.device("meta"): + meta_m = SomeModule(1000) meta_m.load_state_dict(state_dict, assign=True) ############################################################################# -# Compare the snippet below to the one above: +# 将下面的代码片段与上面的进行比较: -state_dict = torch.load('checkpoint.pth') +state_dict = torch.load("checkpoint.pth") m = SomeModule(1000) m.load_state_dict(state_dict) ############################################################################# -# The second example does not use any of the features listed above and will be -# less compute and memory efficient for loading a checkpoint. In the following -# sections, we will discuss each of the features in further detail. +# 第二个示例没有使用上面列出的任何特性,因此在加载检查点时计算和内存效率会较低。在下面的部分中,我们将详细讨论每个特性。 ##################################################################################### -# Using ``torch.load(mmap=True)`` +# 使用 ``torch.load(mmap=True)`` # ------------------------------- -# First, let us consider what happens when we load the checkpoint with ``torch.load``. -# When we save a checkpoint with ``torch.save``, tensor storages are tagged with the device they are -# saved on. With ``torch.load``, tensor storages will be loaded to the device -# they were tagged with (unless this behavior is overridden using the -# ``map_location`` flag). For ease of explanation, let us assume that the tensors -# were saved on CPU. This means that on the first line all tensor storages will be -# loaded into CPU RAM, which can be undesirable when: -# -# * CPU RAM is smaller than the size of the checkpoint. -# * Waiting for the entire checkpoint to be loaded into RAM before performing, for example, some per-tensor processing. +# 首先,让我们考虑使用 ``torch.load`` 加载检查点时会发生什么。 +# 当我们使用 ``torch.save`` 保存检查点时,张量存储会被标记为保存时所在的设备。 +# 使用 ``torch.load`` 时,张量存储将被加载到它们被标记的设备上(除非使用 ``map_location`` 标志覆盖此行为)。 +# 为了解释方便,我们假设张量是保存在 CPU 上的。这意味着在第一行中,所有张量存储将被加载到 CPU 内存中,在以下情况下这是不可取的: + +# * CPU 内存小于检查点的大小。 +# * 在执行一些每张量处理之前等待整个检查点被加载到内存中。 start_time = time.time() -state_dict = torch.load('checkpoint.pth') +state_dict = torch.load("checkpoint.pth") end_time = time.time() -print(f"loading time without mmap={end_time - start_time}") +print(f"不使用 mmap 的加载时间={end_time - start_time}") ################################################################################# -# The ``mmap`` keyword argument to ``torch.load`` attempts to solve the above two -# problems. As its name implies, the ``mmap`` keyword argument to ``torch.load`` -# makes use of an `mmap call `_ -# which maps a file on disk into virtual memory and lets the OS handle loading and -# unloading into physical memory automatically. When this flag is passed, tensor -# storages will be memory-mapped. +# ``torch.load`` 中的 ``mmap`` 关键字参数试图解决上述两个问题。 +# 顾名思义,``torch.load`` 中的 ``mmap`` 关键字参数使用了 `mmap 调用 `_, +# 它将磁盘上的文件映射到虚拟内存中,并让操作系统自动处理加载和卸载到物理内存。 +# 当传递此标志时,张量存储将被内存映射。 start_time = time.time() -state_dict = torch.load('checkpoint.pth', mmap=True) +state_dict = torch.load("checkpoint.pth", mmap=True) end_time = time.time() -print(f"loading time with mmap={end_time - start_time}") +print(f"使用 mmap 的加载时间={end_time - start_time}") + ###################################################################################### -# As mentioned above, one can use this argument to do per-tensor processing on a -# checkpoint without loading all tensor storages into CPU memory upfront. For example: +# 如上所述,可以使用此参数在不将所有张量存储加载到 CPU 内存中的情况下对检查点执行每张量处理。例如: def my_special_routine(t, device): - # this could be a much fancier operation + # 这可能是一个更复杂的操作 return t.to(dtype=torch.bfloat16, device=device) + def my_processing_function(key, device): t = state_dict[key] processed_t = my_special_routine(t, device) del t state_dict[key] = processed_t + for key in state_dict.keys(): - device = torch.device('cuda') + device = torch.device("cuda") my_processing_function(key, device) ################################################## -# Using ``torch.device('meta')`` +# 使用 ``torch.device('meta')`` # ------------------------------ -# Next, let's consider the creation of the module. +# 接下来,让我们考虑模块的创建。 m = SomeModule(1000) ####################################################################################################### -# This allocates memory for all parameters/buffers and initializes them per -# the default initialization schemes defined in ``SomeModule.__init__()``, which -# is wasteful when we want to load a checkpoint for the following reasons: -# -# * The result of the initialization kernels will be overwritten by ``load_state_dict()`` without ever being used, so -# initialization is wasteful. -# * We are allocating memory for these parameters/buffers in RAM while ``torch.load`` of the saved state dictionary also -# allocates memory in RAM for the parameters/buffers in the checkpoint. -# -# In order to solve these two problems, we can use the ``torch.device()`` -# context manager with ``device='meta'`` when we instantiate the ``nn.Module()``. -# -# The `torch.device() `_ -# context manager makes sure that factory calls will be performed as if they -# were passed the specified ``device`` as an argument. Tensors on ``torch.device('meta')`` do not -# carry data. However, they possess all other metadata a tensor carries such as ``.size()``, ``.stride()``, -# ``.requires_grad``, and others. -with torch.device('meta'): - new_m = SomeModule(1000) +# 这将为所有参数/缓冲区分配内存并根据 ``SomeModule.__init__()`` 中定义的默认初始化方案对其进行初始化, +# 当我们想要加载检查点时,这是浪费的,原因如下: + +# * 初始化内核的结果将被 ``load_state_dict()`` 覆盖而从未被使用,因此初始化是浪费的。 +# * 我们在 RAM 中为这些参数/缓冲区分配了内存,而 ``torch.load`` 保存的状态字典也在 RAM 中为检查点中的参数/缓冲区分配了内存。 + +# 为了解决这两个问题,我们可以在实例化 ``nn.Module()`` 时使用 ``device='meta'`` 的 ``torch.device()`` 上下文管理器。 + +# `torch.device() `_ +# 上下文管理器确保工厂调用将被视为传递了指定的 ``device`` 作为参数。 +# 在 ``torch.device('meta')`` 上的张量不携带数据。 +# 但是,它们具有张量所携带的其他元数据,如 ``.size()``, ``.stride()``, ``.requires_grad`` 等。 +with torch.device("meta"): + new_m = SomeModule(1000) ######################################################## -# Using ``load_state_dict(assign=True)`` +# 使用 ``load_state_dict(assign=True)`` # -------------------------------------- -# Next, we consider the loading of the state dictionary. +# 接下来,我们考虑加载状态字典。 m.load_state_dict(state_dict) ###################################################################################### -# ``nn.Module.load_state_dict()`` is usually implemented via an in-place -# ``param_in_model.copy_(param_in_state_dict)``. This means that the parameter/buffer -# with the corresponding key in the state dictionary is copied into the -# parameter/buffer in the ``nn.Module``. -# -# However, an in-place copy into a tensor on the ``meta`` device is a no-op. -# In order to avoid this, we can pass the ``assign=True`` keyword argument to -# ``load_state_dict()``. -# -# A caveat here is that since optimizers hold a reference to -# ``nn.Module.parameters()``, the optimizer must be initialized after the module -# is loaded from state dict if ``assign=True`` is passed. +# ``nn.Module.load_state_dict()`` 通常是通过 ``param_in_model.copy_(param_in_state_dict)`` 的就地复制实现的。 +# 这意味着状态字典中对应键的参数/缓冲区将被复制到 ``nn.Module`` 中的参数/缓冲区。 + +# 然而,对 ``meta`` 设备上的张量进行就地复制是无操作的。 +# 为了避免这种情况,我们可以在 ``load_state_dict()`` 中传递 ``assign=True`` 关键字参数。 + +# 这里的一个警告是,由于优化器持有对 ``nn.Module.parameters()`` 的引用, +# 如果传递了 ``assign=True``,则必须在从状态字典加载模块后初始化优化器。 -# As of PyTorch 2.3.0, one can use ``torch.__future__.set_swap_module_params_on_conversion`` to -# avoid this caveat. This `recipe `_ -# provides more details. +# 从 PyTorch 2.3.0 开始,可以使用 ``torch.__future__.set_swap_module_params_on_conversion`` 来避免这个警告。 +# 这个 `教程 `_ 提供了更多细节。 new_m.load_state_dict(state_dict, assign=True) -# Before 2.3.0, this MUST be done AFTER the load_state_dict with assign. -# In versions >= 2.3.0, one can consider setting ``torch.__future__.set_swap_module_params_on_conversion`` +# 在 2.3.0 之前,这一步必须在 load_state_dict 使用 assign 之后完成。 +# 在版本 >= 2.3.0 中,可以考虑设置 ``torch.__future__.set_swap_module_params_on_conversion`` opt = torch.optim.SGD(new_m.parameters(), lr=1e-3) ############################################################################### -# Conclusion +# 结论 # ------------- # -# To recap, in this tutorial we learned about ``torch.load(mmap=True)``, the -# ``torch.device()`` context manager with ``device=meta``, and -# ``nn.Module.load_state_dict(assign=True)`` as well as how these tools could -# be used to aid when loading a model from a checkpoint. +# 总结一下,在本教程中,我们学习了 ``torch.load(mmap=True)``、``device='meta'`` 的 ``torch.device()`` 上下文管理器和 ``nn.Module.load_state_dict(assign=True)`` +# 以及如何在从检查点加载模型时使用这些工具来提高效率。 diff --git a/docs/_downloads/f84ef04333132b77a0663044e78e7cbb/dynamic_quantization.ipynb b/docs/_downloads/f84ef04333132b77a0663044e78e7cbb/dynamic_quantization.ipynb index ccd8d74..8d2c578 100644 --- a/docs/_downloads/f84ef04333132b77a0663044e78e7cbb/dynamic_quantization.ipynb +++ b/docs/_downloads/f84ef04333132b77a0663044e78e7cbb/dynamic_quantization.ipynb @@ -15,7 +15,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# Dynamic Quantization\n\nIn this recipe you will see how to take advantage of Dynamic\nQuantization to accelerate inference on an LSTM-style recurrent neural\nnetwork. This reduces the size of the model weights and speeds up model\nexecution.\n\n## Introduction\n\nThere are a number of trade-offs that can be made when designing neural\nnetworks. During model development and training you can alter the\nnumber of layers and number of parameters in a recurrent neural network\nand trade-off accuracy against model size and/or model latency or\nthroughput. Such changes can take lot of time and compute resources\nbecause you are iterating over the model training. Quantization gives\nyou a way to make a similar trade off between performance and model\naccuracy with a known model after training is completed.\n\nYou can give it a try in a single session and you will certainly reduce\nyour model size significantly and may get a significant latency\nreduction without losing a lot of accuracy.\n\n## What is dynamic quantization?\n\nQuantizing a network means converting it to use a reduced precision\ninteger representation for the weights and/or activations. This saves on\nmodel size and allows the use of higher throughput math operations on\nyour CPU or GPU.\n\nWhen converting from floating point to integer values you are\nessentially multiplying the floating point value by some scale factor\nand rounding the result to a whole number. The various quantization\napproaches differ in the way they approach determining that scale\nfactor.\n\nThe key idea with dynamic quantization as described here is that we are\ngoing to determine the scale factor for activations dynamically based on\nthe data range observed at runtime. This ensures that the scale factor\nis \"tuned\" so that as much signal as possible about each observed\ndataset is preserved.\n\nThe model parameters on the other hand are known during model conversion\nand they are converted ahead of time and stored in INT8 form.\n\nArithmetic in the quantized model is done using vectorized INT8\ninstructions. Accumulation is typically done with INT16 or INT32 to\navoid overflow. This higher precision value is scaled back to INT8 if\nthe next layer is quantized or converted to FP32 for output.\n\nDynamic quantization is relatively free of tuning parameters which makes\nit well suited to be added into production pipelines as a standard part\nof converting LSTM models to deployment.\n\n\n\n

Note

Limitations on the approach taken here\n\n\n This recipe provides a quick introduction to the dynamic quantization\n features in PyTorch and the workflow for using it. Our focus is on\n explaining the specific functions used to convert the model. We will\n make a number of significant simplifications in the interest of brevity\n and clarity

\n\n\n1. You will start with a minimal LSTM network\n2. You are simply going to initialize the network with a random hidden\n state\n3. You are going to test the network with random inputs\n4. You are not going to train the network in this tutorial\n5. You will see that the quantized form of this network is smaller and\n runs faster than the floating point network we started with\n6. You will see that the output values are generally in the same\n ballpark as the output of the FP32 network, but we are not\n demonstrating here the expected accuracy loss on a real trained\n network\n\nYou will see how dynamic quantization is done and be able to see\nsuggestive reductions in memory use and latency times. Providing a\ndemonstration that the technique can preserve high levels of model\naccuracy on a trained LSTM is left to a more advanced tutorial. If you\nwant to move right away to that more rigorous treatment please proceed\nto the [advanced dynamic quantization\ntutorial](https://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html)_.\n\n## Steps\n\nThis recipe has 5 steps.\n\n1. Set Up - Here you define a very simple LSTM, import modules, and establish\n some random input tensors.\n\n2. Do the Quantization - Here you instantiate a floating point model and then create quantized\n version of it.\n\n3. Look at Model Size - Here you show that the model size gets smaller.\n\n4. Look at Latency - Here you run the two models and compare model runtime (latency).\n\n5. Look at Accuracy - Here you run the two models and compare outputs.\n\n\n### 1: Set Up\nThis is a straightforward bit of code to set up for the rest of the\nrecipe.\n\nThe unique module we are importing here is torch.quantization which\nincludes PyTorch's quantized operators and conversion functions. We also\ndefine a very simple LSTM model and set up some inputs.\n" + "\n# \u52a8\u6001\u91cf\u5316\n\n\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d,\u60a8\u5c06\u770b\u5230\u5982\u4f55\u5229\u7528\u52a8\u6001\u91cf\u5316\u6765\u52a0\u901f LSTM \u98ce\u683c\u7684\u5faa\u73af\u795e\u7ecf\u7f51\u7edc\u7684\u63a8\u7406\u3002\u8fd9\u53ef\u4ee5\u51cf\u5c0f\u6a21\u578b\u6743\u91cd\u7684\u5927\u5c0f,\u5e76\u52a0\u5feb\u6a21\u578b\u6267\u884c\u901f\u5ea6\u3002\n\n## \u4ecb\u7ecd\n\n\u5728\u8bbe\u8ba1\u795e\u7ecf\u7f51\u7edc\u65f6,\u53ef\u4ee5\u505a\u51fa\u591a\u79cd\u6743\u8861\u3002\u5728\u6a21\u578b\u5f00\u53d1\u548c\u8bad\u7ec3\u671f\u95f4,\u60a8\u53ef\u4ee5\u6539\u53d8\u5faa\u73af\u795e\u7ecf\u7f51\u7edc\u4e2d\u7684\u5c42\u6570\u548c\u53c2\u6570\u6570\u91cf,\u5728\u6a21\u578b\u5927\u5c0f\u548c/\u6216\u6a21\u578b\u5ef6\u8fdf\u6216\u541e\u5410\u91cf\u4e0e\u7cbe\u5ea6\u4e4b\u95f4\u8fdb\u884c\u6743\u8861\u3002\u7531\u4e8e\u60a8\u9700\u8981\u91cd\u590d\u6a21\u578b\u8bad\u7ec3\u8fc7\u7a0b,\u56e0\u6b64\u8fd9\u79cd\u6539\u53d8\u9700\u8981\u5927\u91cf\u7684\u65f6\u95f4\u548c\u8ba1\u7b97\u8d44\u6e90\u3002\u91cf\u5316\u4e3a\u60a8\u63d0\u4f9b\u4e86\u4e00\u79cd\u5728\u5df2\u77e5\u6a21\u578b\u4e0a\u5728\u6027\u80fd\u548c\u6a21\u578b\u7cbe\u5ea6\u4e4b\u95f4\u8fdb\u884c\u6743\u8861\u7684\u65b9\u5f0f,\u800c\u65e0\u9700\u91cd\u65b0\u8bad\u7ec3\u6a21\u578b\u3002\n\n\u60a8\u53ef\u4ee5\u5728\u5355\u4e2a\u4f1a\u8bdd\u4e2d\u5c1d\u8bd5\u4e00\u4e0b,\u60a8\u80af\u5b9a\u4f1a\u663e\u8457\u51cf\u5c0f\u6a21\u578b\u5927\u5c0f,\u5e76\u53ef\u80fd\u5728\u4e0d\u4f1a\u635f\u5931\u592a\u591a\u7cbe\u5ea6\u7684\u60c5\u51b5\u4e0b\u83b7\u5f97\u663e\u8457\u7684\u5ef6\u8fdf\u51cf\u5c11\u3002\n\n## \u4ec0\u4e48\u662f\u52a8\u6001\u91cf\u5316?\n\n\u91cf\u5316\u7f51\u7edc\u610f\u5473\u7740\u5c06\u5176\u8f6c\u6362\u4e3a\u4f7f\u7528\u8f83\u4f4e\u7cbe\u5ea6\u7684\u6574\u6570\u8868\u793a\u5f62\u5f0f\u6765\u8868\u793a\u6743\u91cd\u548c/\u6216\u6fc0\u6d3b\u3002\u8fd9\u53ef\u4ee5\u51cf\u5c0f\u6a21\u578b\u5927\u5c0f,\u5e76\u5141\u8bb8\u5728 CPU \u6216 GPU \u4e0a\u4f7f\u7528\u66f4\u9ad8\u541e\u5410\u91cf\u7684\u6570\u5b66\u8fd0\u7b97\u3002\n\n\u4ece\u6d6e\u70b9\u6570\u8f6c\u6362\u4e3a\u6574\u6570\u503c\u65f6,\u60a8\u5b9e\u9645\u4e0a\u662f\u5c06\u6d6e\u70b9\u6570\u4e58\u4ee5\u67d0\u4e2a\u6bd4\u4f8b\u56e0\u5b50,\u7136\u540e\u5c06\u7ed3\u679c\u820d\u5165\u4e3a\u6574\u6570\u3002\u4e0d\u540c\u7684\u91cf\u5316\u65b9\u6cd5\u5728\u786e\u5b9a\u8be5\u6bd4\u4f8b\u56e0\u5b50\u7684\u65b9\u5f0f\u4e0a\u6709\u6240\u4e0d\u540c\u3002\n\n\u8fd9\u91cc\u4ecb\u7ecd\u7684\u52a8\u6001\u91cf\u5316\u7684\u5173\u952e\u601d\u60f3\u662f,\u6211\u4eec\u5c06\u6839\u636e\u8fd0\u884c\u65f6\u89c2\u5bdf\u5230\u7684\u6570\u636e\u8303\u56f4\u52a8\u6001\u786e\u5b9a\u6fc0\u6d3b\u7684\u6bd4\u4f8b\u56e0\u5b50\u3002\u8fd9\u53ef\u786e\u4fdd\u6bd4\u4f8b\u56e0\u5b50\u88ab\"\u8c03\u6574\"\u4e3a\u5c3d\u53ef\u80fd\u4fdd\u7559\u6bcf\u4e2a\u89c2\u5bdf\u5230\u7684\u6570\u636e\u96c6\u7684\u4fe1\u53f7\u3002\n\n\u53e6\u4e00\u65b9\u9762,\u6a21\u578b\u53c2\u6570\u5728\u6a21\u578b\u8f6c\u6362\u671f\u95f4\u662f\u5df2\u77e5\u7684,\u5b83\u4eec\u4f1a\u63d0\u524d\u8f6c\u6362\u5e76\u4ee5 INT8 \u5f62\u5f0f\u5b58\u50a8\u3002\n\n\u91cf\u5316\u6a21\u578b\u4e2d\u7684\u7b97\u672f\u8fd0\u7b97\u4f7f\u7528\u77e2\u91cf\u5316\u7684 INT8 \u6307\u4ee4\u5b8c\u6210\u3002\u7d2f\u52a0\u901a\u5e38\u4f7f\u7528 INT16 \u6216 INT32 \u6765\u907f\u514d\u6ea2\u51fa\u3002\u5982\u679c\u4e0b\u4e00\u5c42\u662f\u91cf\u5316\u7684,\u5219\u5c06\u6b64\u8f83\u9ad8\u7cbe\u5ea6\u503c\u7f29\u653e\u56de INT8;\u5982\u679c\u662f\u8f93\u51fa,\u5219\u5c06\u5176\u8f6c\u6362\u4e3a FP32\u3002\n\n\u52a8\u6001\u91cf\u5316\u76f8\u5bf9\u6765\u8bf4\u6ca1\u6709\u592a\u591a\u9700\u8981\u8c03\u6574\u7684\u53c2\u6570,\u56e0\u6b64\u975e\u5e38\u9002\u5408\u4f5c\u4e3a\u5c06 LSTM \u6a21\u578b\u8f6c\u6362\u4e3a\u90e8\u7f72\u7684\u6807\u51c6\u90e8\u5206\u6dfb\u52a0\u5230\u751f\u4ea7\u7ba1\u9053\u4e2d\u3002\n\n

Note

\u672c\u793a\u4f8b\u4e2d\u91c7\u7528\u7684\u65b9\u6cd5\u7684\u5c40\u9650\u6027\n\n \u672c\u793a\u4f8b\u63d0\u4f9b\u4e86\u5bf9 PyTorch \u4e2d\u52a8\u6001\u91cf\u5316\u529f\u80fd\u7684\u5feb\u901f\u4ecb\u7ecd,\u4ee5\u53ca\u4f7f\u7528\u5b83\u7684\u5de5\u4f5c\u6d41\u7a0b\u3002\u6211\u4eec\u7684\u91cd\u70b9\u662f\u89e3\u91ca\u7528\u4e8e\u8f6c\u6362\u6a21\u578b\u7684\u7279\u5b9a\u51fd\u6570\u3002\u4e3a\u4e86\u7b80\u6d01\u548c\u6e05\u6670,\u6211\u4eec\u505a\u51fa\u4e86\u4e00\u4e9b\u91cd\u5927\u7b80\u5316,\u5305\u62ec:

\n\n1. \u60a8\u5c06\u4ece\u4e00\u4e2a\u6700\u5c0f\u7684 LSTM \u7f51\u7edc\u5f00\u59cb\n2. \u60a8\u53ea\u9700\u7528\u968f\u673a\u9690\u85cf\u72b6\u6001\u521d\u59cb\u5316\u7f51\u7edc\n3. \u60a8\u5c06\u4f7f\u7528\u968f\u673a\u8f93\u5165\u6765\u6d4b\u8bd5\u7f51\u7edc\n4. \u60a8\u4e0d\u4f1a\u5728\u672c\u6559\u7a0b\u4e2d\u8bad\u7ec3\u7f51\u7edc\n5. \u60a8\u5c06\u770b\u5230,\u4e0e\u6211\u4eec\u5f00\u59cb\u65f6\u7684\u6d6e\u70b9\u7f51\u7edc\u76f8\u6bd4,\u91cf\u5316\u540e\u7684\u7f51\u7edc\u66f4\u5c0f\u4e14\u8fd0\u884c\u901f\u5ea6\u66f4\u5feb\n6. \u60a8\u5c06\u770b\u5230,\u91cf\u5316\u7f51\u7edc\u4ea7\u751f\u7684\u8f93\u51fa\u5f20\u91cf\u503c\u4e0e FP32 \u7f51\u7edc\u8f93\u51fa\u7684\u503c\u5728\u540c\u4e00\u6570\u91cf\u7ea7,\u4f46\u6211\u4eec\u5e76\u672a\u5728\u8fd9\u91cc\u5c55\u793a\u8be5\u6280\u672f\u5728\u7ecf\u8fc7\u8bad\u7ec3\u7684 LSTM \u4e0a\u80fd\u591f\u4fdd\u7559\u8f83\u9ad8\u6a21\u578b\u7cbe\u5ea6\u7684\u60c5\u51b5\n\n\u60a8\u5c06\u4e86\u89e3\u5982\u4f55\u8fdb\u884c\u52a8\u6001\u91cf\u5316,\u5e76\u80fd\u591f\u770b\u5230\u5185\u5b58\u4f7f\u7528\u548c\u5ef6\u8fdf\u65f6\u95f4\u7684\u6f5c\u5728\u51cf\u5c0f\u3002\u5173\u4e8e\u8be5\u6280\u672f\u5728\u7ecf\u8fc7\u8bad\u7ec3\u7684 LSTM \u4e0a\u80fd\u591f\u4fdd\u7559\u8f83\u9ad8\u6a21\u578b\u7cbe\u5ea6\u7684\u6f14\u793a,\u5c06\u7559\u5f85\u66f4\u9ad8\u7ea7\u7684\u6559\u7a0b\u3002\u5982\u679c\u60a8\u60f3\u76f4\u63a5\u8fdb\u5165\u66f4\u4e25\u683c\u7684\u5904\u7406,\u8bf7\u7ee7\u7eed\u5b66\u4e60 [\u9ad8\u7ea7\u52a8\u6001\u91cf\u5316\u6559\u7a0b](https://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html)_\u3002\n\n## \u6b65\u9aa4\n\n\u672c\u793a\u4f8b\u5305\u542b 5 \u4e2a\u6b65\u9aa4\u3002\n\n1. \u8bbe\u7f6e - \u5728\u8fd9\u91cc,\u60a8\u5b9a\u4e49\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 LSTM,\u5bfc\u5165\u6a21\u5757,\u5e76\u5efa\u7acb\u4e00\u4e9b\u968f\u673a\u8f93\u5165\u5f20\u91cf\u3002\n\n2. \u6267\u884c\u91cf\u5316 - \u5728\u8fd9\u91cc,\u60a8\u5b9e\u4f8b\u5316\u4e00\u4e2a\u6d6e\u70b9\u6a21\u578b,\u7136\u540e\u521b\u5efa\u5176\u91cf\u5316\u7248\u672c\u3002\n\n3. \u67e5\u770b\u6a21\u578b\u5927\u5c0f - \u5728\u8fd9\u91cc,\u60a8\u663e\u793a\u6a21\u578b\u5927\u5c0f\u53d8\u5c0f\u4e86\u3002\n\n4. \u67e5\u770b\u5ef6\u8fdf - \u5728\u8fd9\u91cc,\u60a8\u8fd0\u884c\u4e24\u4e2a\u6a21\u578b\u5e76\u6bd4\u8f83\u6a21\u578b\u8fd0\u884c\u65f6\u95f4(\u5ef6\u8fdf)\u3002\n\n5. \u67e5\u770b\u7cbe\u5ea6 - \u5728\u8fd9\u91cc,\u60a8\u8fd0\u884c\u4e24\u4e2a\u6a21\u578b\u5e76\u6bd4\u8f83\u8f93\u51fa\u3002\n\n### 1: \u8bbe\u7f6e\n\u8fd9\u662f\u4e00\u6bb5\u76f4\u63a5\u7684\u4ee3\u7801,\u7528\u4e8e\u4e3a\u672c\u793a\u4f8b\u7684\u5176\u4f59\u90e8\u5206\u505a\u51c6\u5907\u3002\n\n\u6211\u4eec\u5728\u8fd9\u91cc\u5bfc\u5165\u7684\u552f\u4e00\u6a21\u5757\u662f torch.quantization,\u5b83\u5305\u542b\u4e86 PyTorch \u7684\u91cf\u5316\u7b97\u5b50\u548c\u8f6c\u6362\u51fd\u6570\u3002\u6211\u4eec\u8fd8\u5b9a\u4e49\u4e86\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 LSTM \u6a21\u578b,\u5e76\u8bbe\u7f6e\u4e86\u4e00\u4e9b\u8f93\u5165\u3002\n" ] }, { @@ -26,14 +26,14 @@ }, "outputs": [], "source": [ - "# import the modules used here in this recipe\nimport torch\nimport torch.quantization\nimport torch.nn as nn\nimport copy\nimport os\nimport time\n\n# define a very, very simple LSTM for demonstration purposes\n# in this case, we are wrapping ``nn.LSTM``, one layer, no preprocessing or postprocessing\n# inspired by\n# `Sequence Models and Long Short-Term Memory Networks tutorial `__.\nclass lstm_for_demonstration(nn.Module):\n \"\"\"Elementary Long Short Term Memory style model which simply wraps ``nn.LSTM``\n Not to be used for anything other than demonstration.\n \"\"\"\n def __init__(self,in_dim,out_dim,depth):\n super(lstm_for_demonstration,self).__init__()\n self.lstm = nn.LSTM(in_dim,out_dim,depth)\n\n def forward(self,inputs,hidden):\n out,hidden = self.lstm(inputs,hidden)\n return out, hidden\n\n\ntorch.manual_seed(29592) # set the seed for reproducibility\n\n#shape parameters\nmodel_dimension=8\nsequence_length=20\nbatch_size=1\nlstm_depth=1\n\n# random data for input\ninputs = torch.randn(sequence_length,batch_size,model_dimension)\n# hidden is actually is a tuple of the initial hidden state and the initial cell state\nhidden = (torch.randn(lstm_depth,batch_size,model_dimension), torch.randn(lstm_depth,batch_size,model_dimension))" + "# \u5bfc\u5165\u672c\u793a\u4f8b\u4e2d\u4f7f\u7528\u7684\u6a21\u5757\nimport copy\nimport os\nimport time\n\nimport torch\nimport torch.nn as nn\nimport torch.quantization\n\n\n# \u4e3a\u6f14\u793a\u76ee\u7684\u5b9a\u4e49\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 LSTM\n# \u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b,\u6211\u4eec\u53ea\u662f\u5305\u88c5\u4e86 ``nn.LSTM``\u3001\u4e00\u5c42,\u6ca1\u6709\u9884\u5904\u7406\u6216\u540e\u5904\u7406\n# \u53d7\u5230\u4ee5\u4e0b\u6559\u7a0b\u7684\u542f\u53d1:\n# `\u5e8f\u5217\u6a21\u578b\u548c\u957f\u77ed\u671f\u8bb0\u5fc6\u7f51\u7edc\u6559\u7a0b `_, \u4f5c\u8005 Robert Guthrie\n# \u548c `\u52a8\u6001\u91cf\u5316\u6559\u7a0b `__\u3002\nclass lstm_for_demonstration(nn.Module):\n \"\"\"\u57fa\u672c\u7684\u957f\u77ed\u671f\u8bb0\u5fc6\u98ce\u683c\u6a21\u578b,\u53ea\u662f\u5305\u88c5\u4e86 ``nn.LSTM``\n \u4e0d\u5e94\u7528\u4e8e\u9664\u6f14\u793a\u4e4b\u5916\u7684\u4efb\u4f55\u5176\u4ed6\u7528\u9014\u3002\n \"\"\"\n\n def __init__(self, in_dim, out_dim, depth):\n super(lstm_for_demonstration, self).__init__()\n self.lstm = nn.LSTM(in_dim, out_dim, depth)\n\n def forward(self, inputs, hidden):\n out, hidden = self.lstm(inputs, hidden)\n return out, hidden\n\n\ntorch.manual_seed(29592) # \u8bbe\u7f6e\u79cd\u5b50\u4ee5\u83b7\u5f97\u53ef\u91cd\u590d\u7ed3\u679c\n\n# \u5f62\u72b6\u53c2\u6570\nmodel_dimension = 8\nsequence_length = 20\nbatch_size = 1\nlstm_depth = 1\n\n# \u968f\u673a\u8f93\u5165\u6570\u636e\ninputs = torch.randn(sequence_length, batch_size, model_dimension)\n# hidden \u5b9e\u9645\u4e0a\u662f\u521d\u59cb\u9690\u85cf\u72b6\u6001\u548c\u521d\u59cb\u7ec6\u80de\u72b6\u6001\u7684\u5143\u7ec4\nhidden = (\n torch.randn(lstm_depth, batch_size, model_dimension),\n torch.randn(lstm_depth, batch_size, model_dimension),\n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 2: Do the Quantization\n\nNow we get to the fun part. First we create an instance of the model\ncalled ``float\\_lstm`` then we are going to quantize it. We're going to use\nthe [torch.quantization.quantize_dynamic](https://pytorch.org/docs/stable/quantization.html#torch.quantization.quantize_dynamic)_ function, which takes the model, then a list of the submodules\nwhich we want to\nhave quantized if they appear, then the datatype we are targeting. This\nfunction returns a quantized version of the original model as a new\nmodule.\n\nThat's all it takes.\n\n\n" + "### 2: \u6267\u884c\u91cf\u5316\n\n\u73b0\u5728\u6211\u4eec\u6765\u6267\u884c\u6709\u8da3\u7684\u90e8\u5206\u3002\u9996\u5148,\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a ``float_lstm`` \u7684\u6a21\u578b\u5b9e\u4f8b,\u7136\u540e\u6211\u4eec\u5c06\u5bf9\u5176\u8fdb\u884c\u91cf\u5316\u3002\u6211\u4eec\u5c06\u4f7f\u7528 [torch.quantization.quantize_dynamic](https://pytorch.org/docs/stable/quantization.html#torch.quantization.quantize_dynamic)_ \u51fd\u6570,\u5b83\u63a5\u53d7\u6a21\u578b\u3001\u6211\u4eec\u5e0c\u671b\u91cf\u5316\u7684\u5b50\u6a21\u5757\u5217\u8868(\u5982\u679c\u5b58\u5728)\u4ee5\u53ca\u76ee\u6807\u6570\u636e\u7c7b\u578b\u3002\u6b64\u51fd\u6570\u8fd4\u56de\u539f\u59cb\u6a21\u578b\u7684\u91cf\u5316\u7248\u672c,\u4f5c\u4e3a\u4e00\u4e2a\u65b0\u6a21\u5757\u3002\n\n\u5c31\u8fd9\u4e48\u7b80\u5355\u3002\n\n\n" ] }, { @@ -44,14 +44,14 @@ }, "outputs": [], "source": [ - "# here is our floating point instance\nfloat_lstm = lstm_for_demonstration(model_dimension, model_dimension,lstm_depth)\n\n# this is the call that does the work\nquantized_lstm = torch.quantization.quantize_dynamic(\n float_lstm, {nn.LSTM, nn.Linear}, dtype=torch.qint8\n)\n\n# show the changes that were made\nprint('Here is the floating point version of this module:')\nprint(float_lstm)\nprint('')\nprint('and now the quantized version:')\nprint(quantized_lstm)" + "# \u8fd9\u662f\u6211\u4eec\u7684\u6d6e\u70b9\u5b9e\u4f8b\nfloat_lstm = lstm_for_demonstration(model_dimension, model_dimension, lstm_depth)\n\n# \u8fd9\u662f\u6267\u884c\u91cf\u5316\u7684\u8c03\u7528\nquantized_lstm = torch.quantization.quantize_dynamic(\n float_lstm, {nn.LSTM, nn.Linear}, dtype=torch.qint8\n)\n\n# \u663e\u793a\u6240\u505a\u7684\u66f4\u6539\nprint(\"\u8fd9\u662f\u8be5\u6a21\u5757\u7684\u6d6e\u70b9\u7248\u672c:\")\nprint(float_lstm)\nprint(\"\")\nprint(\"\u73b0\u5728\u662f\u91cf\u5316\u7248\u672c:\")\nprint(quantized_lstm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 3. Look at Model Size\nWe've quantized the model. What does that get us? Well the first\nbenefit is that we've replaced the FP32 model parameters with INT8\nvalues (and some recorded scale factors). This means about 75% less data\nto store and move around. With the default values the reduction shown\nbelow will be less than 75% but if you increase the model size above\n(for example you can set model dimension to something like 80) this will\nconverge towards 4x smaller as the stored model size dominated more and\nmore by the parameter values.\n\n\n" + "### 3. \u67e5\u770b\u6a21\u578b\u5927\u5c0f\n\u6211\u4eec\u5df2\u7ecf\u91cf\u5316\u4e86\u6a21\u578b\u3002\u8fd9\u7ed9\u6211\u4eec\u5e26\u6765\u4e86\u4ec0\u4e48\u597d\u5904?\u597d\u5904\u4e4b\u4e00\u662f\u6211\u4eec\u7528 INT8 \u503c(\u548c\u4e00\u4e9b\u8bb0\u5f55\u7684\u6bd4\u4f8b\u56e0\u5b50)\u66ff\u6362\u4e86 FP32 \u6a21\u578b\u53c2\u6570\u3002\u8fd9\u610f\u5473\u7740\u5b58\u50a8\u548c\u79fb\u52a8\u6570\u636e\u7684\u5927\u5c0f\u51cf\u5c0f\u4e86\u7ea6 75%\u3002\u4f7f\u7528\u9ed8\u8ba4\u503c\u65f6,\u4e0b\u9762\u663e\u793a\u7684\u51cf\u5c0f\u91cf\u5c06\u5c0f\u4e8e 75%,\u4f46\u5982\u679c\u60a8\u5c06\u6a21\u578b\u5927\u5c0f\u589e\u52a0\u5230\u66f4\u5927\u503c(\u4f8b\u5982\u5c06 model_dimension \u8bbe\u7f6e\u4e3a 80),\u968f\u7740\u5b58\u50a8\u7684\u6a21\u578b\u5927\u5c0f\u8d8a\u6765\u8d8a\u591a\u5730\u7531\u53c2\u6570\u503c\u4e3b\u5bfc,\u51cf\u5c0f\u91cf\u5c06\u8d8b\u8fd1\u4e8e 4 \u500d\u3002\n\n\n" ] }, { @@ -62,14 +62,14 @@ }, "outputs": [], "source": [ - "def print_size_of_model(model, label=\"\"):\n torch.save(model.state_dict(), \"temp.p\")\n size=os.path.getsize(\"temp.p\")\n print(\"model: \",label,' \\t','Size (KB):', size/1e3)\n os.remove('temp.p')\n return size\n\n# compare the sizes\nf=print_size_of_model(float_lstm,\"fp32\")\nq=print_size_of_model(quantized_lstm,\"int8\")\nprint(\"{0:.2f} times smaller\".format(f/q))" + "def print_size_of_model(model, label=\"\"):\n torch.save(model.state_dict(), \"temp.p\")\n size = os.path.getsize(\"temp.p\")\n print(\"\u6a21\u578b: \", label, \" \\t\", \"\u5927\u5c0f (KB):\", size / 1e3)\n os.remove(\"temp.p\")\n return size\n\n\n# \u6bd4\u8f83\u5927\u5c0f\nf = print_size_of_model(float_lstm, \"fp32\")\nq = print_size_of_model(quantized_lstm, \"int8\")\nprint(\"{0:.2f} \u500d\u66f4\u5c0f\".format(f / q))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 4. Look at Latency\nThe second benefit is that the quantized model will typically run\nfaster. This is due to a combinations of effects including at least:\n\n1. Less time spent moving parameter data in\n2. Faster INT8 operations\n\nAs you will see the quantized version of this super-simple network runs\nfaster. This will generally be true of more complex networks but as they\nsay \"your mileage may vary\" depending on a number of factors including\nthe structure of the model and the hardware you are running on.\n\n\n" + "### 4. \u67e5\u770b\u5ef6\u8fdf\n\u7b2c\u4e8c\u4e2a\u597d\u5904\u662f\u91cf\u5316\u6a21\u578b\u901a\u5e38\u4f1a\u8fd0\u884c\u5f97\u66f4\u5feb\u3002\u8fd9\u662f\u7531\u4e8e\u591a\u79cd\u6548\u679c\u7684\u7ec4\u5408,\u81f3\u5c11\u5305\u62ec:\n\n1. \u51cf\u5c11\u4e86\u79fb\u52a8\u53c2\u6570\u6570\u636e\u6240\u82b1\u8d39\u7684\u65f6\u95f4\n2. INT8 \u64cd\u4f5c\u66f4\u5feb\n\n\u5982\u60a8\u6240\u89c1,\u8fd9\u4e2a\u8d85\u7ea7\u7b80\u5355\u7684\u7f51\u7edc\u7684\u91cf\u5316\u7248\u672c\u8fd0\u884c\u901f\u5ea6\u66f4\u5feb\u3002\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u7f51\u7edc\u901a\u5e38\u4e5f\u662f\u5982\u6b64,\u4f46\u6b63\u5982\u4ed6\u4eec\u6240\u8bf4,\"\u60a8\u7684\u91cc\u7a0b\u53ef\u80fd\u4f1a\u6709\u6240\u4e0d\u540c\",\u8fd9\u53d6\u51b3\u4e8e\u8bb8\u591a\u56e0\u7d20,\u5305\u62ec\u6a21\u578b\u7684\u7ed3\u6784\u548c\u60a8\u8fd0\u884c\u7684\u786c\u4ef6\u3002\n\n\n" ] }, { @@ -80,7 +80,7 @@ }, "outputs": [], "source": [ - "# compare the performance\nprint(\"Floating point FP32\")" + "# \u6bd4\u8f83\u6027\u80fd\nprint(\"\u6d6e\u70b9 FP32\")" ] }, { @@ -98,7 +98,7 @@ }, "outputs": [], "source": [ - "print(\"Quantized INT8\")" + "print(\"\u91cf\u5316 INT8\")" ] }, { @@ -112,7 +112,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 5: Look at Accuracy\nWe are not going to do a careful look at accuracy here because we are\nworking with a randomly initialized network rather than a properly\ntrained one. However, I think it is worth quickly showing that the\nquantized network does produce output tensors that are \"in the same\nballpark\" as the original one.\n\nFor a more detailed analysis please see the more advanced tutorials\nreferenced at the end of this recipe.\n\n\n" + "### 5: \u67e5\u770b\u7cbe\u5ea6\n\u6211\u4eec\u4e0d\u4f1a\u5728\u8fd9\u91cc\u4ed4\u7ec6\u67e5\u770b\u7cbe\u5ea6,\u56e0\u4e3a\u6211\u4eec\u4f7f\u7528\u7684\u662f\u968f\u673a\u521d\u59cb\u5316\u7684\u7f51\u7edc,\u800c\u4e0d\u662f\u7ecf\u8fc7\u6b63\u786e\u8bad\u7ec3\u7684\u7f51\u7edc\u3002\u4f46\u662f,\u6211\u8ba4\u4e3a\u503c\u5f97\u5feb\u901f\u5c55\u793a\u4e00\u4e0b\u91cf\u5316\u7f51\u7edc\u786e\u5b9e\u4ea7\u751f\u4e86\u4e0e\u539f\u59cb\u7f51\u7edc\"\u540c\u4e00\u6570\u91cf\u7ea7\"\u7684\u8f93\u51fa\u5f20\u91cf\u503c\u3002\n\n\u6709\u5173\u66f4\u8be6\u7ec6\u7684\u5206\u6790,\u8bf7\u53c2\u9605\u672c\u793a\u4f8b\u7ed3\u5c3e\u5904\u5f15\u7528\u7684\u66f4\u9ad8\u7ea7\u6559\u7a0b\u3002\n\n\n" ] }, { @@ -123,14 +123,14 @@ }, "outputs": [], "source": [ - "# run the float model\nout1, hidden1 = float_lstm(inputs, hidden)\nmag1 = torch.mean(abs(out1)).item()\nprint('mean absolute value of output tensor values in the FP32 model is {0:.5f} '.format(mag1))\n\n# run the quantized model\nout2, hidden2 = quantized_lstm(inputs, hidden)\nmag2 = torch.mean(abs(out2)).item()\nprint('mean absolute value of output tensor values in the INT8 model is {0:.5f}'.format(mag2))\n\n# compare them\nmag3 = torch.mean(abs(out1-out2)).item()\nprint('mean absolute value of the difference between the output tensors is {0:.5f} or {1:.2f} percent'.format(mag3,mag3/mag1*100))" + "# \u8fd0\u884c\u6d6e\u70b9\u6a21\u578b\nout1, hidden1 = float_lstm(inputs, hidden)\nmag1 = torch.mean(abs(out1)).item()\nprint(\"FP32 \u6a21\u578b\u4e2d\u8f93\u51fa\u5f20\u91cf\u503c\u7684\u7edd\u5bf9\u503c\u5747\u503c\u4e3a {0:.5f} \".format(mag1))\n\n# \u8fd0\u884c\u91cf\u5316\u6a21\u578b\nout2, hidden2 = quantized_lstm(inputs, hidden)\nmag2 = torch.mean(abs(out2)).item()\nprint(\"INT8 \u6a21\u578b\u4e2d\u8f93\u51fa\u5f20\u91cf\u503c\u7684\u7edd\u5bf9\u503c\u5747\u503c\u4e3a {0:.5f}\".format(mag2))\n\n# \u6bd4\u8f83\u5b83\u4eec\nmag3 = torch.mean(abs(out1 - out2)).item()\nprint(\n \"\u8f93\u51fa\u5f20\u91cf\u4e4b\u95f4\u5dee\u503c\u7684\u7edd\u5bf9\u503c\u5747\u503c\u4e3a {0:.5f}\uff0c\u6216\u5360 {1:.2f} \u767e\u5206\u6bd4\".format(\n mag3, mag3 / mag1 * 100\n )\n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Learn More\nWe've explained what dynamic quantization is, what benefits it brings,\nand you have used the ``torch.quantization.quantize_dynamic()`` function\nto quickly quantize a simple LSTM model.\n\nThis was a fast and high level treatment of this material; for more\ndetail please continue learning with [(beta) Dynamic Quantization on an LSTM Word Language Model Tutorial](https://pytorch.org/tutorials/advanced/dynamic\\_quantization\\_tutorial.html).\n\n\n## Additional Resources\n\n* [Quantization API Documentaion](https://pytorch.org/docs/stable/quantization.html)\n* [(beta) Dynamic Quantization on BERT](https://pytorch.org/tutorials/intermediate/dynamic\\_quantization\\_bert\\_tutorial.html)\n* [(beta) Dynamic Quantization on an LSTM Word Language Model](https://pytorch.org/tutorials/advanced/dynamic\\_quantization\\_tutorial.html)\n* [Introduction to Quantization on PyTorch](https://pytorch.org/blog/introduction-to-quantization-on-pytorch/)\n\n\n" + "## \u4e86\u89e3\u66f4\u591a\n\u6211\u4eec\u5df2\u7ecf\u89e3\u91ca\u4e86\u4ec0\u4e48\u662f\u52a8\u6001\u91cf\u5316,\u5b83\u5e26\u6765\u4e86\u4ec0\u4e48\u597d\u5904,\u60a8\u5df2\u7ecf\u4f7f\u7528 ``torch.quantization.quantize_dynamic()`` \u51fd\u6570\u5feb\u901f\u91cf\u5316\u4e86\u4e00\u4e2a\u7b80\u5355\u7684 LSTM \u6a21\u578b\u3002\n\n\u8fd9\u662f\u5bf9\u8be5\u6750\u6599\u7684\u5feb\u901f\u548c\u9ad8\u7ea7\u5904\u7406;\u8981\u4e86\u89e3\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f,\u8bf7\u7ee7\u7eed\u5b66\u4e60 [(beta) \u52a8\u6001\u91cf\u5316 LSTM \u8bcd\u8bed\u8a00\u6a21\u578b\u6559\u7a0b](https://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html)\u3002\n\n\n## \u5176\u4ed6\u8d44\u6e90\n\n* [\u91cf\u5316 API \u6587\u6863](https://pytorch.org/docs/stable/quantization.html)\n* [(beta) \u52a8\u6001\u91cf\u5316 BERT](https://pytorch.org/tutorials/intermediate/dynamic_quantization_bert_tutorial.html)\n* [(beta) \u52a8\u6001\u91cf\u5316 LSTM \u8bcd\u8bed\u8a00\u6a21\u578b](https://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html)\n* [PyTorch \u91cf\u5316\u4ecb\u7ecd](https://pytorch.org/blog/introduction-to-quantization-on-pytorch/)\n\n\n" ] } ], diff --git a/docs/_downloads/fcca435d443f10eec1be8769b2b3a010/module_load_state_dict_tips.ipynb b/docs/_downloads/fcca435d443f10eec1be8769b2b3a010/module_load_state_dict_tips.ipynb index 0519cbb..2ef76b8 100644 --- a/docs/_downloads/fcca435d443f10eec1be8769b2b3a010/module_load_state_dict_tips.ipynb +++ b/docs/_downloads/fcca435d443f10eec1be8769b2b3a010/module_load_state_dict_tips.ipynb @@ -15,14 +15,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n# Tips for Loading an ``nn.Module`` from a Checkpoint\n**Author:** [Mikayla Gawarecki](https://github.com/mikaylagawarecki)\n\nIf you're loading a checkpoint and want to reduce compute and memory as much as possible,\nthis tutorial shares some recommended practices. In particular, we will discuss\n\n1. The ``mmap`` keyword argument on ``torch.load``\n2. The ``torch.device()`` context manager\n3. The ``assign`` keyword argument on ``nn.Module.load_state_dict()``\n\n

Note

This recipe requires PyTorch 2.1.0 or later.

\n" + "\n# \u4ece\u68c0\u67e5\u70b9\u52a0\u8f7d ``nn.Module`` \u7684\u6280\u5de7\n**\u4f5c\u8005:** [Mikayla Gawarecki](https://github.com/mikaylagawarecki)\n\n\u5982\u679c\u4f60\u8981\u52a0\u8f7d\u4e00\u4e2a\u68c0\u67e5\u70b9\u5e76\u5e0c\u671b\u5c3d\u53ef\u80fd\u51cf\u5c11\u8ba1\u7b97\u548c\u5185\u5b58\u7684\u4f7f\u7528\uff0c\u672c\u6559\u7a0b\u5c06\u5206\u4eab\u4e00\u4e9b\u63a8\u8350\u7684\u505a\u6cd5\u3002\u7279\u522b\u662f\u6211\u4eec\u5c06\u8ba8\u8bba\u4ee5\u4e0b\u51e0\u70b9:\n\n1. ``torch.load`` \u4e2d\u7684 ``mmap`` \u5173\u952e\u5b57\u53c2\u6570\n2. ``torch.device()`` \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\n3. ``nn.Module.load_state_dict()`` \u4e2d\u7684 ``assign`` \u5173\u952e\u5b57\u53c2\u6570\n\n

Note

\u672c\u6559\u7a0b\u9700\u8981 PyTorch 2.1.0 \u6216\u66f4\u9ad8\u7248\u672c\u3002

\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let us consider a simple ``nn.Module`` that contains a list of Linear layers:\n\n" + "\u8ba9\u6211\u4eec\u8003\u8651\u4e00\u4e2a\u7b80\u5355\u7684 ``nn.Module``\uff0c\u5b83\u5305\u542b\u4e00\u4e2a\u7ebf\u6027\u5c42\u5217\u8868:\n\n" ] }, { @@ -33,14 +44,14 @@ }, "outputs": [], "source": [ - "import torch\nfrom torch import nn\nimport time\n\nclass SomeModule(torch.nn.Module):\n def __init__(self, size):\n super().__init__()\n self.linears = nn.ModuleList([nn.Linear(size, size) for i in range(10)])\n\n def forward(self, x):\n return self.linears(x)\n\n\nm = SomeModule(1000)\ntorch.save(m.state_dict(), 'checkpoint.pth')" + "import torch\nfrom torch import nn\n\n\nclass SomeModule(torch.nn.Module):\n def __init__(self, size):\n super().__init__()\n self.linears = nn.ModuleList([nn.Linear(size, size) for i in range(10)])\n\n def forward(self, x):\n return self.linears(x)\n\n\nm = SomeModule(1000)\ntorch.save(m.state_dict(), \"checkpoint.pth\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The following snippet demonstrates the use of the the ``mmap`` keyword argument\nto ``torch.load``, the ``torch.device()`` context manager and the ``assign``\nkeyword argument to ``nn.Module.load_state_dict()``.\n\n" + "\u4ee5\u4e0b\u4ee3\u7801\u7247\u6bb5\u6f14\u793a\u4e86\u5982\u4f55\u4f7f\u7528 ``torch.load`` \u4e2d\u7684 ``mmap`` \u5173\u952e\u5b57\u53c2\u6570\u3001``torch.device()`` \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u548c ``nn.Module.load_state_dict()`` \u4e2d\u7684 ``assign`` \u5173\u952e\u5b57\u53c2\u6570\u3002\n\n" ] }, { @@ -51,14 +62,14 @@ }, "outputs": [], "source": [ - "state_dict = torch.load('checkpoint.pth', mmap=True)\nwith torch.device('meta'):\n meta_m = SomeModule(1000)\nmeta_m.load_state_dict(state_dict, assign=True)" + "state_dict = torch.load(\"checkpoint.pth\", mmap=True)\nwith torch.device(\"meta\"):\n meta_m = SomeModule(1000)\nmeta_m.load_state_dict(state_dict, assign=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Compare the snippet below to the one above:\n\n" + "\u5c06\u4e0b\u9762\u7684\u4ee3\u7801\u7247\u6bb5\u4e0e\u4e0a\u9762\u7684\u8fdb\u884c\u6bd4\u8f83:\n\n" ] }, { @@ -69,21 +80,21 @@ }, "outputs": [], "source": [ - "state_dict = torch.load('checkpoint.pth')\nm = SomeModule(1000)\nm.load_state_dict(state_dict)" + "state_dict = torch.load(\"checkpoint.pth\")\nm = SomeModule(1000)\nm.load_state_dict(state_dict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The second example does not use any of the features listed above and will be\nless compute and memory efficient for loading a checkpoint. In the following\nsections, we will discuss each of the features in further detail.\n\n" + "\u7b2c\u4e8c\u4e2a\u793a\u4f8b\u6ca1\u6709\u4f7f\u7528\u4e0a\u9762\u5217\u51fa\u7684\u4efb\u4f55\u7279\u6027\uff0c\u56e0\u6b64\u5728\u52a0\u8f7d\u68c0\u67e5\u70b9\u65f6\u8ba1\u7b97\u548c\u5185\u5b58\u6548\u7387\u4f1a\u8f83\u4f4e\u3002\u5728\u4e0b\u9762\u7684\u90e8\u5206\u4e2d\uff0c\u6211\u4eec\u5c06\u8be6\u7ec6\u8ba8\u8bba\u6bcf\u4e2a\u7279\u6027\u3002\n\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Using ``torch.load(mmap=True)``\nFirst, let us consider what happens when we load the checkpoint with ``torch.load``.\nWhen we save a checkpoint with ``torch.save``, tensor storages are tagged with the device they are\nsaved on. With ``torch.load``, tensor storages will be loaded to the device\nthey were tagged with (unless this behavior is overridden using the\n``map_location`` flag). For ease of explanation, let us assume that the tensors\nwere saved on CPU. This means that on the first line all tensor storages will be\nloaded into CPU RAM, which can be undesirable when:\n\n* CPU RAM is smaller than the size of the checkpoint.\n* Waiting for the entire checkpoint to be loaded into RAM before performing, for example, some per-tensor processing.\n\n" + "## \u4f7f\u7528 ``torch.load(mmap=True)``\n\u9996\u5148\uff0c\u8ba9\u6211\u4eec\u8003\u8651\u4f7f\u7528 ``torch.load`` \u52a0\u8f7d\u68c0\u67e5\u70b9\u65f6\u4f1a\u53d1\u751f\u4ec0\u4e48\u3002\n\u5f53\u6211\u4eec\u4f7f\u7528 ``torch.save`` \u4fdd\u5b58\u68c0\u67e5\u70b9\u65f6\uff0c\u5f20\u91cf\u5b58\u50a8\u4f1a\u88ab\u6807\u8bb0\u4e3a\u4fdd\u5b58\u65f6\u6240\u5728\u7684\u8bbe\u5907\u3002\n\u4f7f\u7528 ``torch.load`` \u65f6\uff0c\u5f20\u91cf\u5b58\u50a8\u5c06\u88ab\u52a0\u8f7d\u5230\u5b83\u4eec\u88ab\u6807\u8bb0\u7684\u8bbe\u5907\u4e0a(\u9664\u975e\u4f7f\u7528 ``map_location`` \u6807\u5fd7\u8986\u76d6\u6b64\u884c\u4e3a)\u3002\n\u4e3a\u4e86\u89e3\u91ca\u65b9\u4fbf\uff0c\u6211\u4eec\u5047\u8bbe\u5f20\u91cf\u662f\u4fdd\u5b58\u5728 CPU \u4e0a\u7684\u3002\u8fd9\u610f\u5473\u7740\u5728\u7b2c\u4e00\u884c\u4e2d\uff0c\u6240\u6709\u5f20\u91cf\u5b58\u50a8\u5c06\u88ab\u52a0\u8f7d\u5230 CPU \u5185\u5b58\u4e2d\uff0c\u5728\u4ee5\u4e0b\u60c5\u51b5\u4e0b\u8fd9\u662f\u4e0d\u53ef\u53d6\u7684:\n\n" ] }, { @@ -94,14 +105,14 @@ }, "outputs": [], "source": [ - "start_time = time.time()\nstate_dict = torch.load('checkpoint.pth')\nend_time = time.time()\nprint(f\"loading time without mmap={end_time - start_time}\")" + "# * CPU \u5185\u5b58\u5c0f\u4e8e\u68c0\u67e5\u70b9\u7684\u5927\u5c0f\u3002\n# * \u5728\u6267\u884c\u4e00\u4e9b\u6bcf\u5f20\u91cf\u5904\u7406\u4e4b\u524d\u7b49\u5f85\u6574\u4e2a\u68c0\u67e5\u70b9\u88ab\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\u3002\n\nstart_time = time.time()\nstate_dict = torch.load(\"checkpoint.pth\")\nend_time = time.time()\nprint(f\"\u4e0d\u4f7f\u7528 mmap \u7684\u52a0\u8f7d\u65f6\u95f4={end_time - start_time}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The ``mmap`` keyword argument to ``torch.load`` attempts to solve the above two\nproblems. As its name implies, the ``mmap`` keyword argument to ``torch.load``\nmakes use of an [mmap call](https://man7.org/linux/man-pages/man2/mmap.2.html)\nwhich maps a file on disk into virtual memory and lets the OS handle loading and\nunloading into physical memory automatically. When this flag is passed, tensor\nstorages will be memory-mapped.\n\n" + "``torch.load`` \u4e2d\u7684 ``mmap`` \u5173\u952e\u5b57\u53c2\u6570\u8bd5\u56fe\u89e3\u51b3\u4e0a\u8ff0\u4e24\u4e2a\u95ee\u9898\u3002\n\u987e\u540d\u601d\u4e49\uff0c``torch.load`` \u4e2d\u7684 ``mmap`` \u5173\u952e\u5b57\u53c2\u6570\u4f7f\u7528\u4e86 [mmap \u8c03\u7528](https://man7.org/linux/man-pages/man2/mmap.2.html),\n\u5b83\u5c06\u78c1\u76d8\u4e0a\u7684\u6587\u4ef6\u6620\u5c04\u5230\u865a\u62df\u5185\u5b58\u4e2d,\u5e76\u8ba9\u64cd\u4f5c\u7cfb\u7edf\u81ea\u52a8\u5904\u7406\u52a0\u8f7d\u548c\u5378\u8f7d\u5230\u7269\u7406\u5185\u5b58\u3002\n\u5f53\u4f20\u9012\u6b64\u6807\u5fd7\u65f6,\u5f20\u91cf\u5b58\u50a8\u5c06\u88ab\u5185\u5b58\u6620\u5c04\u3002\n\n" ] }, { @@ -112,14 +123,14 @@ }, "outputs": [], "source": [ - "start_time = time.time()\nstate_dict = torch.load('checkpoint.pth', mmap=True)\nend_time = time.time()\nprint(f\"loading time with mmap={end_time - start_time}\")" + "start_time = time.time()\nstate_dict = torch.load(\"checkpoint.pth\", mmap=True)\nend_time = time.time()\nprint(f\"\u4f7f\u7528 mmap \u7684\u52a0\u8f7d\u65f6\u95f4={end_time - start_time}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "As mentioned above, one can use this argument to do per-tensor processing on a\ncheckpoint without loading all tensor storages into CPU memory upfront. For example:\n\n" + "\u5982\u4e0a\u6240\u8ff0,\u53ef\u4ee5\u4f7f\u7528\u6b64\u53c2\u6570\u5728\u4e0d\u5c06\u6240\u6709\u5f20\u91cf\u5b58\u50a8\u52a0\u8f7d\u5230 CPU \u5185\u5b58\u4e2d\u7684\u60c5\u51b5\u4e0b\u5bf9\u68c0\u67e5\u70b9\u6267\u884c\u6bcf\u5f20\u91cf\u5904\u7406\u3002\u4f8b\u5982:\n\n" ] }, { @@ -130,14 +141,14 @@ }, "outputs": [], "source": [ - "def my_special_routine(t, device):\n # this could be a much fancier operation\n return t.to(dtype=torch.bfloat16, device=device)\n\ndef my_processing_function(key, device):\n t = state_dict[key]\n processed_t = my_special_routine(t, device)\n del t\n state_dict[key] = processed_t\n\nfor key in state_dict.keys():\n device = torch.device('cuda')\n my_processing_function(key, device)" + "def my_special_routine(t, device):\n # \u8fd9\u53ef\u80fd\u662f\u4e00\u4e2a\u66f4\u590d\u6742\u7684\u64cd\u4f5c\n return t.to(dtype=torch.bfloat16, device=device)\n\n\ndef my_processing_function(key, device):\n t = state_dict[key]\n processed_t = my_special_routine(t, device)\n del t\n state_dict[key] = processed_t\n\n\nfor key in state_dict.keys():\n device = torch.device(\"cuda\")\n my_processing_function(key, device)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Using ``torch.device('meta')``\nNext, let's consider the creation of the module.\n\n" + "## \u4f7f\u7528 ``torch.device('meta')``\n\u63a5\u4e0b\u6765,\u8ba9\u6211\u4eec\u8003\u8651\u6a21\u5757\u7684\u521b\u5efa\u3002\n\n" ] }, { @@ -155,7 +166,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This allocates memory for all parameters/buffers and initializes them per\nthe default initialization schemes defined in ``SomeModule.__init__()``, which\nis wasteful when we want to load a checkpoint for the following reasons:\n\n* The result of the initialization kernels will be overwritten by ``load_state_dict()`` without ever being used, so\n initialization is wasteful.\n* We are allocating memory for these parameters/buffers in RAM while ``torch.load`` of the saved state dictionary also\n allocates memory in RAM for the parameters/buffers in the checkpoint.\n\nIn order to solve these two problems, we can use the ``torch.device()``\ncontext manager with ``device='meta'`` when we instantiate the ``nn.Module()``.\n\nThe [torch.device()](https://pytorch.org/docs/main/tensor_attributes.html#torch-device)\ncontext manager makes sure that factory calls will be performed as if they\nwere passed the specified ``device`` as an argument. Tensors on ``torch.device('meta')`` do not\ncarry data. However, they possess all other metadata a tensor carries such as ``.size()``, ``.stride()``,\n``.requires_grad``, and others.\n\n" + "\u8fd9\u5c06\u4e3a\u6240\u6709\u53c2\u6570/\u7f13\u51b2\u533a\u5206\u914d\u5185\u5b58\u5e76\u6839\u636e ``SomeModule.__init__()`` \u4e2d\u5b9a\u4e49\u7684\u9ed8\u8ba4\u521d\u59cb\u5316\u65b9\u6848\u5bf9\u5176\u8fdb\u884c\u521d\u59cb\u5316,\n\u5f53\u6211\u4eec\u60f3\u8981\u52a0\u8f7d\u68c0\u67e5\u70b9\u65f6,\u8fd9\u662f\u6d6a\u8d39\u7684,\u539f\u56e0\u5982\u4e0b:\n\n" ] }, { @@ -166,14 +177,14 @@ }, "outputs": [], "source": [ - "with torch.device('meta'):\n new_m = SomeModule(1000)" + "# * \u521d\u59cb\u5316\u5185\u6838\u7684\u7ed3\u679c\u5c06\u88ab ``load_state_dict()`` \u8986\u76d6\u800c\u4ece\u672a\u88ab\u4f7f\u7528,\u56e0\u6b64\u521d\u59cb\u5316\u662f\u6d6a\u8d39\u7684\u3002\n# * \u6211\u4eec\u5728 RAM \u4e2d\u4e3a\u8fd9\u4e9b\u53c2\u6570/\u7f13\u51b2\u533a\u5206\u914d\u4e86\u5185\u5b58,\u800c ``torch.load`` \u4fdd\u5b58\u7684\u72b6\u6001\u5b57\u5178\u4e5f\u5728 RAM \u4e2d\u4e3a\u68c0\u67e5\u70b9\u4e2d\u7684\u53c2\u6570/\u7f13\u51b2\u533a\u5206\u914d\u4e86\u5185\u5b58\u3002\n\n# \u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e24\u4e2a\u95ee\u9898,\u6211\u4eec\u53ef\u4ee5\u5728\u5b9e\u4f8b\u5316 ``nn.Module()`` \u65f6\u4f7f\u7528 ``device='meta'`` \u7684 ``torch.device()`` \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u3002\n\n# `torch.device() `_\n# \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u786e\u4fdd\u5de5\u5382\u8c03\u7528\u5c06\u88ab\u89c6\u4e3a\u4f20\u9012\u4e86\u6307\u5b9a\u7684 ``device`` \u4f5c\u4e3a\u53c2\u6570\u3002\n# \u5728 ``torch.device('meta')`` \u4e0a\u7684\u5f20\u91cf\u4e0d\u643a\u5e26\u6570\u636e\u3002\n# \u4f46\u662f,\u5b83\u4eec\u5177\u6709\u5f20\u91cf\u6240\u643a\u5e26\u7684\u5176\u4ed6\u5143\u6570\u636e,\u5982 ``.size()``, ``.stride()``, ``.requires_grad`` \u7b49\u3002\nwith torch.device(\"meta\"):\n new_m = SomeModule(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Using ``load_state_dict(assign=True)``\nNext, we consider the loading of the state dictionary.\n\n" + "## \u4f7f\u7528 ``load_state_dict(assign=True)``\n\u63a5\u4e0b\u6765,\u6211\u4eec\u8003\u8651\u52a0\u8f7d\u72b6\u6001\u5b57\u5178\u3002\n\n" ] }, { @@ -191,7 +202,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "``nn.Module.load_state_dict()`` is usually implemented via an in-place\n``param_in_model.copy_(param_in_state_dict)``. This means that the parameter/buffer\nwith the corresponding key in the state dictionary is copied into the\nparameter/buffer in the ``nn.Module``.\n\nHowever, an in-place copy into a tensor on the ``meta`` device is a no-op.\nIn order to avoid this, we can pass the ``assign=True`` keyword argument to\n``load_state_dict()``.\n\nA caveat here is that since optimizers hold a reference to\n``nn.Module.parameters()``, the optimizer must be initialized after the module\nis loaded from state dict if ``assign=True`` is passed.\n\n" + "``nn.Module.load_state_dict()`` \u901a\u5e38\u662f\u901a\u8fc7 ``param_in_model.copy_(param_in_state_dict)`` \u7684\u5c31\u5730\u590d\u5236\u5b9e\u73b0\u7684\u3002\n\u8fd9\u610f\u5473\u7740\u72b6\u6001\u5b57\u5178\u4e2d\u5bf9\u5e94\u952e\u7684\u53c2\u6570/\u7f13\u51b2\u533a\u5c06\u88ab\u590d\u5236\u5230 ``nn.Module`` \u4e2d\u7684\u53c2\u6570/\u7f13\u51b2\u533a\u3002\n\n" ] }, { @@ -202,14 +213,14 @@ }, "outputs": [], "source": [ - "# As of PyTorch 2.3.0, one can use ``torch.__future__.set_swap_module_params_on_conversion`` to\n# avoid this caveat. This `recipe `_\n# provides more details.\n\nnew_m.load_state_dict(state_dict, assign=True)\n# Before 2.3.0, this MUST be done AFTER the load_state_dict with assign.\n# In versions >= 2.3.0, one can consider setting ``torch.__future__.set_swap_module_params_on_conversion``\nopt = torch.optim.SGD(new_m.parameters(), lr=1e-3)" + "# \u7136\u800c,\u5bf9 ``meta`` \u8bbe\u5907\u4e0a\u7684\u5f20\u91cf\u8fdb\u884c\u5c31\u5730\u590d\u5236\u662f\u65e0\u64cd\u4f5c\u7684\u3002\n# \u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u60c5\u51b5,\u6211\u4eec\u53ef\u4ee5\u5728 ``load_state_dict()`` \u4e2d\u4f20\u9012 ``assign=True`` \u5173\u952e\u5b57\u53c2\u6570\u3002\n\n# \u8fd9\u91cc\u7684\u4e00\u4e2a\u8b66\u544a\u662f,\u7531\u4e8e\u4f18\u5316\u5668\u6301\u6709\u5bf9 ``nn.Module.parameters()`` \u7684\u5f15\u7528,\n# \u5982\u679c\u4f20\u9012\u4e86 ``assign=True``,\u5219\u5fc5\u987b\u5728\u4ece\u72b6\u6001\u5b57\u5178\u52a0\u8f7d\u6a21\u5757\u540e\u521d\u59cb\u5316\u4f18\u5316\u5668\u3002\n\n# \u4ece PyTorch 2.3.0 \u5f00\u59cb,\u53ef\u4ee5\u4f7f\u7528 ``torch.__future__.set_swap_module_params_on_conversion`` \u6765\u907f\u514d\u8fd9\u4e2a\u8b66\u544a\u3002\n# \u8fd9\u4e2a `\u6559\u7a0b `_ \u63d0\u4f9b\u4e86\u66f4\u591a\u7ec6\u8282\u3002\n\nnew_m.load_state_dict(state_dict, assign=True)\n# \u5728 2.3.0 \u4e4b\u524d,\u8fd9\u4e00\u6b65\u5fc5\u987b\u5728 load_state_dict \u4f7f\u7528 assign \u4e4b\u540e\u5b8c\u6210\u3002\n# \u5728\u7248\u672c >= 2.3.0 \u4e2d,\u53ef\u4ee5\u8003\u8651\u8bbe\u7f6e ``torch.__future__.set_swap_module_params_on_conversion``\nopt = torch.optim.SGD(new_m.parameters(), lr=1e-3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Conclusion\n\nTo recap, in this tutorial we learned about ``torch.load(mmap=True)``, the\n``torch.device()`` context manager with ``device=meta``, and\n``nn.Module.load_state_dict(assign=True)`` as well as how these tools could\nbe used to aid when loading a model from a checkpoint.\n\n" + "## \u7ed3\u8bba\n\n\u603b\u7ed3\u4e00\u4e0b,\u5728\u672c\u6559\u7a0b\u4e2d,\u6211\u4eec\u5b66\u4e60\u4e86 ``torch.load(mmap=True)``\u3001``device='meta'`` \u7684 ``torch.device()`` \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u548c ``nn.Module.load_state_dict(assign=True)``\n\u4ee5\u53ca\u5982\u4f55\u5728\u4ece\u68c0\u67e5\u70b9\u52a0\u8f7d\u6a21\u578b\u65f6\u4f7f\u7528\u8fd9\u4e9b\u5de5\u5177\u6765\u63d0\u9ad8\u6548\u7387\u3002\n\n" ] } ], diff --git a/docs/_sources/recipes/profile_with_itt.rst.txt b/docs/_sources/recipes/profile_with_itt.rst.txt index 7ddb1ab..0d8e794 100644 --- a/docs/_sources/recipes/profile_with_itt.rst.txt +++ b/docs/_sources/recipes/profile_with_itt.rst.txt @@ -1,112 +1,112 @@ -Profiling PyTorch workloads with The Instrumentation and Tracing Technology (ITT) API +使用 Instrumentation and Tracing Technology (ITT) API 分析 PyTorch 工作负载 ===================================================================================== -In this recipe, you will learn: +在本教程中,您将学习: -* What is Intel® VTune™ Profiler -* What is Instrumentation and Tracing Technology (ITT) API -* How to visualize PyTorch model hierarchy in Intel® VTune™ Profiler -* A short sample code showcasing how to use PyTorch ITT APIs +* 什么是 Intel® VTune™ Profiler +* 什么是 Instrumentation and Tracing Technology (ITT) API +* 如何在 Intel® VTune™ Profiler 中可视化 PyTorch 模型层次结构 +* 一个简短的示例代码,展示如何使用 PyTorch ITT API -Requirements +要求 ------------ -* PyTorch 1.13 or later +* PyTorch 1.13 或更高版本 * Intel® VTune™ Profiler -The instructions for installing PyTorch are available at `pytorch.org `__. +安装 PyTorch 的说明可在 `pytorch.org `__ 上找到。 -What is Intel® VTune™ Profiler +什么是 Intel® VTune™ Profiler ------------------------------ -Intel® VTune™ Profiler is a performance analysis tool for serial and multithreaded applications. For those who are familiar with Intel Architecture, Intel® VTune™ Profiler provides a rich set of metrics to help users understand how the application executed on Intel platforms, and thus have an idea where the performance bottleneck is. +Intel® VTune™ Profiler 是一款用于串行和多线程应用程序的性能分析工具。对于熟悉 Intel 架构的人来说,Intel® VTune™ Profiler 提供了丰富的指标集,帮助用户了解应用程序在 Intel 平台上的执行情况,从而了解性能瓶颈所在。 -More detailed information, including a Getting Started guide, are available `on the Intel website `__. +更多详细信息,包括入门指南,可在 `Intel 网站 `__ 上找到。 -What is Instrumentation and Tracing Technology (ITT) API +什么是 Instrumentation and Tracing Technology (ITT) API -------------------------------------------------------- -`The Instrumentation and Tracing Technology API (ITT API) `_ provided by the Intel® VTune™ Profiler enables target application to generate and control the collection of trace data during its execution. +`Instrumentation and Tracing Technology API (ITT API) `_ 由 Intel® VTune™ Profiler 提供,使目标应用程序能够在执行期间生成和控制跟踪数据的收集。 -The advantage of ITT feature is to label time span of individual PyTorch operators, as well as customized regions, on Intel® VTune™ Profiler GUI. When users find anything abnormal, it will be very helpful to locate which operator behaved unexpectedly. +ITT 功能的优势在于能够在 Intel® VTune™ Profiler GUI 上标记单个 PyTorch 算子和自定义区域的时间跨度。当用户发现任何异常时,这将非常有助于定位哪个算子表现异常。 .. note:: - The ITT API had been integrated into PyTorch since 1.13. Users don't need to invoke the original ITT C/C++ APIs, but only need to invoke the Python APIs in PyTorch. More detailed information can be found at `PyTorch Docs `__. + ITT API 已在 PyTorch 1.13 中集成。用户无需调用原始的 ITT C/C++ API,只需调用 PyTorch 中的 Python API 即可。更多详细信息可在 `PyTorch 文档 `__ 中找到。 -How to visualize PyTorch model hierarchy in Intel® VTune™ Profiler +如何在 Intel® VTune™ Profiler 中可视化 PyTorch 模型层次结构 ------------------------------------------------------------------ -Two types of usage are provided in PyTorch: +PyTorch 提供了两种使用方式: -1. Implicit invocation: By default, all operators that are registered by following the PyTorch operator registration mechanism will be labeled by ITT feature automatically when its feature is enabled. +1. 隐式调用: 默认情况下,所有通过 PyTorch 算子注册机制注册的算子在启用 ITT 功能时都会自动标记。 -2. Explicit invocation: If customized labeling is needed, users can use APIs mentioned at `PyTorch Docs `__ explicitly to label a desired range. +2. 显式调用: 如果需要自定义标记,用户可以在 `PyTorch 文档 `__ 中使用显式 API 对所需范围进行标记。 -To enable explicit invocation, code which are expected to be labeled should be invoked under a `torch.autograd.profiler.emit_itt()` scope. For example: +要启用显式调用,需要在 `torch.autograd.profiler.emit_itt()` 作用域下调用预期标记的代码。例如: .. code:: python3 with torch.autograd.profiler.emit_itt(): -Launch Intel® VTune™ Profiler +启动 Intel® VTune™ Profiler ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To verify the functionality, you need to start an Intel® VTune™ Profiler instance. Please check the `Intel® VTune™ Profiler User Guide `__ for steps to launch Intel® VTune™ Profiler. +要验证功能,您需要启动一个 Intel® VTune™ Profiler 实例。启动 Intel® VTune™ Profiler 的步骤请查看 `Intel® VTune™ Profiler 用户指南 `__。 -Once you get the Intel® VTune™ Profiler GUI launched, you should see a user interface as below: +一旦启动了 Intel® VTune™ Profiler GUI,您应该会看到如下用户界面: .. figure:: /_static/img/itt_tutorial/vtune_start.png :width: 100% :align: center -Three sample results are available on the left side navigation bar under `sample (matrix)` project. If you do not want profiling results appear in this default sample project, you can create a new project via the button `New Project...` under the blue `Configure Analysis...` button. To start a new profiling, click the blue `Configure Analysis...` button to initiate configuration of the profiling. +左侧导航栏下的 `sample (matrix)` 项目中有三个示例结果。如果您不希望分析结果出现在此默认示例项目中,可以通过蓝色 `Configure Analysis...` 按钮下的 `New Project...` 按钮创建一个新项目。要启动新的分析,请单击蓝色的 `Configure Analysis...` 按钮以开始配置分析。 -Configure Profiling +配置分析 ~~~~~~~~~~~~~~~~~~~ -Once you click the `Configure Analysis...` button, you should see the screen below: +单击 `Configure Analysis...` 按钮后,您应该会看到如下界面: .. figure:: /_static/img/itt_tutorial/vtune_config.png :width: 100% :align: center -The right side of the windows is split into 3 parts: `WHERE` (top left), `WHAT` (bottom left), and `HOW` (right). With `WHERE`, you can assign a machine where you want to run the profiling on. With `WHAT`, you can set the path of the application that you want to profile. To profile a PyTorch script, it is recommended to wrap all manual steps, including activating a Python environment and setting required environment variables, into a bash script, then profile this bash script. In the screenshot above, we wrapped all steps into the `launch.sh` bash script and profile `bash` with the parameter to be ``. On the right side `HOW`, you can choose whatever type that you would like to profile. Intel® VTune™ Profiler provides a bunch of profiling types that you can choose from. Details can be found at `Intel® VTune™ Profiler User Guide `__. +窗口的右侧分为三部分: `WHERE`(左上角)、`WHAT`(左下角)和 `HOW`(右侧)。在 `WHERE` 中,您可以指定要在哪台机器上运行分析。在 `WHAT` 中,您可以设置要分析的应用程序的路径。要分析 PyTorch 脚本,建议将所有手动步骤(包括激活 Python 环境和设置所需环境变量)封装到一个 bash 脚本中,然后对该 bash 脚本进行分析。在上面的截图中,我们将所有步骤封装到 `launch.sh` bash 脚本中,并将 `bash` 的参数设置为 `` 的路径。在右侧的 `HOW` 中,您可以选择要分析的类型。Intel® VTune™ Profiler 提供了多种可选的分析类型。详情请查看 `Intel® VTune™ Profiler 用户指南 `__。 -Read Profiling Result +读取分析结果 ~~~~~~~~~~~~~~~~~~~~~ -With a successful profiling with ITT, you can open `Platform` tab of the profiling result to see labels in the Intel® VTune™ Profiler timeline. +成功进行了带有 ITT 的分析后,您可以打开分析结果的 `Platform` 选项卡,在 Intel® VTune™ Profiler 时间线上查看标记。 .. figure:: /_static/img/itt_tutorial/vtune_timeline.png :width: 100% :align: center -The timeline shows the main thread as a `python` thread on the top, and individual OpenMP threads below. Labeled PyTorch operators and customized regions are shown in the main thread row. All operators starting with `aten::` are operators labeled implicitly by the ITT feature in PyTorch. Labels `iteration_N` are explicitly labeled with specific APIs `torch.profiler.itt.range_push()`, `torch.profiler.itt.range_pop()` or `torch.profiler.itt.range()` scope. Please check the sample code in the next section for details. +时间线显示了顶部的主线程作为 `python` 线程,下面是各个 OpenMP 线程。标记的 PyTorch 算子和自定义区域显示在主线程行中。所有以 `aten::` 开头的算子都是由 PyTorch 中的 ITT 功能隐式标记的。标签 `iteration_N` 是使用特定的 API `torch.profiler.itt.range_push()`、`torch.profiler.itt.range_pop()` 或 `torch.profiler.itt.range()` 作用域显式标记的。请查看下一节中的示例代码以了解详情。 .. note:: - Red boxes marked with `convolution` and `reorder` are labeled from Intel® oneAPI Deep Neural Network Library (oneDNN). + 时间线中标记为 `convolution` 和 `reorder` 的红色框是由 Intel® oneAPI Deep Neural Network Library (oneDNN) 标记的。 -As illustrated on the right side navigation bar, brown portions in the timeline rows show CPU usage of individual threads. The percerntage of height of a thread row that the brown portion occupies at a timestamp aligns with that of the CPU usage in that thread at that timestamp. Thus, it is intuitive from this timeline to understand the followings: +如右侧导航栏所示,时间线行中的棕色部分显示了各个线程的 CPU 使用情况。在某个时间点,棕色部分在线程行中所占的高度百分比与该线程在该时间点的 CPU 使用率相对应。因此,从这个时间线可以直观地了解以下几点: -1. How well CPU cores are utilized on each thread. -2. How balance CPU cores are utilized on all threads. Do all threads have good CPU usage? -3. How well OpenMP threads are synchronized. Are there jitters when starting OpenMP threads or OpenMP threads finish. +1. 每个线程的 CPU 核心利用率如何。 +2. 所有线程的 CPU 核心利用率是否平衡。所有线程的 CPU 使用情况是否良好? +3. OpenMP 线程是否同步良好。启动 OpenMP 线程或 OpenMP 线程完成时是否存在抖动? -Of course there are much more enriched sets of profiling features that Intel® VTune™ Profiler provides to help you understand a performance issue. When you understand the root cause of a performance issue, you can get it fixed. More detailed usage instructions are available at `Intel® VTune™ Profiler User Guide `__. +当然,Intel® VTune™ Profiler 还提供了更多丰富的分析功能,帮助您了解性能问题的根源。一旦您了解了性能问题的根源,就可以加以修复。更多详细的使用说明可在 `Intel® VTune™ Profiler 用户指南 `__ 中找到。 -A short sample code showcasing how to use PyTorch ITT APIs +一个简短的示例代码,展示如何使用 PyTorch ITT API ---------------------------------------------------------- -The sample code below is the script that was used for profiling in the screenshots above. +下面的示例代码就是在上面的截图中用于分析的脚本。 -The topology is formed by two operators, `Conv2d` and `Linear`. Three iterations of inference were performed. Each iteration was labeled by PyTorch ITT APIs as text string `iteration_N`. Either pair of `torch.profile.itt.range_push` and `torch.profile.itt.range_pop` or `torch.profile.itt.range` scope does the customized labeling feature. +该拓扑由两个算子 `Conv2d` 和 `Linear` 组成。进行了三次推理迭代,每次迭代都使用 PyTorch ITT API 标记为文本字符串 `iteration_N`。无论是使用 `torch.profile.itt.range_push` 和 `torch.profile.itt.range_pop` 的配对,还是使用 `torch.profile.itt.range` 作用域,都可以实现自定义标记功能。 .. code:: python3 @@ -132,12 +132,12 @@ The topology is formed by two operators, `Conv2d` and `Linear`. Three iterations x = torch.rand(10, 3, 244, 244) with torch.autograd.profiler.emit_itt(): for i in range(3) - # Labeling a region with pair of range_push and range_pop + # 使用 range_push 和 range_pop 配对标记区域 #torch.profiler.itt.range_push(f'iteration_{i}') #m(x) #torch.profiler.itt.range_pop() - # Labeling a region with range scope + # 使用 range 作用域标记区域 with torch.profiler.itt.range(f'iteration_{i}'): m(x) @@ -145,7 +145,7 @@ The topology is formed by two operators, `Conv2d` and `Linear`. Three iterations main() -The `launch.sh` bash script, mentioned in the Intel® VTune™ Profiler GUI screenshot, to wrap all manual steps is shown below. +下面是在 Intel® VTune™ Profiler GUI 截图中提到的 `launch.sh` bash 脚本,用于封装所有手动步骤。 .. code:: bash @@ -153,8 +153,8 @@ The `launch.sh` bash script, mentioned in the Intel® VTune™ Profiler GUI scre #!/bin/bash - # Retrieve the directory path where the path contains both the sample.py and launch.sh so that this bash script can be invoked from any directory + # 获取包含 sample.py 和 launch.sh 的目录路径,以便从任何目录调用此 bash 脚本 BASEFOLDER=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - + <激活 Python 环境> cd ${BASEFOLDER} python sample.py diff --git a/docs/_sources/recipes/recipes/Captum_Recipe.rst.txt b/docs/_sources/recipes/recipes/Captum_Recipe.rst.txt index 914c72b..fcfe8f4 100644 --- a/docs/_sources/recipes/recipes/Captum_Recipe.rst.txt +++ b/docs/_sources/recipes/recipes/Captum_Recipe.rst.txt @@ -18,150 +18,143 @@ .. _sphx_glr_recipes_recipes_Captum_Recipe.py: -Model Interpretability using Captum +使用 Captum 进行模型可解释性 =================================== -.. GENERATED FROM PYTHON SOURCE LINES 9-22 +.. GENERATED FROM PYTHON SOURCE LINES 7-16 -Captum helps you understand how the data features impact your model -predictions or neuron activations, shedding light on how your model -operates. +Captum 可以帮助您了解数据特征如何影响模型的预测或神经元激活,从而揭示模型的工作原理。 -Using Captum, you can apply a wide range of state-of-the-art feature -attribution algorithms such as \ ``Guided GradCam``\ and -\ ``Integrated Gradients``\ in a unified way. +使用 Captum,您可以统一地应用广泛的最先进的特征归因算法,如 ``Guided GradCam`` 和 ``Integrated Gradients``。 -In this recipe you will learn how to use Captum to: +在本教程中,您将学习如何使用 Captum: -- Attribute the predictions of an image classifier to their corresponding image features. -- Visualize the attribution results. +- 将图像分类器的预测归因于相应的图像特征。 +- 可视化归因结果。 -.. GENERATED FROM PYTHON SOURCE LINES 25-28 +.. GENERATED FROM PYTHON SOURCE LINES 18-21 -Before you begin +开始之前 ---------------- -.. GENERATED FROM PYTHON SOURCE LINES 31-36 +.. GENERATED FROM PYTHON SOURCE LINES 23-26 -Make sure Captum is installed in your active Python environment. Captum -is available both on GitHub, as a ``pip`` package, or as a ``conda`` -package. For detailed instructions, consult the installation guide at -https://captum.ai/ +确保在您的活跃 Python 环境中安装了 Captum。Captum 可以在 GitHub 上获取,也可以作为 ``pip`` 包或 ``conda`` 包获取。 +有关详细说明,请查阅安装指南 https://captum.ai/ -.. GENERATED FROM PYTHON SOURCE LINES 39-43 +.. GENERATED FROM PYTHON SOURCE LINES 28-30 -For a model, we use a built-in image classifier in PyTorch. Captum can -reveal which parts of a sample image support certain predictions made by -the model. +对于模型,我们使用 PyTorch 中的内置图像分类器。Captum 可以揭示样本图像的哪些部分支持了模型做出的某些预测。 -.. GENERATED FROM PYTHON SOURCE LINES 43-70 +.. GENERATED FROM PYTHON SOURCE LINES 30-63 .. code-block:: default + from io import BytesIO + import requests import torchvision - from torchvision import models, transforms from PIL import Image - import requests - from io import BytesIO + from torchvision import models, transforms - model = torchvision.models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1).eval() + model = torchvision.models.resnet18( + weights=models.ResNet18_Weights.IMAGENET1K_V1 + ).eval() - response = requests.get("https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg") + response = requests.get( + "https://image.freepik.com/free-photo/two-beautiful-puppies-cat-dog_58409-6024.jpg" + ) img = Image.open(BytesIO(response.content)) - center_crop = transforms.Compose([ - transforms.Resize(256), - transforms.CenterCrop(224), - ]) - - normalize = transforms.Compose([ - transforms.ToTensor(), # converts the image to a tensor with values between 0 and 1 - transforms.Normalize( # normalize to follow 0-centered imagenet pixel RGB distribution - mean=[0.485, 0.456, 0.406], - std=[0.229, 0.224, 0.225] - ) - ]) + center_crop = transforms.Compose( + [ + transforms.Resize(256), + transforms.CenterCrop(224), + ] + ) + + normalize = transforms.Compose( + [ + transforms.ToTensor(), # 将图像转换为值在 0 到 1 之间的张量 + transforms.Normalize( # 归一化以遵循 0 均值的 ImageNet 像素 RGB 分布 + mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] + ), + ] + ) input_img = normalize(center_crop(img)).unsqueeze(0) +.. GENERATED FROM PYTHON SOURCE LINES 64-67 -.. GENERATED FROM PYTHON SOURCE LINES 71-74 - -Computing Attribution +计算归因 --------------------- -.. GENERATED FROM PYTHON SOURCE LINES 77-83 +.. GENERATED FROM PYTHON SOURCE LINES 69-73 -Among the top-3 predictions of the models are classes 208 and 283 which -correspond to dog and cat. +在模型的前 3 个预测中,类别 208 和 283 分别对应于狗和猫。 -Let us attribute each of these predictions to the corresponding part of -the input, using Captum’s \ ``Occlusion``\ algorithm. +让我们使用 Captum 的 ``Occlusion`` 算法将这些预测归因于输入的相应部分。 -.. GENERATED FROM PYTHON SOURCE LINES 83-108 +.. GENERATED FROM PYTHON SOURCE LINES 73-101 .. code-block:: default - from captum.attr import Occlusion + from captum.attr import Occlusion occlusion = Occlusion(model) - strides = (3, 9, 9) # smaller = more fine-grained attribution but slower - target=208, # Labrador index in ImageNet - sliding_window_shapes=(3,45, 45) # choose size enough to change object appearance - baselines = 0 # values to occlude the image with. 0 corresponds to gray + strides = (3, 9, 9) # 步长越小,归因越细粒度,但速度越慢 + target = (208,) # ImageNet 中的拉布拉多索引 + sliding_window_shapes = (3, 45, 45) # 选择足以改变对象外观的大小 + baselines = 0 # 用于遮挡图像的值。0 对应灰色 - attribution_dog = occlusion.attribute(input_img, - strides = strides, - target=target, - sliding_window_shapes=sliding_window_shapes, - baselines=baselines) + attribution_dog = occlusion.attribute( + input_img, + strides=strides, + target=target, + sliding_window_shapes=sliding_window_shapes, + baselines=baselines, + ) - target=283, # Persian cat index in ImageNet - attribution_cat = occlusion.attribute(input_img, - strides = strides, - target=target, - sliding_window_shapes=sliding_window_shapes, - baselines=0) + target = (283,) # ImageNet 中的波斯猫索引 + attribution_cat = occlusion.attribute( + input_img, + strides=strides, + target=target, + sliding_window_shapes=sliding_window_shapes, + baselines=0, + ) +.. GENERATED FROM PYTHON SOURCE LINES 102-108 -.. GENERATED FROM PYTHON SOURCE LINES 109-119 +除了 ``Occlusion`` 之外,Captum 还提供了许多算法,如 ``Integrated Gradients``、``Deconvolution``、 +``GuidedBackprop``、``Guided GradCam``、``DeepLift`` 和 ``GradientShap``。所有这些算法都是 ``Attribution`` 的子类, +在初始化时需要将您的模型作为可调用的 ``forward_func``传入,并具有 ``attribute(...)`` 方法,该方法以统一的格式返回归因结果。 -Besides ``Occlusion``, Captum features many algorithms such as -\ ``Integrated Gradients``\ , \ ``Deconvolution``\ , -\ ``GuidedBackprop``\ , \ ``Guided GradCam``\ , \ ``DeepLift``\ , and -\ ``GradientShap``\ . All of these algorithms are subclasses of -``Attribution`` which expects your model as a callable ``forward_func`` -upon initialization and has an ``attribute(...)`` method which returns -the attribution result in a unified format. +让我们可视化计算出的图像归因结果。 -Let us visualize the computed attribution results in case of images. +.. GENERATED FROM PYTHON SOURCE LINES 110-113 -.. GENERATED FROM PYTHON SOURCE LINES 122-125 - -Visualizing the Results +可视化结果 ----------------------- -.. GENERATED FROM PYTHON SOURCE LINES 128-132 +.. GENERATED FROM PYTHON SOURCE LINES 115-117 -Captum’s \ ``visualization``\ utility provides out-of-the-box methods -to visualize attribution results both for pictorial and for textual -inputs. +Captum 的 ``visualization`` 实用程序提供了开箱即用的方法,用于可视化图像和文本输入的归因结果。 -.. GENERATED FROM PYTHON SOURCE LINES 132-164 +.. GENERATED FROM PYTHON SOURCE LINES 117-154 .. code-block:: default @@ -169,61 +162,62 @@ inputs. import numpy as np from captum.attr import visualization as viz - # Convert the compute attribution tensor into an image-like numpy array - attribution_dog = np.transpose(attribution_dog.squeeze().cpu().detach().numpy(), (1,2,0)) + # 将计算出的归因张量转换为类似图像的 numpy 数组 + attribution_dog = np.transpose( + attribution_dog.squeeze().cpu().detach().numpy(), (1, 2, 0) + ) vis_types = ["heat_map", "original_image"] - vis_signs = ["all", "all"] # "positive", "negative", or "all" to show both - # positive attribution indicates that the presence of the area increases the prediction score - # negative attribution indicates distractor areas whose absence increases the score - - _ = viz.visualize_image_attr_multiple(attribution_dog, - np.array(center_crop(img)), - vis_types, - vis_signs, - ["attribution for dog", "image"], - show_colorbar = True - ) + vis_signs = ["all", "all"] # "positive"、"negative" 或 "all" 以显示两者 + # 正归因表示该区域的存在会增加预测分数 + # 负归因表示该区域的缺失会增加预测分数 + _ = viz.visualize_image_attr_multiple( + attribution_dog, + np.array(center_crop(img)), + vis_types, + vis_signs, + ["attribution for dog", "image"], + show_colorbar=True, + ) - attribution_cat = np.transpose(attribution_cat.squeeze().cpu().detach().numpy(), (1,2,0)) - _ = viz.visualize_image_attr_multiple(attribution_cat, - np.array(center_crop(img)), - ["heat_map", "original_image"], - ["all", "all"], # positive/negative attribution or all - ["attribution for cat", "image"], - show_colorbar = True - ) + attribution_cat = np.transpose( + attribution_cat.squeeze().cpu().detach().numpy(), (1, 2, 0) + ) + _ = viz.visualize_image_attr_multiple( + attribution_cat, + np.array(center_crop(img)), + ["heat_map", "original_image"], + ["all", "all"], # 正/负归因或全部 + ["attribution for cat", "image"], + show_colorbar=True, + ) -.. GENERATED FROM PYTHON SOURCE LINES 165-169 +.. GENERATED FROM PYTHON SOURCE LINES 155-158 -If your data is textual, ``visualization.visualize_text()`` offers a -dedicated view to explore attribution on top of the input text. Find out -more at http://captum.ai/tutorials/IMDB_TorchText_Interpret +如果您的数据是文本,``visualization.visualize_text()`` 提供了一个专用视图,用于探索输入文本的归因。 +更多信息请访问 http://captum.ai/tutorials/IMDB_TorchText_Interpret -.. GENERATED FROM PYTHON SOURCE LINES 172-175 +.. GENERATED FROM PYTHON SOURCE LINES 160-163 -Final Notes +最后注意 ----------- -.. GENERATED FROM PYTHON SOURCE LINES 178-191 +.. GENERATED FROM PYTHON SOURCE LINES 165-175 -Captum can handle most model types in PyTorch across modalities -including vision, text, and more. With Captum you can: \* Attribute a -specific output to the model input as illustrated above. \* Attribute a -specific output to a hidden-layer neuron (see Captum API reference). \* -Attribute a hidden-layer neuron response to the model input (see Captum -API reference). +Captum 可以处理 PyTorch 中包括视觉、文本等各种模态的大多数模型类型。使用 Captum 您可以: +* 将特定输出归因于模型输入,如上所示。 +* 将特定输出归因于隐藏层神经元(参见 Captum API 参考)。 +* 将隐藏层神经元响应归因于模型输入(参见 Captum API 参考)。 -For complete API of the supported methods and a list of tutorials, -consult our website http://captum.ai +有关支持方法的完整 API 和教程列表,请查阅我们的网站 http://captum.ai -Another useful post by Gilbert Tanner: +Gilbert Tanner 的另一篇有用文章: https://gilberttanner.com/blog/interpreting-pytorch-models-with-captum diff --git a/docs/_sources/recipes/recipes/dynamic_quantization.rst.txt b/docs/_sources/recipes/recipes/dynamic_quantization.rst.txt index bc9eec2..e5c7382 100644 --- a/docs/_sources/recipes/recipes/dynamic_quantization.rst.txt +++ b/docs/_sources/recipes/recipes/dynamic_quantization.rst.txt @@ -18,338 +18,271 @@ .. _sphx_glr_recipes_recipes_dynamic_quantization.py: -Dynamic Quantization +动态量化 ==================== -In this recipe you will see how to take advantage of Dynamic -Quantization to accelerate inference on an LSTM-style recurrent neural -network. This reduces the size of the model weights and speeds up model -execution. +在这个示例中,您将看到如何利用动态量化来加速 LSTM 风格的循环神经网络的推理。这可以减小模型权重的大小,并加快模型执行速度。 -Introduction +介绍 ------------- -There are a number of trade-offs that can be made when designing neural -networks. During model development and training you can alter the -number of layers and number of parameters in a recurrent neural network -and trade-off accuracy against model size and/or model latency or -throughput. Such changes can take lot of time and compute resources -because you are iterating over the model training. Quantization gives -you a way to make a similar trade off between performance and model -accuracy with a known model after training is completed. +在设计神经网络时,可以做出多种权衡。在模型开发和训练期间,您可以改变循环神经网络中的层数和参数数量,在模型大小和/或模型延迟或吞吐量与精度之间进行权衡。由于您需要重复模型训练过程,因此这种改变需要大量的时间和计算资源。量化为您提供了一种在已知模型上在性能和模型精度之间进行权衡的方式,而无需重新训练模型。 -You can give it a try in a single session and you will certainly reduce -your model size significantly and may get a significant latency -reduction without losing a lot of accuracy. +您可以在单个会话中尝试一下,您肯定会显著减小模型大小,并可能在不会损失太多精度的情况下获得显著的延迟减少。 -What is dynamic quantization? +什么是动态量化? ----------------------------- -Quantizing a network means converting it to use a reduced precision -integer representation for the weights and/or activations. This saves on -model size and allows the use of higher throughput math operations on -your CPU or GPU. +量化网络意味着将其转换为使用较低精度的整数表示形式来表示权重和/或激活。这可以减小模型大小,并允许在 CPU 或 GPU 上使用更高吞吐量的数学运算。 -When converting from floating point to integer values you are -essentially multiplying the floating point value by some scale factor -and rounding the result to a whole number. The various quantization -approaches differ in the way they approach determining that scale -factor. +从浮点数转换为整数值时,您实际上是将浮点数乘以某个比例因子,然后将结果舍入为整数。不同的量化方法在确定该比例因子的方式上有所不同。 -The key idea with dynamic quantization as described here is that we are -going to determine the scale factor for activations dynamically based on -the data range observed at runtime. This ensures that the scale factor -is "tuned" so that as much signal as possible about each observed -dataset is preserved. +这里介绍的动态量化的关键思想是,我们将根据运行时观察到的数据范围动态确定激活的比例因子。这可确保比例因子被"调整"为尽可能保留每个观察到的数据集的信号。 -The model parameters on the other hand are known during model conversion -and they are converted ahead of time and stored in INT8 form. +另一方面,模型参数在模型转换期间是已知的,它们会提前转换并以 INT8 形式存储。 -Arithmetic in the quantized model is done using vectorized INT8 -instructions. Accumulation is typically done with INT16 or INT32 to -avoid overflow. This higher precision value is scaled back to INT8 if -the next layer is quantized or converted to FP32 for output. +量化模型中的算术运算使用矢量化的 INT8 指令完成。累加通常使用 INT16 或 INT32 来避免溢出。如果下一层是量化的,则将此较高精度值缩放回 INT8;如果是输出,则将其转换为 FP32。 -Dynamic quantization is relatively free of tuning parameters which makes -it well suited to be added into production pipelines as a standard part -of converting LSTM models to deployment. +动态量化相对来说没有太多需要调整的参数,因此非常适合作为将 LSTM 模型转换为部署的标准部分添加到生产管道中。 +.. note:: + 本示例中采用的方法的局限性 + 本示例提供了对 PyTorch 中动态量化功能的快速介绍,以及使用它的工作流程。我们的重点是解释用于转换模型的特定函数。为了简洁和清晰,我们做出了一些重大简化,包括: -.. note:: - Limitations on the approach taken here - - - This recipe provides a quick introduction to the dynamic quantization - features in PyTorch and the workflow for using it. Our focus is on - explaining the specific functions used to convert the model. We will - make a number of significant simplifications in the interest of brevity - and clarity - - -1. You will start with a minimal LSTM network -2. You are simply going to initialize the network with a random hidden - state -3. You are going to test the network with random inputs -4. You are not going to train the network in this tutorial -5. You will see that the quantized form of this network is smaller and - runs faster than the floating point network we started with -6. You will see that the output values are generally in the same - ballpark as the output of the FP32 network, but we are not - demonstrating here the expected accuracy loss on a real trained - network - -You will see how dynamic quantization is done and be able to see -suggestive reductions in memory use and latency times. Providing a -demonstration that the technique can preserve high levels of model -accuracy on a trained LSTM is left to a more advanced tutorial. If you -want to move right away to that more rigorous treatment please proceed -to the `advanced dynamic quantization -tutorial `__. - -Steps -------------- +1. 您将从一个最小的 LSTM 网络开始 +2. 您只需用随机隐藏状态初始化网络 +3. 您将使用随机输入来测试网络 +4. 您不会在本教程中训练网络 +5. 您将看到,与我们开始时的浮点网络相比,量化后的网络更小且运行速度更快 +6. 您将看到,量化网络产生的输出张量值与 FP32 网络输出的值在同一数量级,但我们并未在这里展示该技术在经过训练的 LSTM 上能够保留较高模型精度的情况 -This recipe has 5 steps. +您将了解如何进行动态量化,并能够看到内存使用和延迟时间的潜在减小。关于该技术在经过训练的 LSTM 上能够保留较高模型精度的演示,将留待更高级的教程。如果您想直接进入更严格的处理,请继续学习 `高级动态量化教程 `__。 + +步骤 +------------- -1. Set Up - Here you define a very simple LSTM, import modules, and establish - some random input tensors. +本示例包含 5 个步骤。 -2. Do the Quantization - Here you instantiate a floating point model and then create quantized - version of it. +1. 设置 - 在这里,您定义一个非常简单的 LSTM,导入模块,并建立一些随机输入张量。 -3. Look at Model Size - Here you show that the model size gets smaller. +2. 执行量化 - 在这里,您实例化一个浮点模型,然后创建其量化版本。 -4. Look at Latency - Here you run the two models and compare model runtime (latency). +3. 查看模型大小 - 在这里,您显示模型大小变小了。 -5. Look at Accuracy - Here you run the two models and compare outputs. +4. 查看延迟 - 在这里,您运行两个模型并比较模型运行时间(延迟)。 +5. 查看精度 - 在这里,您运行两个模型并比较输出。 -1: Set Up +1: 设置 ~~~~~~~~~~~~~~~ -This is a straightforward bit of code to set up for the rest of the -recipe. +这是一段直接的代码,用于为本示例的其余部分做准备。 -The unique module we are importing here is torch.quantization which -includes PyTorch's quantized operators and conversion functions. We also -define a very simple LSTM model and set up some inputs. +我们在这里导入的唯一模块是 torch.quantization,它包含了 PyTorch 的量化算子和转换函数。我们还定义了一个非常简单的 LSTM 模型,并设置了一些输入。 -.. GENERATED FROM PYTHON SOURCE LINES 119-160 +.. GENERATED FROM PYTHON SOURCE LINES 64-111 .. code-block:: default - # import the modules used here in this recipe - import torch - import torch.quantization - import torch.nn as nn + # 导入本示例中使用的模块 import copy import os import time - # define a very, very simple LSTM for demonstration purposes - # in this case, we are wrapping ``nn.LSTM``, one layer, no preprocessing or postprocessing - # inspired by - # `Sequence Models and Long Short-Term Memory Networks tutorial `__. + import torch + import torch.nn as nn + import torch.quantization + + + # 为演示目的定义一个非常简单的 LSTM + # 在这种情况下,我们只是包装了 ``nn.LSTM``、一层,没有预处理或后处理 + # 受到以下教程的启发: + # `序列模型和长短期记忆网络教程 `_, 作者 Robert Guthrie + # 和 `动态量化教程 `__。 class lstm_for_demonstration(nn.Module): - """Elementary Long Short Term Memory style model which simply wraps ``nn.LSTM`` - Not to be used for anything other than demonstration. - """ - def __init__(self,in_dim,out_dim,depth): - super(lstm_for_demonstration,self).__init__() - self.lstm = nn.LSTM(in_dim,out_dim,depth) + """基本的长短期记忆风格模型,只是包装了 ``nn.LSTM`` + 不应用于除演示之外的任何其他用途。 + """ - def forward(self,inputs,hidden): - out,hidden = self.lstm(inputs,hidden) - return out, hidden + def __init__(self, in_dim, out_dim, depth): + super(lstm_for_demonstration, self).__init__() + self.lstm = nn.LSTM(in_dim, out_dim, depth) + def forward(self, inputs, hidden): + out, hidden = self.lstm(inputs, hidden) + return out, hidden - torch.manual_seed(29592) # set the seed for reproducibility - #shape parameters - model_dimension=8 - sequence_length=20 - batch_size=1 - lstm_depth=1 + torch.manual_seed(29592) # 设置种子以获得可重复结果 - # random data for input - inputs = torch.randn(sequence_length,batch_size,model_dimension) - # hidden is actually is a tuple of the initial hidden state and the initial cell state - hidden = (torch.randn(lstm_depth,batch_size,model_dimension), torch.randn(lstm_depth,batch_size,model_dimension)) + # 形状参数 + model_dimension = 8 + sequence_length = 20 + batch_size = 1 + lstm_depth = 1 + + # 随机输入数据 + inputs = torch.randn(sequence_length, batch_size, model_dimension) + # hidden 实际上是初始隐藏状态和初始细胞状态的元组 + hidden = ( + torch.randn(lstm_depth, batch_size, model_dimension), + torch.randn(lstm_depth, batch_size, model_dimension), + ) -.. GENERATED FROM PYTHON SOURCE LINES 161-174 +.. GENERATED FROM PYTHON SOURCE LINES 112-119 -2: Do the Quantization +2: 执行量化 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now we get to the fun part. First we create an instance of the model -called ``float\_lstm`` then we are going to quantize it. We're going to use -the `torch.quantization.quantize_dynamic `__ function, which takes the model, then a list of the submodules -which we want to -have quantized if they appear, then the datatype we are targeting. This -function returns a quantized version of the original model as a new -module. +现在我们来执行有趣的部分。首先,我们创建一个名为 ``float_lstm`` 的模型实例,然后我们将对其进行量化。我们将使用 `torch.quantization.quantize_dynamic `__ 函数,它接受模型、我们希望量化的子模块列表(如果存在)以及目标数据类型。此函数返回原始模型的量化版本,作为一个新模块。 -That's all it takes. +就这么简单。 -.. GENERATED FROM PYTHON SOURCE LINES 174-191 +.. GENERATED FROM PYTHON SOURCE LINES 119-136 .. code-block:: default - # here is our floating point instance - float_lstm = lstm_for_demonstration(model_dimension, model_dimension,lstm_depth) + # 这是我们的浮点实例 + float_lstm = lstm_for_demonstration(model_dimension, model_dimension, lstm_depth) - # this is the call that does the work + # 这是执行量化的调用 quantized_lstm = torch.quantization.quantize_dynamic( float_lstm, {nn.LSTM, nn.Linear}, dtype=torch.qint8 ) - # show the changes that were made - print('Here is the floating point version of this module:') + # 显示所做的更改 + print("这是该模块的浮点版本:") print(float_lstm) - print('') - print('and now the quantized version:') + print("") + print("现在是量化版本:") print(quantized_lstm) -.. GENERATED FROM PYTHON SOURCE LINES 192-203 +.. GENERATED FROM PYTHON SOURCE LINES 137-141 -3. Look at Model Size +3. 查看模型大小 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -We've quantized the model. What does that get us? Well the first -benefit is that we've replaced the FP32 model parameters with INT8 -values (and some recorded scale factors). This means about 75% less data -to store and move around. With the default values the reduction shown -below will be less than 75% but if you increase the model size above -(for example you can set model dimension to something like 80) this will -converge towards 4x smaller as the stored model size dominated more and -more by the parameter values. +我们已经量化了模型。这给我们带来了什么好处?好处之一是我们用 INT8 值(和一些记录的比例因子)替换了 FP32 模型参数。这意味着存储和移动数据的大小减小了约 75%。使用默认值时,下面显示的减小量将小于 75%,但如果您将模型大小增加到更大值(例如将 model_dimension 设置为 80),随着存储的模型大小越来越多地由参数值主导,减小量将趋近于 4 倍。 -.. GENERATED FROM PYTHON SOURCE LINES 203-217 +.. GENERATED FROM PYTHON SOURCE LINES 141-157 .. code-block:: default + def print_size_of_model(model, label=""): torch.save(model.state_dict(), "temp.p") - size=os.path.getsize("temp.p") - print("model: ",label,' \t','Size (KB):', size/1e3) - os.remove('temp.p') + size = os.path.getsize("temp.p") + print("模型: ", label, " \t", "大小 (KB):", size / 1e3) + os.remove("temp.p") return size - # compare the sizes - f=print_size_of_model(float_lstm,"fp32") - q=print_size_of_model(quantized_lstm,"int8") - print("{0:.2f} times smaller".format(f/q)) + + # 比较大小 + f = print_size_of_model(float_lstm, "fp32") + q = print_size_of_model(quantized_lstm, "int8") + print("{0:.2f} 倍更小".format(f / q)) -.. GENERATED FROM PYTHON SOURCE LINES 218-231 +.. GENERATED FROM PYTHON SOURCE LINES 158-167 -4. Look at Latency +4. 查看延迟 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The second benefit is that the quantized model will typically run -faster. This is due to a combinations of effects including at least: +第二个好处是量化模型通常会运行得更快。这是由于多种效果的组合,至少包括: -1. Less time spent moving parameter data in -2. Faster INT8 operations +1. 减少了移动参数数据所花费的时间 +2. INT8 操作更快 -As you will see the quantized version of this super-simple network runs -faster. This will generally be true of more complex networks but as they -say "your mileage may vary" depending on a number of factors including -the structure of the model and the hardware you are running on. +如您所见,这个超级简单的网络的量化版本运行速度更快。对于更复杂的网络通常也是如此,但正如他们所说,"您的里程可能会有所不同",这取决于许多因素,包括模型的结构和您运行的硬件。 -.. GENERATED FROM PYTHON SOURCE LINES 231-235 +.. GENERATED FROM PYTHON SOURCE LINES 167-171 .. code-block:: default - # compare the performance - print("Floating point FP32") + # 比较性能 + print("浮点 FP32") -.. GENERATED FROM PYTHON SOURCE LINES 236-239 +.. GENERATED FROM PYTHON SOURCE LINES 172-175 .. code-block:: python %timeit float_lstm.forward(inputs, hidden) -.. GENERATED FROM PYTHON SOURCE LINES 239-242 +.. GENERATED FROM PYTHON SOURCE LINES 175-178 .. code-block:: default - print("Quantized INT8") + print("量化 INT8") -.. GENERATED FROM PYTHON SOURCE LINES 243-246 +.. GENERATED FROM PYTHON SOURCE LINES 179-182 .. code-block:: python %timeit quantized_lstm.forward(inputs,hidden) -.. GENERATED FROM PYTHON SOURCE LINES 249-260 +.. GENERATED FROM PYTHON SOURCE LINES 185-191 -5: Look at Accuracy +5: 查看精度 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -We are not going to do a careful look at accuracy here because we are -working with a randomly initialized network rather than a properly -trained one. However, I think it is worth quickly showing that the -quantized network does produce output tensors that are "in the same -ballpark" as the original one. +我们不会在这里仔细查看精度,因为我们使用的是随机初始化的网络,而不是经过正确训练的网络。但是,我认为值得快速展示一下量化网络确实产生了与原始网络"同一数量级"的输出张量值。 -For a more detailed analysis please see the more advanced tutorials -referenced at the end of this recipe. +有关更详细的分析,请参阅本示例结尾处引用的更高级教程。 -.. GENERATED FROM PYTHON SOURCE LINES 260-276 +.. GENERATED FROM PYTHON SOURCE LINES 191-211 .. code-block:: default - # run the float model + # 运行浮点模型 out1, hidden1 = float_lstm(inputs, hidden) mag1 = torch.mean(abs(out1)).item() - print('mean absolute value of output tensor values in the FP32 model is {0:.5f} '.format(mag1)) + print("FP32 模型中输出张量值的绝对值均值为 {0:.5f} ".format(mag1)) - # run the quantized model + # 运行量化模型 out2, hidden2 = quantized_lstm(inputs, hidden) mag2 = torch.mean(abs(out2)).item() - print('mean absolute value of output tensor values in the INT8 model is {0:.5f}'.format(mag2)) - - # compare them - mag3 = torch.mean(abs(out1-out2)).item() - print('mean absolute value of the difference between the output tensors is {0:.5f} or {1:.2f} percent'.format(mag3,mag3/mag1*100)) + print("INT8 模型中输出张量值的绝对值均值为 {0:.5f}".format(mag2)) + + # 比较它们 + mag3 = torch.mean(abs(out1 - out2)).item() + print( + "输出张量之间差值的绝对值均值为 {0:.5f},或占 {1:.2f} 百分比".format( + mag3, mag3 / mag1 * 100 + ) + ) -.. GENERATED FROM PYTHON SOURCE LINES 277-295 +.. GENERATED FROM PYTHON SOURCE LINES 212-227 -Learn More +了解更多 ------------ -We've explained what dynamic quantization is, what benefits it brings, -and you have used the ``torch.quantization.quantize_dynamic()`` function -to quickly quantize a simple LSTM model. +我们已经解释了什么是动态量化,它带来了什么好处,您已经使用 ``torch.quantization.quantize_dynamic()`` 函数快速量化了一个简单的 LSTM 模型。 -This was a fast and high level treatment of this material; for more -detail please continue learning with `(beta) Dynamic Quantization on an LSTM Word Language Model Tutorial `_. +这是对该材料的快速和高级处理;要了解更多详细信息,请继续学习 `(beta) 动态量化 LSTM 词语言模型教程 `_。 -Additional Resources +其他资源 -------------------- -* `Quantization API Documentaion `_ -* `(beta) Dynamic Quantization on BERT `_ -* `(beta) Dynamic Quantization on an LSTM Word Language Model `_ -* `Introduction to Quantization on PyTorch `_ +* `量化 API 文档 `_ +* `(beta) 动态量化 BERT `_ +* `(beta) 动态量化 LSTM 词语言模型 `_ +* `PyTorch 量化介绍 `_ diff --git a/docs/_sources/recipes/recipes/index.rst.txt b/docs/_sources/recipes/recipes/index.rst.txt index 44506c7..3b93220 100644 --- a/docs/_sources/recipes/recipes/index.rst.txt +++ b/docs/_sources/recipes/recipes/index.rst.txt @@ -91,18 +91,18 @@ PyTorch Recipes .. raw:: html -
+
.. only:: html .. image:: /recipes/recipes/images/thumb/sphx_glr_tensorboard_with_pytorch_thumb.png - :alt: How to use TensorBoard with PyTorch + :alt: 如何在PyTorch中使用TensorBoard :ref:`sphx_glr_recipes_recipes_tensorboard_with_pytorch.py` .. raw:: html -
How to use TensorBoard with PyTorch
+
如何在PyTorch中使用TensorBoard
@@ -159,52 +159,52 @@ PyTorch Recipes .. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_warmstarting_model_using_parameters_from_a_different_model_thumb.png - :alt: PyTorch 使用不同模型的参数对模型进行热启动 + .. image:: /recipes/recipes/images/thumb/sphx_glr_reasoning_about_shapes_thumb.png + :alt: 在PyTorch中推理形状 - :ref:`sphx_glr_recipes_recipes_warmstarting_model_using_parameters_from_a_different_model.py` + :ref:`sphx_glr_recipes_recipes_reasoning_about_shapes.py` .. raw:: html -
PyTorch 使用不同模型的参数对模型进行热启动
+
在PyTorch中推理形状
.. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_saving_and_loading_a_general_checkpoint_thumb.png - :alt: PyTorch 保存和加载通用检查点 + .. image:: /recipes/recipes/images/thumb/sphx_glr_warmstarting_model_using_parameters_from_a_different_model_thumb.png + :alt: PyTorch 使用不同模型的参数对模型进行热启动 - :ref:`sphx_glr_recipes_recipes_saving_and_loading_a_general_checkpoint.py` + :ref:`sphx_glr_recipes_recipes_warmstarting_model_using_parameters_from_a_different_model.py` .. raw:: html -
PyTorch 保存和加载通用检查点
+
PyTorch 使用不同模型的参数对模型进行热启动
.. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_reasoning_about_shapes_thumb.png - :alt: Reasoning about Shapes in PyTorch + .. image:: /recipes/recipes/images/thumb/sphx_glr_saving_and_loading_a_general_checkpoint_thumb.png + :alt: PyTorch 保存和加载通用检查点 - :ref:`sphx_glr_recipes_recipes_reasoning_about_shapes.py` + :ref:`sphx_glr_recipes_recipes_saving_and_loading_a_general_checkpoint.py` .. raw:: html -
Reasoning about Shapes in PyTorch
+
PyTorch 保存和加载通用检查点
@@ -278,103 +278,103 @@ PyTorch Recipes .. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_module_load_state_dict_tips_thumb.png - :alt: Tips for Loading an ``nn.Module`` from a Checkpoint + .. image:: /recipes/recipes/images/thumb/sphx_glr_timer_quick_start_thumb.png + :alt: Timer快速入门 - :ref:`sphx_glr_recipes_recipes_module_load_state_dict_tips.py` + :ref:`sphx_glr_recipes_recipes_timer_quick_start.py` .. raw:: html -
Tips for Loading an ``nn.Module`` from a Checkpoint
+
Timer快速入门
.. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_timer_quick_start_thumb.png - :alt: Timer快速入门 + .. image:: /recipes/recipes/images/thumb/sphx_glr_Captum_Recipe_thumb.png + :alt: 使用 Captum 进行模型可解释性 - :ref:`sphx_glr_recipes_recipes_timer_quick_start.py` + :ref:`sphx_glr_recipes_recipes_Captum_Recipe.py` .. raw:: html -
Timer快速入门
+
使用 Captum 进行模型可解释性
.. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_zeroing_out_gradients_thumb.png - :alt: PyTorch 中清零梯度 + .. image:: /recipes/recipes/images/thumb/sphx_glr_dynamic_quantization_thumb.png + :alt: 动态量化 - :ref:`sphx_glr_recipes_recipes_zeroing_out_gradients.py` + :ref:`sphx_glr_recipes_recipes_dynamic_quantization.py` .. raw:: html -
PyTorch 中清零梯度
+
动态量化
.. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_dynamic_quantization_thumb.png - :alt: Dynamic Quantization + .. image:: /recipes/recipes/images/thumb/sphx_glr_zeroing_out_gradients_thumb.png + :alt: PyTorch 中清零梯度 - :ref:`sphx_glr_recipes_recipes_dynamic_quantization.py` + :ref:`sphx_glr_recipes_recipes_zeroing_out_gradients.py` .. raw:: html -
Dynamic Quantization
+
PyTorch 中清零梯度
.. raw:: html -
+
.. only:: html - .. image:: /recipes/recipes/images/thumb/sphx_glr_Captum_Recipe_thumb.png - :alt: Model Interpretability using Captum + .. image:: /recipes/recipes/images/thumb/sphx_glr_module_load_state_dict_tips_thumb.png + :alt: 从检查点加载 ``nn.Module`` 的技巧 - :ref:`sphx_glr_recipes_recipes_Captum_Recipe.py` + :ref:`sphx_glr_recipes_recipes_module_load_state_dict_tips.py` .. raw:: html -
Model Interpretability using Captum
+
从检查点加载 ``nn.Module`` 的技巧
.. raw:: html -
+
.. only:: html .. image:: /recipes/recipes/images/thumb/sphx_glr_swap_tensors_thumb.png - :alt: Extension points in ``nn.Module`` for ``load_state_dict`` and tensor subclasses + :alt: 在 ``nn.Module`` 中为 ``load_state_dict`` 和张量子类提供扩展点 :ref:`sphx_glr_recipes_recipes_swap_tensors.py` .. raw:: html -
Extension points in ``nn.Module`` for ``load_state_dict`` and tensor subclasses
+
在 ``nn.Module`` 中为 ``load_state_dict`` 和张量子类提供扩展点
@@ -442,18 +442,18 @@ PyTorch Recipes /recipes/recipes/saving_and_loading_models_for_inference /recipes/recipes/what_is_state_dict /recipes/recipes/loading_data_recipe + /recipes/recipes/reasoning_about_shapes /recipes/recipes/warmstarting_model_using_parameters_from_a_different_model /recipes/recipes/saving_and_loading_a_general_checkpoint - /recipes/recipes/reasoning_about_shapes /recipes/recipes/save_load_across_devices /recipes/recipes/defining_a_neural_network /recipes/recipes/saving_multiple_models_in_one_file /recipes/recipes/tuning_guide - /recipes/recipes/module_load_state_dict_tips /recipes/recipes/timer_quick_start - /recipes/recipes/zeroing_out_gradients - /recipes/recipes/dynamic_quantization /recipes/recipes/Captum_Recipe + /recipes/recipes/dynamic_quantization + /recipes/recipes/zeroing_out_gradients + /recipes/recipes/module_load_state_dict_tips /recipes/recipes/swap_tensors /recipes/recipes/profiler_recipe /recipes/recipes/amp_recipe diff --git a/docs/_sources/recipes/recipes/module_load_state_dict_tips.rst.txt b/docs/_sources/recipes/recipes/module_load_state_dict_tips.rst.txt index ff5df56..4a0970f 100644 --- a/docs/_sources/recipes/recipes/module_load_state_dict_tips.rst.txt +++ b/docs/_sources/recipes/recipes/module_load_state_dict_tips.rst.txt @@ -18,31 +18,38 @@ .. _sphx_glr_recipes_recipes_module_load_state_dict_tips.py: -Tips for Loading an ``nn.Module`` from a Checkpoint +从检查点加载 ``nn.Module`` 的技巧 =================================================== -**Author:** `Mikayla Gawarecki `_ +**作者:** `Mikayla Gawarecki `_ -If you're loading a checkpoint and want to reduce compute and memory as much as possible, -this tutorial shares some recommended practices. In particular, we will discuss +如果你要加载一个检查点并希望尽可能减少计算和内存的使用,本教程将分享一些推荐的做法。特别是我们将讨论以下几点: -1. The ``mmap`` keyword argument on ``torch.load`` -2. The ``torch.device()`` context manager -3. The ``assign`` keyword argument on ``nn.Module.load_state_dict()`` +1. ``torch.load`` 中的 ``mmap`` 关键字参数 +2. ``torch.device()`` 上下文管理器 +3. ``nn.Module.load_state_dict()`` 中的 ``assign`` 关键字参数 .. note:: - This recipe requires PyTorch 2.1.0 or later. + 本教程需要 PyTorch 2.1.0 或更高版本。 -.. GENERATED FROM PYTHON SOURCE LINES 20-21 +.. GENERATED FROM PYTHON SOURCE LINES 15-18 + +.. code-block:: default + + + import time -Let us consider a simple ``nn.Module`` that contains a list of Linear layers: -.. GENERATED FROM PYTHON SOURCE LINES 21-37 +.. GENERATED FROM PYTHON SOURCE LINES 19-20 + +让我们考虑一个简单的 ``nn.Module``,它包含一个线性层列表: + +.. GENERATED FROM PYTHON SOURCE LINES 20-36 .. code-block:: default import torch from torch import nn - import time + class SomeModule(torch.nn.Module): def __init__(self, size): @@ -54,164 +61,152 @@ Let us consider a simple ``nn.Module`` that contains a list of Linear layers: m = SomeModule(1000) - torch.save(m.state_dict(), 'checkpoint.pth') + torch.save(m.state_dict(), "checkpoint.pth") -.. GENERATED FROM PYTHON SOURCE LINES 38-41 +.. GENERATED FROM PYTHON SOURCE LINES 37-38 -The following snippet demonstrates the use of the the ``mmap`` keyword argument -to ``torch.load``, the ``torch.device()`` context manager and the ``assign`` -keyword argument to ``nn.Module.load_state_dict()``. +以下代码片段演示了如何使用 ``torch.load`` 中的 ``mmap`` 关键字参数、``torch.device()`` 上下文管理器和 ``nn.Module.load_state_dict()`` 中的 ``assign`` 关键字参数。 -.. GENERATED FROM PYTHON SOURCE LINES 41-47 +.. GENERATED FROM PYTHON SOURCE LINES 38-44 .. code-block:: default - state_dict = torch.load('checkpoint.pth', mmap=True) - with torch.device('meta'): - meta_m = SomeModule(1000) + state_dict = torch.load("checkpoint.pth", mmap=True) + with torch.device("meta"): + meta_m = SomeModule(1000) meta_m.load_state_dict(state_dict, assign=True) -.. GENERATED FROM PYTHON SOURCE LINES 48-49 +.. GENERATED FROM PYTHON SOURCE LINES 45-46 -Compare the snippet below to the one above: +将下面的代码片段与上面的进行比较: -.. GENERATED FROM PYTHON SOURCE LINES 49-54 +.. GENERATED FROM PYTHON SOURCE LINES 46-51 .. code-block:: default - state_dict = torch.load('checkpoint.pth') + state_dict = torch.load("checkpoint.pth") m = SomeModule(1000) m.load_state_dict(state_dict) -.. GENERATED FROM PYTHON SOURCE LINES 55-58 +.. GENERATED FROM PYTHON SOURCE LINES 52-53 -The second example does not use any of the features listed above and will be -less compute and memory efficient for loading a checkpoint. In the following -sections, we will discuss each of the features in further detail. +第二个示例没有使用上面列出的任何特性,因此在加载检查点时计算和内存效率会较低。在下面的部分中,我们将详细讨论每个特性。 -.. GENERATED FROM PYTHON SOURCE LINES 60-72 +.. GENERATED FROM PYTHON SOURCE LINES 55-61 -Using ``torch.load(mmap=True)`` +使用 ``torch.load(mmap=True)`` ------------------------------- -First, let us consider what happens when we load the checkpoint with ``torch.load``. -When we save a checkpoint with ``torch.save``, tensor storages are tagged with the device they are -saved on. With ``torch.load``, tensor storages will be loaded to the device -they were tagged with (unless this behavior is overridden using the -``map_location`` flag). For ease of explanation, let us assume that the tensors -were saved on CPU. This means that on the first line all tensor storages will be -loaded into CPU RAM, which can be undesirable when: +首先,让我们考虑使用 ``torch.load`` 加载检查点时会发生什么。 +当我们使用 ``torch.save`` 保存检查点时,张量存储会被标记为保存时所在的设备。 +使用 ``torch.load`` 时,张量存储将被加载到它们被标记的设备上(除非使用 ``map_location`` 标志覆盖此行为)。 +为了解释方便,我们假设张量是保存在 CPU 上的。这意味着在第一行中,所有张量存储将被加载到 CPU 内存中,在以下情况下这是不可取的: -* CPU RAM is smaller than the size of the checkpoint. -* Waiting for the entire checkpoint to be loaded into RAM before performing, for example, some per-tensor processing. - -.. GENERATED FROM PYTHON SOURCE LINES 72-78 +.. GENERATED FROM PYTHON SOURCE LINES 61-70 .. code-block:: default + # * CPU 内存小于检查点的大小。 + # * 在执行一些每张量处理之前等待整个检查点被加载到内存中。 + start_time = time.time() - state_dict = torch.load('checkpoint.pth') + state_dict = torch.load("checkpoint.pth") end_time = time.time() - print(f"loading time without mmap={end_time - start_time}") + print(f"不使用 mmap 的加载时间={end_time - start_time}") -.. GENERATED FROM PYTHON SOURCE LINES 79-85 +.. GENERATED FROM PYTHON SOURCE LINES 71-75 -The ``mmap`` keyword argument to ``torch.load`` attempts to solve the above two -problems. As its name implies, the ``mmap`` keyword argument to ``torch.load`` -makes use of an `mmap call `_ -which maps a file on disk into virtual memory and lets the OS handle loading and -unloading into physical memory automatically. When this flag is passed, tensor -storages will be memory-mapped. +``torch.load`` 中的 ``mmap`` 关键字参数试图解决上述两个问题。 +顾名思义,``torch.load`` 中的 ``mmap`` 关键字参数使用了 `mmap 调用 `_, +它将磁盘上的文件映射到虚拟内存中,并让操作系统自动处理加载和卸载到物理内存。 +当传递此标志时,张量存储将被内存映射。 -.. GENERATED FROM PYTHON SOURCE LINES 85-91 +.. GENERATED FROM PYTHON SOURCE LINES 75-82 .. code-block:: default start_time = time.time() - state_dict = torch.load('checkpoint.pth', mmap=True) + state_dict = torch.load("checkpoint.pth", mmap=True) end_time = time.time() - print(f"loading time with mmap={end_time - start_time}") + print(f"使用 mmap 的加载时间={end_time - start_time}") + -.. GENERATED FROM PYTHON SOURCE LINES 92-94 +.. GENERATED FROM PYTHON SOURCE LINES 83-84 -As mentioned above, one can use this argument to do per-tensor processing on a -checkpoint without loading all tensor storages into CPU memory upfront. For example: +如上所述,可以使用此参数在不将所有张量存储加载到 CPU 内存中的情况下对检查点执行每张量处理。例如: -.. GENERATED FROM PYTHON SOURCE LINES 94-108 +.. GENERATED FROM PYTHON SOURCE LINES 84-100 .. code-block:: default def my_special_routine(t, device): - # this could be a much fancier operation + # 这可能是一个更复杂的操作 return t.to(dtype=torch.bfloat16, device=device) + def my_processing_function(key, device): t = state_dict[key] processed_t = my_special_routine(t, device) del t state_dict[key] = processed_t + for key in state_dict.keys(): - device = torch.device('cuda') + device = torch.device("cuda") my_processing_function(key, device) -.. GENERATED FROM PYTHON SOURCE LINES 109-112 +.. GENERATED FROM PYTHON SOURCE LINES 101-104 -Using ``torch.device('meta')`` +使用 ``torch.device('meta')`` ------------------------------ -Next, let's consider the creation of the module. +接下来,让我们考虑模块的创建。 -.. GENERATED FROM PYTHON SOURCE LINES 112-114 +.. GENERATED FROM PYTHON SOURCE LINES 104-106 .. code-block:: default m = SomeModule(1000) -.. GENERATED FROM PYTHON SOURCE LINES 115-132 +.. GENERATED FROM PYTHON SOURCE LINES 107-109 -This allocates memory for all parameters/buffers and initializes them per -the default initialization schemes defined in ``SomeModule.__init__()``, which -is wasteful when we want to load a checkpoint for the following reasons: +这将为所有参数/缓冲区分配内存并根据 ``SomeModule.__init__()`` 中定义的默认初始化方案对其进行初始化, +当我们想要加载检查点时,这是浪费的,原因如下: -* The result of the initialization kernels will be overwritten by ``load_state_dict()`` without ever being used, so - initialization is wasteful. -* We are allocating memory for these parameters/buffers in RAM while ``torch.load`` of the saved state dictionary also - allocates memory in RAM for the parameters/buffers in the checkpoint. +.. GENERATED FROM PYTHON SOURCE LINES 109-122 -In order to solve these two problems, we can use the ``torch.device()`` -context manager with ``device='meta'`` when we instantiate the ``nn.Module()``. +.. code-block:: default -The `torch.device() `_ -context manager makes sure that factory calls will be performed as if they -were passed the specified ``device`` as an argument. Tensors on ``torch.device('meta')`` do not -carry data. However, they possess all other metadata a tensor carries such as ``.size()``, ``.stride()``, -``.requires_grad``, and others. -.. GENERATED FROM PYTHON SOURCE LINES 132-135 + # * 初始化内核的结果将被 ``load_state_dict()`` 覆盖而从未被使用,因此初始化是浪费的。 + # * 我们在 RAM 中为这些参数/缓冲区分配了内存,而 ``torch.load`` 保存的状态字典也在 RAM 中为检查点中的参数/缓冲区分配了内存。 -.. code-block:: default + # 为了解决这两个问题,我们可以在实例化 ``nn.Module()`` 时使用 ``device='meta'`` 的 ``torch.device()`` 上下文管理器。 - with torch.device('meta'): - new_m = SomeModule(1000) + # `torch.device() `_ + # 上下文管理器确保工厂调用将被视为传递了指定的 ``device`` 作为参数。 + # 在 ``torch.device('meta')`` 上的张量不携带数据。 + # 但是,它们具有张量所携带的其他元数据,如 ``.size()``, ``.stride()``, ``.requires_grad`` 等。 + with torch.device("meta"): + new_m = SomeModule(1000) -.. GENERATED FROM PYTHON SOURCE LINES 136-139 +.. GENERATED FROM PYTHON SOURCE LINES 123-126 -Using ``load_state_dict(assign=True)`` +使用 ``load_state_dict(assign=True)`` -------------------------------------- -Next, we consider the loading of the state dictionary. +接下来,我们考虑加载状态字典。 -.. GENERATED FROM PYTHON SOURCE LINES 139-142 +.. GENERATED FROM PYTHON SOURCE LINES 126-129 .. code-block:: default @@ -219,45 +214,38 @@ Next, we consider the loading of the state dictionary. m.load_state_dict(state_dict) -.. GENERATED FROM PYTHON SOURCE LINES 143-155 +.. GENERATED FROM PYTHON SOURCE LINES 130-132 -``nn.Module.load_state_dict()`` is usually implemented via an in-place -``param_in_model.copy_(param_in_state_dict)``. This means that the parameter/buffer -with the corresponding key in the state dictionary is copied into the -parameter/buffer in the ``nn.Module``. +``nn.Module.load_state_dict()`` 通常是通过 ``param_in_model.copy_(param_in_state_dict)`` 的就地复制实现的。 +这意味着状态字典中对应键的参数/缓冲区将被复制到 ``nn.Module`` 中的参数/缓冲区。 -However, an in-place copy into a tensor on the ``meta`` device is a no-op. -In order to avoid this, we can pass the ``assign=True`` keyword argument to -``load_state_dict()``. +.. GENERATED FROM PYTHON SOURCE LINES 132-147 -A caveat here is that since optimizers hold a reference to -``nn.Module.parameters()``, the optimizer must be initialized after the module -is loaded from state dict if ``assign=True`` is passed. +.. code-block:: default -.. GENERATED FROM PYTHON SOURCE LINES 155-165 -.. code-block:: default + # 然而,对 ``meta`` 设备上的张量进行就地复制是无操作的。 + # 为了避免这种情况,我们可以在 ``load_state_dict()`` 中传递 ``assign=True`` 关键字参数。 + # 这里的一个警告是,由于优化器持有对 ``nn.Module.parameters()`` 的引用, + # 如果传递了 ``assign=True``,则必须在从状态字典加载模块后初始化优化器。 - # As of PyTorch 2.3.0, one can use ``torch.__future__.set_swap_module_params_on_conversion`` to - # avoid this caveat. This `recipe `_ - # provides more details. + # 从 PyTorch 2.3.0 开始,可以使用 ``torch.__future__.set_swap_module_params_on_conversion`` 来避免这个警告。 + # 这个 `教程 `_ 提供了更多细节。 new_m.load_state_dict(state_dict, assign=True) - # Before 2.3.0, this MUST be done AFTER the load_state_dict with assign. - # In versions >= 2.3.0, one can consider setting ``torch.__future__.set_swap_module_params_on_conversion`` + # 在 2.3.0 之前,这一步必须在 load_state_dict 使用 assign 之后完成。 + # 在版本 >= 2.3.0 中,可以考虑设置 ``torch.__future__.set_swap_module_params_on_conversion`` opt = torch.optim.SGD(new_m.parameters(), lr=1e-3) -.. GENERATED FROM PYTHON SOURCE LINES 166-173 +.. GENERATED FROM PYTHON SOURCE LINES 148-153 -Conclusion +结论 ------------- -To recap, in this tutorial we learned about ``torch.load(mmap=True)``, the -``torch.device()`` context manager with ``device=meta``, and -``nn.Module.load_state_dict(assign=True)`` as well as how these tools could -be used to aid when loading a model from a checkpoint. +总结一下,在本教程中,我们学习了 ``torch.load(mmap=True)``、``device='meta'`` 的 ``torch.device()`` 上下文管理器和 ``nn.Module.load_state_dict(assign=True)`` +以及如何在从检查点加载模型时使用这些工具来提高效率。 .. rst-class:: sphx-glr-timing diff --git a/docs/_sources/recipes/recipes/reasoning_about_shapes.rst.txt b/docs/_sources/recipes/recipes/reasoning_about_shapes.rst.txt index e5b67d8..768c242 100644 --- a/docs/_sources/recipes/recipes/reasoning_about_shapes.rst.txt +++ b/docs/_sources/recipes/recipes/reasoning_about_shapes.rst.txt @@ -18,29 +18,25 @@ .. _sphx_glr_recipes_recipes_reasoning_about_shapes.py: -Reasoning about Shapes in PyTorch +在PyTorch中推理形状 ================================= -When writing models with PyTorch, it is commonly the case that the parameters -to a given layer depend on the shape of the output of the previous layer. For -example, the ``in_features`` of an ``nn.Linear`` layer must match the -``size(-1)`` of the input. For some layers, the shape computation involves -complex equations, for example convolution operations. +在使用PyTorch编写模型时,通常会遇到某一层的参数取决于前一层输出的形状的情况。例如, +``nn.Linear``层的``in_features``必须与输入的``size(-1)``相匹配。对于某些层,形状计算涉及复杂的等式,例如卷积运算。 -One way around this is to run the forward pass with random inputs, but this is -wasteful in terms of memory and compute. +一种解决方法是使用随机输入进行前向传播,但这在内存和计算方面是浪费的。 -Instead, we can make use of the ``meta`` device to determine the output shapes -of a layer without materializing any data. +相反,我们可以使用``meta``设备来确定层的输出形状,而无需实际化任何数据。 -.. GENERATED FROM PYTHON SOURCE LINES 17-31 +.. GENERATED FROM PYTHON SOURCE LINES 12-27 .. code-block:: default - import torch import timeit + import torch + t = torch.rand(2, 3, 10, 10, device="meta") conv = torch.nn.Conv2d(3, 5, 2, device="meta") start = timeit.default_timer() @@ -48,16 +44,15 @@ of a layer without materializing any data. end = timeit.default_timer() print(out) - print(f"Time taken: {end-start}") + print(f"所需时间: {end-start}") -.. GENERATED FROM PYTHON SOURCE LINES 32-34 +.. GENERATED FROM PYTHON SOURCE LINES 28-29 -Observe that since data is not materialized, passing arbitrarily large -inputs will not significantly alter the time taken for shape computation. +观察到,由于没有实际化数据,即使传入任意大的输入,用于形状计算的时间也不会显著改变。 -.. GENERATED FROM PYTHON SOURCE LINES 34-44 +.. GENERATED FROM PYTHON SOURCE LINES 29-39 .. code-block:: default @@ -68,15 +63,15 @@ inputs will not significantly alter the time taken for shape computation. end = timeit.default_timer() print(out) - print(f"Time taken: {end-start}") + print(f"所需时间: {end-start}") -.. GENERATED FROM PYTHON SOURCE LINES 45-46 +.. GENERATED FROM PYTHON SOURCE LINES 40-41 -Consider an arbitrary network such as the following: +考虑以下任意网络: -.. GENERATED FROM PYTHON SOURCE LINES 46-71 +.. GENERATED FROM PYTHON SOURCE LINES 41-66 .. code-block:: default @@ -98,7 +93,7 @@ Consider an arbitrary network such as the following: def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) - x = torch.flatten(x, 1) # flatten all dimensions except batch + x = torch.flatten(x, 1) # 展平除批次维度外的所有维度 x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) @@ -106,22 +101,21 @@ Consider an arbitrary network such as the following: -.. GENERATED FROM PYTHON SOURCE LINES 72-74 +.. GENERATED FROM PYTHON SOURCE LINES 67-68 -We can view the intermediate shapes within an entire network by registering a -forward hook to each layer that prints the shape of the output. +我们可以通过为每一层注册一个前向钩子来打印输出的形状,从而查看整个网络中间层的形状。 -.. GENERATED FROM PYTHON SOURCE LINES 74-89 +.. GENERATED FROM PYTHON SOURCE LINES 68-83 .. code-block:: default + def fw_hook(module, input, output): - print(f"Shape of output to {module} is {output.shape}.") + print(f"{module}的输出形状为{output.shape}。") - # Any tensor created within this torch.device context manager will be - # on the meta device. + # 在此torch.device上下文管理器中创建的任何张量都将在meta设备上。 with torch.device("meta"): net = Net() inp = torch.randn((1024, 3, 32, 32)) diff --git a/docs/_sources/recipes/recipes/swap_tensors.rst.txt b/docs/_sources/recipes/recipes/swap_tensors.rst.txt index 64f007f..2d1f324 100644 --- a/docs/_sources/recipes/recipes/swap_tensors.rst.txt +++ b/docs/_sources/recipes/recipes/swap_tensors.rst.txt @@ -18,102 +18,98 @@ .. _sphx_glr_recipes_recipes_swap_tensors.py: -Extension points in ``nn.Module`` for ``load_state_dict`` and tensor subclasses +在 ``nn.Module`` 中为 ``load_state_dict`` 和张量子类提供扩展点 =============================================================================== -**Author:** `Mikayla Gawarecki `_ +**作者:** `Mikayla Gawarecki `_ -This recipe introduces a new utility function ``torch.utils.swap_tensors`` -as well as two new extension points where it has been integrated in -``nn.Module``: +本教程介绍了一个新的实用函数 ``torch.utils.swap_tensors``, +以及在 ``nn.Module`` 中集成它的两个新扩展点: -* ``nn.Module.to()`` and related methods +* ``nn.Module.to()`` 和相关方法 * ``nn.Module.load_state_dict()`` .. note:: - This recipe requires PyTorch 2.3.0 or later. + 本教程需要 PyTorch 2.3.0 或更高版本。 -.. GENERATED FROM PYTHON SOURCE LINES 18-22 +.. GENERATED FROM PYTHON SOURCE LINES 17-21 ``torch.utils.swap_tensors`` ---------------------------- -``torch.utils.swap_tensors`` (hereafter referred to as ``swap_tensors``) is a -utility function that takes in two Python tensors and swaps them. +``torch.utils.swap_tensors``(以下简称为 ``swap_tensors``) 是一个 +实用函数,它接受两个 Python 张量并交换它们。 -.. GENERATED FROM PYTHON SOURCE LINES 22-31 +.. GENERATED FROM PYTHON SOURCE LINES 21-31 .. code-block:: default import torch import torch.nn as nn + t1 = torch.arange(2) t2 = torch.arange(3) - print(f"Before swapping, t1: {t1}, t2: {t2}") + print(f"交换前, t1: {t1}, t2: {t2}") torch.utils.swap_tensors(t1, t2) - print(f"After swapping, t1: {t1}, t2: {t2}") + print(f"交换后, t1: {t1}, t2: {t2}") -.. GENERATED FROM PYTHON SOURCE LINES 32-45 +.. GENERATED FROM PYTHON SOURCE LINES 32-43 -More specifically, ``swap_tensors`` swaps the Python ``__class__``, ``__dict__`` -and ``__slots__`` of the two tensors, as well as their associated ``at::Tensor``. +更具体地说,``swap_tensors`` 交换了两个张量的 Python ``__class__``、``__dict__`` +和 ``__slots__``,以及它们相关的 ``at::Tensor``。 -Application to ``nn.Module`` +应用于 ``nn.Module`` ---------------------------- -This utility is pertinent to ``nn.Module`` when a Python object outside -of the module holds a reference to parameters of the module. If an ``nn.Module`` -modifies any of its parameters out of place, the object holding references to -the parameters will not see the change. A classic example of this is the -optimizer, which holds a reference to the parameters of the ``nn.Module``. -This leads to a silent correctness issue where the ``optimizer.step()`` will -run without error but the weights of the ``nn.Module`` will not be updated. +当 ``nn.Module`` 之外的 Python 对象持有该模块参数的引用时,此实用函数就很有用。 +如果 ``nn.Module`` 就地修改了任何参数,持有这些参数引用的对象将无法看到更改。 +一个典型的例子是优化器,它持有 ``nn.Module`` 参数的引用。 +这会导致一个潜在的正确性问题,即 ``optimizer.step()`` 会无错误运行, +但 ``nn.Module`` 的权重不会被更新。 -.. GENERATED FROM PYTHON SOURCE LINES 45-54 +.. GENERATED FROM PYTHON SOURCE LINES 43-52 .. code-block:: default mod = torch.nn.Linear(1, 2, bias=False) optimizer = torch.optim.SGD(mod.parameters()) - print(f"weight in mod: {mod.weight}") - print(f"weight in optimizer: {optimizer.param_groups[0]['params']}") + print(f"mod 中的权重: {mod.weight}") + print(f"优化器中的权重: {optimizer.param_groups[0]['params']}") mod.weight = torch.nn.Parameter(2 * mod.weight) - print(f"weight in mod: {mod.weight}") - print(f"weight in optimizer: {optimizer.param_groups[0]['params']}") + print(f"mod 中的权重: {mod.weight}") + print(f"优化器中的权重: {optimizer.param_groups[0]['params']}") -.. GENERATED FROM PYTHON SOURCE LINES 55-77 +.. GENERATED FROM PYTHON SOURCE LINES 53-71 -``nn.Module.to()`` and related methods +``nn.Module.to()`` 和相关方法 -------------------------------------- -This includes methods that change the device of the module (such as ``nn.Module.cpu()``), -methods that change the ``dtype`` of the module (such as ``nn.Module.float()``) -as well as methods that allow the module to be materialized -(such as ``nn.Module.to_empty()``). +这包括改变模块设备的方法(如 ``nn.Module.cpu()``)、 +改变模块 ``dtype`` 的方法(如 ``nn.Module.float()``)、 +以及允许模块实例化的方法(如 ``nn.Module.to_empty()``)。 -At first glance, it might be non-intuitive that these methods are able to -modify the parameters of the module in-place. The existing approach has been -to use a nasty hack dating back from the first days of PyTorch. +乍一看,这些方法能够就地修改模块的参数可能看起来不太直观。 +现有的方法是使用一种追溯到 PyTorch 最初几天的丑陋黑客手段。 -Notably, the existing approach does not work in these cases: +值得注意的是,现有方法在以下情况下无法工作: -* when using ``__torch_dispatch__`` subclasses -* when ``param`` and ``new_param`` do not have the same Python ``type()`` -* For tensors with special C++ representations (such as sparse tensors and ``XLA`` tensors) +* 使用 ``__torch_dispatch__`` 子类 +* ``param`` 和 ``new_param`` 的 Python ``type()`` 不同 +* 对于具有特殊 C++ 表示的张量(如稀疏张量和 ``XLA`` 张量) -In the following part of this recipe, we will define a toy ``__torch_dispatch__`` -subclass ``MyQuantizedLinearWeight`` that represents quantized linear weights. -This subclass will be used for illustration purposes throughout the rest of -the tutorial. For brevity, we omit most of the ``__torch_dispatch__`` -implementation. +在本教程的下一部分,我们将定义一个玩具 ``__torch_dispatch__`` 子类 ``MyQuantizedLinearWeight`` +来表示量化的线性权重。在本教程的剩余部分,我们将使用这个子类进行说明。 +为简洁起见,我们省略了大部分 ``__torch_dispatch__`` 实现。 -.. GENERATED FROM PYTHON SOURCE LINES 77-110 +.. GENERATED FROM PYTHON SOURCE LINES 71-108 .. code-block:: default + aten = torch.ops.aten + class MyQuantizedLinearWeight(torch.Tensor): @staticmethod def __new__(cls, elem, scale): @@ -124,7 +120,8 @@ implementation. layout=elem.layout, device=elem.device, strides=elem.stride(), - storage_offset=elem.storage_offset()) + storage_offset=elem.storage_offset(), + ) def __init__(self, elem: torch.Tensor, scale: float): self.elem = elem @@ -138,46 +135,43 @@ implementation. if func in (aten.detach.default, aten._to_copy.default): new_elem = func(args[0].elem, *args[1:], **kwargs) return cls(new_elem, args[0].scale) - # Implementations for certain ops would be added to ``OP_TABLE``. - # We omit this for brevity. + # 某些操作的实现将添加到 ``OP_TABLE``。 + # 为简洁起见,我们在此省略。 OP_TABLE = dict() if func in OP_TABLE: - return OP_TABLE[func](func, args, kwargs) - raise NotImplementedError(f"Unsupported function {func}") + return OP_TABLE[func](func, args, kwargs) + raise NotImplementedError(f"不支持的函数 {func}") + -.. GENERATED FROM PYTHON SOURCE LINES 111-115 +.. GENERATED FROM PYTHON SOURCE LINES 109-112 -Let us create an ``nn.Linear`` layer of ``dtype`` ``torch.float32`` where the weight is -a ``MyQuantizedLinearWeight`` and try to convert it to ``torch.bfloat16``. -Observe that the weight's ``dtype`` changes as expected. However, the ``dtype`` -of the subclass' payload (``elem``) does not change. +让我们创建一个 ``dtype`` 为 ``torch.float32`` 的 ``nn.Linear`` 层, +其权重是 ``MyQuantizedLinearWeight``。然后尝试将其转换为 ``torch.bfloat16``。 +观察到权重的 ``dtype`` 如预期般改变了。但是子类的有效载荷(``elem``)的 ``dtype`` 没有改变。 -.. GENERATED FROM PYTHON SOURCE LINES 115-125 +.. GENERATED FROM PYTHON SOURCE LINES 112-122 .. code-block:: default m = nn.Linear(3, 5, dtype=torch.float32) m.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5)) - print(f"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") + print(f"之前: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") m.bfloat16() - print(f"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") + print(f"之后: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") print(f"m.weight.dtype: {m.weight.dtype}") print(f"m.weight.elem.dtype: {m.weight.elem.dtype}") print(f"m.bias.dtype: {m.bias.dtype}") -.. GENERATED FROM PYTHON SOURCE LINES 126-132 +.. GENERATED FROM PYTHON SOURCE LINES 123-126 -To this end, we introduce a global config -``torch.__future__.set_swap_module_params_on_conversion`` that will use -``swap_tensors`` to swap the parameters of the module while preserving -references in place of ``.data`` setting. When this config is set, -``swap_tensors`` will be used during the conversion, which ensures that -the ``dtype`` of the payload is properly converted. +为此,我们引入了一个全局配置 ``torch.__future__.set_swap_module_params_on_conversion`` +它将使用 ``swap_tensors`` 交换模块的参数,同时保留 ``.data`` 设置中的引用。 +设置此配置后,在转换期间将使用 ``swap_tensors``,从而确保有效载荷的 ``dtype`` 正确转换。 -.. GENERATED FROM PYTHON SOURCE LINES 132-144 +.. GENERATED FROM PYTHON SOURCE LINES 126-138 .. code-block:: default @@ -185,61 +179,52 @@ the ``dtype`` of the payload is properly converted. torch.__future__.set_swap_module_params_on_conversion(True) m = nn.Linear(3, 5, dtype=torch.float32) m.weight = torch.nn.Parameter(MyQuantizedLinearWeight(m.weight, 0.5)) - print(f"Before: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") + print(f"之前: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") m.bfloat16() - print(f"After: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") + print(f"之后: id(m.weight)={id(m.weight)}, id(m.bias)={id(m.bias)}") print(f"m.weight.dtype: {m.weight.dtype}") print(f"m.weight.elem.dtype: {m.weight.elem.dtype}") print(f"m.bias.dtype: {m.bias.dtype}") torch.__future__.set_swap_module_params_on_conversion(False) -.. GENERATED FROM PYTHON SOURCE LINES 145-183 +.. GENERATED FROM PYTHON SOURCE LINES 139-167 ``nn.Module.load_state_dict()`` -------------------------------- -Depending on the value of the ``assign`` keyword argument passed -to ``load_state_dict()``, there are two ways to load the ``state_dict``: +根据传递给 ``load_state_dict()`` 的 ``assign`` 关键字参数的值, +有两种方式加载 ``state_dict``: -* ``assign=False``: preserves the properties of ``module.param`` and only takes the values - from ``state_dict['param_name']`` -* ``assign=True``: preserves the properties and values of ``state_dict['param_name']``. +* ``assign=False``: 保留 ``module.param`` 的属性,只从 ``state_dict['param_name']`` 中获取值 +* ``assign=True``: 保留 ``state_dict['param_name']`` 的属性和值。 -Previously, these were implemented with in-place ``copy_`` and ``__setattr__`` respectively. -With the existing implementation, each approach had its own limitations -- ``assign=False`` -imposes the constraint that the type of the parameter in the ``state_dict`` must -be the same as the type of the parameter in the module while ``assign=True`` imposes -the constraint that anything that holds references to the module's parameters must -be initialized after ``nn.Module.load_state_dict()``. +之前,这些分别是通过就地 ``copy_`` 和 ``__setattr__`` 实现的。 +在现有实现中,每种方法都有自己的限制 - ``assign=False`` 要求 ``state_dict`` 中的参数类型 +必须与模块中的参数类型相同,而 ``assign=True`` 要求在 ``nn.Module.load_state_dict()`` 之后 +初始化任何持有模块参数引用的对象。 -Now, we address both constraints by adding a ``swap_tensors`` path to ``load_state_dict()`` -and introducing a new extension point ``torch.Tensor.module_load(self, other, assign=False)``. -When the ``swap_tensors`` path is enabled via the ``__future__`` mentioned above, -we can use a ``__torch_function__`` handler for ``module_load`` to apply a -custom transformation to the value in the ``state_dict``. The result of this -transformation will be swapped with the parameter in the module. +现在,我们通过在 ``load_state_dict()`` 中添加 ``swap_tensors`` 路径并引入新的扩展点 +``torch.Tensor.module_load(self, other, assign=False)`` 来解决这两个限制。 +当启用上述 ``__future__`` 时,我们可以使用 ``module_load`` 的 ``__torch_function__`` 处理程序 +对 ``state_dict`` 中的值应用自定义转换。转换的结果将与模块中的参数交换。 -In the following example, we will use the ``MyQuantizedLinearWeight`` subclass -defined above to illustrate how we can use these features to apply a -custom quantization scheme to the weights of a linear layer when -loading the ``state_dict``. +在下面的示例中,我们将使用上面定义的 ``MyQuantizedLinearWeight`` 子类 +来说明如何使用这些功能在加载 ``state_dict`` 时对线性层的权重应用自定义量化方案。 -Recall that the ``__torch_function__`` handler for ``module_load`` will be -invoked if either ``self`` or ``other`` (in this case ``param`` or -``state_dict[param_key]``) are ``MyQuantizedLinearWeight`` subclasses. +回顾一下,如果 ``self`` 或 ``other``(在本例中是 ``param`` 或 ``state_dict[param_key]``) +是 ``MyQuantizedLinearWeight`` 子类,则会调用 ``module_load`` 的 ``__torch_function__`` 处理程序。 -Assume that we expect the ``state_dict`` to contain plain tensors and the -module to contain ``MyQuantizedLinearWeight`` parameters where we want the -tensors in the ``state_dict`` to be transformed into the subclass. Then we -can define a ``__torch_function__`` handler for ``torch.Tensor.module_load`` -as such: +假设我们期望 ``state_dict`` 包含普通张量,而模块包含 ``MyQuantizedLinearWeight`` 参数, +我们希望将 ``state_dict`` 中的张量转换为子类。那么我们可以为 ``torch.Tensor.module_load`` 定义 +一个 ``__torch_function__`` 处理程序,如下所示: -.. GENERATED FROM PYTHON SOURCE LINES 183-198 +.. GENERATED FROM PYTHON SOURCE LINES 167-184 .. code-block:: default + @classmethod def custom_torch_function(cls, func, types, args=(), kwargs=None): kwargs = {} if kwargs is None else kwargs @@ -250,70 +235,67 @@ as such: return MyQuantizedLinearWeight(src, dest.scale) else: with torch._C.DisableTorchFunctionSubclass(): - return func(*args, **kwargs) + return func(*args, **kwargs) + MyQuantizedLinearWeight.__torch_function__ = custom_torch_function -.. GENERATED FROM PYTHON SOURCE LINES 199-202 +.. GENERATED FROM PYTHON SOURCE LINES 185-187 -First, let us create a skeleton of a model on the meta device to avoid -materializing storages. We convert all weights in the modules to -``MyQuantizedLinearWeight`` subclasses while leaving biases intact. +首先,让我们在 meta 设备上创建一个模型框架,以避免实例化存储。 +我们将模块中的所有权重转换为 ``MyQuantizedLinearWeight`` 子类,同时保留偏置不变。 -.. GENERATED FROM PYTHON SOURCE LINES 202-214 +.. GENERATED FROM PYTHON SOURCE LINES 187-201 .. code-block:: default + def fn(m): if isinstance(m, nn.Linear): requires_grad = m.weight.requires_grad m.weight = torch.nn.Parameter( - MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad - ) + MyQuantizedLinearWeight(m.weight, 0.5), requires_grad=requires_grad + ) + with torch.device("meta"): m = nn.Linear(3, 5) m.apply(fn) -.. GENERATED FROM PYTHON SOURCE LINES 215-218 +.. GENERATED FROM PYTHON SOURCE LINES 202-204 -We can then load the ``state_dict``. Observe that we use ``assign=True`` because -for biases, we want to preserve the properties of the tensor in the ``state_dict`` -(for example, we do not want the bias to be on the ``meta`` device after loading). +然后我们可以加载 ``state_dict``。注意我们使用 ``assign=True``,因为对于偏置, +我们希望保留 ``state_dict`` 中张量的属性(例如,我们不希望偏置在加载后位于 ``meta`` 设备上)。 -.. GENERATED FROM PYTHON SOURCE LINES 218-228 +.. GENERATED FROM PYTHON SOURCE LINES 204-214 .. code-block:: default torch.__future__.set_swap_module_params_on_conversion(True) - print(f"Before: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") - print(f"m.state_dict() before load_state_dict():\n {m.state_dict()}") + print(f"之前: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") + print(f"load_state_dict() 之前的 m.state_dict():\n {m.state_dict()}") state_dict = nn.Linear(3, 5).state_dict() print(f"state_dict:\n {state_dict}") m.load_state_dict(state_dict, assign=True) - print(f"After: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") - print(f"m.state_dict() after load_state_dict():\n {m.state_dict()}") + print(f"之后: id(weight)={id(m.weight)}, id(bias)={id(m.bias)}") + print(f"load_state_dict() 之后的 m.state_dict():\n {m.state_dict()}") -.. GENERATED FROM PYTHON SOURCE LINES 229-242 +.. GENERATED FROM PYTHON SOURCE LINES 215-224 -The above is a toy example of how we can use the new extension point in -``nn.Module.load_state_dict()``. One can also imagine alternate scenarios such -as when we have tensor subclasses in the ``state_dict`` and plain ``nn.Parameters``/ -tensors in the module or when both are tensor subclasses. Based on the use -case, we can define the ``__torch_function__`` handler for ``module_load`` -to apply the transforms as needed. +上面是一个如何使用 ``nn.Module.load_state_dict()`` 中的新扩展点的玩具示例。 +我们还可以想象其他场景,例如当 ``state_dict`` 中有张量子类而模块中有普通 ``nn.Parameters``/张量时, +或者两者都是张量子类时。根据使用场景,我们可以定义 ``module_load`` 的 ``__torch_function__`` 处理程序 +来应用所需的转换。 -Conclusion +结论 ---------- -In this recipe, we learned about ``swap_tensors``, the importance -of preserving references for parameters in ``nn.Module`` as well as how to -use the two new extension points that are gated by -``torch.__future__.set_swap_module_params_on_conversion``. +在本教程中,我们学习了 ``swap_tensors``、在 ``nn.Module`` 中保留参数引用的重要性, +以及如何使用由 ``torch.__future__.set_swap_module_params_on_conversion`` 控制的两个新扩展点。 .. rst-class:: sphx-glr-timing diff --git a/docs/_sources/recipes/recipes/tensorboard_with_pytorch.rst.txt b/docs/_sources/recipes/recipes/tensorboard_with_pytorch.rst.txt index 441e887..71fd2a2 100644 --- a/docs/_sources/recipes/recipes/tensorboard_with_pytorch.rst.txt +++ b/docs/_sources/recipes/recipes/tensorboard_with_pytorch.rst.txt @@ -18,71 +18,70 @@ .. _sphx_glr_recipes_recipes_tensorboard_with_pytorch.py: -How to use TensorBoard with PyTorch +如何在PyTorch中使用TensorBoard =================================== -TensorBoard is a visualization toolkit for machine learning experimentation. -TensorBoard allows tracking and visualizing metrics such as loss and accuracy, -visualizing the model graph, viewing histograms, displaying images and much more. -In this tutorial we are going to cover TensorBoard installation, -basic usage with PyTorch, and how to visualize data you logged in TensorBoard UI. +TensorBoard是一个用于机器学习实验的可视化工具包。 +TensorBoard允许跟踪和可视化指标,如损失和准确率, +可视化模型图,查看直方图,显示图像等。 +在本教程中,我们将介绍TensorBoard的安装、 +在PyTorch中的基本用法,以及如何在TensorBoard UI中可视化您记录的数据。 -Installation +安装 ---------------------- -PyTorch should be installed to log models and metrics into TensorBoard log -directory. The following command will install PyTorch 1.4+ via -Anaconda (recommended): +应安装PyTorch以将模型和指标记录到TensorBoard日志 +目录。以下命令将通过Anaconda(推荐)安装PyTorch 1.4+: .. code-block:: sh - $ conda install pytorch torchvision -c pytorch + $ conda install pytorch torchvision -c pytorch -or pip +或者使用pip: .. code-block:: sh $ pip install torch torchvision -.. GENERATED FROM PYTHON SOURCE LINES 30-36 +.. GENERATED FROM PYTHON SOURCE LINES 29-35 -Using TensorBoard in PyTorch +在PyTorch中使用TensorBoard ----------------------------- -Let’s now try using TensorBoard with PyTorch! Before logging anything, -we need to create a ``SummaryWriter`` instance. +现在让我们尝试在PyTorch中使用TensorBoard!在记录任何内容之前, +我们需要创建一个 ``SummaryWriter`` 实例。 -.. GENERATED FROM PYTHON SOURCE LINES 36-41 +.. GENERATED FROM PYTHON SOURCE LINES 35-41 .. code-block:: default import torch from torch.utils.tensorboard import SummaryWriter + writer = SummaryWriter() .. GENERATED FROM PYTHON SOURCE LINES 42-44 -Writer will output to ``./runs/`` directory by default. +写入器默认将输出到 ``./runs/`` 目录。 -.. GENERATED FROM PYTHON SOURCE LINES 47-59 +.. GENERATED FROM PYTHON SOURCE LINES 47-58 -Log scalars +记录标量 ----------- -In machine learning, it’s important to understand key metrics such as -loss and how they change during training. Scalar helps to save -the loss value of each training step, or the accuracy after each epoch. +在机器学习中,了解关键指标(如损失)及其在训练期间的变化非常重要。 +标量可用于保存每个训练步骤的损失值或每个epoch的准确率。 -To log a scalar value, use -``add_scalar(tag, scalar_value, global_step=None, walltime=None)``. -For example, lets create a simple linear regression training, and -log loss value using ``add_scalar`` +要记录标量值,请使用 +``add_scalar(tag, scalar_value, global_step=None, walltime=None)``。 +例如,让我们创建一个简单的线性回归训练,并 +使用 ``add_scalar`` 记录损失值 -.. GENERATED FROM PYTHON SOURCE LINES 59-80 +.. GENERATED FROM PYTHON SOURCE LINES 58-81 .. code-block:: default @@ -92,7 +91,8 @@ log loss value using ``add_scalar`` model = torch.nn.Linear(1, 1) criterion = torch.nn.MSELoss() - optimizer = torch.optim.SGD(model.parameters(), lr = 0.1) + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + def train_model(iter): for epoch in range(iter): @@ -102,24 +102,25 @@ log loss value using ``add_scalar`` optimizer.zero_grad() loss.backward() optimizer.step() - + + train_model(10) writer.flush() -.. GENERATED FROM PYTHON SOURCE LINES 81-89 +.. GENERATED FROM PYTHON SOURCE LINES 82-90 -Call ``flush()`` method to make sure that all pending events -have been written to disk. +调用 ``flush()`` 方法以确保所有待处理事件 +已写入磁盘。 -See `torch.utils.tensorboard tutorials `_ -to find more TensorBoard visualization types you can log. +请参阅 `torch.utils.tensorboard 教程 `_ +以了解您可以记录的更多TensorBoard可视化类型。 -If you do not need the summary writer anymore, call ``close()`` method. +如果您不再需要摘要写入器,请调用 ``close()`` 方法。 -.. GENERATED FROM PYTHON SOURCE LINES 89-92 +.. GENERATED FROM PYTHON SOURCE LINES 90-93 .. code-block:: default @@ -127,45 +128,43 @@ If you do not need the summary writer anymore, call ``close()`` method. writer.close() -.. GENERATED FROM PYTHON SOURCE LINES 93-122 +.. GENERATED FROM PYTHON SOURCE LINES 94-121 -Run TensorBoard +运行TensorBoard ---------------- -Install TensorBoard through the command line to visualize data you logged +通过命令行安装TensorBoard以可视化您记录的数据 .. code-block:: sh pip install tensorboard -Now, start TensorBoard, specifying the root log directory you used above. -Argument ``logdir`` points to directory where TensorBoard will look to find -event files that it can display. TensorBoard will recursively walk -the directory structure rooted at ``logdir``, looking for ``.*tfevents.*`` files. +现在,启动TensorBoard,指定您之前使用的根日志目录。 +参数 ``logdir`` 指向TensorBoard将查找可显示的事件文件的目录。 +TensorBoard将递归遍历 ``logdir`` 根目录下的目录结构,寻找 ``.*tfevents.*`` 文件。 .. code-block:: sh tensorboard --logdir=runs -Go to the URL it provides OR to `http://localhost:6006/ `_ +转到它提供的URL或 `http://localhost:6006/ `_ .. image:: ../../_static/img/thumbnails/tensorboard_scalars.png :scale: 40 % -This dashboard shows how the loss and accuracy change with every epoch. -You can use it to also track training speed, learning rate, and other -scalar values. It’s helpful to compare these metrics across different -training runs to improve your model. +此仪表板显示了损失和准确率如何随着每个epoch而变化。 +您可以使用它来跟踪训练速度、学习率和其他标量值。 +比较不同训练运行的这些指标有助于改进您的模型。 -.. GENERATED FROM PYTHON SOURCE LINES 125-131 +.. GENERATED FROM PYTHON SOURCE LINES 124-130 -Learn More +了解更多 ---------------------------- -- `torch.utils.tensorboard `_ docs -- `Visualizing models, data, and training with TensorBoard `_ tutorial +- `torch.utils.tensorboard `_ 文档 +- `使用TensorBoard可视化模型、数据和训练 `_ 教程 diff --git a/docs/_sources/recipes/torch_compile_backend_ipex.rst.txt b/docs/_sources/recipes/torch_compile_backend_ipex.rst.txt index 8d38a68..0d8613d 100644 --- a/docs/_sources/recipes/torch_compile_backend_ipex.rst.txt +++ b/docs/_sources/recipes/torch_compile_backend_ipex.rst.txt @@ -1,18 +1,17 @@ -Intel® Extension for PyTorch* Backend +Intel® PyTorch* 扩展后端 ===================================== -To work better with `torch.compile`, Intel® Extension for PyTorch* implements a backend ``ipex``. -It targets to improve hardware resource usage efficiency on Intel platforms for better performance. -The `ipex` backend is implemented with further customizations designed in Intel® Extension for -PyTorch* for the model compilation. +为了更好地与 `torch.compile` 协作,Intel® PyTorch* 扩展实现了一个名为 `ipex` 的后端。 +它旨在提高 Intel 平台上的硬件资源使用效率,从而获得更好的性能。 +`ipex` 后端是通过 Intel® PyTorch* 扩展中进一步的定制设计来实现模型编译的。 -Usage Example +使用示例 ~~~~~~~~~~~~~ -Train FP32 +FP32 训练 ---------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model training with FP32 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 FP32 数据类型的模型训练。 .. code:: python @@ -44,10 +43,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer = torch.optim.SGD(model.parameters(), lr = LR, momentum=0.9) model.train() - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model, optimizer = ipex.optimize(model, optimizer=optimizer) compile_model = torch.compile(model, backend="ipex") @@ -61,10 +60,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer.step() -Train BF16 +BF16 训练 ---------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model training with BFloat16 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 BFloat16 数据类型的模型训练。 .. code:: python @@ -96,10 +95,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer = torch.optim.SGD(model.parameters(), lr = LR, momentum=0.9) model.train() - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model, optimizer = ipex.optimize(model, dtype=torch.bfloat16, optimizer=optimizer) compile_model = torch.compile(model, backend="ipex") @@ -114,10 +113,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c optimizer.step() -Inference FP32 +FP32 推理 -------------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model inference with FP32 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 FP32 数据类型的模型推理。 .. code:: python @@ -128,10 +127,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c model.eval() data = torch.rand(1, 3, 224, 224) - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model = ipex.optimize(model, weights_prepack=False) compile_model = torch.compile(model, backend="ipex") @@ -141,10 +140,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c compile_model(data) -Inference BF16 +BF16 推理 -------------- -Check the example below to learn how to utilize the `ipex` backend with `torch.compile` for model inference with BFloat16 data type. +查看下面的示例,了解如何将 `ipex` 后端与 `torch.compile` 一起使用,进行 BFloat16 数据类型的模型推理。 .. code:: python @@ -155,10 +154,10 @@ Check the example below to learn how to utilize the `ipex` backend with `torch.c model.eval() data = torch.rand(1, 3, 224, 224) - #################### code changes #################### + #################### 代码修改 #################### import intel_extension_for_pytorch as ipex - # Invoke the following API optionally, to apply frontend optimizations + # 可选择调用以下 API,应用前端优化 model = ipex.optimize(model, dtype=torch.bfloat16, weights_prepack=False) compile_model = torch.compile(model, backend="ipex") diff --git a/docs/_sources/recipes/torch_logs.rst.txt b/docs/_sources/recipes/torch_logs.rst.txt index c182145..a568748 100644 --- a/docs/_sources/recipes/torch_logs.rst.txt +++ b/docs/_sources/recipes/torch_logs.rst.txt @@ -18,9 +18,9 @@ .. _sphx_glr_recipes_torch_logs.py: -(beta) Using TORCH_LOGS python API with torch.compile +(Beta) 使用 TORCH_LOGS python API 与 torch.compile ========================================================================================== -**Author:** `Michael Lazos `_ +**作者:** `Michael Lazos `_ .. GENERATED FROM PYTHON SOURCE LINES 6-9 @@ -30,101 +30,91 @@ import logging -.. GENERATED FROM PYTHON SOURCE LINES 10-18 +.. GENERATED FROM PYTHON SOURCE LINES 10-17 -This tutorial introduces the ``TORCH_LOGS`` environment variable, as well as the Python API, and -demonstrates how to apply it to observe the phases of ``torch.compile``. +本教程介绍了 ``TORCH_LOGS`` 环境变量以及 Python API,并演示了如何将其应用于观察 ``torch.compile`` 的各个阶段。 .. note:: - This tutorial requires PyTorch 2.2.0 or later. + 本教程需要 PyTorch 2.2.0 或更高版本。 -.. GENERATED FROM PYTHON SOURCE LINES 22-32 +.. GENERATED FROM PYTHON SOURCE LINES 21-28 -Setup +设置 ~~~~~~~~~~~~~~~~~~~~~ -In this example, we'll set up a simple Python function which performs an elementwise -add and observe the compilation process with ``TORCH_LOGS`` Python API. +在这个例子中,我们将设置一个简单的 Python 函数,执行元素级加法,并使用 ``TORCH_LOGS`` Python API 观察编译过程。 .. note:: - There is also an environment variable ``TORCH_LOGS``, which can be used to - change logging settings at the command line. The equivalent environment - variable setting is shown for each example. + 还有一个环境变量 ``TORCH_LOGS``,可用于在命令行中更改日志设置。每个示例都显示了等效的环境变量设置。 -.. GENERATED FROM PYTHON SOURCE LINES 32-81 +.. GENERATED FROM PYTHON SOURCE LINES 28-74 .. code-block:: default import torch - # exit cleanly if we are on a device that doesn't support torch.compile + # 如果设备不支持 torch.compile,则干净地退出 if torch.cuda.get_device_capability() < (7, 0): - print("Skipping because torch.compile is not supported on this device.") + print("跳过,因为此设备不支持 torch.compile。") else: + @torch.compile() def fn(x, y): z = x + y return z + 2 - inputs = (torch.ones(2, 2, device="cuda"), torch.zeros(2, 2, device="cuda")) - - # print separator and reset dynamo - # between each example + # 在每个示例之间打印分隔符并重置 dynamo def separator(name): print(f"==================={name}=========================") torch._dynamo.reset() - - separator("Dynamo Tracing") - # View dynamo tracing - # TORCH_LOGS="+dynamo" + separator("Dynamo 跟踪") + # 查看 dynamo 跟踪 + # TORCH_LOGS="+dynamo" torch._logging.set_logs(dynamo=logging.DEBUG) fn(*inputs) - separator("Traced Graph") - # View traced graph - # TORCH_LOGS="graph" + separator("跟踪的图形") + # 查看跟踪的图形 + # TORCH_LOGS="graph" torch._logging.set_logs(graph=True) fn(*inputs) - separator("Fusion Decisions") - # View fusion decisions - # TORCH_LOGS="fusion" + separator("融合决策") + # 查看融合决策 + # TORCH_LOGS="fusion" torch._logging.set_logs(fusion=True) fn(*inputs) - separator("Output Code") - # View output code generated by inductor - # TORCH_LOGS="output_code" + separator("输出代码") + # 查看 inductor 生成的输出代码 + # TORCH_LOGS="output_code" torch._logging.set_logs(output_code=True) fn(*inputs) separator("") -.. GENERATED FROM PYTHON SOURCE LINES 82-97 +.. GENERATED FROM PYTHON SOURCE LINES 75-87 -Conclusion +结论 ~~~~~~~~~~ -In this tutorial we introduced the TORCH_LOGS environment variable and python API -by experimenting with a small number of the available logging options. -To view descriptions of all available options, run any python script -which imports torch and set TORCH_LOGS to "help". +在本教程中,我们介绍了 TORCH_LOGS 环境变量和 python API,并通过实验了一小部分可用的日志选项。 +要查看所有可用选项的描述,请运行任何导入 torch 的 python 脚本,并将 TORCH_LOGS 设置为 "help"。 -Alternatively, you can view the `torch._logging documentation`_ to see -descriptions of all available logging options. +或者,您可以查看 `torch._logging 文档`_ 以查看所有可用日志选项的描述。 -For more information on torch.compile, see the `torch.compile tutorial`_. +有关 torch.compile 的更多信息,请参阅 `torch.compile 教程`_。 -.. _torch._logging documentation: https://pytorch.org/docs/main/logging.html -.. _torch.compile tutorial: https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html +.. _torch._logging 文档: https://pytorch.org/docs/main/logging.html +.. _torch.compile 教程: https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html .. rst-class:: sphx-glr-timing diff --git a/docs/_sources/recipes/torchscript_inference.rst.txt b/docs/_sources/recipes/torchscript_inference.rst.txt index 2f904e4..50e18e3 100644 --- a/docs/_sources/recipes/torchscript_inference.rst.txt +++ b/docs/_sources/recipes/torchscript_inference.rst.txt @@ -1,13 +1,16 @@ -TorchScript for Deployment +TorchScript 部署 ========================== -In this recipe, you will learn: +在本教程中,您将学习: - What TorchScript is - How to export your trained model in TorchScript format - How to load your TorchScript model in C++ and do inference +- TorchScript 是什么 +- 如何将训练好的模型导出为 TorchScript 格式 +- 如何在 C++ 中加载 TorchScript 模型并进行推理 -Requirements +环境要求 ------------ - PyTorch 1.5 @@ -15,31 +18,25 @@ Requirements - libtorch 1.5 - C++ compiler -The instructions for installing the three PyTorch components are -available at `pytorch.org`_. The C++ compiler will depend on your -platform. +安装这三个 PyTorch 组件的说明可在 `pytorch.org_` 上找到。C++ 编译器则取决于您的平台。 -What is TorchScript? + + +什么是 TorchScript? -------------------- -**TorchScript** is an intermediate representation of a PyTorch model -(subclass of ``nn.Module``) that can then be run in a high-performance -environment like C++. It’s a high-performance subset of Python that is -meant to be consumed by the **PyTorch JIT Compiler,** which performs -run-time optimization on your model’s computation. TorchScript is the -recommended model format for doing scaled inference with PyTorch models. -For more information, see the PyTorch `Introduction to TorchScript -tutorial`_, the `Loading A TorchScript Model in C++ tutorial`_, and the -`full TorchScript documentation`_, all of which are available on -`pytorch.org`_. - -How to Export Your Model +**TorchScript** 是 PyTorch 模型( ``nn.Module`` 的子类)的中间表示,可以在高性能环境(如 C++)中运行。 +它是 Python 的一个高性能子集,旨在被 **PyTorch JIT 编译器** 使用,后者会对模型的计算进行运行时优化。 +TorchScript 是使用 PyTorch 模型进行大规模推理的推荐模型格式。更多信息, +请参阅 `pytorch.org_` 上的 `PyTorch TorchScript 入门教程`、 `在 C++ 中加载 TorchScript 模型教程` +和 `完整的 TorchScript 文档_` 。 + +如何导出模型 ------------------------ -As an example, let’s take a pretrained vision model. All of the -pretrained models in TorchVision are compatible with TorchScript. +作为示例,让我们使用一个预训练的视觉模型。TorchVision 中的所有预训练模型都与 TorchScript 兼容。 -Run the following Python 3 code, either in a script or from the REPL: +运行以下 Python 3 代码,可以在脚本中或从 REPL 中运行: .. code:: python3 @@ -47,9 +44,9 @@ Run the following Python 3 code, either in a script or from the REPL: import torch.nn.functional as F import torchvision.models as models - r18 = models.resnet18(pretrained=True) # We now have an instance of the pretrained model - r18_scripted = torch.jit.script(r18) # *** This is the TorchScript export - dummy_input = torch.rand(1, 3, 224, 224) # We should run a quick test + r18 = models.resnet18(pretrained=True) # 现在我们有一个预训练模型的实例 + r18_scripted = torch.jit.script(r18) # *** 这是 TorchScript 导出 + dummy_input = torch.rand(1, 3, 224, 224) # 快速测试一下 Let’s do a sanity check on the equivalence of the two models: diff --git a/docs/objects.inv b/docs/objects.inv index d7a2820b8138f3088c283320b257d008dc44a088..3f43671e80655b12ad94f65179ed2546804972d8 100644 GIT binary patch delta 13784 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 OR9@yn^8W!MZmxq8OzE-! delta 13684 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 N^7}t%KXlFB{|{9erpy2U diff --git a/docs/recipes/compiling_optimizer.html b/docs/recipes/compiling_optimizer.html index 7829c9a..b50721b 100644 --- a/docs/recipes/compiling_optimizer.html +++ b/docs/recipes/compiling_optimizer.html @@ -42,7 +42,7 @@ - +

~|~jnJ2Q9022J53P@FqgoNLv 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 ^1^^ANcT5hybhf&M0fPSR32Qw*V?_9j^m&a_k> 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%0D|k|2 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 ~iMfp56KoJ`gr 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