10个算法从业人员必须知道的TensorFlow技巧

作者:Rohan Jagtap
编译:ronghuaiyang
导读
掌握这些可以更高效的模型的提高开发效率 。

10个算法从业人员必须知道的TensorFlow技巧

文章插图
 
TensorFlow 2.x在构建模型和TensorFlow的整体使用方面提供了很多简单性 。那么TF2有什么新变化呢?
  • 使用Keras轻松构建模型,立即执行 。
  • 可在任何平台上进行强大的模型部署 。
  • 强大的研究实验 。
  • 通过清理过时的API和减少重复来简化API 。
在本文中,我们将探索TF 2.0的10个特性,这些特性使得使用TensorFlow更加顺畅,减少了代码行数并提高了效率 。
1(a). tf.data 构建输入管道tf.data提供了数据管道和相关操作的功能 。我们可以建立管道,映射预处理函数,洗牌或批处理数据集等等 。
从tensors构建管道>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1])>>> iter(dataset).next().numpy()8构建Batch并打乱# Shuffle>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).shuffle(6)>>> iter(dataset).next().numpy()0# Batch>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).batch(2)>>> iter(dataset).next().numpy()array([8, 3], dtype=int32)# Shuffle and Batch>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).shuffle(6).batch(2)>>> iter(dataset).next().numpy()array([3, 0], dtype=int32)把两个Datsets压缩成一个>>> dataset0 = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1])>>> dataset1 = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6])>>> dataset = tf.data.Dataset.zip((dataset0, dataset1))>>> iter(dataset).next()(<tf.Tensor: shape=(), dtype=int32, numpy=8>, <tf.Tensor: shape=(), dtype=int32, numpy=1>)映射外部函数def into_2(num):     return num * 2    >>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).map(into_2)>>> iter(dataset).next().numpy()161(b). ImageDataGenerator这是tensorflow.keras API的最佳特性之一 。ImageDataGenerator能够在批处理和预处理以及数据增强的同时实时生成数据集切片 。
生成器允许直接从目录或数据目录中生成数据流 。
ImageDataGenerator中关于数据增强的一个误解是,它向现有数据集添加了更多的数据 。虽然这是数据增强的实际定义,但是在ImageDataGenerator中,数据集中的图像在训练的不同步骤被动态地变换,使模型可以在未见过的有噪数据上进行训练 。
train_datagen = ImageDataGenerator(        rescale=1./255,        shear_range=0.2,        zoom_range=0.2,        horizontal_flip=True)在这里,对所有样本进行重新缩放(用于归一化),而其他参数用于增强 。
train_generator = train_datagen.flow_from_directory(        'data/train',        target_size=(150, 150),        batch_size=32,        class_mode='binary')我们为实时数据流指定目录 。这也可以使用dataframes来完成 。
train_generator = flow_from_dataframe(    dataframe,    x_col='filename',    y_col='class',    class_mode='categorical',    batch_size=32)


    推荐阅读