如何用Keras在Python中实现迁移学习?
TensorFlow是由Google提供的一种机器学习框架,它是与Python一起使用以实现算法、深度学习应用等的开源框架。它用于研究和生产目的。
张量是TensorFlow中使用的数据结构。它有助于将流程图中的边缘连接在一起。这个流程图被称为“数据流图”。张量只是多维数组或列表。
Keras在希腊语中意为“号角”。Keras作为ONEIROS项目(开放式神经电子智能机器人操作系统)的研究成果而开发。Keras是一个深度学习API,它是用Python编写的。它是一个高级API,具有有助于解决机器学习问题的生产接口。
它运行在Tensorflow框架之上。它的构建是为了快速地进行实验。它提供了必要的抽象和构建块,这些构建块在开发和封装机器学习解决方案时是必不可少的。
它具有高度的可扩展性和跨平台能力。这意味着Keras可以在TPU或GPU集群上运行。Keras模型也可以导出以在Web浏览器或移动电话上运行。
Keras已经包含在Tensorflow包内。可以使用下面的代码行来访问它。
import tensorflow
from tensorflow import keras
我们使用Google Colaboratory来运行下面的代码。Google Colab或Colaboratory可以在浏览器上运行Python代码,不需要任何配置,并且可以免费使用GPU(图形处理器)。Colaboratory是建立在Jupyter Notebook之上的。以下是代码片段−
更多Python相关文章,请阅读:Python 教程
示例
model = keras.Sequential([
keras.Input(shape=(784))
layers.Dense(32, activation='relu'),
layers.Dense(32, activation='relu'),
layers.Dense(32, activation='relu'),
layers.Dense(10),
])
print("载入预训练权重")
model.load_weights(...)
print("冻结除最后一层外的所有层")
for layer in model.layers[:-1]:
layer.trainable = False
print("重新编译模型并训练它")
print("最后一层权重将被更新")
model.compile(...)
model.fit(...)
代码来源− https://www.tensorflow.org/guide/keras/sequential_model
输出
载入预训练权重
冻结除最后一层外的所有层
重新编译模型并训练它
最后一层权重将被更新
解释
-
迁移学习表示冻结模型底部的层,并训练顶部的层。
-
序列模型建立。
-
载入旧模型的预训练权重,并与此模型绑定。
-
除了最后一层以外的底层被冻结。
-
层被迭代,对于除了最后一层以外的每一层,将‘layer.trainable’设置为‘False’。
-
它被编译并适应数据。
极客教程