B
    ٻd                 @   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lmZ ddlmZ ddlmZ ede dZdddZG dd dejZdd ZdS )z(Implementation of SaveDataset in Python.    N)
checkpoint)checkpoint_management)dataset_ops)structured_function)	structure)context)dtypes)ops)gen_experimental_dataset_ops)gfile)lazy_loadernested_structure_coderz4tensorflow.python.saved_model.nested_structure_coderc             C   s   t  r|rt| |||}t|}d|kr2tdtj|d}||d< tjf |}|	|j
 xdt|D ](}	d|kr|d jdd |jdd qhW n.t| ||\}
}}}tj|
j||j|||d	 d
S )z:Implements the save function and checkpoint functionality.r   zV'Invalid `checkpoint_args`. `checkpoint_args` are not allowed to include 'checkpoint'.)iteratorZstep_counter   )deltaT)Zcheck_interval)pathshard_func_other_argscompression
shard_funcuse_shard_funcN)r   Zexecuting_eagerly_SaveDatasetiter
ValueErrorcheckpoint_libZ
Checkpointr   ZCheckpointManagerrestoreZlatest_checkpoint	enumerateZ
assign_addsaveset_save_dataset_attributesged_opssave_dataset_variant_tensorcaptured_inputs)selfr   r   r   Zcheckpoint_argsr   Zsave_iteratorr   manager_datasetr    r&   T/var/www/html/venv/lib/python3.7/site-packages/tensorflow/python/data/ops/save_op.pyr   $   s.    r   c                   s4   e Zd ZdZ fddZdd Zedd Z  ZS )r   z/"A dataset that loads previously saved dataset.c                sf   |j | _|| _t|||\}}}}tj|j||j|||t	|j t
|j d}tt| || d S )N)r   r   r   r   r   Zoutput_typesZoutput_shapes)element_spec_element_spec_shard_funcr   r   Zsave_dataset_v2r    r!   r   Zget_flat_tensor_typesZget_flat_tensor_shapessuperr   __init__)r"   r%   r   r   r   r   Zvariant_tensor)	__class__r&   r'   r,   K   s    
z_SaveDataset.__init__c             C   s   | j gS )N)r*   )r"   r&   r&   r'   
_functions\   s    z_SaveDataset._functionsc             C   s   | j S )N)r)   )r"   r&   r&   r'   r(   _   s    z_SaveDataset.element_spec)	__name__
__module____qualname____doc__r,   r.   propertyr(   __classcell__r&   r&   )r-   r'   r   H   s   r   c          	   C   s   |dkrd}dd }nd}t j|d| jdd}t| j}t| ttj	
|tjd}||  W dQ R X tj|tjd	d
}|j}|t  |   | |||fS )z6Sets parameters for SaveDatasetOp and SaveDatasetV2Op.NFc              W   s   d S )Nr&   )xr&   r&   r'   <lambda>h       z-set_save_dataset_attributes.<locals>.<lambda>Tzsave())Zinput_structureadd_to_graphwbr   )Zdtypename)r   ZStructuredFunctionWrapperr(   r   Zencode_structurer   ZMakeDirsZGFileosr   joinr   ZDATASET_SPEC_FILENAMEwriteZSerializeToStringr	   Zconvert_to_tensorr   stringfunctionr8   Zget_default_graphZ_apply_debug_options)r%   r   r   r   Zwrapped_funcencodedfr&   r&   r'   r   d   s&    

r   )NNN)r2   r;   Ztensorflow.python.checkpointr   r   r   Ztensorflow.python.data.opsr   r   Ztensorflow.python.data.utilr   Ztensorflow.python.eagerr   Ztensorflow.python.frameworkr   r	   Ztensorflow.python.opsr
   r   Ztensorflow.python.platformr   Ztensorflow.python.utilr   
LazyLoaderglobalsr   r   ZUnaryDatasetr   r   r&   r&   r&   r'   <module>   s(     
 