【问题标题】:Tensorflow NN with specific custom cost function具有特定自定义成本函数的 Tensorflow NN
【发布时间】:2016-11-08 08:31:35
【问题描述】:

我正在尝试在 tensorflow 中创建一个不属于回归类别分类的神经网络。它可能更接近强化学习。

我制作了一个包含几个 ReLU 隐藏层的网络,这些隐藏层以 3 元素 softmax 输出层结束。每个样本的目标向量是做出某个选择(其中有 3 个)的奖励(对于惩罚可以是负数,对于中性可以是 0)。这个想法是最大化所有样本的总奖励。

给定一个样本输入,该样本输入映射到模型输出 M=[a,b,c],目标 Y=[d,e,f];该特定样本的损失将是 M*Y',或者只是 -tf.matmul(model, Y, transpose_b=True)。然而,当使用批量处理产生矩阵而不是向量时,我不知道如何以 TensorFlow 的优化器可以使用的方式将其表示为成本函数。简单地使用上面的示例代码会产生一个毫无意义的 batchsize^2 大小的矩阵。

我该怎么做?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    假设您有一个小批量N 示例的模型输出,称为output。那将具有[N, 1, 3] 的形状。 (注意:通常,softmax 的输出形状为[N, 3],但您可以使用tf.reshape 将其重塑为[N, 1, 3])。将您的奖励或目标称为target,它也将具有[N, 1, 3] 的形状。您可以执行以下操作来获取形状为[N, 1, 1]loss

    loss = tf.batch_matmul(output, tf.transpose(target, [0, 2, 1]))
    

    如果您想为您的小批量平均损失,您可以执行以下操作:

    loss = tf.reduce_mean(loss)
    

    在这种情况下,您会得到一个标量值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 2022-01-08
      • 1970-01-01
      • 2020-11-25
      • 2020-01-21
      • 1970-01-01
      • 2016-06-03
      • 2018-09-30
      相关资源
      最近更新 更多