如何将图像转换为FFT信号?TensorFlow fft2d报错解决咨询
解决TensorFlow FFT2D输入类型错误问题
错误原因
tf.signal.fft2d要求输入必须是complex64或complex128类型,你传入的是float类型的numpy数组,不符合接口的类型要求,因此触发报错。
解决步骤及代码示例
你需要先将输入的numpy数组转换为复数类型,再执行FFT变换,具体有两种常见实现方式:
方式1:直接用numpy转换类型
import numpy as np import tensorflow as tf # 将float类型的numpy数组转为complex64(虚部自动补0) fake_A1_complex = fake_A1.astype(np.complex64) # 执行二维FFT fake_A1_fft = tf.signal.fft2d(fake_A1_complex)
方式2:用TensorFlow的complex接口转换
如果需要先转为TensorFlow张量再处理:
import tensorflow as tf # 将numpy数组转为float32张量 fake_A1_tensor = tf.convert_to_tensor(fake_A1, dtype=tf.float32) # 构造复数张量:实部为原数据,虚部为全0 fake_A1_complex_tensor = tf.complex(fake_A1_tensor, tf.zeros_like(fake_A1_tensor)) # 执行二维FFT fake_A1_fft = tf.signal.fft2d(fake_A1_complex_tensor)
补充说明
即使你的输入是实值图像(比如灰度图),FFT算法也需要基于复数域计算,因此必须将实值数据转为复数格式(虚部补0)才能适配TensorFlow的FFT接口。
内容的提问来源于stack exchange,提问作者Sanjay Gupta
相关产品推荐
相关产品推荐

