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 }