如何在基于arm的cpu上模拟/运行使用ATen STFT实现的PyTorch模型?

如何在基于arm的cpu上模拟/运行使用ATen STFT实现的PyTorch模型?,pytorch,arm,Pytorch,Arm,我正在尝试在没有gpu的基于arm的设备上运行我的PyTorch ASR模型。据我所知,arm不支持ATen使用的MKL。当然,当我试图进行推断时,会出现以下错误: RuntimeError: fft: ATen not compiled with MKL support 我怎样才能解决这个问题?我可以使用其他方法吗?如果您的目标设备是移动设备,那么可以先尝试使用Pytorch mobile将其转换为TorcScript。TorchScript是PyTorch模型的中间表示形式,可以在移动环境

我正在尝试在没有gpu的基于arm的设备上运行我的PyTorch ASR模型。据我所知,arm不支持ATen使用的MKL。当然,当我试图进行推断时,会出现以下错误:

RuntimeError: fft: ATen not compiled with MKL support

我怎样才能解决这个问题?我可以使用其他方法吗?

如果您的目标设备是移动设备,那么可以先尝试使用Pytorch mobile将其转换为TorcScript。TorchScript是PyTorch模型的中间表示形式,可以在移动环境中运行。

我通过绕过PyTorch的stft实现解决了这个问题。这可能对每个人都不可行,但在我的例子中,它允许我使用我的模型进行预测,而不会在arm设备上出现问题

问题源于\u VF.stft调用packages/torch/functional.py

我换了线路

return _VF.stft(input, n_fft, hop_length, win_length, window, normalized, onesided, return_complex) 
与:

该代码可以进一步优化。我只是想复制PyTorch用Librosa做的事情。在我的例子中,两个版本中的结果输出是相同的。但是你应该检查你的输出,以确定你是否决定使用这种方法

librosa_stft = librosa.stft(input.cpu().detach().numpy().reshape(-1), n_fft, hop_length, win_length, window="hann", center=True, pad_mode=pad_mode)
librosa_stft = np.array([[a.real, a.imag] for a in librosa_stft])
librosa_stft = np.transpose(librosa_stft, axes=[0, 2, 1])
librosa_stft = np.expand_dims(librosa_stft, 0)
librosa_stft = torch.from_numpy(librosa_stft)
return librosa_stft