如何在CNTK中训练具有多个输出层的网络?

时间:2018-02-28 21:16:20

标签: python cntk

目标:为图像分类任务训练如下图所示的神经网络。 (输入尺寸可以在图像中看到。)

我已经能够创建网络,但面临以下问题:

  1. 指定损失和分类错误函数。
  2. 指定要输入train_minibatch字典的输出变量。
  3. 我正在使用生成器将数据提供给网络,因此使用train_minibatch来提供数据。此生成器的输出是输入图像,以及包含1个热编码标签的4个项目的列表。

1 个答案:

答案 0 :(得分:6)

我能够自己解决这个问题。对于这种情况,我们必须为每个分支定义单独的output variables,然后分别将数据提供给它们。

考虑y是4个元素的列表,它们应该是神经网络的输出。我们将如图所示定义我们的数据字典

trainer.train_minibatch( { input_placeholder: x, output_placeholder0: y[0], output_placeholder1: y[1], output_placeholder2: y[2], output_placeholder3: y[3] } )

其他变量如损失,分类错误可以是个别损失的简单总和(这取决于具体的用例)

有关详细信息,请查看我创建上述网络的notebook,提供数据并训练模型。