o
    2h                     @   s   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
lmZ dd Zdd ZG dd deZdS )z1Code for creating a dataset out of a NumPy array.    N)dataset_ops)context)dtypes)ops)	array_ops)variable_scope)variable_v1)nestc                 C   s4  t   t r| | 	 W d   dS |dusJ || j tt	j
d}tt	j
d}t| j}| || |}t|jdd | jj }ttd| }d}	|jd }
|	|
k rt|	| |
}|j|||	|||||	| id |}	|	|
k sbW d   dS W d   dS 1 sw   Y  dS )zFInitialize `input_var` to `numpy_input` using `session` in graph mode.N    i   r   )	feed_dict)r   
init_scoper   executing_eagerlyassignruninitializerr   placeholderr   int64dtypenpprodshapesizeintceilmin)	input_varnumpy_inputsessionstart_placeholderend_placeholderslice_placeholderassign_slice_opbyte_size_per_batch_elementbatch_size_per_slicestartlimitendr
   r
   e/var/www/html/chatgem/venv/lib/python3.10/site-packages/tensorflow/python/distribute/numpy_dataset.pyinit_var_from_numpy   s@   



!"r)   c           	         s    fdd}t | }t| tdd |D }W d   n1 s$w   Y  t||D ]
\}}t||| q.t | |}tj	
|S )z7Create a dataset on `colocate_with` from `numpy_input`.c                    s    |d< | di |S )Ncolocate_withr
   r
   )next_creatorkwargsr*   r
   r(   create_colocated_variableL   s   z9one_host_numpy_dataset.<locals>.create_colocated_variablec                 s   s*    | ]}t jt|j|jd dV  qdS )F)	trainableN)r   
VariableV1r   zerosr   r   ).0ir
   r
   r(   	<genexpr>R   s    z)one_host_numpy_dataset.<locals>.<genexpr>N)r	   flattenr   variable_creator_scopetuplezipr)   pack_sequence_asr   Datasetfrom_tensor_slices)	r   r*   r   r.   
numpy_flat	vars_flatvr3   vars_nestedr
   r-   r(   one_host_numpy_datasetI   s   

r@   c                   @   s   e Zd ZdZdd ZdS )SingleDevicez<Used with `colocate_with` to create a non-mirrored variable.c                 C   s
   || _ d S )N)device)selfrB   r
   r
   r(   __init__^   s   
zSingleDevice.__init__N)__name__
__module____qualname____doc__rD   r
   r
   r
   r(   rA   [   s    rA   )rH   numpyr   tensorflow.python.data.opsr   tensorflow.python.eagerr   tensorflow.python.frameworkr   r   tensorflow.python.opsr   r   r   tensorflow.python.utilr	   r)   r@   objectrA   r
   r
   r
   r(   <module>   s   ,