[错误]: 当输出形状等于输入形状时(例如,使用步长 -1 进行反转),具有非常数步长的 [GPU] StridedSlice/Slice 会被视为标识符而被跳过
import numpy as np, openvino as ov from openvino import opset13 as ops data = ops.parameter([-1], np.int32) start = ops.parameter([1], np.int32); stop = ops.parameter([1], np.int32); step = ops.parameter([1], np.int32) m = ov.Model([ops.slice(data, start, stop, step, ops.constant(np.array([0], np.int32)))], [data, start, stop, step])
d = np.array([10, 20, 30, 40, 50], np.int32) INT_MIN, INT_MAX = -231, 231 - 1 cases = [(-1, INT_MIN, -1), (4, -6, -1), (-1, INT_MIN, -2), (3, 0, -1), (0, INT_MAX, 1)] for dev in ("CPU", "GPU"): c = ov.Core().compile_model(m, dev) for s, e, st in cases: out = c([d, np.array([s], np.int32), np.array([e], np.int32), np.array([st], np.int32)])[0] print(f"{dev} start={s:>11} stop={e:>11} step={st:>2} -> {out.tolist()}") Output:
内容来源: openvinotoolkit/openvino