此页面由 Cloud Translation API 翻译。
Switch to English

tf.keras.Model

TensorFlow 1版 GitHub上查看源代码

Model组层与训练和推理功能的对象。

继承: Layer

用在笔记本电脑

使用的指南使用教程

inputs 该模型的输入(一个或多个):一个keras.Input的对象或列表keras.Input对象。
outputs 该模型的输出(一个或多个)。请参阅下面的功能API的例子。
name 字符串,该模型的名称。

有两种方法来实例化一个Model

1 -随着“功能API”,你来自哪里开始Input ,你链路层调用指定型号的直传,最后您从投入和产出模型:

 import tensorflow as tf

inputs = tf.keras.Input(shape=(3,))
x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(inputs)
outputs = tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
 

2 -通过继承Model类:在这种情况下,你应该定义在图层__init__ ,你应该实现模型的直传call

 import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)

  def call(self, inputs):
    x = self.dense1(inputs)
    return self.dense2(x)

model = MyModel()
 

如果你的子类Model ,你可以有一个training的参数(布尔) call ,您可以使用指定的培训和推断不同的行为:

 import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
    self.dropout = tf.keras.layers.Dropout(0.5)

  def call(self, inputs, training=False):
    x = self.dense1(inputs)
    if training:
      x = self.dropout(x, training=training)
    return self.dense2(x)

model = MyModel()
 

一旦创建了模型,您可以配置与损失和指标与模型model.compile()与训练模型model.fit()或使用模型做预测与model.predict()

distribute_strategy tf.distribute.Strategy这种模式下创建的。
layers

metrics_names 返回所有产出模型的显示标签。

inputs = tf.keras.layers.Input(shape=(3,))
outputs = tf.keras.layers.Dense(2)(inputs)
model = tf.keras.models.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
model.metrics_names
[]
x = np.random.random((2, 3))
y = np.random.randint(0, 2, (2, 2))
model.fit(x, y)
model.metrics_names
['loss', 'mae']
inputs = tf.keras.layers.Input(shape=(3,))
d = tf.keras.layers.Dense(2, name='out')
output_1 = d(inputs)
output_2 = d(inputs)
model = tf.keras.models.Model(
   inputs=inputs, outputs=[output_1, output_2])
model.compile(optimizer="Adam", loss="mse", metrics=["mae", "acc"])
model.fit(x, (y, y))
model.metrics_names
['loss', 'out_loss', 'out_1_loss', 'out_mae', 'out_acc', 'out_1_mae',
'out_1_acc']

run_eagerly 可设置的属性,表示该模型是否应该急切地运行。

运行热切意味着你的模型将运行一步一个脚印,像Python代码。你的模型可能运行速度较慢,但​​它应该成为您更轻松地通过步入独立层调用调试。

默认情况下,我们将尝试编译模型静态图,提供最佳的执行性能。

方法

compile

查看源代码

配置用于培养模式。

参数
optimizer 字符串(优化的名称)或优化实例。见tf.keras.optimizers
loss 字符串(目标函数的名称),目标函数或tf.keras.losses.Loss实例。见tf.keras.losses 。一个目标函数是任何可调用与签名loss = fn(y_true, y_pred)其中y_true =具有形状地面真值= [batch_size, d0, .. dN]除稀疏损失功能,例如稀疏分类crossentropy其中形状= [batch_size, d0, .. dN-1] 。 y_pred =具有形状=预测值[batch_size, d0, .. dN]它返回加权损失浮动张量。如果自定义Loss使用实例并减少设置为NONE,返回值的形状[batch_size时,D0,.. DN-1],即。每样本或每时间步损失值;否则,它是一个标量。如果模型有多个输出,你可以通过字典或损失清单使用上的每个输出不同的损失。然后,将通过模型来最小化损失值将是所有个人损失的总和。
metrics 指标列表由模型训练和测试过程中进行评估。每个这样就可以了,函数或字符串(内置函数的名称) tf.keras.metrics.Metric实例。见tf.keras.metrics 。通常,将使用metrics=['accuracy']函数是任何可调用与签名result = fn(y_true, y_pred)以指定用于多输出模型的不同的输出不同的指标,也可以通过一个字典,例如metrics={'output_a': 'accuracy', 'output_b': ['accuracy', 'mse']}还可以传递度量的列表,如列表(LEN = LEN(输出)) metrics=[['accuracy'], ['accuracy', 'mse']]metrics=['accuracy', ['accuracy', 'mse']]当您通过串“准确性”或“ACC”,我们将其转换为一个tf.keras.metrics.BinaryAccuracytf.keras.metrics.CategoricalAccuracytf.keras.metrics.SparseCategoricalAccuracy基于损失函数使用和模型输出的形状。我们做字符串“crossentropy”和“CE”以及类似的转换。
loss_weights 可选列表或字典指定的标量系数(Python的浮动)与重不同的模型输出的损失贡献。然后,将通过该模型被最小化损失值将是所有单个损失的加权和 ,由加权loss_weights系数。如果列表,它预计将有一个1:1的映射模型的输出。如果一个字典,预计到输出名称(字符串),以标系数映射。
weighted_metrics 度量的列表,以进行评价和训练和测试过程中由sample_weight或class_weight加权。
run_eagerly 布尔。默认为False 。如果True ,这个Model的逻辑不会被包裹在一个tf.function 。建议保留此None除非你的Model不能在内部运行tf.function
**kwargs 任何额外的参数。支持的参数:

  • experimental_steps_per_execution :诠释。批次的数量以及每个期间运行tf.function通话。运行一个内部的多批次tf.function电话可以大大提高TPU的或小的模型与大型Python开销性能。注意,如果该值设置为NCallback.on_batch方法才会被调用每N批次。这目前默认为1 。至多,一个完整的时代将要运行的每个执行。如果一个数比历元的尺寸大通过,则执行将被截断为历元的大小。
  • sample_weight_mode为了向后兼容。

