Do you have the stack trace? It's not simple to run the code, but I made a github project so we can look at it easier. https://github.com/gtrak/grad-descent-test
When I run (gradient-descent example-grad [0 1] 0.001 0.001) Here's the actual problem: grad-descent.core> (pst *e) StackOverflowError clojure.lang.LazySeq.seq (LazySeq.java:60) clojure.lang.RT.seq (RT.java:484) clojure.core/seq (core.clj:133) clojure.core/map/fn--4211 (core.clj:2490) clojure.lang.LazySeq.sval (LazySeq.java:42) clojure.lang.LazySeq.seq (LazySeq.java:60) clojure.lang.RT.seq (RT.java:484) clojure.core/seq (core.clj:133) clojure.core/map/fn--4211 (core.clj:2490) clojure.lang.LazySeq.sval (LazySeq.java:42) clojure.lang.LazySeq.seq (LazySeq.java:60) clojure.lang.RT.seq (RT.java:484) The actual problem is in the vec functions, switching them to mapv fixes it. grad-descent.core> (gradient-descent example-grad [0 1] 0.001 0.001) [0.0 0.018256499170212572] On Sat, Jun 22, 2013 at 12:12 PM, P Martin <prof.pmarti...@gmail.com> wrote: > Ah ok - so I may be using it wrong. I am not calling the function itself - > I was simply trying to bind local variables in a loop. > > I have placed the code into gists for easier reading! > > https://gist.github.com/anonymous/5841405#file-core-clj > https://gist.github.com/anonymous/5841420#file-vec-clj > > Is there another way to mimic procedural type looping? > > On Saturday, June 22, 2013 2:39:01 AM UTC-4, Cedric Greevey wrote: > >> An algorithm like that generating StackOverflowErrors suggests it's >> recursing deeply, which suggests you're not using recur *enough*. If the >> function calls itself, try to see if you can get that call into tail >> position and change it to "recur". >> >> >> On Fri, Jun 21, 2013 at 4:06 PM, P Martin <prof.pm...@gmail.com> wrote: >> >>> Hi, >>> >>> I am new to clojure and I am trying to reimplement some optimization >>> code that uses gradient descent. I have attached the source to this post. >>> My experience with gradient descent is in Matlab, which is procedural. >>> >>> When I run my function gradient-descent I supply step sizes and error >>> values of 0.01, it runs correctly and gives me good results. However, if I >>> decrease the error value below 0.001 it produces a stack overflow error. I >>> get the same error if my step value goes down to 0.001. >>> >>> Is my looping mechanism correct and I am just having numerical >>> limitations? Am I abusing loop/recur? Any suggestions/critiques would be >>> great! >>> >>> Thanks, >>> Patrick >>> >>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@**googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/**group/clojure?hl=en<http://groups.google.com/group/clojure?hl=en> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@**googlegroups.com. >>> >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >> >> -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.