def _set_inverse_parameters(self, patterns=None):
self.trainable_layers = [(l, self.inverse_map[l])
for l in L.get_all_layers(self.output_layer)
if type(l) in [L.Conv2DLayer, L.DenseLayer]]
if patterns is not None:
if type(patterns) is list:
patterns = patterns[0]
for i,layer in enumerate(self.trainable_layers):
param = layer[0].W.get_value()
pattern = patterns['A'][i]
if pattern.ndim == 4:
if layer[0].flip_filters:
param = param[:,:,::-1,::-1]
pattern = param*pattern
pattern = pattern.transpose(1,0,2,3)
elif pattern.ndim == 2:
pattern = param*pattern
pattern = pattern.T
layer[1].W.set_value(pattern)
else:
print("Patterns not given, explanation is random.")
评论列表
文章目录