github.com/wzzhu/tensor@v0.9.24/dense_argmethods.go (about)

     1  package tensor
     2  
     3  import "github.com/pkg/errors"
     4  
     5  /* Argmax */
     6  
     7  // Argmax finds the index of the max value along the axis provided
     8  func (t *Dense) Argmax(axis int) (retVal *Dense, err error) {
     9  	e := t.e
    10  	switch am := e.(type) {
    11  	case denseArgmaxer:
    12  		return am.argmaxDenseTensor(t, axis)
    13  	case Argmaxer:
    14  		var ret Tensor
    15  		var ok bool
    16  		if ret, err = am.Argmax(t, axis); err != nil {
    17  			return nil, errors.Wrapf(err, opFail, "Argmax")
    18  		}
    19  		if retVal, ok = ret.(*Dense); !ok {
    20  			return nil, errors.Errorf(extractionFail, "*Dense", ret)
    21  		}
    22  		return
    23  	}
    24  	return nil, errors.New("Engine does not suport Argmax")
    25  }
    26  
    27  /* Argmin */
    28  
    29  // Argmin finds the index of the min value along the axis provided
    30  func (t *Dense) Argmin(axis int) (retVal *Dense, err error) {
    31  	e := t.e
    32  	switch am := e.(type) {
    33  	case denseArgminer:
    34  		return am.argminDenseTensor(t, axis)
    35  	case Argminer:
    36  		var ret Tensor
    37  		var ok bool
    38  		if ret, err = am.Argmin(t, axis); err != nil {
    39  			return nil, errors.Wrapf(err, opFail, "Argmax")
    40  		}
    41  		if retVal, ok = ret.(*Dense); !ok {
    42  			return nil, errors.Errorf(extractionFail, "*Dense", ret)
    43  		}
    44  		return
    45  	}
    46  	return nil, errors.New("Engine does not suport Argmax")
    47  }