你可以这样做。但是,它可能需要一些调整。
我不确切知道您所指的脚本,但我假设您至少有两个 python 文件。一个是实际的神经网络,另一个负责训练和评估。
您需要做的第一件事是确保神经网络能够处理新类。寻找这样的东西:
input_y = tf.placeholder(tf.float32, [None, classes], name="input_y")
很多时候,如果您看到名称中包含 x(例如input_x)的张量,它们指的是数据,即训练输入。
名称中包含 y 的张量,如上面的示例,通常指的是标签。
上面的代码说input_y 是一个张量(暂时认为是数组),类型为float32,长度可变(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 合一热门符号。
有了这样的东西,你可以学习例如“keys”、“HouseKeys”和“CarKeys”,但你将无法添加“OfficeKeys”。
因此,第一步是确保您的网络可以学习到您想要的最大标签数。
不必一次全部学习。这将我们带到第 2 点:
看看here。这是 Tensorflow Saver 类的文档。这将允许您保存和加载模型。
对于您的问题,这转化为在 2 类数据集上训练模型、保存它、生成 3 类数据集、加载先前保存的模型并在新数据集上进行训练。它将与您保存的模型具有相同的“知识”(权重),但它会开始调整它们以适应第三类。
但为此,您需要确保网络从一开始就可以处理 3 个类。
希望这会有所帮助!