【发布时间】:2017-03-19 16:38:17
【问题描述】:
我在 Keras 中有一个包含许多输出的网络,但是,我的训练数据一次只提供一个输出的信息。
目前我的训练方法是对有问题的输入进行预测,更改我正在训练的特定输出的值,然后进行单批更新。如果我是对的,这与将所有输出的损失设置为零相同,但我正在尝试训练的输出除外。
有没有更好的方法?我尝试了类权重,除了我正在训练的输出之外,我将所有的权重设置为零,但它没有给我预期的结果?
我正在使用 Theano 后端。
【问题讨论】:
-
对于监督学习来说,这是一个不常见的设置。展示一些示例数据并解释一下为什么你得到这个设置。
-
我将它用于深度 Q 学习。输入是一个状态,每个输出是一个动作的分数。您选择一个动作,然后根据该动作的结果更新网络。但是,您只想更新一个输出,因为您不知道其他操作的结果...
-
我明白了。这是不同的处理方式。查看these sources(我在链接中标记了这一行)。您只需保留其他操作的当前值!
-
我想实现一个类似的具有多个输出的 CNN(多任务学习)。我将在输入(图像)上运行网络,得到一个输出;然后根据输出,选择其他输出之一来运行网络并获得最终输出。在训练中,我一次只更新一个流。我认为这是一个非常常见的问题,但奇怪的是,没有示例或文档来描述解决方案。 @simeon:您设法解决了您的问题吗?如果是这样,怎么做?谢谢。
-
前几天我确实做过,但忘记了这篇文章。今晚我会做出更详细的回应,但是,在 Keras 中,您可以使用共享值的相同层制作多个模型(在我的脑海中,您需要使用“序列”的替代方案)。我基本上为每个共享层的输出制作了一个模型。效果很好。
标签: keras neural-network theano reinforcement-learning q-learning