将训练数据在模型中训练一定次数,返回loss和测量指标
model.fit( ) 参数:
model.fit(x, y, batch_size, epochs, verbose, validation_split, validation_data, validation_freq)
|
x
|
输入
|
|
y
|
输出
|
|
batch_size
|
每一个batch的大小(批尺寸),即训练一次网络所用的样本数
|
|
epochs
|
迭代次数,即全部样本数据将被“
轮
”多少次,轮完训练停止
|
|
verbose
|
0:不输出信息;1:显示进度条(一般默认为1);2:每个epoch输出一行记录;
|
|
validation_split
|
(0,1)的浮点数,分割数据当验证数据,其它当训练数据
|
|
validation_data
|
指定验证数据,该数据将覆盖validation_spilt设定的数据
|
|
validation_freq
|
指定验证数据的epoch
|
|
callback
|
在每个training/epoch/batch结束时,可以通过回调函数Callbacks查看一些内部信息。常用的callback有
EarlyStopping
,当监视的变量停止改善时,停止训练,防止模型过拟合,其默认参数如下:
|
callback=callbacks.EarlyStopping(monitor='loss',min_delta=0.002,patience=0,mode='auto',restore_best_weights=False)
-
monitor:监视量,一般是loss。
-
min_delta:监视量改变的最小值,如果监视量的改变绝对值比min_delta小,这次就不算监视量改善,具体是增大还是减小看mode
-
patience:如发现监视量loss相比上一个epoch训练没有下降,则经过patience个epoch后停止训练
-
mode:在min模式训练,如果监视量停止下降则终止训练;在max模式下,如果监视量停止上升则停止训练。监视量使用acc时就要用max,使用loss时就要用min。
-
restore_best_weights:是否把模型权重设为训练效果最好的epoch。如果为False,最终模型权重是最后一次训练的权重
model.fit( )返回值
model.fit( )函数返回一个History的对象,即记录了loss和其他指标的数值随epoch变化的情况。
model
.
fit
()
函数
参数含义
fit
( x, y,
batch
_size=32, epochs=10, verbose=1, callbacks=None,validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0)
x:输入数据。模型只有一个输入,x的类型是numpy array,如果模型有多个输入,那么x的类型应当为list,lis
fit
( x, y,
batch
_size=32, epochs=10, verbose=1, callbacks=None,
validation_split=0.0, validation_data=None, shuffle=True,
class_weight=None, sample_weight=None, initial_epoch=0)
x:输入数据。如果模型只有一个输入,那么x的类型是numpy
array,如果模型有多个输入,那么x的类型应当为list,list的元素是对应于
人生苦短,我用keras!!!
大家都知道keras极大的简化了神经网络的搭建,但是大家知道如何输入数据吗,数据大时,直接numpy矩阵输入使内存爆满?有试过生成器吗?有试过tf.data吗?想知道这几着的差距和优劣势吗?往下看吧!!!
我们先来看看keras官方的代码中对
model
.
fit
()中的数据的输入的描述:
x: Input data. It could be:
- A Numpy array (or array-like), or a list of arrays
(in cas
tf.keras中
model
.
fit
model
.
fit
函数
的作用
model
.
fit
参数modle.
fit
实例
model
.
fit
函数
的作用
model
.
fit
函数
用于添加数据到模型,并且限定训练轮数。
model
.
fit
参数
fit
(x=None, y=None,
batch
_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weigh
fit
( x, y,
batch
_size=32, epochs=10, verbose=1, callbacks=None,
validation_split=0.0, validation_data=None, shuffle=True,
class_weight=None, sample_weight=None, initial_epoch=0)
x:输入数据。如果模型只有一个输入,那...
在使用
model
.
fit
函数
之前,需要先定义一个模型,然后将数据划分为训练集和测试集。模型的定义包括模型的结构和参数设置,如网络层数、每层的神经元个数、损失
函数
、优化器、学习率等。
使用
model
.
fit
函数
可以进行模型的训练,该
函数
有以下参数:
- x:输入数据,可以是一个numpy数组,也可以是一个包含多个numpy数组的列表(如果模型有多个输入)。
- y:标签,也可以是一个numpy数组或一个包含多个numpy数组的列表(如果模型有多个输出)。
-
batch
_size:整数,指定进行梯度下降时每个
batch
包含的样本数。
- epochs:整数,指定训练的轮数。
- validation_data:用于验证的数据,可以是一个tuple或一个包含多个tuple的列表,每个tuple包含输入数据和标签数据。
- verbose:日志显示等级,0表示不显示日志,1表示显示进度条,2表示每个epoch显示一次日志。
- callbacks:用于回调的
函数
,如EarlyStopping、
Model
Checkpoint等。
下面是一个使用
model
.
fit
函数
的例子:
# 导入必要的库
import tensorflow as tf
from tensorflow import keras
# 加载数据
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 定义模型
model
= keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
# 编译模型
model
.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
#
训练模型
model
.
fit
(x_train, y_train,
batch
_size=32, epochs=10, validation_data=(x_test, y_test), verbose=1)
在上面的例子中,我们首先加载了MNIST数据集,然后定义了一个包含两个全连接层的模型,编译模型后使用
model
.
fit
函数
进行训练。其中,训练集的输入数据为x_train,标签为y_train,每个
batch
包含32个样本,训练轮数为10次,使用测试集进行验证。在训练过程中,将显示进度条和日志。