轻松掌握TensorFlow 2.x Keras模型训练与评估,探索深度学习的奥秘
2023-09-05 22:58:52
在上一篇《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() 方法训练模型的步骤如下:
- 准备训练数据和验证数据。
- 构建 Keras 模型。
- 调用 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() 方法训练和评估模型的步骤如下:
- 准备训练数据和验证数据。
- 构建 Keras 模型。
- 调用 tf.keras.Model.compile() 方法编译模型。
- 调用 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() 方法评估模型的步骤如下:
- 准备评估数据。
- 构建 Keras 模型。
- 调用 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() 方法预测数据的步骤如下:
- 准备预测数据。
- 构建 Keras 模型。
- 调用 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() 方法来预测新数据。