You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21