Add documentation for core layers

This commit is contained in:
fchollet 2015-04-09 17:41:48 -07:00
parent f35d529f42
commit 25ad4000f9
5 changed files with 154 additions and 27 deletions

@ -82,7 +82,7 @@ model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2))) model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Dropout(0.25)) model.add(Dropout(0.25))
model.add(Flatten(64*8*8)) model.add(Flatten())
model.add(Dense(64*8*8, 256)) model.add(Dense(64*8*8, 256))
model.add(Activation('relu')) model.add(Activation('relu'))
model.add(Dropout(0.5)) model.add(Dropout(0.5))
@ -145,7 +145,7 @@ model.add(Convolution2D(128, 128, 3, 3))
model.add(Activation('relu')) model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2))) model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Flatten(128*4*4)) model.add(Flatten())
model.add(Dense(128*4*4, 256)) model.add(Dense(128*4*4, 256))
model.add(Activation('relu')) model.add(Activation('relu'))
model.add(Dropout(0.5)) model.add(Dropout(0.5))

@ -38,4 +38,4 @@ model.add(Activation(tanh))
## On Advanced Activations ## On Advanced Activations
Activations that are more complex than a simple Theano function (eg. learnable activations, configurable activations, etc.) are available as [Advanced Activation layers](/layers/advanced_activations), and can be found in the module `keras.layers.advanced_activations`. These include PReLU and LeakyReLU. Activations that are more complex than a simple Theano function (eg. learnable activations, configurable activations, etc.) are available as [Advanced Activation layers](layers/advanced_activations.md), and can be found in the module `keras.layers.advanced_activations`. These include PReLU and LeakyReLU.

@ -63,7 +63,7 @@ model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2))) model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Dropout(0.25)) model.add(Dropout(0.25))
model.add(Flatten(64*8*8)) model.add(Flatten())
model.add(Dense(64*8*8, 256)) model.add(Dense(64*8*8, 256))
model.add(Activation('relu')) model.add(Activation('relu'))
model.add(Dropout(0.5)) model.add(Dropout(0.5))
@ -126,7 +126,7 @@ model.add(Convolution2D(128, 128, 3, 3))
model.add(Activation('relu')) model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2))) model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Flatten(128*4*4)) model.add(Flatten())
model.add(Dense(128*4*4, 256)) model.add(Dense(128*4*4, 256))
model.add(Activation('relu')) model.add(Activation('relu'))
model.add(Dropout(0.5)) model.add(Dropout(0.5))

@ -1,5 +1,3 @@
# Core
## Base class ## Base class
```python ```python
@ -8,55 +6,167 @@ keras.layers.core.Layer()
__Methods__: __Methods__:
```python
connect(self, previous_layer)
```
## Core layers - Connect the input of the current layer to the output of the argument layer.
### Dense - __Returns__: None.
- __Arguments__:
- __previous_layer__: Layer object.
```python
output(self, train)
```
- Get the output of the layer.
- __Returns__: Theano tensor.
- __Arguments__:
- __train__: Boolean. Specifies whether output is computed in training mode or in testing mode, which can change the logic, for instance in there are any `Dropout` layers in the network.
```python
get_input(self, train)
```
- Get the input of the layer.
- __Returns__: Theano tensor.
- __Arguments__:
- __train__: Boolean. Specifies whether output is computed in training mode or in testing mode, which can change the logic, for instance in there are any `Dropout` layers in the network.
```python
get_weights(self)
```
- Get the weights of the parameters of the layer.
- __Returns__: List of numpy arrays (one per layer parameter).
```python
set_weights(self, weights)
```
- Set the weights of the parameters of the layer.
- __Arguments__:
- __weights__: List of numpy arrays (one per layer parameter). Should be in the same order as what `get_weights(self)` returns.
---
## Dense
```python ```python
keras.layers.core.Dense(input_dim, output_dim, init='uniform', activation='linear', weights=None) keras.layers.core.Dense(input_dim, output_dim, init='uniform', activation='linear', weights=None)
``` ```
__Arguments__:
__Methods__: - Standard 1D fully-connect layer.
### Activation - __Input shape__: `(nb_samples, input_dim)`.
- __Arguments__:
- __input_dim__: int >= 0.
- __output_dim__: int >= 0.
- __init__: name of initialization function for the weights of the layer (see: [initializations](../initializations.md)), or alternatively, Theano function to use for weights initialization. This parameter is only relevant if you don't pass a `weights` argument.
- __activation__: name of activation function to use (see: [activations](../activations.md)), or alternatively, elementwise Theano function. If you don't specify anything, no activation is applied (ie. "linear" activation: a(x) = x).
- __weights__: list of numpy arrays to set as initial weights. The list should have 1 element, of shape `(input_dim, output_dim)`.
---
## Activation
```python ```python
keras.layers.core.Activation(activation) keras.layers.core.Activation(activation)
``` ```
__Arguments__: - Apply an activation function to the input.
__Methods__: - __Input shape__: This layer does not assume a specific input shape. As a result, it cannot be used as the first layer in a model.
### Dropout - __Arguments__:
- __activation__: name of activation function to use (see: [activations](../activations.md)), or alternatively, elementwise Theano function.
---
## Dropout
```python ```python
keras.layers.core.Dropout(p) keras.layers.core.Dropout(p)
``` ```
__Arguments__: - Apply dropout to the input. Dropout consists in randomly setting a fraction `p` of input units to 0 at each update during training time, which helps prevent overfitting. Reference: [Dropout: A Simple Way to Prevent Neural Networks from Overfitting](http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf)
__Methods__: - __Input shape__: This layer does not assume a specific input shape. As a result, it cannot be used as the first layer in a model.
### Reshape - __Arguments__:
- __p__: float (0 <= p < 1). Fraction of the input that gets dropped out at training time.
---
## Reshape
```python ```python
keras.layers.core.Reshape(*dims) keras.layers.core.Reshape(*dims)
``` ```
__Arguments__:
__Methods__: - Reshape the input to a new shape containing the same number of units.
### Flatten - __Input shape__: This layer does not assume a specific input shape. As a result, it cannot be used as the first layer in a model.
- __Arguments__:
- *dims: integers. Dimensions of the new shape.
- __Example__:
```python ```python
keras.layers.core.Flatten(size) # input shape: (nb_samples, 10)
model.add(Dense(10, 100)) # output shape: (nb_samples, 100)
model.add(Reshape(10, 10)) # output shape: (nb_samples, 10, 10)
``` ```
__Arguments__:
__Methods__: ---
### RepeatVector ## Flatten
```python
keras.layers.core.Flatten()
```
- Convert a nD input to 1D.
- __Input shape__: (nb_samples, *). This layer cannot be used as the first layer in a model.
---
## RepeatVector
```python ```python
keras.layers.core.RepeatVector(n) keras.layers.core.RepeatVector(n)
``` ```
__Arguments__:
__Methods__: - Repeat the 1D input n times. Dimensions of input are assumed to be (nb_samples, dim). Output will have the shape (nb_samples, n, dim).
- __Input shape__: This layer does not assume a specific input shape. As a result, it cannot be used as the first layer in a model.
- __Arguments__:
- __n__: int.
- __Example__:
```python
# input shape: (nb_samples, 10)
model.add(Dense(10, 100)) # output shape: (nb_samples, 100)
model.add(Repeat(2)) # output shape: (nb_samples, 2, 10)
```

