def stimuli(self, layer=-1, location=[.5], corrsort=True, activation=1.0,
static_hidden=True, overlay=None):
if np.isscalar(location): location = [location]
coders = self.coders
if layer < 0: layer += len(coders)
out_shape = coders[layer].output_shape(reduced=False)
n_hidden = out_shape[-1]
values = np.zeros([n_hidden] + list(out_shape[1:]),
dtype=self.dtype.as_numpy_dtype)
mid_indices = [0 for j in range(len(out_shape) - 2)]
for i in range(n_hidden):
for loc in location:
if len(mid_indices):
mid_indices[0] = int(out_shape[1] * loc)
indices = [i] + mid_indices + [i]
values[tuple(indices)] = activation
self.set_batch_size(n_hidden)
values = coders[layer].get_reconstructed_input(values, reduced=False, overlay=overlay,
static_hidden=static_hidden)
for i in range(layer - 1, -1, -1):
if coders[i].output_shape() != coders[i+1].input_shape():
values = tf.reshape(values, coders[i].output_shape())
values = coders[i].get_reconstructed_input(values, reduced=True, overlay=overlay,
static_hidden=static_hidden)
values = values.eval().squeeze()
if corrsort: return values[features.corrsort(values, use_tsp=True)]
else: return values
评论列表
文章目录