decl_opr( 'Diag', desc='Extract a diagonal or construct a diagonal array', inputs=[ Doc('k', 'Index of the diagonal: 0 (the default) refers to the main ' 'diagonal, a positive value refers to an upper diagonal, and a ' 'negative value to a lower diagonal.') ], params='Diag' ) decl_opr( 'DiagBackward', desc='backward function of Diag', inputs=[ Doc('k', 'Index of the diagonal: 0 (the default) refers to the main ' 'diagonal, a positive value refers to an upper diagonal, and a ' 'negative value to a lower diagonal.') ], params='Diag' ) decl_opr('IndexingOneHot', pyname='_indexing_one_hot', inputs=['src', 'index'], params=[('axis', 'Axis')]) decl_raw_opr( 'indexing_one_hot', inputs=[Doc('src', 'input data, n-dimensional'), Doc('axis', 'the axis on *src* for which values in *index* index', 'int'), Doc('index', 'index, (n-1)-dimensional, dtype must be int32_t'), Doc('keepdims', 'whether not to remove the axis in result', 'bool', 'False')], body=[ 'output = _indexing_one_hot(src, index, axis=axis, config=config)', 'if not keepdims:', ' output = remove_axis(output, axis)'], desc='One-hot indexing for some axis. ' 'If ``keepdims == True``, output data is n-dimensional, but its shape on ' 'indexing axis is 1. Given src, axis and index, for all valid subscript ' ' tuples i, we have: ``dst[i[0], ..., i[axis-1], 0, i[axis], ..., i[n-1]] ' '= src[i[0], ..., i[axis-1], index[i], i[axis], ..., i[n-1]]``' ) decl_opr('IndexingSetOneHot', pyname='_indexing_set_one_hot', inputs=['src', 'index', 'value'], params=[('axis', 'Axis')]) decl_raw_opr( 'indexing_set_one_hot', inputs=['src', Doc('axis', '', 'int'), 'index', 'value'], body=[ 'output = _indexing_set_one_hot(src, index, value, axis=axis, ' 'config=config)' ], desc='set subtensor given by *index* in *src* to *value*; see ' ':func:`indexing_one_hot` for how the indexing works.') decl_opr('IndexingRemap', inputs=['src', 'map_'], params='IndexingRemap', desc=Doc(None, r""" Generate an output tensor by treating *map_* as indices to take from *src*. Assume shape of *src* is :math:`(s_0, s_1, \ldots, s_{n-1})` and shape of *map_* is :math:`(t_0, t_1, \ldots, t_{m-1})`, then the remap requires :math:`t_{m-1}=n`, and the output shape would be :math:`(t_0, \ldots, t_{m-2})`; for each output element, it has :math:`n` corresponding elements in *map_* that would be used as the index to look up in *src*. .. note:: This operator accepts a special parameter *is_non_overlapping*; see :class:`~.opr_param_defs.IndexingRemap` for its explanation. """)) # vim: ft=python