迁移学习的实践示例

本文探讨了迁移学习在图像识别任务中的实践,包括较浅的密集型网络和深度卷积网络。在较浅的密集型网络中,通过迁移学习,将预训练模型的底层网络用于新的二分类任务,通过冻结底层网络并调整输出层,最终模型在验证集的准确率提升至0.987。而对于深度卷积网络,利用类似领域的成功网络进行迁移学习,例如在花卉识别中,模型的最佳验证集准确率达到了0.9540。
摘要由CSDN通过智能技术生成

较浅的密集型网络的迁移学习

 已知别人的模型准确率很不错,我的项目和他的一样,数据集都是28*28的像素图片,但分类的类别不一样。例如别人的模型是将图片分类识别8类标签,而我只需要二分类两种标签。我可以使用他的已训练好的模型的底层网络,直接充当我的底层网络。然后更改输出层,或者更改层数等参数。

他的项目(A)  我的项目(B)  他的训练集X_train_A  我的训练集X_train_B


代码步骤:

model_A = keras.models.Sequential()
model_A.add(keras.layers.Flatten(input_shape=[28, 28]))
for n_hidden in (300, 100, 50, 50, 50):
    model_A.add(keras.layers.Dense(n_hidden, activation="selu"))
model_A.add(keras.layers.Dense(8, activation="softmax"))

model_A.compile(loss="sparse_categorical_crossentropy",
                optimizer=keras.optimizers.SGD(learning_rate=1e-3),
                metrics=["accuracy"])

history = model_A.fit(X_train_A, y_train_A, epochs=20,
                    validation_data=(X_valid_A, y_valid_A))

保存他的模型为h5格式文件:

model_A.save("my_model_A.h5")

得出在验证集最佳准确率为0.92


之后,先尝试独立构建我自己的模型:       (由于是二分类,所以输出激活函数用sigmoid)

model_B = keras.models.Sequential()
model_B.add(keras.layers.Flatten(input_shape=[28, 28]))
for n_hidden in (300, 100, 50, 50, 50):
    model_B.add(keras.layers.Dense(n_hidden, activation="selu"))
model_B.add(keras.layers.Dense(1, activation="sigmoid"))

model_B.compile(loss="binary_crossentropy",
                optimizer=keras.optimizers.SGD(learning_rate=1e-3),
                metrics=["accuracy"])
history = model_B.fit(X_train_B, y_train_B, epochs=20,
                      val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LRJ-jonas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值