返回

轻松掌握TensorFlow 2.x Keras模型训练与评估,探索深度学习的奥秘

人工智能

在上一篇《Keras 模型构建》的文章中,我们介绍了在 TensorFlow 2.x 版本中使用 Keras 构建模型的三种方法。本篇将在上一篇的基础上,着重介绍使用 Keras 模型进行本地训练、评估以及预测的流程和方法。

Keras 模型有两种训练评估的方式,一种方式是使用 tf.keras.Model.fit() 方法,另一种方式是使用 tf.keras.Model.compile() 和 tf.keras.Model.evaluate() 方法。

使用 tf.keras.Model.fit() 方法

tf.keras.Model.fit() 方法是一个非常方便的方法,它可以同时完成模型的编译和训练。该方法的语法如下:

model.fit(x, y, epochs=1, batch_size=32, validation_data=None, shuffle=True, verbose=0, callbacks=None, **kwargs)

其中,

  • x:训练数据。
  • y:训练数据对应的标签。
  • epochs:训练的轮数。
  • batch_size:每个批次的大小。
  • validation_data:验证数据。
  • shuffle:是否在训练前对数据进行打乱。
  • verbose:训练过程中是否输出日志信息。
  • callbacks:一个回调函数列表。
  • **kwargs:其他参数。

使用 tf.keras.Model.fit() 方法训练模型的步骤如下:

  1. 准备训练数据和验证数据。
  2. 构建 Keras 模型。
  3. 调用 tf.keras.Model.fit() 方法训练模型。

例如,以下代码演示了如何使用 tf.keras.Model.fit() 方法训练一个二分类模型:

import tensorflow as tf

# 准备训练数据和验证数据
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

# 构建 Keras 模型
model = tf.keras.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test))

使用 tf.keras.Model.compile() 和 tf.keras.Model.evaluate() 方法

使用 tf.keras.Model.compile() 和 tf.keras.Model.evaluate() 方法训练和评估模型的步骤如下:

  1. 准备训练数据和验证数据。
  2. 构建 Keras 模型。
  3. 调用 tf.keras.Model.compile() 方法编译模型。
  4. 调用 tf.keras.Model.evaluate() 方法评估模型。

例如,以下代码演示了如何使用 tf.keras.Model.compile() 和 tf.keras.Model.evaluate() 方法训练和评估一个二分类模型:

import tensorflow as tf

# 准备训练数据和验证数据
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

# 构建 Keras 模型
model = tf.keras.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)

# 评估模型
model.evaluate(x_test, y_test)

模型评估

在训练模型之后,我们需要评估模型的性能。我们可以使用 tf.keras.Model.evaluate() 方法来评估模型的性能。该方法的语法如下:

model.evaluate(x, y, batch_size=32, verbose=1, sample_weight=None, steps=None, callbacks=None, **kwargs)

其中,

  • x:评估数据。
  • y:评估数据对应的标签。
  • batch_size:每个批次的大小。
  • verbose:评估过程中是否输出日志信息。
  • sample_weight:每个样本的权重。
  • steps:评估的步数。
  • callbacks:一个回调函数列表。
  • **kwargs:其他参数。

使用 tf.keras.Model.evaluate() 方法评估模型的步骤如下:

  1. 准备评估数据。
  2. 构建 Keras 模型。
  3. 调用 tf.keras.Model.evaluate() 方法评估模型。

例如,以下代码演示了如何使用 tf.keras.Model.evaluate() 方法评估一个二分类模型:

import tensorflow as tf

# 准备评估数据
(x_test, y_test) = tf.keras.datasets.mnist.load_data()

# 构建 Keras 模型
model = tf.keras.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 评估模型
model.evaluate(x_test, y_test)

模型预测

在训练和评估模型之后,我们可以使用 tf.keras.Model.predict() 方法来预测新数据。该方法的语法如下:

model.predict(x, batch_size=32, verbose=0, steps=None, callbacks=None, **kwargs)

其中,

  • x:预测数据。
  • batch_size:每个批次的大小。
  • verbose:预测过程中是否输出日志信息。
  • steps:预测的步数。
  • callbacks:一个回调函数列表。
  • **kwargs:其他参数。

使用 tf.keras.Model.predict() 方法预测数据的步骤如下:

  1. 准备预测数据。
  2. 构建 Keras 模型。
  3. 调用 tf.keras.Model.predict() 方法预测数据。

例如,以下代码演示了如何使用 tf.keras.Model.predict() 方法预测一个二分类模型:

import tensorflow as tf

# 准备预测数据
x_new = np.array([[1, 2, 3], [4, 5, 6]])

# 构建 Keras 模型
model = tf.keras.Sequential([
  tf.keras.layers.Flatten(input_shape=(3,)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(2, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 预测数据
y_pred = model.predict(x_new)

总结

在这篇文章中,我们介绍了如何在 TensorFlow 2.x 中使用 Keras 模型进行本地训练、评估和预测。我们还介绍了如何使用 tf.keras.Model.fit() 方法、tf.keras.Model.compile() 和 tf.keras.Model.evaluate() 方法来训练和评估模型。最后,我们介绍了如何使用 tf.keras.Model.predict() 方法来预测新数据。