A custom Keras layer to prevent overfitting
Project description
Stroke
While reading about the concept of dropout, I thought about removing weights between layers instead of removing data. So I created a custom Keras layer called "Stroke", which randomizes a set percentage of weights from the previous layer, sort of replicating what happens when a human has a stroke. The goal of the Stroke layer is to re-initialize weights that have begun to contribute to overfitting.
An implementation of the Stroke layer on an MNIST classification model can be seen below:
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPool2D, Flatten
from kerastroke import Stroke
model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape = (28,28, 1), activation = 'relu'))
model.add(MaxPool2D(pool_size = (2,2)))
model.add(Conv2D(32,3,3, activation = 'relu'))
model.add(MaxPool2D(pool_size = (2,2)))
model.add(Flatten())
model.add(Dense(output_dim = 128, init = 'uniform', activation = 'relu'))
model.add(Stroke(model.get_layer(index=-1)))
model.add(Dense(10, init = 'uniform', activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for kerastroke-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 069cdd1b29e2487fdb4c48636bc223c82b73d3f1a180af78a168a851d687163e |
|
MD5 | 1d24f09c0f8fa56e711a454f0d285936 |
|
BLAKE2b-256 | 076a6f24c39bee87c2c4d03f097041aa5cdb8bf40e092f1c79cc6b0019788109 |