ó šÄïYc@@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((s3build/bdist.linux-armv7l/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((s3build/bdist.linux-armv7l/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} |dkrY|t|d d ƒ} x,t|d d ƒD]} | t| ƒ9} q$W| t|d d ƒ7} no|d kr„|t|d d ƒd} nD|dkrÈ|dd} ˆrȈ| d} t| ƒd} qÈn|s×d}n |d}|dd|ddjg|D]}t|ƒ^qƒ| |g}ˆ|ˆƒt|ƒdkrŠxCtdt|ƒƒD])}ddd||g}ˆ|ˆƒqZWn| S(söprint layer information Parameters ---------- node: dict Node information. out_shape: dict Node shape information. Returns ------ Node total parameters. topitnulltinputstnamet_outputit Convolutiontattrt num_filtertkerneltFullyConnectedt num_hiddent BatchNormiRt(t)tx(tappendtintRtjoinR R trange(tnodet out_shapeRtpre_nodet pre_filterRtitemt input_nodet input_nametkeytshapet cur_paramtkRtfirst_connectionR#R R(RRRRt shape_dictt show_shape(s3build/bdist.linux-armv7l/egg/mxnet/visualization.pytprint_layer_summarygsV         $     %  RRRRsTotal params: %sN(t isinstanceRt TypeErrortFalsetNonetTruet get_internalst infer_shapet ValueErrortdicttzipt list_outputstjsontloadsttojsontsetR%R R (tsymbolR0t line_lengthRtinteralsRt out_shapestconftpt to_displayR6t total_paramsRR(R)RR/((RRRRR4R5s3build/bdist.linux-armv7l/egg/mxnet/visualization.pyt print_summary/sP    &    ;       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@