tf.keras.Model之model.compile

目录

model.compile的作用

model.compile的示例


tf.keras.Model类可能属于tf中拥有最多方法的类了,也最为常用。为啥?tensorflow就是一种机器学习框架,用机器学习可不得建立模型(model)嘛, 所以啥操作都得以model为核心,所以model类拥有的方法也会比较多。之前一篇文章中介绍了tf.keras.Sequential(tf.keras.Sequential详解_象象家的小蜜桃的博客-CSDN博客),里面有tf.keras.Sequential()创建的模型包含的方法叙述,这些方法也就是tf.keras.Model拥有的方法。我们一点一点消化,先从model.compile方法说起。


model.compile的作用

model.compile的作用就是配置模型的训练参数。有这些可以配置的(代码段里列的是默认配置值)

optimizer='rmsprop',
loss=None,
metrics=None,
loss_weights=None,
weighted_metrics=None,
run_eagerly=None,
steps_per_execution=None,
jit_compile=None,

黄色标注的,一般需要修改配置。其他的有个了解即可。

optimizer是用来配置优化器的,就是设置用什么方式更新模型的梯度。比较常用的是‘adam’

loss是配置损失函数的,损失函数必须要返回一个浮点类型的tensor,就是一个数值,而不是一个向量。如果有多个损失函数,可以将损失函数们放进一个列表或者字典传入。如果没有指定loss_weights,那么loss值就是各loss的和。

metrics配置评价指标,比如你希望在log中除了看到loss值,还想看看正确率,就可以将‘accuracy’配置到metrics里面

loss_weights配置不同损失函数的权重,适用于有多个损失函数的情况

weighted_metrics配置不同样本/类别在评价指标中的权重

run_eagerly这个参数最好不要动,只有当模型能被包装到tf.function的时候,这个参数才可设置成True。

steps_per_execution设置tf.function一次处理多少个batch,一般用默认配置。 

jit_compile配置是否用XLA编译模型的训练过程。这个一般用默认配置。


内置的optimizer (查看tf.keras.optimizers) 包含:adadelta, adagrad, adam, adamax, ftrl, nadam, rmsprop, sgd

内置的loss (查看tf.keras.losses)包含:BinaryCrossentropy, BinaryFocalCrossentropy, CategoricalCrossentropy, CategoricalHinge, CosineSimilarity, Hinge, Huber, KLDivergence, LogCosh, MeanAbsoluteError, MeanAbsolutePercentageError, MeanSquaredError, MeanSquaredLogarithmicError, Poisson, SparseCategoricalCrossentropy, SquaredHinge, categorical_hinge, cosine_similarity

内置的metric (查看tf.keras.metrics)包含:AUC, Accuracy, BinaryAccuracy, BinaryCrossentropy, BinaryIoU, CategoricalAccuracy, CategoricalCrossentropy, CategoricalHinge, CosineSimilarity, FalseNegatives, FalsePositives, Hinge, IoU, KLDivergence, LogCoshError, MeanAbsoluteError, MeanAbsolutePercentageError, MeanIoU, MeanRelativeError, MeanSquaredError, MeanSquaredLogarithmicError, OneHotIoU, OneHotMeanIoU, Poisson, Precision, PrecisionAtRecall, Recall, RecallAtPrecision, RootMeanSquaredError, SensitivityAtSpecificity, SparseCategoricalAccuracy, SparseCategoricalCrossentropy, SparseTopKCategoricalAccuracy, SpecificityAtSensitivity, SquaredHinge, TopKCategoricalAccuracy, TrueNegatives, TruePositives, binary_accuracy, binary_crossentropy, binary_focal_crossentropy, categorical_accuracy, categorical_crossentropy, hinge, kl_divergence, mean_absolute_error, mean_absolute_percentage_error, ...

首字母大写的一般代表类,全小写的代表一种方法。主要区别就是,类要先进行实例化,再进行调用。方法可以直接调用,传入输入数据就能返回计算结果。 内置的losses和metrics很丰富,使用时可以先看看内置的损失函数和评价指标中,有没有满足自己需求的。

model.compile的示例

import tensorflow as tf
# 使用mnist数据集
(x_train, y_train),(x_test,y_test) = tf.keras.datasets.mnist.load_data()
x_train,x_test = x_train/255.0,x_test/255.0
# 建立一个模型
model = tf.keras.Sequential(
    [
        tf.keras.layers.Flatten(input_shape=(28,28), name='flatten_1'),
        tf.keras.layers.Dense(units=100, activation='relu', name='dense_1'),
        tf.keras.layers.Dropout(0.3, name='dropout_1'),
        tf.keras.layers.Dense(units=10, name='output')
    ]
)
# 编译一下
model.compile(
    optimizer = 'adam',
    loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics = [tf.keras.metrics.SparseCategoricalAccuracy()]
)
# 训练一下
model.fit(x_train,y_train)
# 1875/1875 [==============================] - 5s 2ms/step - loss: 0.3450 - sparse_categorical_accuracy: 0.8990

 

你可能感兴趣的:(tensorflow2使用,keras,人工智能,深度学习)