
    BVh                         d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ 	 	 	 	 dd
Z G d dej                        Z G d dej                        Zy)z.The implementation of `tf.data.Dataset.batch`.    N)dataset_ops)
debug_mode)nest)dtypes)ops)tensor_util)gen_dataset_opsc                     |t         j                  r6|%t         j                  st        j                  d       t	        | |||      S t        | |||||      S )z See `Dataset.batch` for details.zaThe `deterministic` argument has no effect unless the `num_parallel_calls` argument is specified.)name)r   
DEBUG_MODEwarningswarn_BatchDataset_ParallelBatchDataset)input_dataset
batch_sizedrop_remaindernum_parallel_callsdeterministicr   s         S/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/data/ops/batch_op.py_batchr      sc     :#8#8 )>)>mm B C
NNN      c                   4     e Zd ZdZd fd	Zed        Z xZS )r   z<A `Dataset` that batches contiguous elements from its input.c                    || _         t        j                  |t        j                  d      | _        t        j                  |t        j                  d      | _        t        j                  | j                        }|rHt        j                  | j
                        t        j                  fd|j                        | _        n&t        j                  d |j                        | _        || _        t        j                   |j"                  f| j
                  | j                  d| j$                  }t&        | Q  ||       y)"See `Dataset.batch()` for details.r   dtyper   r   c                 &    | j                        S Nr   component_specconstant_batch_sizes    r   <lambda>z(_BatchDataset.__init__.<locals>.<lambda>E       !6!67J!K r   c                 $    | j                  d       S r   r    r"   s    r   r$   z(_BatchDataset.__init__.<locals>.<lambda>I       !6!6t!< r   )r   r   N)_input_datasetr   convert_to_tensorr   int64_batch_sizebool_drop_remainderr   constant_valuer   map_structureelement_spec
_structure_namer	   batch_dataset_v2_variant_tensor_common_argssuper__init__)	selfr   r   r   r   constant_drop_remaindervariant_tensorr#   	__class__s	          @r   r8   z_BatchDataset.__init__5   s   'D,,&,,\;D00fkk0@BD *889M9MN (66t7G7GH**
K

$
$&do **
<

$
$&do DJ$55%%##++ 

	N
 
G]N3r   c                     | j                   S r   r2   r9   s    r   r1   z_BatchDataset.element_specT       ??r   r   __name__
__module____qualname____doc__r8   propertyr1   __classcell__r<   s   @r   r   r   2   s    D4>  r   r   c                   6     e Zd ZdZ	 d fd	Zed        Z xZS )r   zHA `Dataset` that batches contiguous elements from its input in parallel.c                 H  	 || _         t        j                  |t        j                  d      | _        t        j                  |t        j                  d      | _        t        j                  |t        j                  d      | _        |d| _	        n|rd| _	        nd| _	        t        j                  | j                        }|rHt        j                  | j
                        	t        j                  	fd	|j                        | _        n&t        j                  d
 |j                        | _        || _        t#        j$                  |j&                  f| j
                  | j                  | j                  | j                  d| j(                  }t*        
| Y  ||       y)r   r   r   r   r   Ndefaulttruefalsec                 &    | j                        S r   r    r!   s    r   r$   z0_ParallelBatchDataset.__init__.<locals>.<lambda>z   r%   r   c                 $    | j                  d       S r   r    r'   s    r   r$   z0_ParallelBatchDataset.__init__.<locals>.<lambda>~   r(   r   )r   r   r   r   )r)   r   r*   r   r+   r,   r-   r.   _num_parallel_calls_deterministicr   r/   r   r0   r1   r2   r3   r	   parallel_batch_datasetr5   r6   r7   r8   )r9   r   r   r   r   r   r   r:   r;   r#   r<   s            @r   r8   z_ParallelBatchDataset.__init__\   si    (D,,&,,\;D00fkk0@BD"44&,,5I KD%d	"d#d)889M9MN (66t7G7GH**
K

$
$&do **
<

$
$&do DJ$;;%%##33++)) 

N 
G]N3r   c                     | j                   S r   r>   r?   s    r   r1   z"_ParallelBatchDataset.element_spec   r@   r   r   rA   rH   s   @r   r   r   Y   s%    P .4`  r   r   )FNNN)rE   r   tensorflow.python.data.opsr   r   tensorflow.python.data.utilr   tensorflow.python.frameworkr   r   r   tensorflow.python.opsr	   r   UnaryDatasetr   r    r   r   <module>rZ      sZ    5  2 1 , . + 3 1
  ",$K,, $N5K44 5r   