Spaces:
Running
Running
MilesCranmer
commited on
Commit
•
d5ec823
1
Parent(s):
e8b8d89
Use @fastmath for evaluating on array
Browse files- README.md +7 -2
- julia/sr.jl +1 -1
README.md
CHANGED
@@ -299,10 +299,10 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
|
|
299 |
- [x] Sympy evaluation
|
300 |
- [x] Threaded recursion
|
301 |
- [x] Test suite
|
302 |
-
- [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
|
303 |
-
- Ongoing in cluster branch
|
304 |
- [x] Performance: - Use an enum for functions instead of storing them?
|
305 |
- Gets ~40% speedup on small test.
|
|
|
|
|
306 |
- [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
|
307 |
- [ ] Dump scores alongside MSE to .csv (and return with Pandas).
|
308 |
- [ ] Consider returning only the equation of interest; rather than all equations.
|
@@ -320,6 +320,7 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
|
|
320 |
- [ ] Use NN to generate weights over all probability distribution conditional on error and existing equation, and train on some randomly-generated equations
|
321 |
- [ ] Add GPU capability?
|
322 |
- Not sure if possible, as binary trees are the real bottleneck.
|
|
|
323 |
- [ ] Idea: use gradient of equation with respect to each operator (perhaps simply add to each operator) to tell which part is the most "sensitive" to changes. Then, perhaps insert/delete/mutate on that part of the tree?
|
324 |
- [ ] For hierarchical idea: after running some number of iterations, do a search for "most common pattern". Then, turn that subtree into its own operator.
|
325 |
- [ ] Additional degree operators?
|
@@ -332,4 +333,8 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
|
|
332 |
- [ ] Call function to read from csv after running
|
333 |
- [ ] Add function to plot equations
|
334 |
- [ ] Sort this todo list by priority
|
|
|
|
|
|
|
|
|
335 |
|
|
|
299 |
- [x] Sympy evaluation
|
300 |
- [x] Threaded recursion
|
301 |
- [x] Test suite
|
|
|
|
|
302 |
- [x] Performance: - Use an enum for functions instead of storing them?
|
303 |
- Gets ~40% speedup on small test.
|
304 |
+
- [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
|
305 |
+
- Ongoing in cluster branch
|
306 |
- [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
|
307 |
- [ ] Dump scores alongside MSE to .csv (and return with Pandas).
|
308 |
- [ ] Consider returning only the equation of interest; rather than all equations.
|
|
|
320 |
- [ ] Use NN to generate weights over all probability distribution conditional on error and existing equation, and train on some randomly-generated equations
|
321 |
- [ ] Add GPU capability?
|
322 |
- Not sure if possible, as binary trees are the real bottleneck.
|
323 |
+
- Could generate on CPU, evaluate score on GPU?
|
324 |
- [ ] Idea: use gradient of equation with respect to each operator (perhaps simply add to each operator) to tell which part is the most "sensitive" to changes. Then, perhaps insert/delete/mutate on that part of the tree?
|
325 |
- [ ] For hierarchical idea: after running some number of iterations, do a search for "most common pattern". Then, turn that subtree into its own operator.
|
326 |
- [ ] Additional degree operators?
|
|
|
333 |
- [ ] Call function to read from csv after running
|
334 |
- [ ] Add function to plot equations
|
335 |
- [ ] Sort this todo list by priority
|
336 |
+
- [ ] Consider printing output sorted by score, not by complexity.
|
337 |
+
- [ ] Performance: try inling things?
|
338 |
+
- [ ] Multi targets (vector ops)
|
339 |
+
|
340 |
|
julia/sr.jl
CHANGED
@@ -247,7 +247,7 @@ function evalTreeArray(tree::Node)::Array{Float32, 1}
|
|
247 |
elseif tree.degree == 1
|
248 |
return unaops[tree.op].(evalTreeArray(tree.l))
|
249 |
else
|
250 |
-
return binops[tree.op].(evalTreeArray(tree.l), evalTreeArray(tree.r))
|
251 |
end
|
252 |
end
|
253 |
|
|
|
247 |
elseif tree.degree == 1
|
248 |
return unaops[tree.op].(evalTreeArray(tree.l))
|
249 |
else
|
250 |
+
return @fastmath binops[tree.op].(evalTreeArray(tree.l), evalTreeArray(tree.r))
|
251 |
end
|
252 |
end
|
253 |
|