2016-09-30 41 views
0

我無法評估/打印/運行張量流庫中複雜稀疏張量獲得的稠密張量。我目前在macosx中使用tensorflow的構建#234(僅限cpu)。無法評估張量流中由復稀疏張量獲得的稠密張量

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) 

感謝您的幫助提前!

回答

0

看起來像tf.sparse_tensor_to_dense不支持複數。我曾嘗試損失+ 2j組件,並且它工作正常。我認爲錯誤轉儲試圖告訴你,sparse_tensor_to_dense不支持複雜類型,並列出它支持的類型。

+0

謝謝。這也是我的想法。我們自己包含複雜的數據類型會難以想象嗎?可能是通過修改源代碼? – QED