klampt.math.autodiff.math_ad module¶
Basic math / linear algebra routines. Defines the following AD functions:
Function
Derivative
Notes
exp
1
log
1
sqrt
1
sin
Y
cos
Y
dot
Y
linear
Y
Produces \(A x\) for a fixed A
quadratric
Y
Produces \(x^T A x\) for a fixed A
bilinear
Y
Produces \(x^T A y\) for a fixed A
ShapedDot
Y
Reshapes a vector before performing dot
norm
1
Standard L2 norm
normSquared
Y
distance
1
Standard L2 norm
distanceSquared
Y
unit
N
cross
1
interpolate
1
Module contents¶
Autodiff’ed function comparable to np.exp. |
|
Autodiff’ed function comparable to np.log. |
|
Autodiff’ed function comparable to np.sqrt. |
|
Autodiff’ed function comparable to np.sin. |
|
Autodiff’ed function comparable to np.cos. |
|
Autodiff’ed function comparable to np.dot. |
|
|
Autodiff’ed function comparable to np.dot(A,x). |
|
Autodiff’ed function comparable to np.dot(x,np.dot(A,x)). |
|
Autodiff’ed function comparable to np.dot(x,np.dot(A,y)). |
|
This function is used to do matrix-vector products, which are by normally not supported by the dot function since all arguments are flattened 1D arrays. |
Autodiff’ed function comparable to np.linalg.norm. |
|
Autodiff’ed function comparable to np.dot(x,x). |
|
Autodiff’ed function comparable to np.linalg.norm(x-y). |
|
Autodiff’ed function comparable to np.dot(x-y,x-y). |
|
Autodiff’ed function comparable to x/norm(x). |
|
Autodiff’ed function comparable to np.cross(x,y). |
|
Autodiff’ed function comparable to (1-u)*a+u*b. |
-
class
klampt.math.autodiff.math_ad.
ShapedDot
(shape1=None, shape2=None)[source]¶ Bases:
klampt.math.autodiff.ad.ADFunctionInterface
This function is used to do matrix-vector products, which are by normally not supported by the dot function since all arguments are flattened 1D arrays. This function reshapes either the first or second arguments into a 2D array before calling dot. You must specify the array shape upon instantiation.
-
derivative
(arg, x, y)[source]¶ Returns the Jacobian of the function w.r.t. argument #arg.
- Parameters
arg (int) – A value from 0,…,self.n_args()-1 indicating that we wish to take \(df/dx_{arg}\).
args (list of ndarrays) – arguments for the function.
- Returns
A numpy array of shape
(self.n_out(),self.n_in(arg))
. Keep in mind that even if the argument or result is a scalar, this needs to be a 2D array.If the derivative is not implemented, raise a NotImplementedError.
If the derivative is zero, can just return 0 (the integer) regardless of the size of the result.
- Return type
ndarray
-
eval
(x, y)[source]¶ Evaluates the application of the function to the given (instantiated) arguments.
- Parameters
args (list) – a list of arguments, which are either ndarrays or scalars.
-
gen_derivative
(arg, x, y)[source]¶ Generalized derivative that allows higher-order derivatives to be taken.
- Parameters
arg (list) – Indicates the order of derivatives to be taken. For example, to take the 2nd derivative w.r.t. x0,x1, arg = [0,1] should be specified.
args (list of ndarrays) – arguments for the function.
- Returns
A tensor of shape
(n_out,n_in(arg[0]),..., n_in(arg[-1])
.If the generalized derivative is not implemented, raise a NotImplementedError.
If the generalized derivative is zero, can just return 0 (the integer) regardless of the size of the result.
- Return type
ndarray
-
jvp
(arg, darg, x, y)[source]¶ Performs a Jacobian-vector product for argument #arg.
- Parameters
arg (int) – A value from 0,…,self.n_args()-1 indicating that we wish to calculate df/dx_arg * darg.
darg (ndarray) – the derivative of x_arg w.r.t some other parameter. Must have
darg.shape = (self.n_in(arg),)
.args (list of ndarrays) – arguments for the function.
- Returns
A numpy array of length
self.n_out()
If the derivative is not implemented, raise a NotImplementedError.
- Return type
ndarray
-
-
klampt.math.autodiff.math_ad.
bilinear
(x, A, y)[source]¶ Autodiff’ed function comparable to np.dot(x,np.dot(A,y)). A must be a constant, 2D np.array. x and y may be expressions.
-
klampt.math.autodiff.math_ad.
cos
(*args) = <klampt.math.autodiff.math_ad._ADCos object>¶ Autodiff’ed function comparable to np.cos. All derivatives are implemented.
-
klampt.math.autodiff.math_ad.
cross
(*args) = <klampt.math.autodiff.ad._ad_cross object>¶ Autodiff’ed function comparable to np.cross(x,y). First derivative is implemented. Some 2nd derivatives are implemented.
-
klampt.math.autodiff.math_ad.
distance
(*args) = <klampt.math.autodiff.math_ad._ADDistanceL2 object>¶ Autodiff’ed function comparable to np.linalg.norm(x-y). First derivative is implemented.
-
klampt.math.autodiff.math_ad.
distanceSquared
(*args) = <klampt.math.autodiff.math_ad._ADDistanceSquared object>¶ Autodiff’ed function comparable to np.dot(x-y,x-y). All derivatives are implemented.
-
klampt.math.autodiff.math_ad.
dot
(*args) = <klampt.math.autodiff.math_ad._ADDot object>¶ Autodiff’ed function comparable to np.dot. All derivatives are implemented.
-
klampt.math.autodiff.math_ad.
exp
(*args) = <klampt.math.autodiff.math_ad._ADExp object>¶ Autodiff’ed function comparable to np.exp. First derivative is implemented.
-
klampt.math.autodiff.math_ad.
interpolate
(*args) = <klampt.math.autodiff.ad._ad_interpolate object>¶ Autodiff’ed function comparable to (1-u)*a+u*b. First derivatives is implemented.
-
klampt.math.autodiff.math_ad.
linear
(A, x)[source]¶ Autodiff’ed function comparable to np.dot(A,x). A must be a constant, 2D np.array. x may be an expression.
-
klampt.math.autodiff.math_ad.
log
(*args) = <klampt.math.autodiff.math_ad._ADLog object>¶ Autodiff’ed function comparable to np.log. First derivative is implemented.
-
klampt.math.autodiff.math_ad.
norm
(*args) = <klampt.math.autodiff.ad._ad_norm object>¶ Autodiff’ed function comparable to np.linalg.norm. First derivative is implemented.
-
klampt.math.autodiff.math_ad.
normSquared
(*args) = <klampt.math.autodiff.ad._ad_normSquared object>¶ Autodiff’ed function comparable to np.dot(x,x). All derivatives are implemented.
-
klampt.math.autodiff.math_ad.
quadratric
(A, x)[source]¶ Autodiff’ed function comparable to np.dot(x,np.dot(A,x)). A must be a constant, 2D np.array. x may be an expression.
-
klampt.math.autodiff.math_ad.
sin
(*args) = <klampt.math.autodiff.math_ad._ADSin object>¶ Autodiff’ed function comparable to np.sin. All derivatives are implemented.
-
klampt.math.autodiff.math_ad.
sqrt
(*args) = <klampt.math.autodiff.math_ad._ADSqrt object>¶ Autodiff’ed function comparable to np.sqrt. First derivative is implemented.
-
klampt.math.autodiff.math_ad.
unit
(*args) = <klampt.math.autodiff.ad._ad_unit object>¶ Autodiff’ed function comparable to x/norm(x). First derivative is implemented.