def get_reconstructed_input(self, hidden, reduced=False, overlay=None,
static_hidden=False, scale=True, **kwargs):
"""
overlay mask holds positions of max indices (when max pooling was done).
If None, use previous state where possible.
If None, and no previous state, assign random positions.
If scalar, set max indices to this.
If list, put in multiple positions (optionally divide by pool_width if <scale>).
Same random position is assigned to every hidden
"""
if not reduced:
return Conv.get_reconstructed_input(self, hidden)
hidden = tf.tile(tf.expand_dims(hidden, 3),
[1, 1, self.pool_width, 1, 1])
if overlay is None:
overlay = self.state.get('overlay')
if overlay is None:
overlay = self._random_overlay(static_hidden=static_hidden)
elif np.isscalar(overlay) or type(overlay) == list:
if scale and type(overlay) == list and len(overlay) > 1:
scale = 1. / len(overlay)
else: scale = None
overlay = self._make_overlay(overlay)
return Conv.get_reconstructed_input(self,
self._pool_overlay(hidden, overlay), scale=scale)
评论列表
文章目录