【问题标题】:Does Tensorflow have optimizers for compute graphs involving complex64 tensors?Tensorflow 是否具有用于涉及 complex64 张量的计算图的优化器?
【发布时间】:2016-02-23 18:59:21
【问题描述】:

以下代码的 tf.float32 版本有效。但是,当我们尝试运行以下命令时,我们得到了一个异常(在我们尝试定义优化器的那一行)。

import tensorflow as tf
tf.InteractiveSession()

complex_weights = tf.Variable(tf.complex(tf.truncated_normal([3, 4]), 
                                         tf.truncated_normal([3, 4])))

complex_target = tf.complex(tf.zeros([3,4]), 
                            tf.zeros([3,4]))
loss = tf.reduce_mean(tf.pow(tf.real(complex_weights - complex_target), 2))
optimizer = tf.train.AdamOptimizer(1.0).minimize(loss)

这是来自堆栈顶部的错误消息:

....../local/lib/python2.7/site-packages/tensorflow/python/training/optimizer.pyc in _assert_valid_dtypes(self, tensors)
    352         raise ValueError(
    353             "Invalid type %r for %s, expected: %s." % (
--> 354                 dtype, t.name, [v for v in valid_dtypes]))
    355 
    356   # --------------

ValueError: Invalid type tf.complex64 for Variable_3:0, expected: [tf.float32].

这是否意味着在尝试进行优化时不支持将复数作为中间步骤?没有手动编码复数运算,有什么变通办法吗?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    是的,您遇到了没有复杂支持的中间操作。请参阅question 获取一些指向代码的指针,您可以在其中查看为哪些设备注册了哪些数据类型。总的来说,我认为复杂的支持相当少,大多数操作都不支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2017-07-26
      • 2018-03-24
      • 1970-01-01
      • 2011-07-12
      • 2022-12-05
      • 1970-01-01
      相关资源
      最近更新 更多