如何使用Python在Tensorflow中附加分类头?
可以使用TensorFlow在预定义的特征提取模型上附加一个包含密集层的顺序模型来附加分类头。
更多Python相关文章,请阅读:Python 教程
至少包含一个卷积层的神经网络称为卷积层。
图像分类的迁移学习的直觉是,如果在一个大而普遍的数据集上训练模型,那么这个模型可以有效地在视觉世界中作为通用模型。它将已经学习到了特征映射,这意味着用户不必从头开始在大数据集上训练一个大模型。
TensorFlow Hub是一个包含预训练的TensorFlow模型的库。
我们将了解如何使用tf.keras从TensorFlow Hub中使用模型,使用TensorFlow Hub的图像分类模型。然后可以执行迁移学习以对定制图像类进行微调模型。这是通过使用预训练的分类器模型来获取图像并预测它是什么来完成的,而无需进行任何训练。
我们使用Google Colaboratory来运行以下代码。 Google Colab或Colaboratory可以在浏览器上运行Python代码,并且不需要任何配置且可以免费访问GPU(图形处理单元)。 Colaboratory是基于Jupyter Notebook构建的。
示例
print("附加分类头")
num_classes = len(class_names)
model = tf.keras.Sequential([
feature_extractor_layer,
tf.keras.layers.Dense(num_classes)
])
print("模型的基本结构")
model.summary()
print("进行预测")
predictions = model(image_batch)
print("预测的维度")
predictions.shape
代码来源- https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
输出
附加分类头
模型的基本结构
Model: "sequential_3"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
keras_layer_1 (KerasLayer) (None, 1280) 2257984
_________________________________________________________________
dense_3 (Dense) (None, 5) 6405
=================================================================
Total params: 2,264,389
Trainable params: 6,405
Non-trainable params: 2,257,984
_________________________________________________________________
进行预测
预测的维度
TensorShape([32, 5])
说明
- 将分类头附加到模型上。
- 然后确定模型的基本结构。
- 这是通过“summary”方法完成的。
- 确定数据的维度。
- 将此信息显示在控制台上。