ó ùµÈ[c@@s™dZddlmZddlZddlZddlZddlZddlmZd„Z dddd d d gd „Z d ddie d„Z dS(sVisualization modulei(tabsolute_importNi(tSymbolcC@stjd|ƒS(s½Convert shape string to list, internal use only. Parameters ---------- string: str Shape string. Returns ------- list of str Represents shape. s\d+(tretfindall(tstring((sS/usr/local/lib/python2.7/site-packages/mxnet-1.3.1-py2.7.egg/mxnet/visualization.pyt _str2tuple s ixg)\Âõ(Ü?g{®Gázä?g®Gáz®ç?gð?c@set|tƒstdƒ‚nt‰|dk r“t‰|jƒ}|j|\}}}|dkrutdƒ‚nt t |j ƒ|ƒƒ‰nt j |jƒƒ}|d‰t|ddƒ‰ˆddkrügˆD]}t||ƒ^q݉ndd d d g} d „‰d |GHˆ| ˆƒd|GH‡‡‡‡‡‡fd†} d} xòtˆƒD]ä\} } g}| d}|dkr¡| dkr¡qgn|dks¹| ˆkr ˆr |dkrÜ| dd}n | d}|ˆkrˆ|d}qq n| | ˆ| |ƒ7} | tˆƒdkrBd|GHqgd |GHqgWd| GHd |GHdS(s„Convert symbol for detail information. Parameters ---------- symbol: Symbol Symbol to be visualized. shape: dict A dict of shapes, str->shape (tuple), given input shapes. line_length: int Rotal length of printed lines positions: list Relative or absolute positions of log elements in each line. Returns ------ None ssymbol must be SymbolsInput shape is incompletetnodestheadsiiÿÿÿÿis Layer (type)s Output ShapesParam #sPrevious LayercS@sfd}xTt|ƒD]F\}}|t|ƒ7}||| }|d||t|ƒ7}qW|GHdS(sÙPrint format row. Parameters ---------- fields: list Information field. positions: list Field length ratio. Returns ------ None tt N(t enumeratetstrtlen(tfieldst positionstlinetitfield((sS/usr/local/lib/python2.7/site-packages/mxnet-1.3.1-py2.7.egg/mxnet/visualization.pyt print_rowQs  t_t=c@s°|d}g}d}|dkrå|d}x¶|D]«}ˆ|d}|d}|ddksq|dˆkr3|j|ƒˆrÞ|ddkr¡|d} n|} | ˆkrÛˆ| d} |t| dƒ}qÛqÞq3q3Wnd} |dkrd |d kr…|d d d kr…t|d jd d ƒƒ} |t|d dƒ| } x®t|d dƒD]} | t| ƒ9} qhWqêt|d jd d ƒƒ} |t|d dƒ| } x,t|d dƒD]} | t| ƒ9} qÒW| t|d dƒ7} nã|dkrqd |d krR|d d d krR|t|d dƒ} qê|dt|d dƒ} ny|dkrµ|dd} ˆrêˆ| d}t|ƒd} qên5|dkrêt|d dƒt|d dƒ} n|sùd}n |d}|dd|ddjg|D]}t|ƒ^q#ƒ| |g}ˆ|ˆƒt|ƒdkr¬xCtdt|ƒƒD])}ddd||g}ˆ|ˆƒq|Wn| S(söprint layer information Parameters ---------- node: dict Node information. out_shape: dict Node shape information. Returns ------ Node total parameters. topitnulltinputstnamet_outputit Convolutiontno_biastattrstTruet num_groupt1t num_filtertkerneltFullyConnectedt num_hiddent BatchNormit Embeddingt input_dimt output_dimRt(t)tx(tappendtinttgetRtjoinR R trange(tnodet out_shapeRtpre_nodet pre_filterRtitemt input_nodet input_nametkeytshapet cur_paramRtkR tfirst_connectionR*R R(RRRRt shape_dictt show_shape(sS/usr/local/lib/python2.7/site-packages/mxnet-1.3.1-py2.7.egg/mxnet/visualization.pytprint_layer_summarygsj         $ $ $  )  %  RRRRsTotal params: %sN(t isinstanceRt TypeErrortFalsetNoneRt get_internalst infer_shapet ValueErrortdicttzipt list_outputstjsontloadsttojsontsetR,R R (tsymbolR8t line_lengthRtinteralsRt out_shapestconftpt to_displayR>t total_paramsRR0R1RR7((RRRRR<R=sS/usr/local/lib/python2.7/site-packages/mxnet-1.3.1-py2.7.egg/mxnet/visualization.pyt print_summary/sP    &    I       tplottpdfc!@síyddlm}Wntdƒ‚nXt|tƒsHtdƒ‚nt}|dMk r½t}|j ƒ}|j |\} } } | dMkrŸt dƒ‚nt t |jƒ| ƒƒ} ntj|jƒƒ} | d} t| ƒttg| D]}|d^qòƒƒkr\tƒ‰t‡fd†| Dƒƒ}d d j|ƒ}tj|tƒnid d 6d d6dd6dd6dd6}|j|ƒ|d|d|ƒ}dN}d„}tƒ}x| D]‡}|d}|d}tj|ƒ}|}|d krV||dƒr1|rÆ|j|dƒqÆqÆnd!|d <|d}|d|d"kr |d?|d"