繁体   English   中英

从 Tensorflow 数据集中提取特征和标签

[英]Extract features and labels from a Tensorflow Dataset

我有一个从文本文件中读取行的 TextLineDataset。

该数据集读取文件并以滑动窗口方式返回,例如,如果我的文本文件包含:

I am going to school
School is far from home

我的数据集返回:

I am going
am going to
going to school
...

(假设我一次想要 3 个单词,每一步从一个单词开始滑动)

我很高兴。

但现在我想,对于数据集返回的每个句子,提取前 2 个词并说它们是我的特征,并提取最后一个词并说它是我的标签

当然,我希望它成为计算图的一部分(如我的数据集),而不是在运行时

这是我的代码:

sentences = tf.data.TextLineDataset("data/train.src")
words = sentences.map(lambda string: tf.string_split([string]).values)
flat_words = words.flat_map(tf.data.Dataset.from_tensor_slices)

flat_words = flat_words.window(3, 1, 1, True).flat_map(lambda x: x.batch(3)).batch(4)

iterator = flat_words.make_initializable_iterator()
next_element = iterator.get_next()

sess = tf.Session()
sess.run(tf.tables_initializer())
sess.run(iterator.initializer)

print(sess.run(next_element))

提前致谢

您可以再插入一个映射函数。 像这样的东西会将除最后一个单词之外的所有单词映射为一组特征,并将最后一个单词映射为标签:

def map_to_feats_and_lbl(x):
  return x[:-1], x[-1]

我们可以插入这样的内容:

flat_words = flat_words \
  .window(3, 1, 1, True) \
  .flat_map(lambda x: x.batch(3)) \
  .map(map_to_feats_and_lbl) \
  .batch(4)

并以与您已经在做的类似的方式使用:

iterator = flat_words.make_initializable_iterator()
feats, label = iterator.get_next()


sess = tf.Session()
sess.run(tf.tables_initializer())
sess.run(iterator.initializer)

feat_val, label_val = sess.run([feats, label])
print (feat_val)
print (label_val)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM