speechbrain.processing.decomposition 模块
广义特征值分解。
此库包含不同的方法来调整复共轭 Hermitian 矩阵的格式,并找到它们的特征向量和特征值。
- 作者
William Aris 2020
Francois Grondin 2020
摘要
函数
变换 1。 |
|
逆变换 1 |
|
变换 2。 |
|
此方法计算复共轭 Hermitian 矩阵的特征向量和特征值。 |
|
逆变换 2。 |
|
逆 Hermitian 矩阵。 |
|
对角线修改。 |
|
奇异值分解(左奇异向量)。 |
参考
- speechbrain.processing.decomposition.gevd(a, b=None)[source]
此方法计算复共轭 Hermitian 矩阵的特征向量和特征值。该方法寻找方程 AV = BVD 的解,其中 V 是特征向量,D 是特征值。
此方法返回的特征向量 (vs) 存储在以下格式的张量中 (*,C,C,2)。
此方法返回的特征值 (ds) 存储在以下格式的张量中 (*,C,C,2)。
- 参数:
- 返回:
vs (torch.Tensor)
ds (torch.Tensor)
示例
假设我们想计算以下复共轭 Hermitian 矩阵的特征值/特征向量
- A = [ 52 34 + 37j 16 + j28 ;
34 - 37j 125 41 + j3 ; 16 - 28j 41 - j3 62 ]
>>> a = torch.FloatTensor([[52,34,16,125,41,62],[0,37,28,0,3,0]]) >>> vs, ds = gevd(a)
这对应于
- D = [ 20.9513 0 0 ;
0 43.9420 0 ; 0 0 174.1067 ]
- V = [ 0.085976 - 0.85184j -0.24620 + 0.12244j -0.24868 - 0.35991j ;
-0.16006 + 0.20244j 0.37084 + 0.40173j -0.79175 - 0.087312j ; -0.43990 + 0.082884j -0.36724 - 0.70045j -0.41728 + 0 j ]
其中
A = VDV^-1
- speechbrain.processing.decomposition.svdl(a)[source]
奇异值分解(左奇异向量)。
此函数计算输入矩阵与其转置 (a x a.T) 相乘结果的特征值和特征向量。
参数:
- atorch.Tensor
要处理的复数输入矩阵。张量必须具有以下格式:(*,2,C+P)。
示例:
>>> import torch
>>> from speechbrain.processing.features import STFT >>> from speechbrain.processing.multi_mic import Covariance >>> from speechbrain.processing.decomposition import svdl >>> from speechbrain.dataio.dataio import read_audio_multichannel
>>> xs_speech = read_audio_multichannel( ... 'tests/samples/multi-mic/speech_-0.82918_0.55279_-0.082918.flac' ... ) >>> xs_noise = read_audio_multichannel('tests/samples/multi-mic/noise_diffuse.flac') >>> xs = xs_speech + 0.05 * xs_noise >>> xs = xs.unsqueeze(0).float() >>> >>> stft = STFT(sample_rate=16000) >>> cov = Covariance() >>> >>> Xs = stft(xs) >>> XXs = cov(Xs) >>> us, ds = svdl(XXs)
- speechbrain.processing.decomposition.f(ws)[source]
变换 1。
此方法接受一个由其上三角部分表示的复共轭 Hermitian 矩阵,并将其转换为表示由实数组成的完整原始矩阵的块矩阵。输出张量将具有以下格式:(*,2C,2C)
- 参数:
ws (torch.Tensor) – 输入矩阵。张量必须具有以下格式:(*,2,C+P)
- 返回:
wsh
- 返回类型:
torch.Tensor
- speechbrain.processing.decomposition.finv(wsh)[source]
逆变换 1
此方法接受表示复共轭 Hermitian 矩阵的块矩阵,并将其转换为由其上三角部分表示的复数矩阵。结果将具有以下格式:(*,2,C+P)
- 参数:
wsh (torch.Tensor) – 输入矩阵。张量必须具有以下格式:(*,2C,2C)
- 返回:
ws
- 返回类型:
torch.Tensor
- speechbrain.processing.decomposition.g(ws)[source]
变换 2。
此方法接受一个完整的复数矩阵,并将其转换为块矩阵。结果将具有以下格式:(*,2C,2C)。
- 参数:
ws (torch.Tensor) – 输入矩阵。张量必须具有以下格式:(*,C,C,2)
- 返回:
wsh
- 返回类型:
torch.Tensor
- speechbrain.processing.decomposition.ginv(wsh)[source]
逆变换 2。
此方法接受由块矩阵表示的复共轭 Hermitian 矩阵,并将其转换为完整的复数矩阵。结果将具有以下格式:(*,C,C,2)
- 参数:
wsh (torch.Tensor) – 输入矩阵。张量必须具有以下格式:(*,2C,2C)
- 返回:
ws
- 返回类型:
torch.Tensor
- speechbrain.processing.decomposition.pos_def(ws, alpha=0.001, eps=1e-20)[source]
对角线修改。
此方法接受一个由其上三角部分表示的复共轭 Hermitian 矩阵,并将其迹乘以 alpha 的值加到其对角线的实部。输出将具有以下格式:(*,2,C+P)
- speechbrain.processing.decomposition.inv(x)[source]
逆 Hermitian 矩阵。
此方法寻找由其上三角部分表示的复共轭 Hermitian 矩阵的逆。结果将具有以下格式:(*, C, C, 2)。
- 参数:
x (torch.Tensor) – 要处理的输入矩阵。张量必须具有以下格式:(*, 2, C+P)
- 返回:
x_inv
- 返回类型:
torch.Tensor
示例
>>> import torch >>> >>> from speechbrain.dataio.dataio import read_audio >>> from speechbrain.processing.features import STFT >>> from speechbrain.processing.multi_mic import Covariance >>> from speechbrain.processing.decomposition import inv >>> >>> xs_speech = read_audio( ... 'tests/samples/multi-mic/speech_-0.82918_0.55279_-0.082918.flac' ... ) >>> xs_noise = read_audio('tests/samples/multi-mic/noise_0.70225_-0.70225_0.11704.flac') >>> xs = xs_speech + 0.05 * xs_noise >>> xs = xs.unsqueeze(0).float() >>> >>> stft = STFT(sample_rate=16000) >>> cov = Covariance() >>> >>> Xs = stft(xs) >>> XXs = cov(Xs) >>> XXs_inv = inv(XXs)