【问题标题】:Unable to evaluate dense tensor obtained from a complex sparse tensor in tensorflow无法评估从张量流中的复杂稀疏张量获得的密集张量
【发布时间】:2016-09-30 16:41:23
【问题描述】:

我无法评估/打印/运行从 tensorflow 库中的复杂稀疏张量获得的密集张量。我目前在 macosx(仅限 cpu)中使用 tensorflow 的 build #234。

import tensorflow as tf

a = tf.SparseTensor(indices=[[0, 0, 0], [1, 2, 1]], values=[1.0+2j, 2.0], shape=[3, 4, 2])

b = tf.sparse_tensor_to_dense(a, default_value=0.0)

sess = tf.Session()

sess.run(b)

返回以下错误:

InvalidArgumentError (see above for traceback): No OpKernel was registered to support Op 'SparseToDense' with these attrs. Registered kernels:
device='CPU'; T in [DT_INT64]; Tindices in [DT_INT32]
device='CPU'; T in [DT_INT64]; Tindices in [DT_INT64]
device='CPU'; T in [DT_INT32]; Tindices in [DT_INT32]
device='CPU'; T in [DT_INT32]; Tindices in [DT_INT64]
device='CPU'; T in [DT_UINT16]; Tindices in [DT_INT32]
device='CPU'; T in [DT_UINT16]; Tindices in [DT_INT64]
device='CPU'; T in [DT_INT16]; Tindices in [DT_INT32]
device='CPU'; T in [DT_INT16]; Tindices in [DT_INT64]
device='CPU'; T in [DT_UINT8]; Tindices in [DT_INT32]
device='CPU'; T in [DT_UINT8]; Tindices in [DT_INT64]
device='CPU'; T in [DT_INT8]; Tindices in [DT_INT32]
device='CPU'; T in [DT_INT8]; Tindices in [DT_INT64]
device='CPU'; T in [DT_HALF]; Tindices in [DT_INT32]
device='CPU'; T in [DT_HALF]; Tindices in [DT_INT64]
device='CPU'; T in [DT_FLOAT]; Tindices in [DT_INT32]
device='CPU'; T in [DT_FLOAT]; Tindices in [DT_INT64]
device='CPU'; T in [DT_DOUBLE]; Tindices in [DT_INT32]
device='CPU'; T in [DT_DOUBLE]; Tindices in [DT_INT64]
device='CPU'; T in [DT_BOOL]; Tindices in [DT_INT32]
device='CPU'; T in [DT_BOOL]; Tindices in [DT_INT64]
device='CPU'; T in [DT_STRING]; Tindices in [DT_INT32]
device='CPU'; T in [DT_STRING]; Tindices in [DT_INT64]

 [[Node: SparseToDense_3 = SparseToDense[T=DT_COMPLEX128, Tindices=DT_INT64, validate_indices=true](SparseTensor_2/indices, SparseTensor_2/shape, SparseTensor_2/values, SparseToDense_3/default_value)]]

我也试过了:

br = tf.real(b)

sess.run(br)

但是,这会产生与上述相同的错误。

但请注意,以下操作正常:

x = tf.ones((3,3), dtype=tf.complex128)

sess.run(x)

提前感谢您的帮助!

【问题讨论】:

    标签: tensorflow sparse-matrix


    【解决方案1】:

    看起来 tf.sparse_tensor_to_dense 还不支持复数。我已经尝试丢失 +2j 组件,并且它起作用了。我认为错误转储试图告诉您 sparse_tensor_to_dense 不支持复杂类型,并列出它支持的类型。

    【讨论】:

    • 谢谢。我也是这么想的。自己包含复杂的数据类型会非常困难吗?可能是通过修改源代码?
    猜你喜欢
    • 2019-08-02
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多