像这样:
'''
a = [1.0, 2.0, 3.0]
b = [[a, a, a, a], [a, a, a], [a, a, a, a, a, a, a], [a, a]]
c = tf.ragged.constant(b, dtype=tf.float32)
''' 我得到了一个形状为 [4, None, None] 的张量,但我期望 [4, None, 3],
像这样:
'''
a = [1.0, 2.0, 3.0]
b = [[a, a, a, a], [a, a, a], [a, a, a, a, a, a, a], [a, a]]
c = tf.ragged.constant(b, dtype=tf.float32)
''' 我得到了一个形状为 [4, None, None] 的张量,但我期望 [4, None, 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])
应该让你得到你想要的参差不齐的张量 shape [4,None,3]
。