Python tf.sparse.reformate(tf.sparse.split()):类型错误:输入必须是SparseTensor
我试图在张量流上将稠密矩阵转换为稀疏矩阵计算。在使用Python tf.sparse.reformate(tf.sparse.split()):类型错误:输入必须是SparseTensor,python,tensorflow,tensorflow2.0,Python,Tensorflow,Tensorflow2.0,我试图在张量流上将稠密矩阵转换为稀疏矩阵计算。在使用tf.sparse.split()后尝试重塑时出错。下面是一个玩具示例来演示此问题 张量流密集矩阵 import numpy as np import tensorflow as tf a = np.array([[1, 0, 2, 0,0,1], [3, 0, 0, 4,1,0]]) a_t = tf.constant(a) a_t_rshp = tf.reshape(tf.split(a_t,2,axis = 1),[2,2,3]) a
tf.sparse.split(
)后尝试重塑
时出错。下面是一个玩具示例来演示此问题
张量流密集矩阵
import numpy as np
import tensorflow as tf
a = np.array([[1, 0, 2, 0,0,1], [3, 0, 0, 4,1,0]])
a_t = tf.constant(a)
a_t_rshp = tf.reshape(tf.split(a_t,2,axis = 1),[2,2,3])
a_t_st = tf.sparse.from_dense(a_t)
a_t_st_rshp = tf.sparse.reshape(tf.sparse.split(a_t_st,2,axis = 1),[2,2,3])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-3dff37aef5b4> in <module>
----> 1 a_t_st_rshp = tf.sparse.reshape(tf.sparse.split(a_t_st,2,axis = 1),[2,2,3])
/Users/Mine/Python/tf2_4_env/lib/python3.6/site-packages/tensorflow/python/ops/sparse_ops.py in sparse_reshape(sp_input, shape, name)
886 ValueError: If `shape` has more than one inferred (== -1) dimension.
887 """
--> 888 sp_input = _convert_to_sparse_tensor(sp_input)
889 shape = math_ops.cast(shape, dtype=dtypes.int64)
890
/Users/Mine/Python/tf2_4_env/lib/python3.6/site-packages/tensorflow/python/ops/sparse_ops.py in _convert_to_sparse_tensor(sp_input)
70 return sparse_tensor.SparseTensor.from_value(sp_input)
71 if not isinstance(sp_input, sparse_tensor.SparseTensor):
---> 72 raise TypeError("Input must be a SparseTensor.")
73 return sp_input
74
张量流稀疏矩阵
import numpy as np
import tensorflow as tf
a = np.array([[1, 0, 2, 0,0,1], [3, 0, 0, 4,1,0]])
a_t = tf.constant(a)
a_t_rshp = tf.reshape(tf.split(a_t,2,axis = 1),[2,2,3])
a_t_st = tf.sparse.from_dense(a_t)
a_t_st_rshp = tf.sparse.reshape(tf.sparse.split(a_t_st,2,axis = 1),[2,2,3])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-3dff37aef5b4> in <module>
----> 1 a_t_st_rshp = tf.sparse.reshape(tf.sparse.split(a_t_st,2,axis = 1),[2,2,3])
/Users/Mine/Python/tf2_4_env/lib/python3.6/site-packages/tensorflow/python/ops/sparse_ops.py in sparse_reshape(sp_input, shape, name)
886 ValueError: If `shape` has more than one inferred (== -1) dimension.
887 """
--> 888 sp_input = _convert_to_sparse_tensor(sp_input)
889 shape = math_ops.cast(shape, dtype=dtypes.int64)
890
/Users/Mine/Python/tf2_4_env/lib/python3.6/site-packages/tensorflow/python/ops/sparse_ops.py in _convert_to_sparse_tensor(sp_input)
70 return sparse_tensor.SparseTensor.from_value(sp_input)
71 if not isinstance(sp_input, sparse_tensor.SparseTensor):
---> 72 raise TypeError("Input must be a SparseTensor.")
73 return sp_input
74
a_t_st=tf.sparse.from_dense(a_t)
a_t_st_rshp=tf.sparse.reforme(tf.sparse.split(a_t_st,2,axis=1),[2,2,3])
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
---->1 a_t_st_rshp=tf.sparse.reformate(tf.sparse.split(a_t_st,2,axis=1),[2,2,3])
/稀疏整形中的Users/Mine/Python/tf2_4_env/lib/python3.6/site-packages/tensorflow/Python/ops/sparse_ops.py(sp_输入、形状、名称)
886 ValueError:如果“shape”有多个推断的(=-1)维度。
887 """
-->888 sp\u输入=\u转换\u到\u稀疏\u张量(sp\u输入)
889 shape=math_ops.cast(shape,dtype=dtypes.int64)
890
/Users/Mine/Python/tf2_4_env/lib/python3.6/site-packages/tensorflow/Python/ops/sparse_ops.py in_convert_to_sparse_tensor(sp_输入)
70从_值(sp_输入)返回稀疏_张量稀疏传感器
71如果不存在(sp_输入、稀疏张量、稀疏传感器):
--->72 raise TYPE ERROR(“输入必须是SparseTensor。”)
73返回sp_输入
74
你能帮我解决这个问题吗?我对你的代码没有任何问题。我正在运行python 3.7和tf 2.4,你使用的是什么版本?@CrazyBrazilian你试过运行
a_t_st=tf.sparse.from_dense(a_t)a_st_rshp=tf.sparse.reformate(tf.sparse.split(a_t_st,2,axis=1),[2,2,3])
?版本:Python 3.6.4和TensorFlow 2.4.0这似乎是TensorFlow中的错误,您能在TensorFlow github报告中提出这个问题吗?谢谢!