tensorflow - 在现实世界的项目中使用迁移学习是个好主意吗?
问题描述
设想
如果我的意图是训练医学图像数据集并且我选择了一个 coco 预训练模型,该怎么办?
我的疑惑
1由于我选择了医学图像,因此没有必要在 COCO 数据集上对其进行训练,对吧?如果是这样,有什么可能的解决方案来做同样的事情?
2向预训练模型添加更多层会破坏整个模型吗?有大约 10 多个和 10000 个训练数据集的类?
3没有从头开始训练有哪些可能的解决方案,比如微调模型?
PS - 让我们假设这个场景是基于为商业目的部署模型。
谢谢-
解决方案
是的,在现实世界项目中重用预训练模型或迁移学习是一个好主意,因为它可以节省计算时间并且架构已经过验证。
如果您的用例是对医学图像进行分类,即图像分类,那么
因为我选择了医学图像,所以没有必要在 COCO 数据集上训练它,对吧?如果是这样,有什么可能的解决方案来做同样的事情?
是的,COCO 数据集对于图像分类不是一个好主意,因为它对目标检测很有效。您可以重复使用VGGNet
orResNet
或Inception Net
or EfficientNet
。有关更多信息,请参阅TF HUB 模块。
向预训练模型添加更多层会破坏整个模型吗?有大约 10 多个和 10000 个训练数据集的类?
不可以。我们可以删除预训练模型的顶层并可以添加我们的自定义层,而不会影响预训练模型的性能。
如果没有从头开始训练,有哪些可能的解决方案,比如微调模型?
除了使用预训练模型外,您还可以使用Tensorboard 的 HParams调整模型的超参数(您添加的自定义层) 。
推荐阅读
- python - 如何通过在python中排除RFC1918私有地址来匹配IPV4正则表达式模式
- mongodb - 单个查询中的MongoDB更新和删除操作
- java - 如何在 Selenium 中输入键而不将其分配给特定对象?
- r - 如何使我的爬虫(用 R 制造)自动?
- jquery - MVC 中的 Ajax 分页
- json - 从 golang 中的标准输入读取 json 对象
- c# - 如何通过 SQL 或 C# 在 XML 中添加 sepa 标头
- php - 使用 jquery 根据 PHP 变量的值添加或删除类
- java - Flink 中的 ConcurrentModificationException
- python - 在原生 Tensorflow 中使用 BatchNormalization 训练 Keras 模型时面临的问题