GithubHelp home page GithubHelp logo

weidler / semlc Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 459.07 MB

Biologically Inspired Lateral Connectivity in Convoluiontal Neural Networks

License: MIT License

Python 78.19% Shell 2.60% JavaScript 3.57% Sass 1.98% HTML 13.67%
convolutional-neural-networks lateral-inhibition neural-network neuroscience pytorch

semlc's Introduction

Hello there ๐Ÿ‘‹ I hope you like what you find here ๐Ÿค“

class Researcher(CuriousHuman):

    def __init__(self):
        self.name = "Tonio Weidler"
        self.role = "PhD Candidate"
        self.affiliation = "Maastricht University"
        self.residence = "The Netherlands"

        self.code = [
            "Python",
            "JavaScript",
            "Java",
            "PHP"
        ]

        self.research_field = "Neuroscience"
        self.research_topics = [
            "Sensorimotor Control",
            "Human Dexterity",
            "Goal-Driven Models",
            "Deep Learning"
        ] 

        self.language_spoken = ["de_DE", "en_US"]

    def greet(self, name):
        print(f"Hello there, {name}! I hope you like what you find here :)")

semlc's People

Contributors

aenteas avatar jlehnen avatar quintondenman avatar weidler avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

semlc's Issues

Clean up experiment folder

either delete or move some files to meaningful folders / subfolders to create a better overview of our experiments

[CIFAR10] AlexNet-like Baseline (fully convolutional)

Develop baseline based on AlexNet that achieves ~90% accuracy without Locally Connected Layers and instead is fully convolutional. To match parameter count we can increase the number of layers, e.g. to 6 as this mathces the number of areas in the visual cortex. Need to HP otpim this. Potentially the literature can give hints too.

allow training with augmentation

Some transormations like RandomCrop return PIL Images rather than Tensors, that our current framework does not allow. Probably not hard or time consuming but needs to be done

[CIFAR10] SotA Baseline

Need current state of the art baseline model that also allows for integration of our layers.

Logging refactoring

Generate unique IDs for each model and loss files and save a lookup table in a different file for more generic saving and loading of experiments

Loss analysis

Analyse loss for ConvNet11 and -18 and find heuristic (e.g. hard coded epoch, loss change) for dynamic learning rate adaption to create good baseline

(maybe) training for 11% error net

11% error on CIFAR-10 - layer parameter file
Methodology:

  1. Train on batches 1-4, use batch 5 for validation.
  2. After about 350 epochs, validation error no longer making improvements.
  3. Fold in batch 5.
  4. Train on batches 1-5 for about 150 more epochs, until the batch 5 error is near the errors for batches 1-4. It takes forever to actually get there but after 150 epochs it's close enough.
  5. Lower learning rates (epsW) by a factor of 10 to 0.0001, train for 10 more epochs.
  6. Lower learning rates (epsW) by another factor of 10 to 0.00001, train for 10 more epochs.
  7. Stop. Test on batch 6 with --test-range=6 --multiview-test=1 --logreg-name=logprob (read more about what this does here: http://code.google.com/p/cuda-convnet/wiki/TrainingNet#Training_on_image_translations )

More details about methodology: http://code.google.com/p/cuda-convnet/wiki/Methodology

modify logging

change our logging such that the filename can contain all possible permutations of configurations without overriding previous produced files. (e.g. inhib_depth, learn_weights=true/false, strategy etc.)

Inhibition with Width and Damping as Learned Parameters

Implement inhibition where width and damping of the wavelet are the learned parameters. We may benchmark to versions: Firstly we can simply use the Ricker wavelet equation to obtain the filter values and add its parameters to the module. For this we need to implement our own Ricker wavelet function in PyTorch. Secondly we can approximate the Wavelet by the difference of two Gaussians, which might be faster during backpropagation. For the latter, to still only have two parameters, use the difference of standard deviations as parameter, rather than two stds.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.