|TensorFlow 1 version||View source on GitHub|
LinearOperator acting like a nested block circulant matrix.
Compat aliases for migration
See Migration guide for more details.
tf.linalg.LinearOperatorCirculant3D( spectrum, input_output_dtype=tf.dtypes.complex64, is_non_singular=None, is_self_adjoint=None, is_positive_definite=None, is_square=True, name='LinearOperatorCirculant3D' )
This operator acts like a block circulant matrix
[B1,...,Bb, N, N] for some
b >= 0. The first
b indices index a
batch member. For every batch index
A[i1,...,ib, : :] is
N x N matrix. This matrix
A is not materialized, but for
purposes of broadcasting this shape will be relevant.
Description in terms of block circulant matrices
A is nested block circulant, with block sizes
N0, N1, N2
N0 * N1 * N2 = N):
A has a block structure, composed of
N0 x N0 blocks, with each
N1 x N1 block circulant matrix.
For example, with
Z each block circulant,
A = |W Z Y X| |X W Z Y| |Y X W Z| |Z Y X W|
A itself will not in general be circulant.
Description in terms of the frequency spectrum
There is an equivalent description in terms of the [batch] spectrum
Fourier transforms. Here we consider
A.shape = [N, N] and ignore batch
H.shape = [N0, N1, N2], (
N0 * N1 * N2 = N