Shortcuts

torch.jit.isinstance

torch.jit.isinstance(obj, target_type)[源代码]

在TorchScript中提供容器类型细化。

它可以精炼List、Dict、Tuple和Optional类型的参数化容器。例如 List[str], Dict[str, List[torch.Tensor]], Optional[Tuple[int,str,int]]。它还可以 精炼TorchScript中可用的布尔值和整数等基本类型。

Parameters
  • obj – 要精炼类型的对象

  • target_type – 尝试将 obj 精炼到的类型

Returns

如果obj成功地被精炼为目标类型,则为True,

否则为False,且没有新的类型精炼

Return type

布尔

示例(使用 torch.jit.isinstance 进行类型细化): .. testcode:

import torch
from typing import Any, Dict, List

class MyModule(torch.nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, input: Any): # 注意 Any 类型
        if torch.jit.isinstance(input, List[torch.Tensor]):
            for t in input:
                y = t.clamp(0, 0.5)
        elif torch.jit.isinstance(input, Dict[str, str]):
            for val in input.values():
                print(val)

m = torch.jit.script(MyModule())
x = [torch.rand(3,3), torch.rand(4,3)]
m(x)
y = {"key1":"val1","key2":"val2"}
m(y)