在阅读有关迁移学习的博客时,通常会说-删除最后一层,或删除最后两层。也就是说,删除输出层和最后一个隐藏层。
因此,如果转移学习意味着还更改成本函数,例如从交叉熵到均方误差,我知道您需要将最后一个输出层从1001的softmax值层更改为Dense(1)层,该层输出浮点数,但是:
答案 0 :(得分:2)
为什么要删除图层?
如果您仅尝试更改成本函数,那么您并没有按照大多数人的定义进行迁移学习。转移学习主要是关于迁移到新的应用程序域。因此,对于图像,采用狗识别器/探测器并将其转换为鸟类识别器/探测器,而不是狗的年龄/体重猜测者。 (或者带上您的1001通用目标检测器,并仅使用它来查看安全摄像机镜头等)
大多数文献都说,较低水平的CNN正在学习一些像素的大小的低水平概念,这是相当通用的。中间层是对象检测器,对应于眼球或鼻子,顶层是最高层,指定了这些中间层对象相对于彼此的位置,并表示最高层特征。最后一个softmax只是在说哪种狗。这些最后的,最高级别的功能可能与新任务无关。
这是出于以下观察的动机: ConvNet包含更多通用功能(例如边缘检测器或颜色 blob探测器)应该对许多任务有用,但在以后的层中 的ConvNet逐渐变得更加具体于 原始数据集中包含的类。
以下是其他几种解释: https://machinelearningmastery.com/transfer-learning-for-deep-learning/
新图层应初始化为什么?
在您最初的问题中,您询问“他初始化还是0初始化?”。再次,我认为这更多是工程问题,因为有证据表明某些事情比其他事情更好,但是我不知道还存在一个被广泛接受的证据,可以保证一种方法的最佳性能。除非不要将所有内容都初始化为零。如您所见,in the first post I link to below绝对是错误的。还请记住,这只是初始化。因此,即使我的知识有点过时了,也应该花些额外的时间来训练副手彻底失败或破烂的答案。根据您的问题,可能是大笔成本还是小笔成本,这将决定您要花多少时间研究这些选件并进行小规模尝试。
http://andyljones.tumblr.com/post/110998971763/an-explanation-of-xavier-initialization
答案 1 :(得分:-1)