+
    NV-j�8  ã                   ó4  € ^ RI t ^ RIHt ^ RIHtHtHt ^ RIHt	 ^ RI
Ht R tR tR t ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )é    N)Ú
accumulate)ÚOptionalÚTupleÚUnion)ÚModulec                 óÜ   € \        V \        \        34      '       d'   \        V 4      V8w  d   \	        V4      h\        V 4      # \        V \
        4      '       g   \	        V4      hV .V,          # )N)Ú
isinstanceÚlistÚtupleÚlenÚ
ValueErrorÚint)ÚxÚnÚmsgs   &&&Úf/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx/nn/layers/pooling.pyÚ_value_or_listr      sS   € Ü�!”dœE�]×#Ò#Üˆq‹6�QŒ;Ü˜S“/Ð!Ü�A‹wˆä�aœ×ÒÜ˜‹oÐàˆ3��7€Nó    c                 óx  € V^ ,          .p\        VR,          V4       F-  w  rEVP                  WE,          4       VP                  V4       K/  	  VP                  VR,          4       \        V4      ^,
          p^ .\        ^V^4      O\        ^V^4      OVNpV P	                  V4      p V P                  V4      p V # )r   ºé   NNéÿÿÿÿ)ÚzipÚappendr   ÚrangeÚreshapeÚ	transpose)r   ÚshapeÚwindow_shapeÚ	new_shapeÚsÚwÚ	last_axisÚ
axis_orders   &&&     r   Ú _non_overlapping_sliding_windowsr%      s®   € à�q•�
€IÜ�E˜"•I˜|Ö,‰ˆØ×Ñ˜�Ô Ø×Ñ˜Öñ -ð ×Ñ�U˜2•YÔä�I“ Õ"€IØÐQ”e˜A˜y¨!Ó,ÐQ¬u°Q¸	À1Ó/EÐQÀyÐQ€Jà	�	‰	�)Ó€AØ	�‰�JÓ€AØ€Hr   c                 ó6  € V P                   ^8  d   \        RV P                    R24      hV P                  ^R p\        V4      \        V4      u;8X  d   \        V4      8X  g3   M \        R\        V4       R\        V4       R\        V4       R24      hV P                  p\        ;QJ d&    R \        W1V4       4       F  '       d   K   RM	  R	M! R \        W1V4       4       4      '       d   \        WV4      # \        \        \        \        \        VR,           4      \        P                  4      4      4      4      R
,          pV^ ,          .pT\        W1V4       UUU	u. uF  w  rxp	Wx,
          V	,          ^,           NK  	  up	pp,          pWa,          pWdR,          .,          pVR,          p
T
\        V^R V4       UU	u. uF  w  r¹W¹,          NK  	  up	p,          p
W¥^R ,          p
W¥RR ,          p
\        P                  ! WV
4      # u up	ppi u up	pi )é   zcTo extract sliding windows at least 1 spatial dimension (3 total) is needed but the input only has z dimensions.zŠTo extract sliding windows the window shapes and strides must have the same number of spatial dimensions as the signal but the signal has z dims and the window shape has z and strides have Ú.c              3   óV   "  € T F  w  rpW#8H  ;'       d    W,          ^ 8H  x € K!  	  R# 5i©r   N© )Ú.0ÚsizeÚwindowÚstrides   &   r   Ú	<genexpr>Ú#_sliding_windows.<locals>.<genexpr>8   s1   é € ð á$SÑ ˆD˜&ð 	Ñ×/Ð/˜T�]¨aÑ/Ô/Û$Sùs   ‚)•)FTr   :Nr   NNr   )r   )Úndimr   r   r   Úallr   r%   r
   Úreversedr   ÚoperatorÚmulÚmxÚ
as_strided)r   r   Úwindow_stridesÚspatial_dimsr   ÚstridesÚfinal_shaper-   r.   r/   Úfinal_stridesÚ	og_strides   &&&         r   Ú_sliding_windowsr?   '   s  € Ø‡v�v�„zÜð:Ø:;¿&¹&¸ÀðOó
ð 	
ð
 —7‘7˜1˜R�=€LÜ�Ó¤ \Ó!2ÖI´c¸.Ó6IÖIÜðä�|Ó$Ð%Ð%DÄSÈÓEVÐDWð X Ü # NÓ 3Ð4°Að7ó
