mirror of
https://github.com/iperov/DeepFaceLive
synced 2025-08-21 05:53:25 -07:00
add xlib.avecl
This commit is contained in:
parent
932edfe875
commit
0058474da7
56 changed files with 5569 additions and 0 deletions
56
xlib/avecl/_internal/info/PadInfo.py
Normal file
56
xlib/avecl/_internal/info/PadInfo.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
from typing import List
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ..AShape import AShape
|
||||
|
||||
|
||||
class PadInfo:
|
||||
"""
|
||||
Pad info.
|
||||
|
||||
arguments
|
||||
|
||||
shape AShape
|
||||
|
||||
axes_paddings list of (l_pad, r_pad)
|
||||
|
||||
if [0] == ... (Ellipsis), then left-side paddings will be filled with (0,0) for remain axes
|
||||
if [-1] == ... , same for ride-side
|
||||
|
||||
errors during the construction:
|
||||
|
||||
ValueError
|
||||
|
||||
result:
|
||||
|
||||
.o_shape AShape
|
||||
|
||||
"""
|
||||
|
||||
__slots__ = ['o_shape','axes_paddings']
|
||||
|
||||
def __init__(self, shape, axes_paddings : List):
|
||||
|
||||
if Ellipsis in axes_paddings:
|
||||
if sum(1 if x == Ellipsis else 0 for x in axes_paddings) > 1:
|
||||
raise ValueError('only 1 ...(ellipsis) allowed in axes_paddings')
|
||||
if axes_paddings[0] == Ellipsis:
|
||||
axes_paddings = ((0,0),)*(shape.ndim-(len(axes_paddings)-1))+ axes_paddings[1:]
|
||||
elif axes_paddings[-1] == Ellipsis:
|
||||
axes_paddings = axes_paddings[:-1] + ((0,0),)*(shape.ndim-(len(axes_paddings)-1))
|
||||
else:
|
||||
raise ValueError('...(ellipsis) must be at the begin or the end of axes_paddings')
|
||||
|
||||
if len(axes_paddings) != shape.ndim:
|
||||
raise ValueError(f'axes_paddings should match shape.ndim {shape.ndim}')
|
||||
|
||||
|
||||
self.axes_paddings = axes_paddings
|
||||
o_shape = []
|
||||
|
||||
for axis, (axis_size, (l_pad, r_pad)) in enumerate(zip(shape, axes_paddings)):
|
||||
new_axis_size = l_pad + axis_size + r_pad
|
||||
o_shape.append(new_axis_size)
|
||||
|
||||
self.o_shape = AShape(o_shape)
|
Loading…
Add table
Add a link
Reference in a new issue