utils 工具

    提供定制类的作用域,在该作用域内全局定制类能够被更改,但在作用域结束后将回到初始状态。以声明开头的代码将能够通过名字访问定制类的实例,在with的作用范围,这些定制类的变动将一直持续,在with作用域结束后,全局定制类的实例将回归其在with作用域前的状态。

    1. with CustomObjectScope({"MyObject":MyObject}):
    2. layer = Dense(..., W_regularizer="MyObject")
    3. # save, load, etc. will recognize custom object by name

    HDF5Matrix

    1. keras.utils.io_utils.HDF5Matrix(datapath, dataset, start=0, end=None, normalizer=None)

    这是一个使用HDF5数据集代替Numpy数组的方法

    提供startend参数可以进行切片,另外,还可以提供一个正规化函数或匿名函数,该函数将会在每片数据检索时自动调用。

    1. x_data = HDF5Matrix('input/file.hdf5', 'data')
    2. model.predict(x_data)
    • datapath: 字符串,HDF5文件的路径
    • dataset: 字符串,在datapath路径下HDF5数据库名字
    • start: 整数,想要的数据切片起点
    • normalizer: 在每个切片数据检索时自动调用的函数对象
    1. keras.utils.data_utils.Sequence()

    序列数据的基类,例如一个数据集。每个Sequence必须实现getitemlen方法

    下面是一个例子:

    1. from skimage.io import imread
    2. from skimage.transform import resize
    3. import numpy as np
    4. __Here, `x_set` is list of path to the images__
    5. # and `y_set` are the associated classes.
    6. class CIFAR10Sequence(Sequence):
    7. self.X,self.y = x_set,y_set
    8. self.batch_size = batch_size
    9. def __len__(self):
    10. return len(self.X) // self.batch_size
    11. def __getitem__(self,idx):
    12. batch_x = self.X[idx*self.batch_size:(idx+1)*self.batch_size]
    13. batch_y = self.y[idx*self.batch_size:(idx+1)*self.batch_size]
    14. return np.array([
    15. resize(imread(file_name), (200,200))
    16. for file_name in batch_x]), np.array(batch_y)

    to_categorical

    将类别向量(从0到nb_classes的整数向量)映射为二值类别矩阵, 用于应用到以categorical_crossentropy为目标函数的模型中.

    • num_classes:总共类别数
    1. normalize(x, axis=-1, order=2)

    对numpy数组规范化,返回规范化后的数组

    参数

    • x:待规范化的数据
    • axis: 规范化的轴
    • order:规范化方法,如2为L2范数

    custom_object_scope

    1. custom_object_scope()

    提供定制类的作用域,在该作用域内全局定制类能够被更改,但在作用域结束后将回到初始状态。以with声明开头的代码将能够通过名字访问定制类的实例,在with的作用范围,这些定制类的变动将一直持续,在with作用域结束后,全局定制类的实例将回归其在with作用域前的状态。

    本函数返回CustomObjectScope对象

    1. with custom_object_scope({"MyObject":MyObject}):
    2. # save, load, etc. will recognize custom object by name
    1. get_custom_objects()

    检索全局定制类,推荐利用custom_object_scope更新和清理定制对象,但get_custom_objects可被直接用于访问_GLOBAL_CUSTOM_OBJECTS。本函数返回从名称到类别映射的全局字典。

    1. get_custom_objects().clear()
    2. get_custom_objects()["MyObject"] = MyObject

    convert_all_kernels_in_model

    plot_model

    1. plot_model(model, to_file='model.png', show_shapes=False, show_layer_names=True)

    绘制模型的结构图

    serialize_keras_object

    1. serialize_keras_object(instance)

    将keras对象序列化

    1. eserialize_keras_object(identifier, module_objects=None, custom_objects=None, printable_module_name='object')

    从序列中恢复keras对象

    get_file

    1. get_file(fname, origin, untar=False, md5_hash=None, file_hash=None, cache_subdir='datasets', hash_algorithm='auto', extract=False, archive_format='auto', cache_dir=None)

    从给定的URL中下载文件, 可以传递MD5值用于数据校验(下载后或已经缓存的数据均可)

    默认情况下文件会被下载到~/.keras中的cache_subdir文件夹,并将其文件名设为fname,因此例如一个文件example.txt最终将会被存放在`~/.keras/datasets/example.txt~

    tar,tar.gz.tar.bz和zip格式的文件可以被提取,提供哈希码可以在下载后校验文件。命令喊程序shasumsha256sum可以计算哈希值。

    参数

    • fname: 文件名,如果指定了绝对路径/path/to/file.txt,则文件将会保存到该位置。

    • origin: 文件的URL地址

    • untar: 布尔值,是否要进行解压

    • md5_hash: MD5哈希值,用于数据校验,支持sha256md5哈希

    • hash_algorithm: 选择文件校验的哈希算法,可选项有'md5', 'sha256', 和'auto'. 默认'auto'自动检测使用的哈希算法

    • extract: 若为True则试图提取文件,例如tar或zip tries extracting the file as an Archive, like tar or zip.

    • archive_format: 试图提取的文件格式,可选为'auto', 'tar', 'zip', 和None. 'tar' 包括tar, tar.gz, tar.bz文件. 默认'auto'是['tar', 'zip']. None或空列表将返回没有匹配。
    • cache_dir: 缓存文件存放地在,参考

    下载后的文件地址

    multi_gpu_model

    将模型在多个GPU上复制

    特别地,该函数用于单机多卡的数据并行支持,它按照下面的方式工作:

    (1)将模型的输入分为多个子batch(2)在每个设备上调用各自的模型,对各自的数据集运行(3)将结果连接为一个大的batch(在CPU上)

    例如,你的batch_size是64而gpus=2,则输入会被分为两个大小为32的子batch,在两个GPU上分别运行,通过连接后返回大小为64的结果。 该函数线性的增加了训练速度,最高支持8卡并行。

    该函数只能在tf后端下使用

    参数如下:

    • gpus: 大或等于2的整数,要并行的GPU数目。

    该函数返回Keras模型对象,它看起来跟普通的keras模型一样,但实际上分布在多个GPU上。