o
    ?e                     @   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   )Z	feed_dict)r   Z
init_scoper   Zexecuting_eagerlyZassignrunZinitializerr   placeholderr   Zint64dtypenpprodshapesizeintceilmin)Z	input_varnumpy_inputsessionZstart_placeholderZend_placeholderZslice_placeholderZassign_slice_opZbyte_size_per_batch_elementZbatch_size_per_slicestartlimitendr
   r
   k/home/www/facesmatcher.com/pyenv/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
   )Z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)Z	trainableN)r   Z
VariableV1r   Zzerosr   r   ).0ir
   r
   r   	<genexpr>R   s    z)one_host_numpy_dataset.<locals>.<genexpr>N)r	   flattenr   Zvariable_creator_scopetuplezipr   Zpack_sequence_asr   ZDatasetZfrom_tensor_slices)	r   r   r   r    Z
numpy_flatZ	vars_flatvr"   Z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)selfr*   r
   r
   r   __init__^   s   
zSingleDevice.__init__N)__name__
__module____qualname____doc__r,   r
   r
   r
   r   r)   [   s    r)   )r0   numpyr   Ztensorflow.python.data.opsr   Ztensorflow.python.eagerr   Ztensorflow.python.frameworkr   r   Ztensorflow.python.opsr   r   r   Ztensorflow.python.utilr	   r   r(   objectr)   r
   r
   r
   r   <module>   s   ,