Python 如何使用稀疏张量的TensorFlow映射函数
我正在尝试运行TensorFlow代码。代码是用TensorFlow v1编写的,但我已经安装了v2。该代码用于可视化问答任务。这些问题将转换为未添加的整数列表。 在创建TF数据集之前,问题列表将转换为稀疏张量。首先使用以下代码将张量转换为稀疏列表: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
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
有人对如何解决这个问题有什么建议吗?
谢谢