ð 	
ð �G‰G€Eß
ƒsñ ä$'¨ÀNÔ$Só‡s‡s‚sñ ä$'¨ÀNÔ$Só÷ ò ô 0°¸,ÓGÐGä”8œD¤¬H°U¸Tµ\Ó,BÄHÇLÁLÓ!QÓRÓSÓTÐUWÕX€Gð ˜•8�*€KØä$'¨ÀNÔ$Sõá$SÑ ˆD˜&ð 
�˜6Õ! A×%Ð%Ù$Sóõ €Kð Õ€KØ˜"•I�;Õ€Kð ˜B•K€MØÜ47¸ÀÀ"¸À~Ô4VôÙ4VÑ0˜yˆ	×ÐÑ4Vòõ €Mð ˜Q˜r�]Õ"€MØ˜R˜S�\Õ!€Mä�=Š=˜¨Ó7Ð7ùôùós   Å#"H
ÇHc                   ó>   a a€ ] tR t^Tt oV 3R ltR tR tRtVtV ;t	# )Ú_Poolc                óÌ   <€ \         SV `  4        Wn        W n        W0n        W@n        WPn        \        \        \        V P                  4      ) ^,
          R^4      4      V n
        R# )r   Nr   )ÚsuperÚ__init__Ú_pooling_functionÚ_kernel_sizeÚ_strideÚ_paddingÚ_padding_valuer   r   r   Ú_axes)ÚselfÚpooling_functionÚkernel_sizer/   ÚpaddingÚpadding_valueÚ	__class__s   &&&&&&€r   rD   Ú_Pool.__init__U   sR   ø€ Ü‰ÑÔà!1ÔØ'ÔØŒØŒØ+ÔÜœ5¤# d×&7Ñ&7Ó"8Ð!8¸1Õ!<¸bÀ!ÓDÓEˆŽ
r   c                óì   € \        V P                  4      p\        V P                  4      p\         ;QJ d    . R  V P                   4       F  NK  	  5M! R  V P                   4       4      pRV RV RV 2# )c              3   ó2   "  € T F  q^ ,          x € K  	  R# 5ir*   r+   ©r,   Úps   & r   r0   Ú$_Pool._extra_repr.<locals>.<genexpr>b   s   é € Ð/¡˜A�Q—4’4£ùs   ‚zkernel_size=z	, stride=z
, padding=)r   rF   rG   rH   )rK   ÚksÚstÚpds   &   r   Ú_extra_reprÚ_Pool._extra_repr_   s_   € Ü�4×$Ñ$Ó%ˆÜ�4—<‘<Ó ˆßŒUÑ/ §¢Ó/�U‰UÑ/ §¢Ó/Ó/ˆà˜b˜T ¨2¨$¨j¸¸Ð=Ð=r   c                óŽ  € \         ;QJ d&    R  V P                   4       F  '       g   K   RM	  RM! R  V P                   4       4      '       d>   \        P                  ! VR.V P                  ,           R.,           V P                  R7      p\        WP                  V P                  4      pV P                  WP                  4      # )c              3   ó8   "  € T F  q^ ,          ^ 8„  x € K  	  R# 5ir*   r+   rT   s   & r   r0   Ú!_Pool.__call__.<locals>.<genexpr>g   s   é € Ð/¡˜A��t�aŽx£ùs   ‚TF)Úconstant_values)r   r   )
ÚanyrH   r7   ÚpadrI   r?   rF   rG   rE   rJ   )rK   r   s   &&r   Ú__call__Ú_Pool.__call__f   s‡   € ß‹3Ñ/ §¢Ó/�3�3Š3Ñ/ §¢Ó/×/Ò/Ü—’ØØ�˜4Ÿ=™=Õ(¨F¨8Õ3Ø $× 3Ñ 3ôˆAô
 ˜Q× 1Ñ 1°4·<±<Ó@ˆØ×%Ñ% a¯©Ó4Ð4r   )rJ   rF   rH   rI   rE   rG   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rD   rZ   rb   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rP   Ú__classdict__s   @@r   rA   rA   T   s   ù‡ € õFò>÷5ò 5r   rA   c                   óB   a a€ ] tR t^qt oRV3R lV 3R llltRtVtV ;t# )Ú_Pool1dc          	      ó®   <€ V ^8„  d   QhRS[ S[S[S[,          3,          RS[S[ S[S[S[,          3,          ,          RS[ S[S[S[,          3,          /# ©é   rM   r/   rN   ©r   r   r   r   )Úformatrl   s   "€r   Ú__annotate__Ú_Pool1d.__annotate__r   s\   ø€ ÷ Xñ Xñ ™3¡¡c¥
