Tensorflow中的函数

1. tf.contrib.data.map_and_batch

tf.contrib.data.map_and_batch(
    map_func,
    batch_size,
    num_parallel_batches=None,
    drop_remainder=False,
    num_parallel_calls=None 
)

复合实现map和batch。
map_func横跨dataset的batch_size个连续元素,然后将它们组合成一个batch。在功能上,它相当于map 后面跟着batch。但是,通过将两个转换融合在一起,实现可以更有效。在API中展示此转换是暂时的。一旦自动输入管道的优化实现了,map和batch的融合会自动发生,这个API将被弃用。

参数:

map_func:将tensor的嵌套结构映射到另一个tensor嵌套结构的函数。

batch_size:tf.int64,标量tf.Tensor,表示要在此数据集合并的单个batch中的连续元素数。

num_parallel_batches:(可选)tf.int64,标量tf.Tensor,表示要并行创建的batch数。一方面,较高的值可以帮助减轻落后者的影响。另一方面,如果CPU空闲,较高的值可能会增加竞争。

 

drop_remainder:(可选)tf.bool,标量tf.Tensor,表示是否应丢弃最后一个batch,以防其大小小于所需值; 默认行为是不删除较小的batch。

num_parallel_calls:(可选)tf.int32,标量tf.Tensor,表示要并行处理的元素数。如果未指定,则将并行处理batch_size * num_parallel_batches个元素。

返回:
一个Dataset转换函数,它可以传递给 tf.data.Dataset.apply。

2. tf.contrib.data.parallel_interleave

tf.contrib.data.parallel_interleave(
    map_func,
    cycle_length,
    block_length=1,
    sloppy=False,
    buffer_output_elements=None,
    prefetch_input_elements=None 
)

Dataset.interleave()变换的并行版本。

parallel_interleave()映射map_func通过输入以生成嵌套数据集,并且输出其元素隔行交错。与tf.data.Dataset.interleave不同的是 ,它从cycle_length嵌套数据集中并行的获取元素,从而增加了吞吐量,尤其是在存在落后者的情况下。此外,sloppy参数可以用来提高性能,通过放宽在确定性顺序中产生输出的要求,并允许实现跳过在请求时数据元素未准备好的嵌套数据集。

用法示例:

# Preprocess 4 files concurrently.
filenames = tf.data.Dataset.list_files("/path/to/data/train*.tfrecords")
dataset = filenames.apply(
    tf.contrib.data.parallel_interleave(
        lambda filename: tf.data.TFRecordDataset(filename),
        cycle_length=4))

警告:如果sloppy是True,则生成的元素的顺序不确定。

参数:

map_func:一个函数,将嵌套结构的tensor映射到一个Dataset。

cycle_length:Dataset并行交错输入的数量。

block_length:Dataset在前进到下一个输入之前从输入Dataset中拉出的连续元素的数量 。

sloppy:如果为false,则元素以确定的顺序生成。否则,为了方便起见,允许以非确定性顺序生成元素。

buffer_output_elements:应该缓冲的每个迭代器交错的元素数量(每个交叉迭代器的转换,类似于.prefetch())。

prefetch_input_elements:在需要交错之前,转换为迭代器的输入元素的数量。

返回:

一个Dataset转换函数,它可以传递给 tf.data.Dataset.apply。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow的`slim`函数是一个用于构建和管理神经网络的高级API。它是TensorFlow的一个子模块,提供了一组方便的函数和类,可以简化模型的定义和训练过程。 `slim`函数主要用于定义神经网络的结构,包括卷积层、池化层、全连接层等。通过使用`slim`函数,你可以更加简洁地定义和组织复杂的神经网络模型。 下面是一个使用`slim`函数定义一个简单卷积神经网络的例子: ```python import tensorflow as tf import tensorflow.contrib.slim as slim def my_model(inputs): with slim.arg_scope([slim.conv2d, slim.fully_connected], activation_fn=tf.nn.relu): net = slim.conv2d(inputs, 32, [3, 3]) net = slim.max_pool2d(net, [2, 2]) net = slim.conv2d(net, 64, [3, 3]) net = slim.max_pool2d(net, [2, 2]) net = slim.flatten(net) net = slim.fully_connected(net, 128) net = slim.dropout(net, 0.5) outputs = slim.fully_connected(net, num_classes, activation_fn=None) return outputs # 构建输入张量 inputs = tf.placeholder(tf.float32, [None, 32, 32, 3]) # 构建模型 outputs = my_model(inputs) # ... 接下来可以进行训练、评估等操作 ``` 在这个例子,通过调用`slim.conv2d`、`slim.max_pool2d`、`slim.fully_connected`等函数,可以方便地构建卷积神经网络。`slim.arg_scope`函数可以设置一些默认参数,使得代码更加简洁。 总的来说,`slim`函数提供了一种更加高级、便捷的方式来定义和管理神经网络模型,在TensorFlow被广泛使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值