5

对于 ConvNet,找到最大化单个 conv 活动的范数有界输入可能会很有趣。过滤器作为一种可视化过滤器的方式。我想在深度学习包 Keras 中做到这一点。这可以通过使用来自FAQ的代码的黑盒优化算法来完成。

# with a Sequential model
get_3rd_layer_output = theano.function([model.layers[0].input],
                                       model.layers[3].get_output(train=False))
layer_output = get_3rd_layer_output(X)

但是,如果我有梯度,这将是一项更容易优化的任务。如何从 Theano 表达式中提取梯度并将其输入到 Python 优化库(如 Scipy)中?

4

1 回答 1

2

您可以按照此处所述打印出渐变并将其手动编码到 Scipy 中。您也可以在 Theano 中进行优化 - 请参阅此问题

然而,最直接的方法可能是创建一个函数get_gradients(),用于theano.grad()返回滤波器相对于输入的梯度,然后调用scipy.optimize.minimize. jac=get_gradients根据文档

jac :布尔型或可调用的,可选的目标函数的雅可比(梯度)。[...] jac 也可以是返回目标梯度的可调用对象。在这种情况下,它必须接受与 fun 相同的参数。

于 2016-05-01T18:55:15.937 回答