Machine learning TensorFlow:将类添加到预先训练的初始模型&;输出完整的图像层次结构

Machine learning TensorFlow:将类添加到预先训练的初始模型&;输出完整的图像层次结构,machine-learning,tensorflow,imagenet,Machine Learning,Tensorflow,Imagenet,两个问题: 1) 有人知道我是否可以向预先训练好的Inception-v3模型添加新的图像类吗?例如,我想在多种国旗上训练TensorFlow,但我需要确保我仍然能够识别ImageNet层次结构中的图像。我意识到有一种方法可以消除《盗梦空间》的顶层,并在我的课堂上完全重新训练模型,但这非常有限且耗时 2) 此外,是否有方法输出包含图像接收的标记的整个层次结构?我不仅希望能够看到Inception将图像标记为什么,还希望看到ImageNet中所有更广泛的“synset”。例如,我对“动物/驯养动物

两个问题:

1) 有人知道我是否可以向预先训练好的Inception-v3模型添加新的图像类吗?例如,我想在多种国旗上训练TensorFlow,但我需要确保我仍然能够识别ImageNet层次结构中的图像。我意识到有一种方法可以消除《盗梦空间》的顶层,并在我的课堂上完全重新训练模型,但这非常有限且耗时

2) 此外,是否有方法输出包含图像接收的标记的整个层次结构?我不仅希望能够看到Inception将图像标记为什么,还希望看到ImageNet中所有更广泛的“synset”。例如,我对“动物/驯养动物/狗/贵宾犬/玩具贵宾犬”感兴趣,而不是仅仅看到输出“玩具贵宾犬”

任何响应都是非常受欢迎的。

1)输出层是softmax,这意味着它有预定义数量的神经元,每个神经元都是为一个特定的类定义的。从技术上讲,您可以执行这样的操作,即在输出层中多了一个神经元,它将代表您的新类。但是你必须对你的网络进行额外的训练,以便它更新所有的权重,以适应新的课程。坏消息-这可能需要一段时间,因为更新将影响整个网络,网络是巨大的。好消息——在预先训练好的现有网络中,这样的改变将比从零开始学习任何东西都要快

2) 你凭什么认为这种等级制度存在?对于数据的内部表示,您无法确定任何信息。当然,你可以检查每个功能中神经元的激活情况,甚至可以将它们可视化。。。但是你必须试着自己去理解这些激活意味着什么。也许你不会找到任何你期望看到的层次结构。因此,总而言之,理解ANN如何在内部表示数据绝非易事。事实上,非常困难

建议进一步阅读:

注意文档的内容-它与您的#1密切相关

  • 以下是相关问题:
  • 以下是一些解释:

    所以,若有模型检查点,就有可能以某种方式微调模型。 以下是带有微调示例的回购链接:

  • 可以获取类的节点名和人类可读的slug, 因此,您可以按类别手动链接节点。但这很费时
    是的,你可以,我最近做了一件非常相似的事情,在我的案例中,是外生植物叶和健康植物叶。v3初始版本已经过培训,您将要做的是迁移学习。迁移学习是一种技术,它通过为一组类别(如ImageNet)建立一个经过充分训练的模型,并从现有权重中重新训练新类别,从而简化了大量这方面的工作

    链接:


    视频来源:,Hvass实验室有一些很棒的视频资源来纠正您的问题。

    您提供的tensorflow再培训指南只是关于转移学习,它不满足问题的需要-在不删除原有课程的情况下添加更多课程。