(tensorflow 2.4.1)如何得到一个不规则的张量具有确定的最后一维形状?

问题描述

像这样:
'''

a = [1.0,2.0,3.0]
b = [[a,a,a],[a,a]]
c = tf.ragged.constant(b,dtype=tf.float32)

''' 我得到了一个形状为 [4,None,None] 的张量,但我期望 [4,3],

解决方法

根据文档 (https://www.tensorflow.org/api_docs/python/tf/RaggedTensor#uniform_inner_dimensions_2),要在参差不齐的张量上获得统一的内部维度,您需要从值的多维张量开始,以便 TensorFlow 知道该维度是统一的

对于您的示例案例,您可能希望首先制作 b 一个 16x3 矩阵,然后使用“from_row_”方法之一(例如 tf.RaggedTensor.from_row_lengths())将其划分为参差不齐的分割。例如。类似的东西

import numpy as np
import tensorflow as tf

a = np.array([1.0,2.0,3.0])
b = np.tile(a,(16,1))
c = tf.RaggedTensor.from_row_lengths(values= b,row_lengths = [4,3,7,2])

应该为您提供形状为 [4,None,3] 的参差不齐的张量。