@ -21,6 +21,8 @@ You can either instantiate an optimizer before passing it to `model.compile()` ,
model.compile(loss='mean_squared_error', optimizer='sgd') model.compile(loss='mean_squared_error', optimizer='sgd')
``` ```
---
## Base class ## Base class
```python ```python
@ -37,6 +39,8 @@ All optimizers descended from this class support the following keyword arguments
Note: this is base class for building optimizers, not an actual optimizer that can be used for training models. Note: this is base class for building optimizers, not an actual optimizer that can be used for training models.
---
## SGD ## SGD
```python ```python
@ -44,11 +48,15 @@ keras.optimizers.SGD(lr=0.01, momentum=0., decay=0., nesterov=False)
``` ```
[[source](https://github.com/fchollet/keras/blob/master/keras/optimizers.py)] [[source](https://github.com/fchollet/keras/blob/master/keras/optimizers.py)]
__Arguments__:
- __lr__: float >= 0. Learning rate. - __lr__: float >= 0. Learning rate.
- __momentum__: float >= 0. Parameter updates momentum. - __momentum__: float >= 0. Parameter updates momentum.
- __decay__: float >= 0. Learning rate decay over each update. - __decay__: float >= 0. Learning rate decay over each update.
- __nesterov__: boolean. Whether to apply Nesterov momentum. - __nesterov__: boolean. Whether to apply Nesterov momentum.
---
## Adagrad ## Adagrad
```python ```python
@ -58,9 +66,12 @@ keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)
It is recommended to leave the parameters of this optimizer at their default values. It is recommended to leave the parameters of this optimizer at their default values.
__Arguments__:
- __lr__: float >= 0. Learning rate. - __lr__: float >= 0. Learning rate.
- __epsilon__: float >= 0. - __epsilon__: float >= 0.
---
## Adadelta ## Adadelta
@ -71,12 +82,16 @@ keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6)
It is recommended to leave the parameters of this optimizer at their default values. It is recommended to leave the parameters of this optimizer at their default values.
__Arguments__:
- __lr__: float >= 0. Learning rate. It is recommended to leave it at the default value. - __lr__: float >= 0. Learning rate. It is recommended to leave it at the default value.
- __rho__: float >= 0. - __rho__: float >= 0.
- __epsilon__: float >= 0. Fuzz factor. - __epsilon__: float >= 0. Fuzz factor.
For more info, see *"Adadelta: an adaptive learning rate method"* by Matthew Zeiler. For more info, see *"Adadelta: an adaptive learning rate method"* by Matthew Zeiler.
---
## RMSprop ## RMSprop
```python ```python
@ -86,6 +101,8 @@ keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6)
It is recommended to leave the parameters of this optimizer at their default values. It is recommended to leave the parameters of this optimizer at their default values.
__Arguments__:
- __lr__: float >= 0. Learning rate. - __lr__: float >= 0. Learning rate.
- __rho__: float >= 0. - __rho__: float >= 0.
- __epsilon__: float >= 0. Fuzz factor. - __epsilon__: float >= 0. Fuzz factor.