1

I am trying to run a simple app using the deep learning library dl4j.

I am working on Android Studio and using Gradle.

During runtime, I get the following exception:

08-15 13:23:00.601 4868-4868/com.mi.dl E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.mi.dl, PID: 4868
 java.lang.IllegalStateException: Could not execute method for android:onClick
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
     at android.view.View.performClick(View.java)
     at android.view.View$PerformClick.run(View.java)
     at android.os.Handler.handleCallback(Handler.java)
     at android.os.Handler.dispatchMessage(Handler.java)
     at android.os.Looper.loop(Looper.java)
     at android.app.ActivityThread.main(ActivityThread.java)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
  Caused by: java.lang.reflect.InvocationTargetException
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
     at android.view.View.performClick(View.java) 
     at android.view.View$PerformClick.run(View.java) 
     at android.os.Handler.handleCallback(Handler.java) 
     at android.os.Handler.dispatchMessage(Handler.java) 
     at android.os.Looper.loop(Looper.java) 
     at android.app.ActivityThread.main(ActivityThread.java) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
  Caused by: java.lang.ExceptionInInitializerError
     at org.deeplearning4j.nn.conf.NeuralNetConfiguration$Builder.seed(NeuralNetConfiguration.java:485)
     at com.mi.dl.MLPClassifierLinear.main(MLPClassifierLinear.java:79)
     at com.mi.dl.MyActivity.sendMessage(MyActivity.java:70)
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
     at android.view.View.performClick(View.java) 
     at android.view.View$PerformClick.run(View.java) 
     at android.os.Handler.handleCallback(Handler.java) 
     at android.os.Handler.dispatchMessage(Handler.java) 
     at android.os.Looper.loop(Looper.java) 
     at android.app.ActivityThread.main(ActivityThread.java) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
  Caused by: java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html
     at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5151)
     at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:169)
     at org.deeplearning4j.nn.conf.NeuralNetConfiguration$Builder.seed(NeuralNetConfiguration.java:485) 
     at com.mi.dl.MLPClassifierLinear.main(MLPClassifierLinear.java:79) 
     at com.mi.dl.MyActivity.sendMessage(MyActivity.java:70) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
     at android.view.View.performClick(View.java) 
     at android.view.View$PerformClick.run(View.java) 
     at android.os.Handler.handleCallback(Handler.java) 
     at android.os.Handler.dispatchMessage(Handler.java) 
     at android.os.Looper.loop(Looper.java) 
     at android.app.ActivityThread.main(ActivityThread.java) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
  Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html
     at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:178)
     at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5148)
     at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:169) 
     at org.deeplearning4j.nn.conf.NeuralNetConfiguration$Builder.seed(NeuralNetConfiguration.java:485) 
     at com.mi.dl.MLPClassifierLinear.main(MLPClassifierLinear.java:79) 
     at com.mi.dl.MyActivity.sendMessage(MyActivity.java:70) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
     at android.view.View.performClick(View.java) 
     at android.view.View$PerformClick.run(View.java) 
     at android.os.Handler.handleCallback(Handler.java) 
     at android.os.Handler.dispatchMessage(Handler.java) 
     at android.os.Looper.loop(Looper.java) 
     at android.app.ActivityThread.main(ActivityThread.java) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 

in the build.gradle file, I have the following dependency:

compile 'org.nd4j:nd4j-native-platform:0.5.0'

but I have also tried different backends. The dl4j team said Android is not supported yet, but I would still like to try to make it work, so any help would be appreciated.

Pang
  • 9,564
  • 146
  • 81
  • 122
faraopera
  • 39
  • 3
  • Are you sure the library is the problem? `Could not execute method for android:onClick` makes it sound like the XML is the problem – OneCricketeer Aug 15 '16 at 10:40
  • Or maybe you should check out the website at the other message. `Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html` – OneCricketeer Aug 15 '16 at 10:41
  • formally they don't support android, so help from their site is not gonna help, what i am looking for is a way to do it by myself. – faraopera Aug 17 '16 at 17:02
  • Not sure what to tell you. `NoAvailableBackendException` seems descriptive enough, and the message that says you need to add the backend to your classpath seems like you should do that. You'll probably need to mess with Gradle to get the correct classpath settings – OneCricketeer Aug 17 '16 at 17:16

0 Answers0