限制 ¶
ChainerX仅支持有限的一组数据类型: 布尔_ 整数8 整数16 整数32 整数64 单位8 浮动32 浮点64 . 不支持混合数据类型的操作。 您需要使用以下两种方法显式转换数据类型 链接器x.ast类型() 或 F.铸造() . 目前还不支持真正的Python除法,其中2/3返回0.66而不是0。 给一个标准 一 数据类型的 整数32 , 一 / 一 不返回数组 浮点64 ,但返回一个数组 整数32 . 只有有限的链条 功能 通过ChainerX集成对进行了良好的测试。 ChainerX CUDA后端需要cuDNN。 请参见 安装 了解详细信息。 作为ChainerX 阵列 s有自己的计算图,出于安全考虑,禁止进行某些操作: 除非数组没有计算图形,否则禁止对其数据进行就地修改。 一 = 链子 . 0 (( 2 ,), 链子 . 浮动32 ) 一 . 要求_等级 () #在“a”上安装计算图形。 一 += 1 # ! 错误 这种限制的原因是,由于向后操作可能取决于 一 , 如果改变后向渐变,可能会意外地受到影响。 您可以通过创建断开连接的视图来绕过此限制: #与计算图形“A”断开连接的“A”的内存共享视图。 b = 一 . 作为坡度停止 () b += 1 然而,请注意,此操作本身就是危险的。 您应该格外小心,以确保这不会影响反向计算。 还要注意,我们可能会在将来进一步限制,以便仅在实际安全的情况下才允许对断开的视图进行就地修改。 如果数组用 变量 具有 requires_grad=真 (默认设置),您将无法重新分配阵列: 一 = 链子 . 0 (( 2 ,), 链子 . 浮动32 ) b = 链子 . 0 (( 2 ,), 链子 . 浮动32 ) 无功功率,无功功率 = 链子 . 变量 ( 一 ) 无功功率,无功功率 . 阵列 = b # ! 错误 您可以通过在 可变阵列 : 无功功率,无功功率 . 阵列 [:] = b 这种变通方法也可能像前面的限制一样危险。