Comments (2)
Happily, clojure.spec came along. I'm starting work on using it to describe and test the code.
Starting in cells.cljc
.
I already spec'd the layer parameters: floybix@1c75772
At the moment they are all listed together and checked once. I think the checking should be at the implementation level, checking the specific keys that are needed -- e.g. specific params needed by different inhibition algorithms or homeostasis algorithms.
I'm proposing to get rid of the defrecord
s and replace them with spec'd maps. I used records in the first place mainly just as a way to list the expected keys. While it is fine to spec records, you just end up listing the keys twice (once in the spec and once in defrecord).
This is, I think, a no-brainer in the case of LayerActiveState, LayerDistalState, etc. It's less clear however in the case of LayerOfCells. That record is defined with implementations of several protocols:
- PLayerOfCells
- PInterruptable
- PTopological
- PFeedForward
- PFeedBack
- PTemporal
- PParameterised
So I guess I will keep it as a record.
I have a feeling that activate/learn/depolarise
would be nicer as multi-methods, but I'm not sure.
from comportex.
Figuring out how to spec the generic functions in the org.nfrac.comportex.protocols
namespace while leaving implementation details in their separate namespace. It can be done with multispec
. As part of this it seemed more natural to replace the layer getters -- active-columns, bursting-columns, active-cells
, etc -- with a single layer-state
that returns a map. If anyone is watching please take a look and tell me if i'm crazy... floybix@6b5008d
from comportex.
Related Issues (20)
- Readme out of date... HOT 1
- q_learning_1d demo showing "nth not supported" error in tgt->i arg destructuring HOT 1
- Just getting started - cljc files? HOT 2
- separated and serializable encoders HOT 13
- caching in encoders
- lazy-growing synapse graph HOT 5
- better hash / random number generator
- naming things HOT 1
- learning functions more like STDP HOT 5
- random selection of learning cells from bursting columns
- Suggestion to try "substitution" or "context" pooling HOT 22
- select cells consistently, esp. when beginning sequences HOT 54
- allow algorithm alternatives HOT 2
- Rainbow order is incorrect in logo HOT 2
- Please export public API for javascript interop HOT 8
- Better docs please :) HOT 6
- composable layers only; get rid of regions
- Support for Clojure 1.9
- Any benefit to htm.java again HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from comportex.