为其他类别的tensorflow模型再培训模型



我正在使用TensorFlow图像分类构建程序。我从github获得了Tensorflow,我知道的几乎是,如何运行classify_image.py!

我想做的是可以选择以简单的方式训练该模型。例如,该模型知道"钥匙",但我想训练它的" Housekeys",它们具有奇特的钥匙单?我可以用某种脚本说"拍摄这20张图像并学习房子",以便模型可以将"键"与" housekeys"区分开来?

请原谅我的新闻,并提前感谢您!

编辑:显然,该模型将其了解以前知道的所有其他类别的了解非常重要,因为能够仅识别" Housekeys"绝对没有用。

您可以执行此操作。但是,它可能需要一些调整。

我不知道您所指的脚本,但我将假设您至少有两个Python文件。一个是实际的神经网络,另一个是处理培训和评估。

您需要做的第一件事是确保神经网络可以处理新类。寻找这样的东西:

input_y = tf.placeholder(tf.float32, [None, classes], name="input_y") 

很多时候,如果您看到名称的张量,则包含 x (例如input_x),他们会参考数据,培训输入。

具有 y 的张量,如上所述,通常是指标签。

上面的代码说input_yfloat32类型的张量(思考数组),可变长度(None来自[None, classes]),但具有classes的每个元素。

如果classes为3,则input_y看起来像这样:

[[0, 0, 1], [1, 0, 0], [0, 1, 0]]

同样,它看起来像这样:

[[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 1, 0], [0, 0, 1]]

尽管长度可能会有所不同,但我们必须始终具有尺寸3(classes)的元素至于含义,例如,[0, 0, 1]意味着这是第2类的标签,因为我们在索引2处有1个(寻找一个热符号)。

这一点是,具有这种输入的神经网络最多可以学习3个类。张量 x 的每个输入都将张量 y 的标签与 y 的标签相关联,可以是0、1或2热符号。

有了这样的东西,您可以学习例如"钥匙"," Housekeys"one_answers" Carkeys",但您将无法添加" OfficeKeys"。

因此,第一步是确保您的网络可以学习所需的标签数量。

它不必一次学习。这使我们进入了第2点:

在这里看看。这是Tensorflow Saver类的文档。这将允许您保存和加载模型。

对于您的问题,这转化为在2类数据集上训练模型,保存它,生成3类数据集,加载先前保存的模型并在新数据集上进行训练。它将具有与您保存的模型相同的"知识" (权重),但是它将开始调整它们以适合第三类。

但是,为此,您需要确保网络可以从头开始处理3个类。

希望这会有所帮助!

最新更新