加薪
ValueError 在无效的情况下的参数optimizerlossmetrics

evaluate

查看源代码

返回在测试模式模型中的损耗值和指标值。

计算是分批进行(见batch_size ARG)。

参数
x 输入数据。它可能是:

  • 甲numpy的阵列(或阵列状),或(在情况下,模型具有多个输入)阵列的列表。
  • 甲TensorFlow张量,或(在情况下,模型具有多个输入)张量的列表。
  • 一个字典映射输入名字到相应的阵列/张量,如果模型已命名的输入。
  • 一个tf.data数据集。应该返回的任何一个元组(inputs, targets)(inputs, targets, sample_weights)
  • 发电机或者keras.utils.Sequence返回(inputs, targets)(inputs, targets, sample_weights)拆包行为迭代器类型(数据集,发电机,序列)的更详细的描述在给出Unpacking behavior for iterator-like inputs的部分Model.fit
y 目标数据。像输入数据x ,它可以是numpy的阵列(或多个)或TensorFlow张量(S)。它应符合x (你不能有numpy的投入和张量的目标,或者相反)。如果x是一个数据集,发电机或keras.utils.Sequence例如, y不应该被指定(因为靶将从迭代器/数据集来获得)。
batch_size 整数或None 。每批计算的样本数。如果未指定, batch_size将默认为32.不指定batch_size如果您的数据是在数据集中,发电机,或形式keras.utils.Sequence情况下(因为它们产生批次)。
verbose 0或1冗长模式。 0 =无声,1 =进度条。
sample_weight 权重测试样品的可选numpy的阵列,用于加权的损失函数。可以传递一个平坦的(1D)numpy的阵列相同的长度的输入的样品(1:权重和样品之间1名映射),或者在时间数据的情况下,可以通过2D阵列具有形状(samples, sequence_length) ,以不同的权重应用到每个样品的每一个时间步长。时不支持这一论点x是一个数据集,而不是通过样品重量作为第三元素x
steps 整数或None 。总数的声明全面完成评估前步骤(批量样品)。忽略与默认值None 。如果x是一个tf.data数据集和steps是无,“评估”将持续到数据集被耗尽。此参数不与阵列的输入支持。
callbacks 清单keras.callbacks.Callback实例。回调的清单评估过程中应用。见回调
max_queue_size 整数。用于发电机或keras.utils.Sequence唯一的输入。为发电机队列的最大尺寸。如果未指定, max_queue_size将默认为10。
workers 整数。用于发电机或keras.utils.Sequence唯一的输入。的最大进程数使用基于处理线程时旋转起来。如果未指定, workers将默认为1,如果为0,将执行主线程上的发电机。
use_multiprocessing 布尔。用于发电机或keras.utils.Sequence唯一的输入。如果True ,使用过程为基础的线程。如果未指定, use_multiprocessing将默认为False 。请注意,因为这实现依赖于多,你不应该通过非picklable参数发电机,因为它们不容易被传递给子进程。
return_dict 如果True ,损失和度量结果返回的字典,每个键为度量的名称。如果False ,他们正在返回一个列表。

