填充 (Fill)¶
根据输入属性生成输出张量。
属性 (Attributes)¶
dimensions
输出张量的形状。
operation
填充操作可以是以下之一:
LINSPACE
在指定区间内生成均匀间隔的数字。 \(output[a_0,...,a_n] = \alpha + \beta[0,...,n] \cdot [0,...,n]\)RANDOM_UNIFORM
生成一个张量,其随机值从均匀分布中抽取。 \(output[a_0,...,a_n] = random(min = \alpha, max = \beta)\)RANDOM_NORMAL
生成一个张量,其随机值从正态分布中抽取。 \(output[a_0,...,a_n] = normal(mean = \alpha, scale = \beta)\)
alpha
填充操作中使用的参数。默认为 0
。
beta
填充操作中使用的参数。默认为 1
。
toType
输出张量的数据类型。默认为 float32
。
输入 (Input)¶
input0: 可选张量,类型为 Int32
或 Int64
,具有 dimensions
。
input1: 可选张量,带有 alpha
。
input2: 可选张量,带有 beta
。
输出 (Outputs)¶
output: 类型为 T
的张量。
数据类型 (Data Types)¶
操作 (Operation) |
T |
|
---|---|---|
|
||
|
||
|
形状信息 (Shape Information)¶
input0 的形状为 \([n]\)。
input1 是标量。
input2 如果操作是 LINSPACE
,则形状为 \([n]\)。否则为标量。
output 是一个张量,其形状为 \([a_0,...,a_n]\),基于 dimensions
属性。
体积限制 (Volume Limits)¶
input0 和 output 最多可以有 \(2^{31}-1\) 个元素。
示例 (Examples)¶
填充 (Fill)
alpha = network.add_input("alpha", dtype=trt.float32, shape=())
beta = network.add_input("beta", dtype=trt.float32, shape=(2,))
layer = network.add_fill(shape=(2, 3), op=trt.FillOperation.LINSPACE)
layer.set_input(1, alpha)
layer.set_input(2, beta)
network.mark_output(layer.get_output(0))
inputs[alpha.name] = np.array([0.0])
inputs[beta.name] = np.array([3.0, 1.0])
outputs[layer.get_output(0).name] = layer.get_output(0).shape
expected[layer.get_output(0).name] = np.array([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0]])
填充随机值 (Fill Random)
alpha = network.add_input("alpha", dtype=trt.float32, shape=())
beta = network.add_input("beta", dtype=trt.float32, shape=())
layer = network.add_fill(shape=(2, 3), op=trt.FillOperation.RANDOM_UNIFORM)
layer.set_input(1, alpha)
layer.set_input(2, beta)
network.mark_output(layer.get_output(0))
inputs[alpha.name] = np.array([2.0])
inputs[beta.name] = np.array([3.0])
outputs[layer.get_output(0).name] = layer.get_output(0).shape
# note: expected values should be in range of [2. ,3.]
C++ API¶
有关 C++ IFillLayer 算子的更多信息,请参阅 C++ IFillLayer 文档。
Python API¶
有关 Python IFillLayer 算子的更多信息,请参阅 Python IFillLayer 文档。