Python 将未知形状的张量转换为tensorflow中的稀疏传感器

Python 将未知形状的张量转换为tensorflow中的稀疏传感器,python,tensorflow,neural-network,deep-learning,Python,Tensorflow,Neural Network,Deep Learning,我有一个形状部分未知的张量和一个掩码——一个形状相同的张量,填充了1.0或0.0——我想把它转换成一个稀疏传感器,只考虑掩码中1.0对应的项。所以,我想我必须选择这样的方式: import tensorflow as tf tf.reset_default_graph() tf.set_random_seed(23) BATCH = 3 LENGTH = None dense = tf.placeholder(shape=[BATCH, LENGTH], dtype=tf.float32,

我有一个形状部分未知的张量和一个掩码——一个形状相同的张量,填充了
1.0
0.0
——我想把它转换成一个稀疏传感器,只考虑掩码中
1.0
对应的项。所以,我想我必须选择这样的方式:

import tensorflow as tf

tf.reset_default_graph()
tf.set_random_seed(23)

BATCH = 3
LENGTH = None

dense = tf.placeholder(shape=[BATCH, LENGTH], dtype=tf.float32, name='dense')
mask = tf.placeholder(shape=[BATCH, LENGTH], dtype=tf.float32, name='mask')
indices = tf.where(tf.equal(mask, 0.0))
values = tf.gather_nd(dense, indices)
在这一点上,我不知道如何继续,因为我尝试的两种方法都以不同的错误告终,如下所示。第一:

sparse = tf.SparseTensor(indices, values, shape=tf.shape(dense))
ValueError: Tensor conversion requested dtype int64 for Tensor with dtype int32: 'Tensor("Shape:0", shape=(2,), dtype=int32)'
第二点:

sparse = tf.SparseTensor(indices, values, shape=dense.get_shape())
ValueError: Cannot convert a partially known TensorShape to a Tensor: (3, ?)
第三:

sparse = tf.SparseTensor(indices, values, shape=[BATCH, LENGTH])
TypeError: Expected int64, got None of type '_Message' instead.

有什么提示吗?谢谢

在我的案例中,第一种方法将形状转换为
shape=tf.cast(tf.shape(dense),tf.int64)
解决了上述错误。

在我的案例中,第一种方法将形状转换为
shape=tf.cast(tf.shape(dense),tf.int64)
解决了上述错误。

在你的案例中,SparseTensor的形状不就是[批次,长度]?@abhisheknaik96。添加了第三个错误,这是我使用显式
[BATCH,LENGTH]
列表得到的。我明白了。我可以问一下如何设置长度变量吗?@Abhisheknakaik96它本来是空的,我把它放在代码中只是为了在我的测试中更容易设置它。在你的情况下,SparseTensor的形状不就是[批处理,长度]?@abhisheknaik96尝试过了。添加了第三个错误,这是我使用显式
[BATCH,LENGTH]
列表得到的。我明白了。我可以问一下如何设置长度变量吗?@abhisheknaik96它是空的,我把它放在代码中只是为了在我的测试中更容易设置它。