U
    <cy                     @   sP   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d
S )    )GraphDef)NodeDef)
VersionDef)	AttrValue)TensorShapeProtoc                 C   s    dd l }|| }|j}t|S )Nr   )onnxloadgraphparse)fnamer   mg r   G/tmp/pip-unpacked-wheel-gikjz4vx/torch/utils/tensorboard/_onnx_graph.pyload_onnx_graph   s    
r   c           
      C   s\  g }g }dd l }|| j| jD ]}|| q |D ]b}t|j tdd |jj	j
jD d}|t|jjdddg t|jj	jdt|d	d
d q4| jD ]}g }|jD ]"}|ddd | D  qd|jdd}t|jd  |t|jd jdd|j|jdt|did qi }	|D ]}|jd |j |	|j< q,t|tdddS )Nr   c                 S   s   g | ]}t j|jd qS ))size)r   ZDimZ	dim_value).0dr   r   r   
<listcomp>   s   zparse.<locals>.<listcomp>)dimutf_8)encodingVariable)type)shape)Zdtyper   )nameopinputattrz = c                 S   s   g | ]}t |d  qS )   )str)r   fr   r   r   r   /   s     z, 
parameters)s_   )Zproducer)nodeversions)	itertoolschainr   outputappendprintr   r   r   Ztensor_typer   r   r   encoder   Z	elem_typer&   	attributejoinZ
ListFieldsZop_typer   r   r   )
r	   Znodes_protoZnodesr(   r&   Z
shapeprotoZ_attrr#   r   mappingr   r   r   r
      sP    



 
r
   N)Z"tensorboard.compat.proto.graph_pb2r   Z%tensorboard.compat.proto.node_def_pb2r   Z%tensorboard.compat.proto.versions_pb2r   Z'tensorboard.compat.proto.attr_value_pb2r   Z)tensorboard.compat.proto.tensor_shape_pb2r   r   r
   r   r   r   r   <module>   s   