Hopfield Networks in Go
mlexplore.org
mlexplore.org
[0] https://github.com/alexjordan/LLVM-TMS320C64X/blob/master/li...
On another note, what is the state of the art in "'memory networks". I'm thinking beyond LSTMs to a network that might be able to remember high dimensional features across a large span of time.
(if you sparsify connections and do some tricks with sparsification sky's the limit, O(n * small multiplier over 1) with memory)
Hopfield nets don't do memory like LSTMs do. LSTM's already sparsify features and memorize them a long time. There's a medium size literature on adding more shit (NTM, Pointer net, attention) but nearly all of it is not that good (it gets tested on bullshit)
In Go, this is one of the most difficult concepts of the language to wrap one's head around. Moreso, it's a concept that makes you bang your head against the wall at first; at least it did for me. After being so used to "getting away with" not thinking about this in other languages, being forced to think this way in Go can be maddening.
Then a light goes on.
...and then you look at your old code and go "eeesh"; in my case, I was coming from a PHP background at the time I was learning Go.
Don't get me wrong - I still like PHP and other languages, and I don't use Go much as it is, but once I wrapped my head around many of it's "strangeness" (compared to other languages), I really appreciated it (because I recognised that the whole point of the language was to help prevent common errors and in many cases force better programming practices to that end), and began to enjoy it.
There's also a ton of really nice error handlers[1] that let you ergonomically deal with errors while still being forced to confront them.
You shouldn't feel bad for this. The Go programmers are legitimately unaware that there's a better world out there.
Everyone knows its problems, and everyone knows about Rust.
It's just that some people don't need such extreme Real Time that they can't afford GC at the expense of the borrow-checker and lifetimes.
I guess they've at least heard of it, yeah, but how many of them have actually tried Rust (or any other language with a modern type system)?
> It's just that some people don't need such extreme Real Time that they can't afford GC at the expense of the borrow-checker and lifetimes.
They should probably be using Java, C#, Scala, ML, F#, Haskell, etc. then.
One thing I don't appreciate is being lectured by pimply-faced nerds about how Go programmers should embrace Java/C++ generics into their heart as their personal saviors. I understand what Java and C++ are, I can choose to use them or not, and it's none of your business.
Hmmm... perhaps Rust programmers are legitimately unaware that other people's problems differ from their own?
You imply you agree with the parent poster, but if it was "natural" to do error handling this way, surely it wouldn't be the language's most difficult concept?
Not something I miss, since promises became more available.