PyTorch复数张量转字典列表及逆向转换方法问询
复数张量与JSON格式的互转方案
正向转换(PyTorch复数张量 → JSON兼容字典列表)
步骤代码
import torch import json # 定义你的复数张量 complex_tensor = torch.tensor([[0.2054+0.7081j, 0.6586+0.1506j], [0.4596+0.7250j, -0.1743+0.4825j]]) # 转换为JSON支持的字典列表格式 # 遍历张量的每一行,再遍历每个复数元素,提取实部和虚部转成float json_compatible_data = [ [{"real": float(num.real), "img": float(num.imag)} for num in row] for row in complex_tensor ] # 写入JSON文件 with open("complex_tensor_data.json", "w") as f: json.dump(json_compatible_data, f, indent=4)
关键说明
- PyTorch复数张量的每个元素可通过
.real和.imag直接提取实部、虚部 - 必须转成Python原生
float类型,否则JSON无法序列化张量元素 - 列表推导式是Python快速生成嵌套结构的常用方式,适配二维张量的结构
逆向转换(JSON字典列表 → PyTorch复数张量)
步骤代码
import torch import json # 从JSON文件读取数据 with open("complex_tensor_data.json", "r") as f: loaded_json_data = json.load(f) # 转换回PyTorch复数张量 # 遍历JSON的每一行,用complex()函数组合实部虚部,再转成张量 recovered_complex_tensor = torch.tensor([ [complex(item["real"], item["img"]) for item in row] for row in loaded_json_data ], dtype=torch.complex64) # 可选:验证转换结果是否一致 print("原始张量:") print(complex_tensor) print("\n恢复后的张量:") print(recovered_complex_tensor)
关键说明
- Python内置
complex(real, imag)函数可快速生成复数 - 指定
dtype=torch.complex64确保张量与原始数据精度一致(对应32位浮点数的实虚部) - 若原始张量是
complex128类型,将dtype改成torch.complex128即可
内容的提问来源于stack exchange,提问作者shuai wang
相关产品推荐
相关产品推荐