见的讨论Unpacking behavior for iterator-like inputsModel.fit

返回
标量测试损失(如果模型具有单个输出,没有指标)标量或列表(如果模型具有多个输出和/或数据)。属性model.metrics_names会给你显示标签标量输出。

加薪
RuntimeError 如果model.evaluate被包裹在tf.function
ValueError 在参数无效的情况下。

evaluate_generator

查看源代码

对评估数据生成模型。 (废弃)

弃用:

Model.evaluate现在支持发电机,所以不再需要使用此端点。

fit

查看源代码

训练该模型对于固定数量的历元(在数据集上的迭代)的。

参数
x 输入数据。它可能是:

  • 甲numpy的阵列(或阵列状),或(在情况下,模型具有多个输入)阵列的列表。
  • 甲TensorFlow张量,或(在情况下,模型具有多个输入)张量的列表。
  • 一个字典映射输入名称到相应阵列/张量,如果模型已命名的输入。
  • 一个tf.data数据集。应该返回的任何一个元组(inputs, targets)(inputs, targets, sample_weights)
  • 发电机或者keras.utils.Sequence返回(inputs, targets)(inputs, targets, sample_weights)拆包行为迭代器类型(数据集,发电机,序列)的更详细的描述在下面给出。
y 目标数据。像输入数据x ,它可以是numpy的阵列(或多个)或TensorFlow张量(S)。它应符合x (你不能有numpy的投入和张量的目标,或者相反)。如果x是一个数据集,发电机或keras.utils.Sequence例如, y不应该被指定(因为靶将从中获得x )。
batch_size 整数或None 。每梯度更新的样品数。如果未指定, batch_size将默认为32,不要指定batch_size ,如果你的数据在数据集,发电机,或形式keras.utils.Sequence情况下(因为它们产生批次)。
epochs 整数。时代数训练模型。一个划时代在整个迭代xy提供的数据。请注意,在与结合initial_epochepochs将被理解为“最后时期”。该模型是不训练了数由下式给出迭代的epochs ,而只是直到指数的划时代epochs达到。
verbose 0,1,或2。冗长模式。 0 =无声,1 =进度条,每历元2 =一行。注意,记录到一个文件时,进度条,没有特别有用的,所以详细= 2时,建议没有交互的运行(例如,在生产环境中)。
callbacks 清单keras.callbacks.Callback实例。回调的清单训练过程中应用。见tf.keras.callbacks
validation_split 训练数据的0和1之间分数浮子以用作验证数据。该模型将分开设置的训练数据的该部分,不会在其上培养,并且将在每个历元的末尾评价该数据的丢失和任何模型的度量。该验证数据是从在最后的采样中选择xy提供的数据,重排之前。当不支持此论点x是一个数据集,发电机或keras.utils.Sequence实例。
validation_data 数据在其上评估损失,并在每个历元的端部的任何模型的度量。该模型将不会对这些数据进行训练。因此,请注意,数据的验证的损失使用提供的事实validation_splitvalidation_data不受正规化层像噪声和dropuout。 validation_data将覆盖validation_splitvalidation_data可能是:
  • 元组(x_val, y_val) numpy的阵列或张量的
  • 元组(x_val, y_val, val_sample_weights) numpy的阵列的
  • 数据集对于前两种情况, batch_size必须提供。对于后一种情况, validation_steps可以提供。需要注意的是validation_data不支持所有在支持的数据类型x ,如字典,发电机或keras.utils.Sequence
  • shuffle 布尔(是否洗牌每个历元前的训练数据)或STR(为“批处理”)。当这种说法被忽略x是发电机。 “批”是处理HDF5数据的限制,一个特殊的选项;它打乱批量大小的块。有没有效果时steps_per_epochNone
    class_weight 可选字典映射类指数(整数)的重量(浮点)值,用于加权的损失函数(仅在训练期间)。这可能是有用的从代表性不足的一流告诉模型“更加注重”来样订做。
    sample_weight 权重的训练样本,用于加权的损失函数的可选numpy的阵列(仅在训练期间)。可以传递一个平坦的(1D)numpy的阵列相同的长度的输入的样品(1:权重和样品之间1名映射),或者在时间数据的情况下,可以通过2D阵列具有形状(samples, sequence_length) ,以不同的权重应用到每个样品的每一个时间步长。时不支持这一论点x是一个数据集,发电机或keras.utils.Sequence例如,代替提供sample_weights作为第三元素x
    initial_epoch 整数。大纪元在此开始训练(用于恢复以前的跑步训练有用)。
    steps_per_epoch 整数或None 。宣布一个历元结束并且开始下一个历元之前的步骤(样品批次)总数。当与输入张量如TensorFlow数据张量训练,默认None等于在数据集中的样品通过批量大小,或1,如果不能判定的分割的数量。如果X是一个tf.data数据集,和“steps_per_epoch”是无,历元将运行,直到输入数据集被耗尽。当路过一个无限重复的数据集,您必须指定steps_per_epoch说法。此参数不与阵列的输入支持。
    validation_steps 只有相关的,如果validation_data提供,是一个tf.data数据集。的步骤总数(样品批次)在每个历元的末端执行验证时,在停止之前绘制。如果“validation_steps”是无,验证将运行,直到validation_data数据集被耗尽。在无限次重复的数据集的情况下,将运行到一个无限循环。如果指定了“validation_steps”和数据集的唯一部分会被消耗掉,评价将会从每个历元数据集的起点开始。这确保了相同的验证样品每次使用。
    validation_batch_size 整数或None 。每批次检验样本数。如果未指定,将默认batch_size 。不要指定validation_batch_size如果你的数据在数据集,发电机,或形式keras.utils.Sequence情况下(因为它们产生批次)。
    validation_freq 只有提供验证数据相关。整数或collections_abc.Container实例(如列表,元组等)。如果一个整数,指定许多培训时代怎样一个新的验证运行之前运行的执行,例如validation_freq=2的运行验证,每2个时代。如果一个容器,指定在其上运行验证历元,例如validation_freq=[1, 2, 10]在第1,第2,和第10时期的结束运行验证。
    max_queue_size 整数。用于发电机或keras.utils.Sequence唯一的输入。为发电机队列的最大尺寸。如果未指定, max_queue_size将默认为10。
    workers 整数。用于发电机或keras.utils.Sequence唯一的输入。的最大进程数使用基于处理线程时旋转起来。如果未指定, workers将默认为1,如果为0,将执行主线程上的发电机。
    use_multiprocessing 布尔。用于发电机或keras.utils.Sequence唯一的输入。如果True ,使用过程为基础的线程。如果未指定, use_multiprocessing将默认为False 。请注意,因为这实现依赖于多,你不应该通过非picklable参数发电机,因为它们不容易被传递给子进程。

    拆包行为迭代状输入:一个常见的图案被传递一个tf.data.Dataset,发电机或tf.keras.utils.Sequence到x配合的参数,这将在事实上产率不仅设有(x),但是任选目标(y)和样本权重。 Keras需要这样的迭代器喜欢的输出是毫不含糊的。迭代器应该返回长度为1,2或3,其中所述任选的第二和第三个元素将被分别用于y和sample_weight的元组。提供的任何其他类型将被包裹在一个长度的一个元组,有效治疗一切为x'。当收益类型的字典,他们仍然要坚持顶层元组结构。例如({"x0": x0, "x1": x1}, y) 。 Keras不会尝试从单一的字典的键分离的特点,目标和权重。一个显着的不支持的数据类型是namedtuple。其原因是,它的行为就像两个有序的数据类型(元组)和一个映射的数据类型(字典)。所以给出的形式的namedtuple: namedtuple("example_tuple", ["y", "x"])它是不明确是否解释值时反转元素的顺序。更糟糕的是以下形式的元组: namedtuple("other_tuple", ["x", "y", "z"])其中它是不明的,如果元组的目的,待分解为X,Y,和sample_weight或通过通过为单个元件,以x 。其结果是,数据处理代码只会引发ValueError如果遇到namedtuple。 (随着指令补救的问题。)

    返回
    一个History的对象。其History.history属性是培养在连续历元损失值和指标值,以及验证损耗值和验证度量的值(如果适用)的记录。

    加薪
    RuntimeError

    1. 如果模型从未编译或,
    2. 如果model.fit被包裹在tf.function
    ValueError 在所提供的输入数据,什么模型预期之间的不匹配的情况。

    fit_generator

    查看源代码

    适合对数据模型由一个Python发生器产生批次的批次。 (废弃)

    弃用:

    Model.fit现在支持发电机,所以不再需要使用此端点。

    get_layer

    查看源代码

    检索基于任一其名称(唯一的)或指数的层。

    如果nameindex都提供, index将优先考虑。指数基于水平图的遍历(自下而上)的顺序。

    参数
    name 字符串,命名层。
    index 整数,层的索引。

    返回
    一层实例。

    加薪
    ValueError 在无效层名称或索引的情况下。

    load_weights

    查看源代码

    加载所有层的权重,无论是从一个TensorFlow或HDF5重量文件。

    如果by_name是假的权重被加载基于网络的拓扑结构。这意味着架构应该是一样的,当重物被保存。请注意,没有权重层没有考虑拓扑排序,因此添加或删除层是罚款,只要他们没有权重。

    如果by_name是真,权重装入层只有当它们共享相同的名称。这是微调或在某些层已经改变了传递学习模型有用。

    只有拓扑加载( by_name=False )支持从TensorFlow格式装载重物时。需要注意的是拓扑装载不同TensorFlow和HDF5格式的用户定义的类继承之间略微tf.keras.Model :HDF5载荷基于权重的平面化列表上,而基于属性的物体本地名称TensorFlow格式负载到层被分配到Model的构造。

    参数
    filepath 字符串,路径权重文件来加载。对于TensorFlow形式的权重文件,这是文件的前缀(一样传递给save_weights )。
    by_name 布尔,无论是通过名称或拓扑为了装载重量。只有拓扑加载支持在TensorFlow形式的权重文件。
    skip_mismatch 布尔值,是否跳过层的装载其中存在权重的数量,或在配重的形状的失配(仅当有效的失配by_name=True )。
    options 可选tf.train.CheckpointOptions对象装载重物,指定选项。

    返回
    当加载在TensorFlow格式的重量文件,返回相同的状态对象作为tf.train.Checkpoint.restore 。当图形建设,恢复OPS是只要在网络上建立自动运行(在第一次调用用户定义的类继承Model ,如果立即将其已经内置)。

    当负载权重HDF5格式,返回None

    加薪
    ImportError 如果h5py不可用,重文件是HDF5格式。
    ValueError 如果skip_mismatch设置为Trueby_nameFalse

    make_predict_function

    查看源代码

    创建执行推理的一个步骤的功能。

    这种方法可以重写,以支持自定义的推理逻辑。此方法称为Model.predictModel.predict_on_batch

    典型地,该方法直接控制tf.functiontf.distribute.Strategy设置,和代表实际评估逻辑到Model.predict_step

    此功能被缓存在第一时间Model.predictModel.predict_on_batch被调用。每当清除缓存Model.compile被调用。

    返回
    功能。通过这种方法创建的函数应该接受一个tf.data.Iterator ,并返回的输出Model

    make_test_function

    查看源代码

    创建执行评估的一个步骤的功能。

    此法可重写,以支持自定义评估逻辑。此方法称为Model.evaluateModel.test_on_batch

    典型地,该方法直接控制tf.functiontf.distribute.Strategy设置,和代表实际评估逻辑到Model.test_step

    该功能被缓存在第一时间Model.evaluateModel.test_on_batch被调用。每当清除缓存Model.compile被调用。

    返回
    功能。通过这种方法创建的函数应该接受一个tf.data.Iterator ,并返回一个dict包含将被传递给值tf.keras.Callbacks.on_test_batch_end

    make_train_function

    查看源代码

    创建执行训练的一个步骤的功能。

    这种方法可以重写,以支持自定义逻辑训练。此方法称为Model.fitModel.train_on_batch

    典型地,该方法直接控制tf.functiontf.distribute.Strategy设置,和代表实际训练逻辑Model.train_step

    此功能被缓存在第一时间Model.fitModel.train_on_batch被调用。每当清除缓存Model.compile被调用。

    返回
    功能。通过这种方法创建的函数应该接受一个tf.data.Iterator ,并返回一个dict包含将被传递到的值tf.keras.Callbacks.on_train_batch_end ,如{'loss': 0.2, 'accuracy': 0.7}

    predict

    查看源代码

    生成用于输入样本输出的预测。

    计算是分批进行。这种方法是专为大规模投入绩效。对于输入,配合在一批中,直接使用少量__call__建议以加快执行速度,例如, model(x)model(x, training=False)如果你有层,例如tf.keras.layers.BatchNormalization那推理过程中的行为不同。另外,还要注意一个事实,即测试损失不受正规化层像噪音和辍学。

    参数
    x 输入样本。它可能是:

    • 甲numpy的阵列(或阵列状),或(在情况下,模型具有多个输入)阵列的列表。
    • 甲TensorFlow张量,或(在情况下,模型具有多个输入)张量的列表。
    • 一个tf.data数据集。
    • 发电机或者keras.utils.Sequence实例。拆包行为迭代器类型(数据集,发电机,序列)的更详细的描述在给出Unpacking behavior for iterator-like inputs的部分Model.fit
    batch_size 整数或None 。每批样品数。如果未指定, batch_size将默认为32.不指定batch_size ,如果你的数据在数据集中,发电机,或形式keras.utils.Sequence情况下(因为它们产生批次)。
    verbose 冗长模式,0或1。
    steps 总数的声明全面完成预测之前步骤(样品批次)。忽略与默认值None 。如果x是一个tf.data数据集和steps是无, predict将持续到输入数据集被耗尽。
    callbacks 清单keras.callbacks.Callback实例。回调的名单预测期间应用。见回调
    max_queue_size 整数。用于发电机或keras.utils.Sequence唯一的输入。为发电机队列的最大尺寸。如果未指定, max_queue_size将默认为10。
    workers 整数。用于发电机或keras.utils.Sequence唯一的输入。的最大进程数使用基于处理线程时旋转起来。如果未指定, workers将默认为1,如果为0,将执行主线程上的发电机。
    use_multiprocessing 布尔。用于发电机或keras.utils.Sequence唯一的输入。如果True ,使用过程为基础的线程。如果未指定, use_multiprocessing将默认为False 。请注意,因为这实现依赖于多,你不应该通过非picklable参数发电机,因为它们不容易被传递给子进程。

    见的讨论Unpacking behavior for iterator-like inputsModel.fit 。需要注意的是Model.predict使用相同的解释规则Model.fitModel.evaluate ,所以输入必须明确所有三种方法。

    返回
    预测numpy的阵列(或多个)。

    加薪
    RuntimeError 如果model.predict被包裹在tf.function
    ValueError 在所提供的输入数据和所述模型的期望之间匹配的情况下,或在壳体有状态模型接收多个样本不是批量大小的倍数。

    predict_generator

    查看源代码

    生成用于从数据发生器的输入的样品的预测。 (废弃)

    弃用:

    Model.predict现在支持发电机,所以不再需要使用此端点。

    predict_on_batch

    查看源代码

    返回预测为一个批次的样品。

    参数
    x 输入数据。它可以是: - 一个numpy的阵列(或阵列状),或(在情况下,模型具有多个输入)阵列的列表。 - 甲TensorFlow张量,或(在情况下,模型具有多个输入)张量的列表。

    返回
    预测numpy的阵列(或多个)。

    加薪
    RuntimeError 如果model.predict_on_batch被包裹在tf.function
    ValueError 在输入和模型的预期给定数量之间的失配的情况下

    predict_step

    查看源代码

    对于一个推理步骤的逻辑。

    这种方法可以重写,以支持自定义的推理逻辑。此方法称为Model.make_predict_function

    这种方法应该包含mathemetical逻辑推理的一个步骤。这通常包括直传。

    这个逻辑是如何运行(例如配置细节tf.functiontf.distribute.Strategy设置),应留给Model.make_predict_function ,这也可以被覆盖。

    参数
    data 的嵌套结构Tensor S上。

    返回
    一个推理步骤,调用的典型的输出的结果Model上的数据。

    reset_metrics

    查看源代码

    重置模型中的所有指标的状态。

    例子:

    inputs = tf.keras.layers.Input(shape=(3,))
    outputs = tf.keras.layers.Dense(2)(inputs)
    model = tf.keras.models.Model(inputs=inputs, outputs=outputs)
    model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
    
    x = np.random.random((2, 3))
    y = np.random.randint(0, 2, (2, 2))
    _ = model.fit(x, y, verbose=0)
    assert all(float(m.result()) for m in model.metrics)
    
    model.reset_metrics()
    assert all(float(m.result()) == 0 for m in model.metrics)
    

    reset_states

    查看源代码

    save

    查看源代码

    保存模型Tensorflow SavedModel或单个文件HDF5。

    该SAVEFILE包括:

    • 该模型的体系结构,允许重新实例模型。
    • 该模型的权重。
    • 优化的状态,从而恢复训练正是你离开的地方。

    这允许你保存模型的状态全部在一个文件中。

    保存的模型可以通过以下方式重新实例keras.models.load_model 。通过返回的模型load_model是编译模型就可以使用了(除非保存的模型从来没有在第一时间编译)。

    与顺序和功能API构建的模型可以保存到HDF5和SavedModel两种格式。子类车型只能保存与SavedModel格式。

    需要注意的是该模型权重可以被加载后有不同范围的名称。作用域名称包括模型/层的名称,如"dense_1/kernel:0" 。建议您使用图层属性来访问特定的变量,如model.get_layer("dense_1").kernel

    参数
    filepath 串,PathLike,路径SavedModel或H5文件保存模型。
    overwrite 是否以静默覆盖在所述目标位置的任何现有的文件,或者提供有手动促使用户。
    include_optimizer 如果真,保存优化器的状态一起。
    save_format 无论是'tf''h5' ,是否对模型保存到Tensorflow SavedModel或HDF5。默认为TF 1.x中的TF 2.X“TF”和“H5”
    signatures 签名保存与SavedModel。仅适用于该“TF”格式。请参阅signatures的参数tf.saved_model.save了解详情。
    options 可选tf.saved_model.SaveOptions对象保存到SavedModel指定选项。

    例:

     from keras.models import load_model
    
    model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'
    del model  # deletes the existing model
    
    # returns a compiled model
    # identical to the previous one
    model = load_model('my_model.h5')
     

    save_weights

    查看源代码

    保存所有层的权重。

    无论是保存在HDF5或基于该TensorFlow格式save_format说法。

    当HDF5格式保存,重文件有:

    • layer_names (属性),字符串列表(有序模型层的名称)。
    • 对于每一个层,一group名为layer.name
      • 对于每一个这样的层组,一组属性weight_names ,字符串列表(有序权重名张层)。
      • 对于在层每重量,储存的重量值的数据集,该张量重量命名。

    当在TensorFlow格式保存,由网络引用的所有对象都保存在相同的格式tf.train.Checkpoint ,包括任何Layer实例或Optimizer分配给对象属性的实例。用于使用输入和输出构成网络tf.keras.Model(inputs, outputs)Layer由网络使用的实例跟踪/自动保存。对于从继承用户定义的类tf.keras.ModelLayer实例必须被分配给对象的属性,典型地在构造。请参阅的文件tf.train.Checkpointtf.keras.Model了解详情。

    虽然格式都一样,不要混用save_weightstf.train.Checkpoint 。通过保存关卡Model.save_weights应该使用加载Model.load_weights 。使用保存的检查点tf.train.Checkpoint.save应使用相应的恢复tf.train.Checkpoint.restore 。身高tf.train.Checkpoint超过save_weights训练关卡。

    所述TensorFlow格式由起始于根对象,匹配的对象和变量selfsave_weights ,和贪婪地匹配的属性的名字。对于Model.save这是Model ,并Checkpoint.save这是Checkpoint即使Checkpoint有附加的典范。 This means saving a tf.keras.Model using save_weights and loading into a tf.train.Checkpoint with a Model attached (or vice versa) will not match the Model 's variables. See the guide to training checkpoints for details on the TensorFlow format.

    Arguments
    filepath String or PathLike, path to the file to save the weights to. When saving in TensorFlow format, this is the prefix used for checkpoint files (multiple files are generated). Note that the '.h5' suffix causes weights to be saved in HDF5 format.
    overwrite Whether to silently overwrite any existing file at the target location, or provide the user with a manual prompt.
    save_format Either 'tf' or 'h5'. A filepath ending in '.h5' or '.keras' will default to HDF5 if save_format is None . Otherwise None defaults to 'tf'.
    options Optional tf.train.CheckpointOptions object that specifies options for saving weights.

    Raises
    ImportError If h5py is not available when attempting to save in HDF5 format.
    ValueError For invalid/unknown format arguments.

    summary

    View source

    Prints a string summary of the network.

    Arguments
    line_length Total length of printed lines (eg set this to adapt the display to different terminal window sizes).
    positions Relative or absolute positions of log elements in each line. If not provided, defaults to [.33, .55, .67, 1.] .
    print_fn Print function to use. Defaults to print . It will be called on each line of the summary. You can set it to a custom function in order to capture the string summary.

    Raises
    ValueError if summary() is called before the model is built.

    test_on_batch

    View source

    Test the model on a single batch of samples.

    Arguments
    x Input data. It could be: - A Numpy array (or array-like), or a list of arrays (in case the model has multiple inputs). - A TensorFlow tensor, or a list of tensors (in case the model has multiple inputs).

    • A dict mapping input names to the corresponding array/tensors, if the model has named inputs.
    y Target data. Like the input data x , it could be either Numpy array(s) or TensorFlow tensor(s). It should be consistent with x (you cannot have Numpy inputs and tensor targets, or inversely).
    sample_weight Optional array of the same length as x, containing weights to apply to the model's loss for each sample. In the case of temporal data, you can pass a 2D array with shape (samples, sequence_length), to apply a different weight to every timestep of every sample.
    reset_metrics If True , the metrics returned will be only for this batch. If False , the metrics will be statefully accumulated across batches.
    return_dict If True , loss and metric results are returned as a dict, with each key being the name of the metric. If False , they are returned as a list.

    Returns
    Scalar test loss (if the model has a single output and no metrics) or list of scalars (if the model has multiple outputs and/or metrics). The attribute model.metrics_names will give you the display labels for the scalar outputs.

    Raises
    RuntimeError If model.test_on_batch is wrapped in tf.function .
    ValueError In case of invalid user-provided arguments.

    test_step

    View source

    The logic for one evaluation step.

    This method can be overridden to support custom evaluation logic. This method is called by Model.make_test_function .

    This function should contain the mathemetical logic for one step of evaluation. This typically includes the forward pass, loss calculation, and metrics updates.

    Configuration details for how this logic is run (eg tf.function and tf.distribute.Strategy settings), should be left to Model.make_test_function , which can also be overridden.

    Arguments
    data A nested structure of Tensor s.

    Returns
    A dict containing values that will be passed to tf.keras.callbacks.CallbackList.on_train_batch_end . Typically, the values of the Model 's metrics are returned.

    to_json

    View source

    Returns a JSON string containing the network configuration.

    To load a network from a JSON save file, use keras.models.model_from_json(json_string, custom_objects={}) .

    Arguments
    **kwargs Additional keyword arguments to be passed to json.dumps() .

    Returns
    A JSON string.

    to_yaml

    View source

    Returns a yaml string containing the network configuration.

    To load a network from a yaml save file, use keras.models.model_from_yaml(yaml_string, custom_objects={}) .

    custom_objects should be a dictionary mapping the names of custom losses / layers / etc to the corresponding functions / classes.

    Arguments
    **kwargs Additional keyword arguments to be passed to yaml.dump() .

    Returns
    A YAML string.

    Raises
    ImportError if yaml module is not found.

    train_on_batch

    View source

    Runs a single gradient update on a single batch of data.

    Arguments
    x Input data. It could be:

    • A Numpy array (or array-like), or a list of arrays (in case the model has multiple inputs).
    • A TensorFlow tensor, or a list of tensors (in case the model has multiple inputs).
    • A dict mapping input names to the corresponding array/tensors, if the model has named inputs.
    y Target data. Like the input data x , it could be either Numpy array(s) or TensorFlow tensor(s). It should be consistent with x (you cannot have Numpy inputs and tensor targets, or inversely).
    sample_weight Optional array of the same length as x, containing weights to apply to the model's loss for each sample. In the case of temporal data, you can pass a 2D array with shape (samples, sequence_length), to apply a different weight to every timestep of every sample.
    class_weight Optional dictionary mapping class indices (integers) to a weight (float) to apply to the model's loss for the samples from this class during training. This can be useful to tell the model to "pay more attention" to samples from an under-represented class.
    reset_metrics If True , the metrics returned will be only for this batch. If False , the metrics will be statefully accumulated across batches.
    return_dict If True , loss and metric results are returned as a dict, with each key being the name of the metric. If False , they are returned as a list.

    Returns
    Scalar training loss (if the model has a single output and no metrics) or list of scalars (if the model has multiple outputs and/or metrics). The attribute model.metrics_names will give you the display labels for the scalar outputs.

    Raises
    RuntimeError If model.train_on_batch is wrapped in tf.function .
    ValueError In case of invalid user-provided arguments.

    train_step

    View source

    The logic for one training step.

    This method can be overridden to support custom training logic. This method is called by Model.make_train_function .

    This method should contain the mathemetical logic for one step of training. This typically includes the forward pass, loss calculation, backpropagation, and metric updates.

    Configuration details for how this logic is run (eg tf.function and tf.distribute.Strategy settings), should be left to Model.make_train_function , which can also be overridden.

    Arguments
    data A nested structure of Tensor s.

    Returns
    A dict containing values that will be passed to tf.keras.callbacks.CallbackList.on_train_batch_end . Typically, the values of the Model 's metrics are returned. Example: {'loss': 0.2, 'accuracy': 0.7} .