【发布时间】: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