Python 如何使用稀疏张量的TensorFlow映射函数

Python 如何使用稀疏张量的TensorFlow映射函数,python,tensorflow,Python,Tensorflow,我正在尝试运行TensorFlow代码。代码是用TensorFlow v1编写的,但我已经安装了v2。该代码用于可视化问答任务。这些问题将转换为未添加的整数列表。 在创建TF数据集之前,问题列表将转换为稀疏张量。首先使用以下代码将张量转换为稀疏列表: indices, values, dense_shape = \array_tools.nested_2d_list_to_sparse_array( questions_ints, ndim=max_q_l

我正在尝试运行TensorFlow代码。代码是用TensorFlow v1编写的,但我已经安装了v2。该代码用于可视化问答任务。这些问题将转换为未添加的整数列表。 在创建TF数据集之前,问题列表将转换为稀疏张量。首先使用以下代码将张量转换为稀疏列表:

        indices, values, dense_shape = \array_tools.nested_2d_list_to_sparse_array(
            questions_ints, ndim=max_q_len)
然后使用以下代码将索引、值和密集_形转换为稀疏张量:

      questions_sparse_tensor = tf.sparse.SparseTensor(
      indices=indices, dense_shape=dense_shape,values=values)
将其他几个张量中的问题\u稀疏\u张量连接起来,以创建任务的数据集

  sub_datasets = [
            tf.data.Dataset.from_tensor_slices(image_fnames),
            tf.data.Dataset.from_tensor_slices(questions_sparse_tensor),
            tf.data.Dataset.from_tensor_slices(question_lens)
                 ]
此子数据集还附加了其他几个张量。 最后,将张量传递给td.data.mp()函数

   dataset = dataset.map(input_parser,num_parallel_calls=1).prefetch(1* batch_size)
input_解析器是一种如下所示开始的方法:

def input_parser(im_fname, *args):
    assert len(args) in (2, 3, 5, 6, 7), 'unexpected number of args'
    q_indices, q_vals, q_out_shp = args[0]
    args = tuple([
        tf.sparse_to_dense(sparse_indices=q_indices,
                           sparse_values=q_vals,
                           output_shape=q_out_shp)] + list(args[1:]))

    # if no images should be returned, we just return their filenames
    if no_images:
        im = im_fname
    else:
        im_file = tf.read_file(self._images_dir + '/' +  )
        im = tf.image.decode_png(im_file, channels=3)
当代码到达以下行时:

q_indices, q_vals, q_out_shp = args[0]
我收到以下错误消息:

TypeError:在转换的代码中:

   d:/python_projects/fqa/train_model_on_figureqa_new.py: 236 
   input_parser  *
        q_indices,  q_vals, q_out_shp = args[0]

    TypeError: cannot unpack non-iterable 
    SparseTensor object
有人对如何解决这个问题有什么建议吗? 谢谢