【发布时间】:2019-11-22 18:48:16
【问题描述】:
我正在使用迁移学习和 keras.applications.InceptionV3。我成功地训练了模型。
但是,当我想生成“激活最大化”图像(例如,最大化自定义类之一的激活的输入图像,参考例如 https://arxiv.org/pdf/1512.02017v3.pdf )时,我很难使用预训练模型,因为我确实管理在“适合”模式下使用它并禁用所有辍学等。
我所做的是在 tf.keras.Sequential 中结合预训练模型,对第一层(输入图像)的权重进行梯度下降。
尽管设置了 base_model.trainable = False,但是在外部顺序模型上使用 model.fit(data) 时,似乎预训练模型进入了训练模式(尽管权重没有更新)。
在外部调用 fit 时,有什么方法可以强制 base_model(Sequential 的子模型)处于“预测”模式?
【问题讨论】:
-
没有得到你需要的东西,但是为所有层设置
trainable = False就可以了。你可以在这里查看我的笔记本github.com/michelucci/oreilly-london-ai/blob/master/day2/…,例如。检查这是否对您有帮助...如果向下滚动,您会发现几个迁移学习的示例。 -
谢谢,很抱歉回复晚了——我试过了,但似乎没有用——批量标准化似乎仍然表现得很奇怪(我认为)。我会再调试一些并报告回来
-
不,trainable = False 似乎不足以使预训练模型在训练模式下与推理模式下的行为相同:-(