Code Monkey home page Code Monkey logo

gust's Introduction

GUST: Combinatorial Generalization by Unsupervised Grouping with Neuronal Coherence

1. Introduction

Dynamically grouping sensory information into structured entities is essential for understanding the world of combinatorial nature. However, the grouping ability and therefore combinatorial generalization are still challenging artificial neural networks. Inspired by the evidence that successful grouping is indicated by neuronal coherence in the human brain, we introduce GUST (Grouping Unsupervisely by Spike Timing network), an iterative network architecture with biological constraints to bias the network towards a dynamical state of neuronal coherence that softly reflects the grouping information in the temporal structure of its spiking activity. We evaluate and analyze the model on synthetic datasets. Interestingly, the segregation ability is directly learned from superimposed stimuli with a succinct unsupervised objective. Two learning stages are present, from coarsely perceiving global features to additionally capturing local features. Further, the learned symbol-like building blocks can be systematically composed to represent novel scenes in a bio-plausible manner.

An example video of binding process is as follows (Each figure in the animation shows the spike firing activity (in SCS) during the binding process of a specific input image):

spike_all.mp4

2. Code

2.1 Environment

The following packages should be installed before running this project:

pytorch
matplotlib
seaborn
h5py
numpy
sklearn
notebook

2.2 Code interpretation

2.2.1 Train network

The script used to train network is run.sh. Make directories, train a network, and save it:

./run.sh

After trained a network, it will be stored in the directory of ./tmp_net. The network in the file ./example_net is an example of trained network.

Clean the temporary files:

./clean.sh

2.2.2 Analyze results

Calculate the AMI and SynScore of a trained network:

python draw_ami_syn_score.py

image-20221116111116244

Draw the dyeing results like the first line of Fig. 4:

python draw_color.py

image-20221116111128033image-20221116111133550image-20221116111152255image-20221116111201062image-20221116111209284image-20221116111216825image-20221116111227416

Save results to a file:

python save_results.py

save_results.py stores the results as a numpy object and the notebook draw_figure.ipynb can use the result to plot the following figures:

  1. the input and output images
  2. the spiking results
  3. the binding results
  4. the figure of AMI and SynScore

The spiking results:

image-20221116111625698

image-20221116111633392

The binding results:

image-20221116111641980

image-20221116111648685

gust's People

Contributors

monstersecond avatar

Stargazers

dyabel avatar Adam Atanas avatar

Watchers

James Cloos avatar  avatar

gust's Issues

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.