speechbrain.processing.decomposition 模块
广义特征值分解。
该库包含不同的方法来调整复杂厄米特矩阵的格式并找到它们的特征向量和特征值。
- Authors
威廉·阿里斯 2020
弗朗索瓦·格隆丹 2020
摘要
函数:
转换 1. |
|
逆变换 1 |
|
转换 2. |
|
该方法计算复Hermitian矩阵的特征向量和特征值。 |
|
逆变换2。 |
|
逆埃尔米特矩阵。 |
|
对角线修改。 |
|
奇异值分解(左奇异向量)。 |
参考
- speechbrain.processing.decomposition.gevd(a, b=None)[source]
该方法计算复Hermitian矩阵的特征向量和特征值。该方法找到问题AV = BVD的解,其中V是特征向量,D是特征值。
该方法返回的特征向量(vs)存储在一个具有以下格式的张量中(*,C,C,2)。
该方法(ds)返回的特征值存储在一个具有以下格式的张量中(*,C,C,2)。
- Parameters:
- Returns:
vs (torch.Tensor)
ds (torch.Tensor)
Example
假设我们想要计算以下复共轭矩阵的特征值/特征向量:
- 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)
- Parameters:
ws (torch.Tensor) – 一个输入矩阵。张量必须具有以下格式: (*,2,C+P)
- Returns:
wsh
- Return type:
torch.Tensor
- speechbrain.processing.decomposition.finv(wsh)[source]
逆变换 1
该方法接受一个表示复Hermitian矩阵的块矩阵,并将其转换为由其上半部分表示的复矩阵。结果将具有以下格式: (*,2,C+P)
- Parameters:
wsh (torch.Tensor) – 一个输入矩阵。张量必须具有以下格式: (*,2C,2C)
- Returns:
ws
- Return type:
torch.Tensor
- speechbrain.processing.decomposition.g(ws)[source]
转换 2。
该方法接受一个完整的复数矩阵并将其转换为块矩阵。结果将具有以下格式: (*,2C,2C)。
- Parameters:
ws (torch.Tensor) – 一个输入矩阵。张量必须具有以下格式: (*,C,C,2)
- Returns:
wsh
- Return type:
torch.Tensor
- speechbrain.processing.decomposition.ginv(wsh)[source]
逆变换 2。
该方法接受一个由块矩阵表示的复Hermitian矩阵,并将其转换为完整的复矩阵。结果将具有以下格式: (*,C,C,2)
- Parameters:
wsh (torch.Tensor) – 一个输入矩阵。张量必须具有以下格式: (*,2C,2C)
- Returns:
ws
- Return type:
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矩阵的逆。结果将具有以下格式:(*, C, C, 2)。
- Parameters:
x (torch.Tensor) – 一个用于处理的输入矩阵。张量必须具有以下格式:(*, 2, C+P)
- Returns:
x_inv
- Return type:
torch.Tensor
Example
>>> 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)