【问题标题】:Keras Transfer Learning weights = None and trainable = 'False'Keras 迁移学习权重 = 无且可训练 = 'False'
【发布时间】:2020-07-16 05:52:19
【问题描述】:

我是迁移学习的新手(tensorflow = 2.x)。在课程的教程中,我们使用了 weights = 'None',这意味着我们正在随机初始化权重。同样在同一个教程中,据说我们设置了 layers.trainable = False。所以,我的问题是我们的模型将如何学习?任何帮助都是有用的。谢谢 我也在使用 InceptionV3。

【问题讨论】:

  • 可以很好地发布教程和/或一些代码。潜在地,例如对于图像分类,您可以导入 InceptionV3,但不要使用“顶层”层。在这种情况下,您要保持“视觉皮层”,即所有 CNN 层不变,并创建新的密集层来学习数据集的分类。

标签: tensorflow deep-learning


【解决方案1】:

模型不会学习。权重将随机初始化。由于 Inception 模型中的层被设置为不可训练,它们将保持在初始级别冻结。我建议您选择权重作为“imagenet”。这将利用模型从处理 imagenet 数据集中学习到的预训练权重。设置 include_top=False 并设置 pooling='max'。然后添加一个密集层。密集层中的节点数应等于您拥有的类数。

【讨论】:

  • 所以随机权重不好?我们在这个模型中所做的拟合仅适用于密集层?使用 imagenet 会提高我的准确性吗?
  • 最好使用 imagenet 权重,因为网络将准备好“训练”来处理图像。如果您将 InceptionV3 层设置为不可训练,那么您将只训练密集层。根据图像的性质,这应该会产生合理的准确性。我通常允许模型训练所有层,但这会增加计算量。如果您没有 GPU 训练可能需要很长时间。
  • 所以我们只是在训练密集层,而 CNN 层具有随机权重。非常感谢它清除了我的概念。然而,我对这些随机权重给出的准确性感到惊讶。太好了。
  • 有些事情没有意义。如果您没有使用 imagnet 权重并且不允许对初始模型层进行允许训练,我看不出您如何获得任何合理的准确度水平。如果您显示您的训练数据会有所帮助。
  • 它是 kaggle cat-v-dogs 图像数据集
猜你喜欢
  • 2020-08-01
  • 1970-01-01
  • 2019-09-19
  • 2019-06-15
  • 1970-01-01
  • 2020-05-13
  • 2019-10-06
  • 2022-09-27
  • 2021-04-17
相关资源
最近更新 更多