ó R;]c@@sdZddlmZddlZddlZddlZddlmZd„Zdddd 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.2.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.2.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ƒ} nD|dkrµ|dd} ˆrµˆ| d}t|ƒd} qµn|sÄd}n |d}|dd|ddjg|D]}t|ƒ^qîƒ| |g}ˆ|ˆƒt|ƒdkrwxCtdt|ƒƒD])}ddd||g}ˆ|ˆƒqGWn| 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 BatchNormiRt(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.2.1-py2.7.egg/mxnet/visualization.pytprint_layer_summarygsf         $ $ $   %  RRRRsTotal params: %sN(t isinstanceRt TypeErrortFalsetNoneRt get_internalst infer_shapet ValueErrortdicttzipt list_outputstjsontloadsttojsontsetR)R R (tsymbolR5t line_lengthRtinteralsRt out_shapestconftpt to_displayR;t total_paramsRR-R.RR4((RRRRR9R:sS/usr/local/lib/python2.7/site-packages/mxnet-1.2.1-py2.7.egg/mxnet/visualization.pyt print_summary/sP    &    G       tplottpdfcC@s‘yddlm}Wntdƒ‚nXt|tƒsHtdƒ‚nt}|dJk r½t}|j ƒ}|j |\} } } | dJkrŸt dƒ‚nt t |jƒ| ƒƒ} ntj|jƒƒ} | d} idd6d d 6d d 6d d6dd6}|j|ƒ|d|d|ƒ}dK}d„}tƒ}x³| D]«}|d}|d}tj|ƒ}|}|dkrÖ||dƒr±|rF|j|dƒqFqFnd|d<|d}|d|dkrØ|d#d?}n|jd|d@||qFWx•| D]}|d}|d}|dkr(qüqü|dA}xT|D]L}| |d}|d}||kr9idBdC6dDdE6}|ri|ddkr |dF}d#|krÝ|d#}dG|krÝ|tt|dGƒd(ƒ7}qÝn| |d(}d"jg|D]}t|ƒ^qøƒ}||d@