我们从Python开源项目中,提取了以下8个代码示例,用于说明如何使用keras.layers.core.Layer()。
def _layer_LRN(self): self.add_body(0, ''' from keras.layers.core import Layer class LRN(Layer): def __init__(self, size=5, alpha=0.0005, beta=0.75, k=2, **kwargs): self.n = size self.alpha = alpha self.beta = beta self.k = k super(LRN, self).__init__(**kwargs) def build(self, input_shape): self.shape = input_shape super(LRN, self).build(input_shape) def call(self, x, mask=None): half_n = self.n - 1 squared = K.square(x) scale = self.k norm_alpha = self.alpha / (2 * half_n + 1) if K.image_dim_ordering() == "th": b, f, r, c = self.shape squared = K.expand_dims(squared, 0) squared = K.spatial_3d_padding(squared, padding=((half_n, half_n), (0, 0), (0,0))) squared = K.squeeze(squared, 0) for i in range(half_n*2+1): scale += norm_alpha * squared[:, i:i+f, :, :] else: b, r, c, f = self.shape squared = K.expand_dims(squared, -1) squared = K.spatial_3d_padding(squared, padding=((0, 0), (0,0), (half_n, half_n))) squared = K.squeeze(squared, -1) for i in range(half_n*2+1): scale += norm_alpha * squared[:, :, :, i:i+f] scale = K.pow(scale, self.beta) return x / scale def compute_output_shape(self, input_shape): return input_shape''')
def reset_states(self): assert self.stateful or self.state_input or len(self.state_outputs) > 0, 'Layer must be stateful.' input_shape = self.input_shape if not input_shape[0]: raise Exception('If a RNN is stateful, a complete ' + 'input_shape must be provided ' + '(including batch size).') if hasattr(self, 'states'): K.set_value(self.states[0], np.zeros((input_shape[0], self.hidden_dim))) K.set_value(self.states[1], np.zeros((input_shape[0], self.hidden_dim))) else: self.states = [K.zeros((input_shape[0], self.hidden_dim)), K.zeros((input_shape[0], self.hidden_dim))]
def test_input_output(self): nb_samples = 10 input_dim = 5 layer = core.Layer() # Once an input is provided, it should be reachable through the # appropriate getters input = np.ones((nb_samples, input_dim)) layer.input = theano.shared(value=input) for train in [True, False]: assert_allclose(layer.get_input(train).eval(), input) assert_allclose(layer.get_output(train).eval(), input)
def test_connections(self): nb_samples = 10 input_dim = 5 layer1 = core.Layer() layer2 = core.Layer() input = np.ones((nb_samples, input_dim)) layer1.input = theano.shared(value=input) # After connecting, input of layer1 should be passed through layer2.set_previous(layer1) for train in [True, False]: assert_allclose(layer2.get_input(train).eval(), input) assert_allclose(layer2.get_output(train).eval(), input)
def test_base(self): layer = core.Layer() self._runner(layer)
def test_merge(self): layer_1 = core.Layer() layer_2 = core.Layer() layer_1.set_input_shape((None,)) layer_2.set_input_shape((None,)) layer = core.Merge([layer_1, layer_2]) self._runner(layer)
def test_autoencoder(self): layer_1 = core.Layer() layer_2 = core.Layer() layer = core.AutoEncoder(layer_1, layer_2) self._runner(layer)