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

使用QuCumber训练4量子位RBM时遇complex256不兼容numpy linalg错误

解决QuCumber 4量子位密度矩阵重构的complex256类型错误
  • 直接转成complex128类型即可
    numpy的linalg模块确实不支持complex256这种扩展精度类型,把目标密度矩阵转成标准的complex128就能解决问题:
    要么加载数据时直接指定类型:

    real_data = np.loadtxt("GHZ_state_real.txt", dtype=np.float64)
    imag_data = np.loadtxt("GHZ_state_imag.txt", dtype=np.float64)
    target_rho = real_data + 1j * imag_data
    

    要么用data.load_data_DM加载后再转换:

    target_rho = target_rho.astype(np.complex128)
    
  • 同步模型内部张量的类型
    4量子位场景下模型自身的张量可能也默认用了complex256,得同步转成complex128避免类型不匹配:

    nn_state.rho = nn_state.rho.type(torch.complex128)
    
  • 先转类型再做reshape操作
    你之前用torch.reshape没用是因为reshape只改变形状不修改数据类型,正确顺序是先转类型再调整形状:

    target_rho = target_rho.type(torch.complex128).reshape(16, 16)
    

补充:complex128是双精度复数,完全满足4量子位密度矩阵的计算需求,不会损失精度,同时也是numpy和PyTorch支持最完善的复数类型。

内容的提问来源于stack exchange,提问作者Silvio sjsj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:15:33