⚡插播一条老家自产的糖心苹果,多个品种,欢迎选购!有问题随时私信我⚡:🍎🍎来自雪域高原的馈赠——海拔2000米的大凉山高原生态糖心苹果,欢迎选购!!🍎🍎
大凉山高原生态糖心苹果
Windows10
教育版64位
Python
3.6.3
Tensorflow-GPU
2.3.0
Keras
2.4.3
CUDA
10.1
我们知道在Keras
框架中有多个verbose
的设置,比如最常见的model.fit
中的verbose
:
def fit(self,
x=None,
y=None,
batch_size=None,
epochs=1,
verbose=1,
callbacks=None,
validation_split=0.,
validation_data=None,
shuffle=True,
class_weight=None,
sample_weight=None,
initial_epoch=0,
steps_per_epoch=None,
validation_steps=None,
validation_batch_size=None,
validation_freq=1,
max_queue_size=10,
workers=1,
use_multiprocessing=False):
"""Trains the model for a fixed number of epochs (iterations on a dataset).
Arguments:c
verbose: 0, 1, or 2. Verbosity mode.
0 = silent, 1 = progress bar, 2 = one line per epoch.
Note that the progress bar is not particularly useful when
logged to a file, so verbose=2 is recommended when not running
interactively (eg, in a production environment)."""
以及ModelCheckpoint
中的verbose
:
class EarlyStopping(Callback):
def __init__(self,
filepath,
monitor='val_loss',
verbose=0,
save_best_only=False,
save_weights_only=False,
mode='auto',
save_freq='epoch',
options=None,
**kwargs):
"""Arguments:
verbose: verbosity mode, 0 or 1."""
可以看到verbose
主要控制训练模型时,训练的loss
、accuracy
等评价指标的具体信息:
5/5 [==============================] - ETA: 0s - loss: 3.5273 - accuracy: 0.2000 - precision: 1.0000 - recall: 0.0625
Epoch 00001: val_accuracy improved from -inf to 0.50000, saving model to model_and_log\img_aug+mixup+Xception\Xception-01-3.5273-0.2000-3.3476-0.5000.h5
其实除了上面的verbose
,callbacks
中还有大量的verbose
,比如LearningRateScheduler
、EarlyStopping
等等都有自己的verbose
。
那为什么有多个verbose
呢? 相应的问题就来了:
- 每个
verbose
控制的都是同一个东西吗?- 如果同时开启会不会相互覆盖设置?
- 有没有优先级?
本文以model.fit
和ModelCheckpoint
的verbose
为例,展示了不同情况的verbose
会产生什么影响,其它函数的verbose
也是相同的结论。
model.fit
的verbose
Epoch 1/30
1/5 [=====>........................] - ETA: 0s - loss: 3.7069 - accuracy: 0.2500 - precision: 0.5000 - recall: 1.0000
2/5 [===========>..................] - ETA: 0s - loss: 3.6293 - accuracy: 0.2500 - precision: 0.7143 - recall: 0.8333
3/5 [=================>............] - ETA: 0s - loss: 3.6301 - accuracy: 0.1667 - precision: 0.6000 - recall: 0.7500
4/5 [=======================>......] - ETA: 0s - loss: 3.6179 - accuracy: 0.1250 - precision: 0.6000 - recall: 0.5000
5/5 [==============================] - ETA: 0s - loss: 3.5854 - accuracy: 0.1000 - precision: 0.6364 - recall: 0.4375
5/5 [==============================] - 5s 900ms/step - loss: 3.5854 - accuracy: 0.1000 - precision: 0.6364 - recall: 0.4375 - val_loss: 3.3600 - val_accuracy: 0.5000 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
Epoch 2/30
1/5 [=====>........................] - ETA: 0s - loss: 3.4214 - accuracy: 0.2500 - precision: 0.0000e+00 - recall: 0.0000e+00
2/5 [===========>..................] - ETA: 0s - loss: 3.4038 - accuracy: 0.1250 - precision: 0.5000 - recall: 0.1667
3/5 [=================>............] - ETA: 0s - loss: 3.3367 - accuracy: 0.1667 - precision: 0.5000 - recall: 0.1111
4/5 [=======================>......] - ETA: 0s - loss: 3.2700 - accuracy: 0.1875 - precision: 0.5000 - recall: 0.0833
5/5 [==============================] - ETA: 0s - loss: 3.2022 - accuracy: 0.2000 - precision: 0.6667 - recall: 0.1250
5/5 [==============================] - 3s 669ms/step - loss: 3.2022 - accuracy: 0.2000 - precision: 0.6667 - recall: 0.1250 - val_loss: 2.8924 - val_accuracy: 0.5000 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
Epoch 3/30
1/5 [=====>........................] - ETA: 0s - loss: 2.8710 - accuracy: 0.2500 - precision: 0.0000e+00 - recall: 0.0000e+00
2/5 [===========>..................] - ETA: 0s - loss: 2.8412 - accuracy: 0.1250 - precision: 0.0000e+00 - recall: 0.0000e+00
3/5 [=================>............] - ETA: 0s - loss: 2.8127 - accuracy: 0.1667 - precision: 0.5000 - recall: 0.1000
4/5 [=======================>......] - ETA: 0s - loss: 2.7665 - accuracy: 0.1875 - precision: 0.3333 - recall: 0.1818
5/5 [==============================] - ETA: 0s - loss: 2.7303 - accuracy: 0.1500 - precision: 0.2857 - recall: 0.1429
5/5 [==============================] - 3s 627ms/step - loss: 2.7303 - accuracy: 0.1500 - precision: 0.2857 - recall: 0.1429 - val_loss: 2.3946 - val_accuracy: 0.5000 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
可以看到,这个时候只会以进度条的方式打印每一个Epoch
的评价指标(包括默认的loss
、 accuracy
、precision
、recall
以及你自己设定的评价指标),不会打印模型的存储信息。
ModelCheckpoint
的verbose
可以看到,这个时候会根据ModelCheckpoint
中设定的监控指标:
checkpoint = ModelCheckpoint(model_x.__name__ + '-{epoch:02d}'
'-{loss:.4f}'
'-{accuracy:.4f}'
'-{val_loss:.4f}'
'-{val_accuracy:.4f}.h5',
monitor='val_accuracy',
verbose=1,
mode='max',
save_best_only=True)
只打印模型的存储信息,模型的评价指标(包括默认的loss
、 accuracy
、precision
、recall
以及你自己设定的评价指标)不会打印:
Epoch 00001: val_accuracy improved from -inf to 0.50000, saving model to model_and_log\img_aug+mixup+Xception\Xception-01-3.4481-0.2000-3.2658-0.5000.h5
Epoch 00002: val_accuracy did not improve from 0.50000
Epoch 00003: val_accuracy did not improve from 0.50000
ModelCheckpoint
和model.fit
的verbose
Epoch 1/30
1/5 [=====>........................] - ETA: 0s - loss: 3.5883 - accuracy: 0.5000 - precision: 0.0000e+00 - recall: 0.0000e+00
2/5 [===========>..................] - ETA: 0s - loss: 3.5933 - accuracy: 0.2500 - precision: 1.0000 - recall: 0.1667
3/5 [=================>............] - ETA: 0s - loss: 3.5551 - accuracy: 0.2500 - precision: 0.5000 - recall: 0.1250
4/5 [=======================>......] - ETA: 0s - loss: 3.5576 - accuracy: 0.2500 - precision: 0.6667 - recall: 0.1667
5/5 [==============================] - ETA: 0s - loss: 3.5451 - accuracy: 0.2000 - precision: 0.8000 - recall: 0.2500
Epoch 00001: val_accuracy improved from -inf to 0.50000, saving model to model_and_log\img_aug+mixup+Xception\Xception-01-3.5451-0.2000-3.3282-0.5000.h5
5/5 [==============================] - 4s 889ms/step - loss: 3.5451 - accuracy: 0.2000 - precision: 0.8000 - recall: 0.2500 - val_loss: 3.3282 - val_accuracy: 0.5000 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
Epoch 2/30
1/5 [=====>........................] - ETA: 0s - loss: 3.3335 - accuracy: 0.2500 - precision: 0.0000e+00 - recall: 0.0000e+00
2/5 [===========>..................] - ETA: 0s - loss: 3.3294 - accuracy: 0.1250 - precision: 0.0000e+00 - recall: 0.0000e+00
3/5 [=================>............] - ETA: 0s - loss: 3.2696 - accuracy: 0.1667 - precision: 0.5000 - recall: 0.1111
4/5 [=======================>......] - ETA: 0s - loss: 3.1904 - accuracy: 0.1875 - precision: 0.6667 - recall: 0.1667
5/5 [==============================] - ETA: 0s - loss: 3.1653 - accuracy: 0.1500 - precision: 0.8000 - recall: 0.2500
Epoch 00002: val_accuracy did not improve from 0.50000
5/5 [==============================] - 3s 599ms/step - loss: 3.1653 - accuracy: 0.1500 - precision: 0.8000 - recall: 0.2500 - val_loss: 2.8628 - val_accuracy: 0.5000 - val_precision: 0.5000 - val_recall: 1.0000
learning_rate= 0.00285
Epoch 3/30
1/5 [=====>........................] - ETA: 0s - loss: 2.8587 - accuracy: 0.2500 - precision: 0.5000 - recall: 0.5000
2/5 [===========>..................] - ETA: 0s - loss: 2.8461 - accuracy: 0.1250 - precision: 0.7500 - recall: 0.5000
3/5 [=================>............] - ETA: 0s - loss: 2.7913 - accuracy: 0.1667 - precision: 0.8000 - recall: 0.4000
4/5 [=======================>......] - ETA: 0s - loss: 2.7635 - accuracy: 0.2500 - precision: 0.6250 - recall: 0.4545
5/5 [==============================] - ETA: 0s - loss: 2.7230 - accuracy: 0.2500 - precision: 0.6364 - recall: 0.5000
Epoch 00003: val_accuracy did not improve from 0.50000
5/5 [==============================] - 3s 617ms/step - loss: 2.7230 - accuracy: 0.2500 - precision: 0.6364 - recall: 0.5000 - val_loss: 2.3710 - val_accuracy: 0.5000 - val_precision: 0.5000 - val_recall: 1.0000
可以看到,如果二者同时打开的话,模型的评价指标和存储信息均会打印,并不会产生影响,二者是完全独立的!
model.fit
的verbose
负责打印每一个Epoch
的评价指标(包括默认的loss
、 accuracy
、precision
、recall
以及你自己设定的评价指标)ModelCheckpoint
的verbose
负责打印模型的存储信息,如存储路径
,存储模型的文件名
渣男!都看到这里了,还不赶紧点赞
,评论
,收藏
走一波?