首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用tensorflow dataset api批量填充最大序列长度?

如何使用tensorflow dataset api批量填充最大序列长度?
EN

Stack Overflow用户
提问于 2019-05-15 04:25:19
回答 2查看 1.2K关注 0票数 1

例如,我有

代码语言:javascript
复制
123
1234
12345
1234556
1234567890

像这样创建全局填充很容易

代码语言:javascript
复制
0000000123
0000001234
0000012345
0001234556
1234567890

但是我想填充每个由dataset api批处理生成的数据。例如,批次大小为3的情况下,随机抽取3个样本

代码语言:javascript
复制
123
1234
12345

然后像这样填充它

代码语言:javascript
复制
00123
01234
12345

例如,我可以在numpy中这样做,但这是在tf api中构造批处理的方式:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2019-05-15 04:41:17

如果我没理解错的话,你可以这样做:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
00123
01234
12345
票数 0
EN

Stack Overflow用户

发布于 2020-07-15 19:27:43

如果我没弄错,你可以使用keras pad_sequences:

代码语言:javascript
复制
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]])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56138097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档