uncomplicate / deep-diamond

A fast Clojure Tensor & Deep Learning library
https://aiprobook.com
Eclipse Public License 1.0
428 stars 17 forks source link

Receiver class uncomplicate.diamond.internal.neanderthal.directed.DirectedLayerBlueprint does not define or inherit an implementation of the resolved method 'abstract java.lang.Object applyTo(clojure.lang.ISeq)' of interface clojure.lang.IFn. #11

Closed qeshi closed 3 years ago

qeshi commented 3 years ago

Hi!

I get this exception when I try to define a network in the repl with the help of def.

But if I change the def into defonce it works!

~/repo/sandbox/deep-diamond$ lein repl
:repositories detected in user-level profiles! [:user] 
See https://github.com/technomancy/leiningen/wiki/Repeatability
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 12)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 12)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 12)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1)
Reflection warning, nrepl/transport.clj:103:5 - call to method write can't be resolved (target class is unknown).
Boxed math warning, nrepl/core.clj:34:30 - call: public static boolean clojure.lang.Numbers.lt(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware.clj:147:21 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, nrepl/middleware.clj:147:21 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:89:24 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:90:16 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_add(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:91:45 - call: public static java.lang.Object clojure.lang.Numbers.min(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:92:28 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:92:22 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:105:31 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_add(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:105:25 - call: public static boolean clojure.lang.Numbers.gte(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:106:25 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_add(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:109:36 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_inc(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:124:26 - call: public static boolean clojure.lang.Numbers.isZero(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:131:46 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_inc(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:131:56 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_dec(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:131:30 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(java.lang.Object,java.lang.Object).
Reflection warning, nrepl/util/completion.clj:148:34 - call to method split can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:159:12 - call to method contains can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:173:5 - call to method startsWith can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:174:5 - call to method contains can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:175:5 - call to method contains can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:186:35 - call to method startsWith can't be resolved (target class is unknown).
Boxed math warning, nrepl/middleware/load_file.clj:38:42 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(long,java.lang.Object).
Boxed math warning, nrepl/middleware/load_file.clj:38:33 - call: public static boolean clojure.lang.Numbers.lt(long,java.lang.Object).
Reflection warning, /tmp/form-init4813876564105695539.clj:1:2376 - reference to field deleteOnExit on java.lang.Object can't be resolved.
nREPL server started on port 34233 on host 127.0.0.1 - nrepl://127.0.0.1:34233
REPL-y 0.4.4, nREPL 0.8.3
Clojure 1.10.3
OpenJDK 64-Bit Server VM 11.0.11+9-Ubuntu-0ubuntu2.20.04
Reflection warning, /tmp/form-init4813876564105695539.clj:1:1580 - reference to field ns can't be resolved.
Reflection warning, /tmp/form-init4813876564105695539.clj:1:3830 - reference to field name can't be resolved.
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=> (use 'uncomplicate.diamond.tensor)   
nil
user=>  (use 'uncomplicate.diamond.native) 
Boxed math warning, clojure/core/reducers.clj:208:8 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:211:17 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:222:8 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:225:17 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:302:4 - call: public static boolean clojure.lang.Numbers.lte(long,java.lang.Object).
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
nil
user=> (use 'uncomplicate.diamond.dnn) 
nil
user=>  *diamond-factory*  
#object[uncomplicate.diamond.internal.dnnl.factory.DnnlFactory 0x33763b73 "uncomplicate.diamond.internal.dnnl.factory.DnnlFactory@33763b73"]
user=> (def fact *diamond-factory*)            
#'user/fact
user=> (def input-tz (tensor fact [2 1] :float :nc))            
#'user/input-tz
user=> (def fc1-bluep (fully-connected fact input-tz [2 1] :linear)) 
#'user/fc1-bluep
user=> (def fc2-bluep (fully-connected fact fc1-bluep [2 1] :linear))       
#'user/fc2-bluep
user=>  (def fc1 (fc1-bluep input-tz true)) 
Execution error (AbstractMethodError) at nrepl.middleware.interruptible-eval/evaluate$fn$fn (interruptible_eval.clj:87).
Receiver class uncomplicate.diamond.internal.neanderthal.directed.DirectedLayerBlueprint does not define or inherit an implementation of the resolved method 'abstract java.lang.Object applyTo(clojure.lang.ISeq)' of interface clojure.lang.IFn.

user=> Bye for now!

I don't get the exception when using the defonce macro.

~/repo/deep-diamond$ lein repl
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 12)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 12)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 12)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1)
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1)
Reflection warning, nrepl/transport.clj:103:5 - call to method write can't be resolved (target class is unknown).
Boxed math warning, nrepl/core.clj:34:30 - call: public static boolean clojure.lang.Numbers.lt(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware.clj:147:21 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, nrepl/middleware.clj:147:21 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:89:24 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:90:16 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_add(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:91:45 - call: public static java.lang.Object clojure.lang.Numbers.min(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:92:28 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/print.clj:92:22 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:105:31 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_add(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:105:25 - call: public static boolean clojure.lang.Numbers.gte(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:106:25 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_add(java.lang.Object,java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:109:36 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_inc(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:124:26 - call: public static boolean clojure.lang.Numbers.isZero(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:131:46 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_inc(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:131:56 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_dec(java.lang.Object).
Boxed math warning, nrepl/middleware/session.clj:131:30 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(java.lang.Object,java.lang.Object).
Reflection warning, nrepl/util/completion.clj:148:34 - call to method split can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:159:12 - call to method contains can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:173:5 - call to method startsWith can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:174:5 - call to method contains can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:175:5 - call to method contains can't be resolved (target class is unknown).
Reflection warning, nrepl/util/completion.clj:186:35 - call to method startsWith can't be resolved (target class is unknown).
Boxed math warning, nrepl/middleware/load_file.clj:38:42 - call: public static java.lang.Number clojure.lang.Numbers.unchecked_minus(long,java.lang.Object).
Boxed math warning, nrepl/middleware/load_file.clj:38:33 - call: public static boolean clojure.lang.Numbers.lt(long,java.lang.Object).
Reflection warning, /tmp/form-init12943345380227851249.clj:1:2377 - reference to field deleteOnExit on java.lang.Object can't be resolved.
nREPL server started on port 41861 on host 127.0.0.1 - nrepl://127.0.0.1:41861
REPL-y 0.4.4, nREPL 0.8.3
Clojure 1.10.3
OpenJDK 64-Bit Server VM 11.0.11+9-Ubuntu-0ubuntu2.20.04
Reflection warning, /tmp/form-init12943345380227851249.clj:1:1580 - reference to field ns can't be resolved.
Reflection warning, /tmp/form-init12943345380227851249.clj:1:3830 - reference to field name can't be resolved.
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=> (use 'uncomplicate.diamond.tensor) 
nil
user=> (use 'uncomplicate.diamond.native)  
Boxed math warning, clojure/core/reducers.clj:208:8 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:211:17 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:222:8 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:225:17 - call: public static boolean clojure.lang.Numbers.isNeg(java.lang.Object).
Boxed math warning, clojure/core/reducers.clj:302:4 - call: public static boolean clojure.lang.Numbers.lte(long,java.lang.Object).
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
nil
user=> (use 'uncomplicate.diamond.dnn)  
nil
user=>  *diamond-factory* 
#object[uncomplicate.diamond.internal.dnnl.factory.DnnlFactory 0x1aceb1a "uncomplicate.diamond.internal.dnnl.factory.DnnlFactory@1aceb1a"]
user=> (defonce input-tz (tensor *diamond-factory* [2 1] :float :nc ) )    
#'user/input-tz
user=> (defonce fc1-bluep (fully-connected *diamond-factory* input-tz [2 1] :linear)) 
#'user/fc1-bluep
user=>  (defonce fc2-bluep (fully-connected *diamond-factory* fc1-bluep [2 1] :linear)) 
#'user/fc2-bluep
user=>  (defonce fc1 (fc1-bluep input-tz true))   
#'user/fc1
user=> fc1
{:weights {:shape [1 1], :data-type :float, :layout [1 1]}
(0.0), :bias {:shape [1], :data-type :float, :layout [1]}
(0.0), :shape [2 1], :topology :fc, :activation :linear}
user=> Bye for now!
blueberry commented 3 years ago

Thanks! I think I have an idea how this can be fixed.

blueberry commented 3 years ago

Fixed in 0.20.3.