为其他类别重新调整张量流模型

时间:2016-11-30 00:54:32

标签: tensorflow

我正在使用张量流图像分类来构建程序。我从github得到了tensorflow,而我所知道的就是如何运行classify_image.py!

我想要做的是选择以简单的方式训练模型。例如,模型知道“钥匙”,但我想为“HouseKeys”训练它,它有一个奇特的钥匙扣或什么的。是否有某种脚本可以用来说“拍摄这20张图像并学习HouseKeys”,这样模型可以将“键”与“HouseKeys”区分开来?

原谅我的nooblines,并提前感谢你!

编辑:显然,模型保持对之前所知的所有其他类别的了解是非常重要的,因为只能识别“HouseKeys”绝对没用。

1 个答案:

答案 0 :(得分:1)

你可以这样做。但是,它可能需要进行一些调整。

我不确切地知道您所指的脚本,但我假设您至少有两个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"和#34; CarKeys"但你将无法添加" OfficeKeys"例如。

因此,首先要确保您的网络可以了解所需的最大标签数量。

它不必一次全部学习。这将我们带到第2点:

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

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

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

希望这有帮助!