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 格式的文件也可以被解压。 传递一个哈希值将在下载后校验文件。 命令行程序shasum
和sha256sum
可以计算哈希。 - 返回值:下载的文件的存在本地的路径。
- 从一个 URL 下载文件,如果它不存在缓存中。默认情况下,URL
-
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 返回的模型。
- 将模型复制到不同的 GPU 上。具体来说,该功能实现了单机多 GPU 数据并行性。 它的工作原理如下: