Guess I'm just biased, since I'm used to other frameworks.
I think it comes down to the target audience of your library - beginners would appreciate things like sensible defaults for initialization or setting the optimizer globally. The less configuration is required to set up a computation graph, the easier it is to pick up your library. (And, to be honest, the more similar things are to the most popular frameworks, the easier it is to migrate.)
When I mentioned "magic numbers", I've meant that the examples could be greatly simplified by removing some (imho) excessive local variables that bring nothing that named function parameters wouldn't. When looking at the samples, I expect simple, short code examples that I can easily test and understand, even if sometimes they don't exactly follow all Uncle Bob's rules. 😉
BTW, in Kotlin you should prefer functions with default parameters rather than overloads.
https://github.com/sekwiatkowski/komputation/blob/master/src/main/kotlin/com/komputation/instructions/continuation/convolution/Convolution.kt This could be implemented with a single factory method or even simply the constructor parameters.