程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

关于 tf.data.TextLineDataset() 和常见dataset函数

发布于2019-08-07 14:35     阅读(3055)     评论(0)     点赞(3)     收藏(2)


  1. 官方原话:
  2. class TextLineDataset(dataset_ops.Dataset):
  3. """A `Dataset` comprising lines from one or more text files."""
  4. def __init__(self, filenames, compression_type=None, buffer_size=None):
  5. Creates a `TextLineDataset`.
  6. Args:
  7. filenames: A `tf.string` tensor containing one or more filenames.
  8. compression_type: (Optional.) A `tf.string` scalar evaluating to one of
  9. `""` (no compression), `"ZLIB"`, or `"GZIP"`.
  10. buffer_size: (Optional.) A `tf.int64` scalar denoting the number of bytes
  11. to buffer. A value of 0 results in the default buffering values chosen
  12. based on the compression type.


中文含义:
创造一个TextLineDataset()类
参数:
    filenames:                   单个或者多个string格式的文件名或者目录
    compression_type:   可选!!!格式是ZLIB或者GZIP
    buffer_size:                 可选!!!决定缓冲字节数多少

  1. 举例:
  2. # 文件路径可以用list包括起来,多个路径
  3. input_files = ['./input_file11', './input_file22']
  4. dataset = tf.data.TextLineDataset(input_files)

tf.data.TextLineDataset 接口提供了一种方法从数据文件中读取。我们提供只需要提供文件名(1个或者多个)。这个接口会自动构造一个dataset,类中保存的元素:文中一行,就是一个元素,是string类型的tensor

小知识:支持data包下多个函数的操作,目前深度学习中最常用的有4个方法如下

1.map():对元素进行操作

  1. 格式:
  2. map(函数)
  3. # map里面的函数决定了dataset中的数据的处理方式。列如:
  4. dataset.map(Lambda string:tf.string_split([string]).values)
  5. # dataset中元素命名为string,对string进行切割操作
  6. '''
  7. 注:
  8. tf.string_split(
  9. source,
  10. delimiter=' ',
  11. skip_empty=True
  12. )
  13. source:需要操作的对象,一般是字符串或者多个字符串构成的列表;
  14. delimiter:分割符,默认空字符串
  15. skip_empty:m默认True,暂时没用到过
  16. '''

关于代码里面的tf.string_split可以看另外一篇文档:https://blog.csdn.net/xinjieyuan/article/details/90698352

2.shuttle()

  1. 打乱元素的序列
  2. 其实就是随机组合

3.zip()

可以把不同的dataset组合起来

  1. # 生成两个不同的dataset
  2. dataset1 = tf.data.Dataset.from_tensor_slices(tf.random_uniform([4, 10]))
  3. dataset2 = tf.data.Dataset.from_tensor_slices(
  4. (tf.random_uniform([4]),
  5. tf.random_uniform([4, 100], maxval=100, dtype=tf.int32)))
  6. # 进行组合
  7. dataset3 = tf.data.Dataset.zip((dataset1, dataset2))
  8. '''
  9. 注:
  10. 使用zip()函数时候,注意要把多个dataset用括号包起来
  11. 不然会报:
  12. TypeError: zip() takes 1 positional argument but 2 were given
  13. '''

4.filter()

过滤符合要求的元素

  1. # 设置过滤器
  2. def FilterLength(src_len,trg_len):
  3. len_ok = tf.logical_andgic(
  4. tf.greater(src_len,1), # src_len大于1,返回True
  5. tf.less_equal(trg_len,MAX_LEN) # trg_len小于MAX_LEN,返回True
  6. )
  7. return len_ok
  8. # 调用过滤器,过滤不符合条件的元素
  9. dataset = dataset.filter(FilterLength)

 



所属网站分类: 技术文章 > 博客

作者:9384vfnv

链接:https://www.pythonheidong.com/blog/article/11355/c07be21394189c8534ff/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)