例如,我有
123
1234
12345
1234556
1234567890
像这样创建全局填充很容易
0000000123
0000001234
0000012345
0001234556
1234567890
但是我想填充每个由dataset api批处理生成的数据。例如,批次大小为3的情况下,随机抽取3个样本
123
1234
12345
然后像这样填充它
00123
01234
12345
例如,我可以在numpy中这样做,但这是在tf api中构造批处理的方式:
data = tf.data.Dataset.from_tensor_slices((X, y))
data = data.apply(tf.data.experimental.shuffle_and_repeat(buffer_size=len(y)))
data = data.batch(batch_size, drop_remainder=False)
data = data.prefetch(2)
发布于 2019-05-15 04:41:17
如果我没理解错的话,你可以这样做:
import os
data = """123
1234
12345"""
lines = data.splitlines()
max_len = max((len(i) for i in lines))
lines = (i.rjust(max_len, '0') for i in lines)
data = os.linesep.join(lines)
print(data)
输出:
00123
01234
12345
发布于 2020-07-15 19:27:43
如果我没弄错,你可以使用keras pad_sequences:
sequence = np.array([[1,2], [1, 2, 3, 4], [1, 2, 3,4, 5, 6]])
tf.keras.preprocessing.sequence.pad_sequences(sequence, padding='pre', value=0)
array([[0, 0, 0, 0, 1, 2],
[0, 0, 1, 2, 3, 4],
[1, 2, 3, 4, 5, 6]])
https://stackoverflow.com/questions/56138097
复制相似问题