'AttributeError: module 'torch' has no attribute 'rfft' with PyTorch
I am getting an error using a code that should work according to the documentation.
The goal is to calculate the Feature Similarity Index Measure (FSIM) using the piq
Python library.
Terminal Output:
TiffPage 1: ByteCounts tag is missing
Traceback (most recent call last):
File "...\.venv\lib\site-packages\IPython\core\interactiveshell.py", line 3441, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-3044cfc208ce>", line 1, in <module>
runfile('.../stackoverflow.py', wdir='...')
File "...\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "...\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File ".../stackoverflow.py", line 15, in <module>
main()
File "...\.venv\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File ".../stackoverflow.py", line 10, in main
fsim_index: torch.Tensor = piq.fsim(x, y, data_range=1., reduction='none')
File "...\.venv\lib\site-packages\piq\fsim.py", line 84, in fsim
pc_x = _phase_congruency(
File "...\.venv\lib\site-packages\piq\fsim.py", line 241, in _phase_congruency
imagefft = torch.rfft(x, 2, onesided=False)
AttributeError: module 'torch' has no attribute 'rfft'
Code:
from skimage import io
import torch
import piq
@torch.no_grad()
def main():
x = torch.tensor(io.imread('scikit_image\cover\cover_1.tiff')).permute(2, 0, 1)[None, ...] / 255.
y = torch.tensor(io.imread('scikit_image\stego\stego_1.tiff')).permute(2, 0, 1)[None, ...] / 255.
fsim_index: torch.Tensor = piq.fsim(x, y, data_range=1., reduction='none')
print(fsim_index)
if __name__ == "__main__":
main()
Solution 1:[1]
The latest version of pytorch implements all fast fourier functions in the module torch.fft, apparently piq rely on an older version of pytorch, so if you want to run piq consider downgrading your pytorch version, for example:
pip3 install torch==1.7.1 torchvision==0.8.2
Solution 2:[2]
You can use torch.fft.rfft instead of torch.rfft.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Edoardo Guerriero |
Solution 2 | mohammadreza naderi |