set_random_seed
函数tf_keras.utils.set_random_seed(seed)
为程序(Python、NumPy 和 TensorFlow)设置所有随机种子。
您可以使用此实用程序使几乎任何 TF-Keras 程序完全确定。在涉及网络通信的情况下(例如,参数服务器分布),以及在涉及某些不确定的 cuDNN 操作时,会存在一些限制,这会产生额外的随机性来源。
调用此实用程序等效于以下操作
import random
import numpy as np
import tensorflow as tf
random.seed(seed)
np.random.seed(seed)
tf.random.set_seed(seed)
参数
split_dataset
函数tf_keras.utils.split_dataset(
dataset, left_size=None, right_size=None, shuffle=False, seed=None
)
将数据集拆分为左半部分和右半部分(例如,训练集/测试集)。
参数
tf.data.Dataset
对象,或具有相同长度的数组列表/元组。[0, 1]
内),则表示要打包到左侧数据集中的数据比例。如果为整数,则表示要打包到左侧数据集中的样本数。如果为 None
,则使用 right_size
的补集。默认为 None
。[0, 1]
内),则表示要打包到右侧数据集中的数据比例。如果为整数,则表示要打包到右侧数据集中的样本数。如果为 None
,则使用 left_size
的补集。默认为 None
。返回值
tf.data.Dataset
对象的元组:左侧和右侧拆分。示例
>>> data = np.random.random(size=(1000, 4))
>>> left_ds, right_ds = tf.keras.utils.split_dataset(data, left_size=0.8)
>>> int(left_ds.cardinality())
800
>>> int(right_ds.cardinality())
200
get_file
函数tf_keras.utils.get_file(
fname=None,
origin=None,
untar=False,
md5_hash=None,
file_hash=None,
cache_subdir="datasets",
hash_algorithm="auto",
extract=False,
archive_format="auto",
cache_dir=None,
)
如果文件不在缓存中,则从 URL 下载文件。
默认情况下,URL origin
上的文件将下载到缓存目录 ~/.keras
,放置在缓存子目录 datasets
中,并给定文件名 fname
。因此,文件 example.txt
的最终位置将为 ~/.keras/datasets/example.txt
。
tar、tar.gz、tar.bz 和 zip 格式的文件也可以解压缩。传递哈希值将在下载后验证文件。命令行程序 shasum
和 sha256sum
可以计算哈希值。
示例
path_to_downloaded_file = tf.keras.utils.get_file(
origin="https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz",
extract=True,
)
参数
/path/to/file.txt
,则文件将保存在该位置。如果为 None
,则将使用 origin
处的文件名。extract
参数。布尔值,是否应解压缩文件file_hash
参数。用于验证文件的 md5 哈希值/path/to/folder
,则文件将保存在该位置。'md5'
、'sha256'
和 'auto'
。默认的“auto”会检测正在使用的哈希算法。'auto'
、'tar'
、'zip'
和 None
。'tar'
包括 tar、tar.gz 和 tar.bz 文件。默认的 'auto'
对应于 ['tar', 'zip']
。None 或空列表将返回未找到匹配项。~/.keras/
。返回值
下载文件的路径。
⚠️ 恶意下载警告 ⚠️
从 Internet 下载内容存在风险。如果您不信任来源,请勿下载任何文件/存档。我们建议您指定 file_hash
参数(如果知道源文件的哈希值),以确保您获取的文件是您期望的文件。
Progbar
类tf_keras.utils.Progbar(
target, width=30, verbose=1, interval=0.05, stateful_metrics=None, unit_name="step"
)
显示进度条。
参数
Sequence
类tf_keras.utils.Sequence()
用于拟合数据序列(如数据集)的基本对象。
每个 Sequence
必须实现 __getitem__
和 __len__
方法。如果要在 epoch 之间修改数据集,则可以实现 on_epoch_end
。__getitem__
方法应返回一个完整的批次。
注意
Sequence
是一种更安全的多进程方式。此结构保证了网络每个 epoch 只会在每个样本上训练一次,而生成器则不会这样。
示例
from skimage.io import imread
from skimage.transform import resize
import numpy as np
import math
# Here, `x_set` is list of path to the images
# and `y_set` are the associated classes.
class CIFAR10Sequence(tf.keras.utils.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):
low = idx * self.batch_size
# Cap upper bound at array length; the last batch may be smaller
# if the total number of items is not a multiple of batch size.
high = min(low + self.batch_size, len(self.x))
batch_x = self.x[low:high]
batch_y = self.y[low:high]
return np.array([
resize(imread(file_name), (200, 200))
for file_name in batch_x]), np.array(batch_y)
to_categorical
函数tf_keras.utils.to_categorical(y, num_classes=None, dtype="float32")
将类向量(整数)转换为二进制类矩阵。
例如,用于 categorical_crossentropy
。
参数
num_classes - 1
的整数)的类数组。None
,则将其推断为 max(y) + 1
。'float32'
。返回值
输入作为 NumPy 数组的二进制矩阵表示。类轴位于最后。
示例
>>> a = tf.keras.utils.to_categorical([0, 1, 2, 3], num_classes=4)
>>> print(a)
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
>>> b = tf.constant([.9, .04, .03, .03,
... .3, .45, .15, .13,
... .04, .01, .94, .05,
... .12, .21, .5, .17],
... shape=[4, 4])
>>> loss = tf.keras.backend.categorical_crossentropy(a, b)
>>> print(np.around(loss, 5))
[0.10536 0.82807 0.1011 1.77196]
>>> loss = tf.keras.backend.categorical_crossentropy(a, a)
>>> print(np.around(loss, 5))
[0. 0. 0. 0.]
to_ordinal
函数tf_keras.utils.to_ordinal(y, num_classes=None, dtype="float32")
将类向量(整数)转换为有序回归矩阵。
此实用程序将类向量编码为有序回归/分类矩阵,其中每个样本由一行表示,该样本的等级由该行中的 1 的数量表示。
参数
num_classes - 1
的整数)的类数组。None
,则将其推断为 max(y) + 1
。'float32'
。返回值
输入作为 NumPy 数组的有序回归矩阵表示。类轴位于最后。
示例
>>> a = tf.keras.utils.to_ordinal([0, 1, 2, 3], num_classes=4)
>>> print(a)
[[0. 0. 0.]
[1. 0. 0.]
[1. 1. 0.]
[1. 1. 1.]]
normalize
函数tf_keras.utils.normalize(x, axis=-1, order=2)
标准化 Numpy 数组。
参数
order=2
)。返回值
数组的标准化副本。