˜?Õ+ð	Xñ
 ™™s¡E©#¥J˜Õ/Õ0ðXñ ‘s™E¡#�J�Õ'ñXr   c                óB  <€ \        V 4      P                  pR p\        V^VP                  VR4      4      pVe   \        V^VP                  VR4      4      pMTp\        V^VP                  VR4      4      pV Uu. uF  qˆV3NK  	  pp\        S	V `  WWEV4       R# u upi )z<[{}] '{}' must be an integer or a tuple containing 1 integerrM   Nr/   rN   ©Útyperd   r   rs   rC   rD   ©
rK   rL   rO   rM   r/   rN   Ú
class_namer   rU   rP   s
   &&&&&&   €r   rD   Ú_Pool1d.__init__r   s¡   ø€ ô ˜$“Z×(Ñ(ˆ
ØLˆÜ$Ø˜˜CŸJ™J z°=ÓAó
ˆð ÒÜ# F¨A¨s¯z©z¸*ÀhÓ/OÓP‰Fà ˆFÜ  ¨!¨S¯Z©Z¸
ÀIÓ-NÓOˆÙ#*Ó+¡7˜a�q“6¡7ˆÐ+ä‰ÑÐ)¸ÈÖWùò ,ó   Á;Br+   ©Nr   ©rd   re   rf   rg   rD   rh   ri   rj   rk   s   @@r   rn   rn   q   ó   ù‡ € ÷X÷ Xõ Xr   rn   c                   óB   a a€ ] tR t^‰t oRV3R lV 3R llltRtVtV ;t# )Ú_Pool2dc                óÐ   <€ V ^8„  d   QhRS[ S[S[S[S[3,          3,          RS[S[ S[S[S[S[3,          3,          ,          RS[S[ S[S[S[S[3,          3,          ,          /# rp   rr   )rs   rl   s   "€r   rt   Ú_Pool2d.__annotate__Š   sp   ø€ ÷ Xñ Xñ ™3¡¡c©3 h¥Ð/Õ0ð	Xñ
 ™™s¡E©#©s¨(¥OÐ3Õ4Õ5ðXñ ™%¡¡U©3±¨8¥_Ð 4Õ5Õ6ñXr   c                óB  <€ \        V 4      P                  pR p\        V^VP                  VR4      4      pVe   \        V^VP                  VR4      4      pMTp\        V^VP                  VR4      4      pV Uu. uF  qˆV3NK  	  pp\        S	V `  WWEV4       R# u upi )z=[{}] '{}' must be an integer or a tuple containing 2 integersrM   Nr/   rN   rw   ry   s
   &&&&&&   €r   rD   Ú_Pool2d.__init__Š   ó¡   ø€ ô ˜$“Z×(Ñ(ˆ
ØMˆÜ$Ø˜˜CŸJ™J z°=ÓAó
ˆð ÒÜ# F¨A¨s¯z©z¸*ÀhÓ/OÓP‰Fà ˆFÜ  ¨!¨S¯Z©Z¸
ÀIÓ-NÓOˆÙ#*Ó+¡7˜a�q“6¡7ˆÐ+ä‰ÑÐ)¸ÈÖWùò ,r|   r+   r}   r~   rk   s   @@r   r�   r�   ‰   r   r   r�   c                   óB   a a€ ] tR t^¡t oRV3R lV 3R llltRtVtV ;t# )Ú_Pool3dc                óÜ   <€ V ^8„  d   QhRS[ S[S[S[S[S[3,          3,          RS[S[ S[S[S[S[S[3,          3,          ,          RS[S[ S[S[S[S[S[3,          3,          ,          /# rp   rr   )rs   rl   s   "€r   rt   Ú_Pool3d.__annotate__¢   sy   ø€ ÷ Xñ Xñ ™3¡¡c©3± mÕ 4Ð4Õ5ð	Xñ
 ™™s¡E©#©s±C¨-Õ$8Ð8Õ9Õ:ðXñ ™%¡¡U©3±±S¨=Õ%9Ð 9Õ:Õ;ñXr   c                óB  <€ \        V 4      P                  pR p\        V^VP                  VR4      4      pVe   \        V^VP                  VR4      4      pMTp\        V^VP                  VR4      4      pV Uu. uF  qˆV3NK  	  pp\        S	V `  WWEV4       R# u upi )z=[{}] '{}' must be an integer or a tuple containing 3 integersrM   Nr/   rN   rw   ry   s
   &&&&&&   €r   rD   Ú_Pool3d.__init__¢   r†   r|   r+   r}   r~   rk   s   @@r   rˆ   rˆ   ¡   r   r   rˆ   c                   óF   a a€ ] tR t^¹t oRtRV3R lV 3R llltRtVtV ;t# )Ú	MaxPool1daì  Applies 1-dimensional max pooling.

Spatially downsamples the input by taking the maximum of a sliding window
of size ``kernel_size`` and sliding stride ``stride``.

Args:
    kernel_size (int or tuple(int)): The size of the pooling window kernel.
    stride (int or tuple(int), optional): The stride of the pooling window.
        Default: ``kernel_size``.
    padding (int or tuple(int), optional): How much negative infinity
        padding to apply to the input. The padding amount is applied to
        both sides of the spatial axis. Default: ``0``.

Examples:
    >>> import mlx.core as mx
    >>> import mlx.nn.layers as nn
    >>> x = mx.random.normal(shape=(4, 16, 5))
    >>> pool = nn.MaxPool1d(kernel_size=2, stride=2)
    >>> pool(x)
c          	      ó®   <€ V ^8„  d   QhRS[ S[S[S[,          3,          RS[S[ S[S[S[,          3,          ,          RS[ S[S[S[,          3,          /# rp   rr   )rs   rl   s   "€r   rt   ÚMaxPool1d.__annotate__Ï   sZ   ø€ ÷ Nñ Ná™3¡¡c¥
˜?Õ+ðNñ ™™s¡E©#¥J˜Õ/Õ0ðNñ ‘s™E¡#�J�Õ'ñ	Nr   c                ó\   <€ \         SV `  \        P                  \	        R 4      ) WV4       R# ©ÚinfN©rC   rD   r7   ÚmaxÚfloat©rK   rM   r/   rN   rP   s   &&&&€r   rD   ÚMaxPool1d.__init__Ï   ó"   ø€ ô 	‰ÑœŸ™¤%¨£, °ÀWÖMr   r+   r}   ©	rd   re   rf   rg   Ú__doc__rD   rh   ri   rj   rk   s   @@r   rŽ   rŽ   ¹   s   ù‡ € ñ÷*N÷ Nõ Nr   rŽ   c                   óF   a a€ ] tR t^Øt oRtRV3R lV 3R llltRtVtV ;t# )Ú	AvgPool1daã  Applies 1-dimensional average pooling.

Spatially downsamples the input by taking the average of a sliding window
of size ``kernel_size`` and sliding stride ``stride``.

Args:
    kernel_size (int or tuple(int)): The size of the pooling window kernel.
    stride (int or tuple(int), optional): The stride of the pooling window.
        Default: ``kernel_size``.
    padding (int or tuple(int), optional): How much zero padding to apply to
        the input. The padding amount is applied to both sides of the spatial
        axis. Default: ``0``.

Examples:
    >>> import mlx.core as mx
    >>> import mlx.nn.layers as nn
    >>> x = mx.random.normal(shape=(4, 16, 5))
    >>> pool = nn.AvgPool1d(kernel_size=2, stride=2)
    >>> pool(x)
c          	      ó®   <€ V ^8„  d   QhRS[ S[S[S[,          3,          RS[S[ S[S[S[,          3,          ,          RS[ S[S[S[,          3,          /# rp   rr   )rs   rl   s   "€r   rt   ÚAvgPool1d.__annotate__î   sZ   ø€ ÷ Cñ Cá™3¡¡c¥
˜?Õ+ðCñ ™™s¡E©#¥J˜Õ/Õ0ðCñ ‘s™E¡#�J�Õ'ñ	Cr   c                óH   <€ \         SV `  \        P                  ^ WV4       R# r*   ©rC   rD   r7   Úmeanr—   s   &&&&€r   rD   ÚAvgPool1d.__init__î   ó   ø€ ô 	‰ÑœŸ™ ! [¸'ÖBr   r+   r}   rš   rk   s   @@r   r�   r�   Ø   s   ù‡ € ñ÷*C÷ Cõ Cr   r�   c                   óF   a a€ ] tR t^÷t oRtRV3R lV 3R llltRtVtV ;t# )Ú	MaxPool2da1  Applies 2-dimensional max pooling.

Spatially downsamples the input by taking the maximum of a sliding window
of size ``kernel_size`` and sliding stride ``stride``.

The parameters ``kernel_size``, ``stride``, and ``padding`` can either be:

* a single ``int`` -- in which case the same value is used for both the
  height and width axis.
* a ``tuple`` of two ``int`` s -- in which case, the first ``int`` is
  used for the height axis, the second ``int`` for the width axis.

Args:
    kernel_size (int or tuple(int, int)): The size of the pooling window.
    stride (int or tuple(int, int), optional): The stride of the pooling
        window. Default: ``kernel_size``.
    padding (int or tuple(int, int), optional): How much negative infinity
        padding to apply to the input. The padding is applied on both sides
        of the height and width axis. Default: ``0``.

Examples:
    >>> import mlx.core as mx
    >>> import mlx.nn.layers as nn
    >>> x = mx.random.normal(shape=(8, 32, 32, 4))
    >>> pool = nn.MaxPool2d(kernel_size=2, stride=2)
    >>> pool(x)
c                óÐ   <€ V ^8„  d   QhRS[ S[S[S[S[3,          3,          RS[S[ S[S[S[S[3,          3,          ,          RS[S[ S[S[S[S[3,          3,          ,          /# rp   rr   )rs   rl   s   "€r   rt   ÚMaxPool2d.__annotate__  sn   ø€ ÷ Nñ Ná™3¡¡c©3 h¥Ð/Õ0ðNñ ™™s¡E©#©s¨(¥OÐ3Õ4Õ5ðNñ ™%¡¡U©3±¨8¥_Ð 4Õ5Õ6ñ	Nr   c                ó\   <€ \         SV `  \        P                  \	        R 4      ) WV4       R# r’   r”   r—   s   &&&&€r   rD   ÚMaxPool2d.__init__  r™   r   r+   r}   rš   rk   s   @@r   r¦   r¦   ÷   s   ù‡ € ñ÷8N÷ Nõ Nr   r¦   c                   óF   a a€ ] tR tRt oRtRV3R lV 3R llltRtVtV ;t# )Ú	AvgPool2di  a(  Applies 2-dimensional average pooling.

Spatially downsamples the input by taking the average of a sliding window
of size ``kernel_size`` and sliding stride ``stride``.

The parameters ``kernel_size``, ``stride``, and ``padding`` can either be:

* a single ``int`` -- in which case the same value is used for both the
  height and width axis.
* a ``tuple`` of two ``int`` s -- in which case, the first ``int`` is
  used for the height axis, the second ``int`` for the width axis.

Args:
    kernel_size (int or tuple(int, int)): The size of the pooling window.
    stride (int or tuple(int, int), optional): The stride of the pooling
        window. Default: ``kernel_size``.
    padding (int or tuple(int, int), optional): How much zero
        padding to apply to the input. The padding is applied on both sides
        of the height and width axis. Default: ``0``.

Examples:
    >>> import mlx.core as mx
    >>> import mlx.nn.layers as nn
    >>> x = mx.random.normal(shape=(8, 32, 32, 4))
    >>> pool = nn.AvgPool2d(kernel_size=2, stride=2)
    >>> pool(x)
c                óÐ   <€ V ^8„  d   QhRS[ S[S[S[S[3,          3,          RS[S[ S[S[S[S[3,          3,          ,          RS[S[ S[S[S[S[3,          3,          ,          /# rp   rr   )rs   rl   s   "€r   rt   ÚAvgPool2d.__annotate__:  sn   ø€ ÷ Cñ Cá™3¡¡c©3 h¥Ð/Õ0ðCñ ™™s¡E©#©s¨(¥OÐ3Õ4Õ5ðCñ ™%¡¡U©3±¨8¥_Ð 4Õ5Õ6ñ	Cr   c                óH   <€ \         SV `  \        P                  ^ WV4       R# r*   r¡   r—   s   &&&&€r   rD   ÚAvgPool2d.__init__:  r¤   r   r+   r}   rš   rk   s   @@r   r¬   r¬     s   ù‡ € ñ÷8C÷ Cõ Cr   r¬   c                   óF   a a€ ] tR tRt oRtRV3R lV 3R llltRtVtV ;t# )Ú	MaxPool3diC  a|  Applies 3-dimensional max pooling.

Spatially downsamples the input by taking the maximum of a sliding window
of size ``kernel_size`` and sliding stride ``stride``.

The parameters ``kernel_size``, ``stride``, and ``padding`` can either be:

* a single ``int`` -- in which case the same value is used for the depth,
  height, and width axis.
* a ``tuple`` of three ``int`` s -- in which case, the first ``int`` is used
  for the depth axis, the second ``int`` for the height axis, and the third
  ``int`` for the width axis.

Args:
    kernel_size (int or tuple(int, int, int)): The size of the pooling window.
    stride (int or tuple(int, int, int), optional): The stride of the pooling
        window. Default: ``kernel_size``.
    padding (int or tuple(int, int, int), optional): How much negative infinity
        padding to apply to the input. The padding is applied on both sides
        of the depth, height and width axis. Default: ``0``.

Examples:
    >>> import mlx.core as mx
    >>> import mlx.nn.layers as nn
    >>> x = mx.random.normal(shape=(8, 16, 32, 32, 4))
    >>> pool = nn.MaxPool3d(kernel_size=2, stride=2)
    >>> pool(x)
c                óÜ   <€ V ^8„  d   QhRS[ S[S[S[S[S[3,          3,          RS[S[ S[S[S[S[S[3,          3,          ,          RS[S[ S[S[S[S[S[3,          3,          ,          /# rp   rr   )rs   rl   s   "€r   rt   ÚMaxPool3d.__annotate__a  sw   ø€ ÷ Nñ Ná™3¡¡c©3± mÕ 4Ð4Õ5ðNñ ™™s¡E©#©s±C¨-Õ$8Ð8Õ9Õ:ðNñ ™%¡¡U©3±±S¨=Õ%9Ð 9Õ:Õ;ñ	Nr   c                ó\   <€ \         SV `  \        P                  \	        R 4      ) WV4       R# r’   r”   r—   s   &&&&€r   rD   ÚMaxPool3d.__init__a  r™   r   r+   r}   rš   rk   s   @@r   r²   r²   C  s   ù‡ € ñ÷:N÷ Nõ Nr   r²   c                   óF   a a€ ] tR tRt oRtRV3R lV 3R llltRtVtV ;t# )Ú	AvgPool3dij  as  Applies 3-dimensional average pooling.

Spatially downsamples the input by taking the average of a sliding window
of size ``kernel_size`` and sliding stride ``stride``.

The parameters ``kernel_size``, ``stride``, and ``padding`` can either be:

* a single ``int`` -- in which case the same value is used for the depth,
  height, and width axis.
* a ``tuple`` of three ``int`` s -- in which case, the first ``int`` is used
  for the depth axis, the second ``int`` for the height axis, and the third
  ``int`` for the width axis.

Args:
    kernel_size (int or tuple(int, int, int)): The size of the pooling window.
    stride (int or tuple(int, int, int), optional): The stride of the pooling
        window. Default: ``kernel_size``.
    padding (int or tuple(int, int, int), optional): How much zero
        padding to apply to the input. The padding is applied on both sides
        of the depth, height and width axis. Default: ``0``.

Examples:
    >>> import mlx.core as mx
    >>> import mlx.nn.layers as nn
    >>> x = mx.random.normal(shape=(8, 16, 32, 32, 4))
    >>> pool = nn.AvgPool3d(kernel_size=2, stride=2)
    >>> pool(x)
c                óÜ   <€ V ^8„  d   QhRS[ S[S[S[S[S[3,          3,          RS[S[ S[S[S[S[S[3,          3,          ,          RS[S[ S[S[S[S[S[3,          3,          ,          /# rp   rr   )rs   rl   s   "€r   rt   ÚAvgPool3d.__annotate__ˆ  sw   ø€ ÷ Cñ Cá™3¡¡c©3± mÕ 4Ð4Õ5ðCñ ™™s¡E©#©s±C¨-Õ$8Ð8Õ9Õ:ðCñ ™%¡¡U©3±±S¨=Õ%9Ð 9Õ:Õ;ñ	Cr   c                óH   <€ \         SV `  \        P                  ^ WV4       R# r*   r¡   r—   s   &&&&€r   rD   ÚAvgPool3d.__init__ˆ  r¤   r   r+   r}   rš   rk   s   @@r   r¸   r¸   j  s   ù‡ € ñ÷:C÷ Cõ Cr   r¸   )r5   Ú	itertoolsr   Útypingr   r   r   Úmlx.coreÚcorer7   Úmlx.nn.layers.baser   r   r%   r?   rA   rn   r�   rˆ   rŽ   r�   r¦   r¬   r²   r¸   r+   r   r   Ú<module>rÂ      s¶   ðó Ý  ß )Ñ )å Ý %ò	òò *8ôZ5ˆFô 5ô:Xˆeô Xô0Xˆeô Xô0Xˆeô Xô0N�ô Nô>C�ô Cô>#N�ô #NôL#C�ô #CôL$N�ô $NôN$C�ö $Cr   