Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

민둉이의 책갈피

[ERROR] java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException 본문

JAVA/ERROR

[ERROR] java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException

김민둉 2021. 4. 22. 17:04

Error Detail

INDArray 선언하는 부분에서 에러가 발생했다. 아무리 try catch 문을 돌려도 에러 메시지가 뜨지 않아서 새로운 프로젝트를 만들어서 테스트하니 그제서야 뜨더라. 출력이 왜 안 됐는지는 잘 모르겠음.

 

INDArray X = Nd4j.zeros(5000, 500);

 

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.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at Main.main(Main.java:88)
Caused by: java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: https://deeplearning4j.konduit.ai/nd4j/backend
	at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5094)
	at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:270)
	... 1 more
Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: https://deeplearning4j.konduit.ai/nd4j/backend
	at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:221)
	at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5091)
	... 2 more

 

해결 과정

메시지를 보면 nd4j backend가 없다고 되어있다. 출력된 링크를 타고 들어가면

https://deeplearning4j.konduit.ai/config/backends

종속성을 추가할 수 있는 라인이 있다.

에러가 발생한 이유를 추측하자면.. 변수를 cuda에 할당해야 하는데, 할당할 cuda가 없어서 발생한 것 같다. 하지만 나는 gpu가 없으므로 cpu에서 사용할 수 있는 코드를 추가했다. 링크에는 artifactId를 nd4j-native로 설정했는데, 그렇게 하니까 안 되었고 그 하단에 있는 nd4j-native-platform으로 변경하니 정상적으로 구동되었다.

 

내가 해결한 방법

다음 라인을 pom.xml에 추가하였다. 버전은 deeplearning4j 과 맞춰주었다.

<!-- https://mvnrepository.com/artifact/org.nd4j/nd4j-backends -->
		<dependency>
			<groupId>org.nd4j</groupId>
			<artifactId>nd4j-native-platform</artifactId>
			<version>1.0.0-beta7</version>
		</dependency>