ó —Àv]c@@sœdZddlmZddlZddlZddlZddlZddlmZd„Z dddd d d gd „Z d dddie 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((s4/tmp/pip-install-Qvdv_2/mxnet/mxnet/visualization.pyt _str2tuple s ixg)\Âõ(Ü?g{®Gázä?g®Gáz®ç?gð?c@smt|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 |GHqgWdjd| ƒ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 Notes ----- If ``mxnet`` is imported, the visualization module can be used in its short-form. For example, if we ``import mxnet`` as follows:: import mxnet this method in visualization module can be used in its short-form as:: mxnet.viz.print_summary(...) 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((s4/tmp/pip-install-Qvdv_2/mxnet/mxnet/visualization.pyt print_row^s  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(s4/tmp/pip-install-Qvdv_2/mxnet/mxnet/visualization.pytprint_layer_summarytsj         $ $ $  )  %  RRRRsTotal params: {params}tparamsN(t isinstanceRt TypeErrortFalsetNoneRt get_internalst infer_shapet ValueErrortdicttzipt list_outputstjsontloadsttojsontsetR,R R tformat(tsymbolR8t line_lengthRtinteralsRt out_shapestconftpt to_displayR>t total_paramsRR0R1RR7((RRRRR<R=s4/tmp/pip-install-Qvdv_2/mxnet/mxnet/visualization.pyt print_summary/sP    &    I      tplottpdfc' @sÅyddlm}Wntdƒ‚nXt|tƒsHtdƒ‚n|jƒ}|dYk } | r·|j|\} } } | dYkr™t dƒ‚nt t |j ƒ| ƒƒ} n|dYk } | r|j |\} }} |dYkrüt dƒ‚nt t |j ƒ|ƒƒ}ntj|jƒƒ}|d}t|ƒttg|D]}|d^qOƒƒkr¹tƒ‰t‡fd †|Dƒƒ}d d j|ƒ}tj|tƒnid d 6dd6dd6dd6dd6}|j|ƒ|d|d|ƒ}dZ}d„}tƒ}x'|D]}|d }|d}tj|ƒ}|}|d!kr³||dƒrŽ|r#|j|dƒq#q#nd"|d <|d}|d|d#|d(d?d&d&|d(krwd'jt|d(d&ƒƒnd@d)d)|d(krªd'jt|d(d)ƒƒnd*ƒ}|dA|d#