【发布时间】:2019-01-15 22:52:59
【问题描述】:
我有一个带有二维输出(二进制分类)的 keras 模型。
model.output # <tf.Tensor 'dense_1_3/MatMul:0' shape=(?, 2) dtype=float32>
和
model.input # <tf.Tensor 'bidirectional_1_input:0' shape=(?, ?, 200) dtype=float32>
我为形状 (1,50,200) 的一些示例输入评估了三种不同的渐变
gradients0 = K.gradients(model.output[:,0] model.inputs)
gradients1 = K.gradients(model.output[:,1], model.inputs)
gradients2 = K.gradients(model.output, model.inputs)
我想,前两个表达式产生单个输出神经元的梯度,最后一个产生包含前两个表达式的张量。
令我惊讶的是,所有三个渐变的形状都是(1,50,200)。在我看来,gradients2 需要具有 (2,50,200) 的形状,因为 model.output 是二维的。这种情况下什么是keras计算?
【问题讨论】:
标签: python tensorflow keras neural-network