keras_19_工具Utils

1. keras.utils下面的api

  • CustomObjectScope

    • 提供一个无法转义的_GLOBAL_CUSTOM_OBJECTS 范围。with 语句中的代码将能够通过名称访问自定义对象。 对全局自定义对象的更改会在封闭的 with语句中持续存在。 在with语句结束时, 全局自定义对象将恢复到 with 语句开始时的状态。

      # 考虑自定义对象 MyObject (例如一个类):
      with CustomObjectScope({'MyObject':MyObject}):
          layer = Dense(..., kernel_regularizer='MyObject')
          # 保存,加载等操作将按这个名称来识别自定义对象
  • HDF5Matrix

    • 使用 HDF5 数据集表示,而不是 Numpy 数组。

      x_data = HDF5Matrix('input/file.hdf5', 'data')
      model.predict(x_data)
      # 提供 start 和 end 将允许使用数据集的一个切片。
      # 你还可以给出标准化函数(或 lambda)(可选)。 这将在检索到的每一个数据切片上调用它。
  • Sequence

    • 用于拟合数据序列的基类,例如一个数据集。每一个 Sequence 必须实现 __getitem____len__ 方法。 如果你想在迭代之间修改你的数据集,你可以实现 on_epoch_end__getitem__ 方法应该范围一个完整的批次。注意Sequence 是进行多进程处理更安全的方法。这种结构保证网络在每个时期每个样本只训练一次,这与生成器不同。

      from skimage.io import imread
      from skimage.transform import resize
      import numpy as np
      import math
      
      # 这里,`x_set` 是图像的路径列表
      # 以及 `y_set` 是对应的类别
      
      class CIFAR10Sequence(Sequence):
      
          def __init__(self, x_set, y_set, batch_size):
              self.x, self.y = x_set, y_set
              self.batch_size = batch_size
      
          def __len__(self):
              return math.ceil(len(self.x) / self.batch_size)
      
          def __getitem__(self, idx):
              batch_x = self.x[idx * self.batch_size:(idx + 1) * self.batch_size]
              batch_y = self.y[idx * self.batch_size:(idx + 1) * self.batch_size]
      
              return np.array([
                  resize(imread(file_name), (200, 200))
                     for file_name in batch_x]), np.array(batch_y)
  • to_categorical

    • 将类向量(整数)转换为二进制类矩阵。对向量中每个元素执行one-hot编码。一般后面接categorical_crossentropy。
  • normalize

    • 标准化一个 Numpy 数组。
  • get_file

    • 从一个 URL 下载文件,如果它不存在缓存中。默认情况下,URL origin处的文件 被下载到缓存目录 〜/.keras 中, 放在缓存子目录 datasets中,并命名为 fname。 文件 example.txt 的最终位置为 ~/.keras/datasets/example.txt。tar, tar.gz, tar.bz, 以及 zip 格式的文件也可以被解压。 传递一个哈希值将在下载后校验文件。 命令行程序 shasumsha256sum 可以计算哈希。
    • 返回值:下载的文件的存在本地的路径。
  • print_summary

    • 打印模型概况。
  • plot_model

    • 将 Keras 模型转换为 dot 格式并保存到文件中。
  • multi_gpu_model

    • 将模型复制到不同的 GPU 上。具体来说,该功能实现了单机多 GPU 数据并行性。 它的工作原理如下:
      • 将模型的输入分成多个子批次。
      • 在每个子批次上应用模型副本。 每个模型副本都在专用 GPU 上执行。
      • 结果(在 CPU 上)连接成一个大批量。
    • 例如, 如果你的 batch_size 是 64,且你使用 gpus=2, 那么我们将把输入分为两个 32 个样本的子批次, 在 1 个 GPU 上处理 1 个子批次,然后返回完整批次的 64 个处理过的样本。这实现了多达 8 个 GPU准线性加速。此功能目前仅适用于 TensorFlow 后端
    • 返回值:一个 Keras Model 实例,它可以像初始 model 参数一样使用,但它将工作负载分布在多个 GPU 上。
    • 多GPU模型的保存:要保存多 GPU 模型,请通过模板模型(传递给 multi_gpu_model 的参数)调用 .save(fname) 或 .save_weights(fname) 以进行存储,而不是通过 multi_gpu_model 返回的模型。

猜你喜欢

转载自www.cnblogs.com/LS1314/p/10380700.html