torch.HalfDim
export type HalfDim<S extends Shape, Dim extends number> = number extends S['length']
? DynamicShape
: number extends Dim
? DynamicShape
: Dim extends 0
? S extends readonly [infer First extends number, ...infer Rest extends number[]]
? readonly [Half<First>, ...Rest]
: DynamicShape
: S extends readonly [infer First extends number, ...infer Rest extends number[]]
? readonly [First, ...HalfDim<readonly [...Rest], Subtract1<Dim>>]
: DynamicShape;Sextends ShapeDimextends numberHalve a dimension in a shape (for GLU). HalfDim<[4, 8], 1> = [4, 4] HalfDim<[10, 6, 3], 1> = [10, 3, 3]