【发布时间】:2017-01-17 11:23:28
【问题描述】:
特征图可以通过以下方式获得:
from keras import backend as K
# with a Sequential model
get_3rd_layer_output = K.function([model.layers[0].input],
[model.layers[
[model.layers[
[model.layers[3].output])
layer_output = get_3rd_layer_output([X])[
layer_output = get_3rd_layer_output([X])[
layer_output = get_3rd_layer_output([X])[0]
这有利于数据的可视化。但是,我还打算修改每一层的输出,然后将此输出反馈回网络。谁能建议我如何做同样的事情?
谢谢
【问题讨论】:
-
您在寻找什么样的修改?通过“反馈给网络”,您打算将其用作整个网络的新输入,还是只是将修改后的特征图传递给下一层?
-
我想把修改后的特征图传给下一层。我有一个图形结构,因此想将修改后的输出从一个节点传递到另一个节点。
-
我已经删除了我之前的答案,因为我显然误解了你的问题。当您说要修改特征图时-您是指上一层的权重还是上一层的结果?
-
我必须同时修改权重和输出。对于权重,我使用模型实例并使用
model.get_weights获取现有权重,我修改了它们,然后使用model.set_weights将其设置回来。但是,没有任何这样的方法可以将修改后的输出设置到网络。因此,我假设将需要一个自定义层。这是为了向前传球。我也必须为向后传球做同样的事情,但现在我只专注于向前传球。 -
我已经恢复了我的答案,以展示如何使用 Lambda 层来修改前一层的输出。请注意,对于 lambda 层,您无需担心向后传递,因为它会为您处理事情。
标签: python deep-learning theano keras