Нет простого способа дополнить или усечь, но вы можете использовать функцию map
, чтобы получить набор данных, содержащий элементы с желаемой длиной. Вот быстрый пример:
k = 4
def pad_or_trunc(t):
dim = tf.size(t)
return tf.cond(tf.equal(dim, k), lambda: t, lambda: tf.cond(tf.greater(dim, k), lambda: tf.slice(t, [0], [k]), lambda: tf.concat([t, tf.zeros(k-dim, dtype=tf.int32)], 0)))
vals = tf.constant([[1, 1, 1], [2, 2, 2], [3, 3, 3]])
dset1 = tf.data.Dataset.from_tensor_slices(vals)
dset2 = dset1.map(pad_or_trunc)
iter = dset2.make_one_shot_iterator()
with tf.Session() as sess:
while True:
try:
print(sess.run(iter.get_next()))
except tf.errors.OutOfRangeError:
break